Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Unified Diff: o3d/gpu_plugin/command_buffer.cc

Issue 194049: Implemented shared memory as an NPObject. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {

Powered by Google App Engine
This is Rietveld 408576698