Index: o3d/gpu_plugin/command_buffer.cc |
=================================================================== |
--- o3d/gpu_plugin/command_buffer.cc (revision 25632) |
+++ o3d/gpu_plugin/command_buffer.cc (working copy) |
@@ -11,13 +11,10 @@ |
} |
CommandBuffer::~CommandBuffer() { |
- if (shared_memory_) { |
- NPBrowser::get()->UnmapSharedMemory(npp_, shared_memory_); |
- } |
} |
bool CommandBuffer::Initialize(int32 size) { |
- if (buffer_object_.Get()) |
+ if (shared_memory_.Get()) |
return false; |
NPObjectPointer<NPObject> window = NPObjectPointer<NPObject>::FromReturned( |
@@ -35,23 +32,30 @@ |
return false; |
} |
+ NPObjectPointer<NPObject> result; |
if (!NPInvoke(npp_, system, "createSharedMemory", size, |
- &buffer_object_)) { |
+ &result)) { |
return false; |
} |
- shared_memory_ = NPBrowser::get()->MapSharedMemory( |
- npp_, buffer_object_.Get(), size, false); |
- if (!shared_memory_) { |
- buffer_object_ = NPObjectPointer<NPObject>(); |
+ // TODO(spatrick): validate NPClass before assuming a CHRSHaredMemory is |
+ // returned. |
+ shared_memory_ = NPObjectPointer<CHRSharedMemory>( |
+ static_cast<CHRSharedMemory*>(result.Get())); |
+ if (!shared_memory_.Get()) |
return false; |
+ |
+ bool mapped; |
+ if (!NPInvoke(npp_, shared_memory_, "map", &mapped) || !mapped) { |
+ shared_memory_ = NPObjectPointer<CHRSharedMemory>(); |
+ return false; |
} |
return true; |
} |
-NPObjectPointer<NPObject> CommandBuffer::GetBuffer() { |
- return buffer_object_; |
+NPObjectPointer<NPObject> CommandBuffer::GetSharedMemory() { |
+ return shared_memory_; |
} |
void CommandBuffer::SetPutOffset(int32 offset) { |