summaryrefslogtreecommitdiffstats
path: root/ppapi/proxy/ppb_image_data_proxy.h
diff options
context:
space:
mode:
Diffstat (limited to 'ppapi/proxy/ppb_image_data_proxy.h')
-rw-r--r--ppapi/proxy/ppb_image_data_proxy.h27
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);
};