Index: o3d/gpu_plugin/system_services/shared_memory.cc |
=================================================================== |
--- o3d/gpu_plugin/system_services/shared_memory.cc (revision 0) |
+++ o3d/gpu_plugin/system_services/shared_memory.cc (revision 0) |
@@ -0,0 +1,65 @@ |
+// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "o3d/gpu_plugin/system_services/shared_memory.h" |
+ |
+namespace o3d { |
+namespace gpu_plugin { |
+ |
+SharedMemory::SharedMemory(NPP npp) |
+ : npp_(npp), |
+ shared_memory_(NULL) { |
Ken Russell (Google)
2009/09/09 01:32:54
Where are the NPObject fields (_class and referenc
apatrick
2009/09/09 02:10:18
Shared memory objects are created through NPN_Crea
|
+ handle = NULL; |
+ ptr = NULL; |
+ size = 0; |
+} |
+ |
+SharedMemory::~SharedMemory() { |
+ if (shared_memory_) { |
+ delete shared_memory_; |
+ } |
+} |
+ |
+void SharedMemory::Initialize(base::SharedMemory* shared_memory, int32 size) { |
+ DCHECK(shared_memory); |
+ shared_memory_ = shared_memory; |
+ this->handle = shared_memory->handle(); |
+ this->size = size; |
+} |
+ |
+bool SharedMemory::Initialize(int32 size) { |
+ if (size < 0) |
+ return false; |
+ |
+ if (shared_memory_) |
+ return false; |
+ |
+ shared_memory_ = new base::SharedMemory(); |
+ if (!shared_memory_->Create(std::wstring(), false, false, size)) { |
+ delete shared_memory_; |
+ shared_memory_ = NULL; |
+ return false; |
+ } |
+ |
+ handle = shared_memory_->handle(); |
+ this->size = size; |
+ return true; |
+} |
+ |
+bool SharedMemory::Map() { |
+ if (!shared_memory_) |
+ return false; |
+ |
+ if (!shared_memory_->memory()) { |
+ if (!shared_memory_->Map(shared_memory_->max_size())) |
+ return false; |
+ |
+ ptr = shared_memory_->memory(); |
+ } |
+ |
+ return true; |
+} |
+ |
+} // namespace gpu_plugin |
+} // namespace o3d |