diff options
author | dmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-25 21:54:49 +0000 |
---|---|---|
committer | dmichael@chromium.org <dmichael@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-25 21:54:49 +0000 |
commit | 16b7b2781d20602e7b58eaaf23a3c6e6ac250a55 (patch) | |
tree | ced69d77194024d772e513a8d149e1a18cadcde6 /ppapi/proxy/ppb_image_data_proxy.h | |
parent | 16c10d7db132e781e6db49c26724006d06a54a35 (diff) | |
download | chromium_src-16b7b2781d20602e7b58eaaf23a3c6e6ac250a55.zip chromium_src-16b7b2781d20602e7b58eaaf23a3c6e6ac250a55.tar.gz chromium_src-16b7b2781d20602e7b58eaaf23a3c6e6ac250a55.tar.bz2 |
PPAPI/NaCl: Make ImageData for NaCl just use shared memory
BUG=116317
TEST=
TBR=ben@chromium.org
ben for ui/gfx OWNERS
Review URL: https://chromiumcodereview.appspot.com/10790063
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148427 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/proxy/ppb_image_data_proxy.h')
-rw-r--r-- | ppapi/proxy/ppb_image_data_proxy.h | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/ppapi/proxy/ppb_image_data_proxy.h b/ppapi/proxy/ppb_image_data_proxy.h index 0fcb72a..ee80cc0 100644 --- a/ppapi/proxy/ppb_image_data_proxy.h +++ b/ppapi/proxy/ppb_image_data_proxy.h @@ -6,6 +6,7 @@ #define PPAPI_PPB_IMAGE_DATA_PROXY_H_ #include "base/memory/scoped_ptr.h" +#include "base/shared_memory.h" #include "build/build_config.h" #include "ppapi/c/pp_bool.h" #include "ppapi/c/pp_completion_callback.h" @@ -32,9 +33,19 @@ class ImageData : public ppapi::Resource, public ppapi::thunk::PPB_ImageData_API, public ppapi::PPB_ImageData_Shared { public: +#if !defined(OS_NACL) ImageData(const ppapi::HostResource& resource, const PP_ImageDataDesc& desc, ImageHandle handle); +#else + // In NaCl, we only allow creating an ImageData using a SharedMemoryHandle. + // ImageHandle can differ by host platform. We need something that is + // more consistent across platforms for NaCl, so that we can communicate to + // the host OS in a consistent way. + ImageData(const ppapi::HostResource& resource, + const PP_ImageDataDesc& desc, + const base::SharedMemoryHandle& handle); +#endif virtual ~ImageData(); // Resource overrides. @@ -46,17 +57,22 @@ class ImageData : public ppapi::Resource, virtual void Unmap() OVERRIDE; virtual int32_t GetSharedMemory(int* handle, uint32_t* byte_count) OVERRIDE; virtual skia::PlatformCanvas* GetPlatformCanvas() OVERRIDE; + virtual SkCanvas* GetCanvas() OVERRIDE; const PP_ImageDataDesc& desc() const { return desc_; } +#if !defined(OS_NACL) static ImageHandle NullHandle(); static ImageHandle HandleFromInt(int32_t i); +#endif private: PP_ImageDataDesc desc_; #if defined(OS_NACL) - // TODO(brettw) implement this (see .cc file). + base::SharedMemory shm_; + uint32 size_; + int map_count_; #else scoped_ptr<TransportDIB> transport_dib_; @@ -83,7 +99,7 @@ class PPB_ImageData_Proxy : public InterfaceProxy { static const ApiID kApiID = API_ID_PPB_IMAGE_DATA; private: - // Message handler. + // Message handlers. void OnHostMsgCreate(PP_Instance instance, int32_t format, const PP_Size& size, @@ -91,6 +107,13 @@ class PPB_ImageData_Proxy : public InterfaceProxy { HostResource* result, std::string* image_data_desc, ImageHandle* result_image_handle); + void OnHostMsgCreateNaCl(PP_Instance instance, + int32_t format, + const PP_Size& size, + PP_Bool init_to_zero, + HostResource* result, + std::string* image_data_desc, + base::SharedMemoryHandle* result_image_handle); DISALLOW_COPY_AND_ASSIGN(PPB_ImageData_Proxy); }; |