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

Unified Diff: ppapi/proxy/ppb_graphics_2d_proxy.cc

Issue 6282007: First pass at making the proxy handle multiple renderers. This associates the... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 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
« no previous file with comments | « ppapi/proxy/ppb_fullscreen_proxy.cc ('k') | ppapi/proxy/ppb_image_data_proxy.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ppapi/proxy/ppb_graphics_2d_proxy.cc
===================================================================
--- ppapi/proxy/ppb_graphics_2d_proxy.cc (revision 71973)
+++ ppapi/proxy/ppb_graphics_2d_proxy.cc (working copy)
@@ -21,8 +21,11 @@
class Graphics2D : public PluginResource {
public:
- Graphics2D(const PP_Size& size, PP_Bool is_always_opaque)
- : size_(size),
+ Graphics2D(PP_Instance instance,
+ const PP_Size& size,
+ PP_Bool is_always_opaque)
+ : PluginResource(instance),
+ size_(size),
is_always_opaque_(is_always_opaque),
current_flush_callback_(PP_BlockUntilComplete()) {
}
@@ -58,14 +61,18 @@
PP_Resource Create(PP_Instance instance,
const PP_Size* size,
PP_Bool is_always_opaque) {
- PluginDispatcher* dispatcher = PluginDispatcher::Get();
+ PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(instance);
+ if (!dispatcher)
+ return PP_ERROR_BADARGUMENT;
+
PP_Resource result = 0;
dispatcher->Send(new PpapiHostMsg_PPBGraphics2D_Create(
INTERFACE_ID_PPB_GRAPHICS_2D, instance, *size, is_always_opaque,
&result));
if (result) {
- linked_ptr<Graphics2D> graphics_2d(new Graphics2D(*size, is_always_opaque));
- dispatcher->plugin_resource_tracker()->AddResource(result, graphics_2d);
+ linked_ptr<Graphics2D> graphics_2d(new Graphics2D(instance, *size,
+ is_always_opaque));
+ PluginResourceTracker::GetInstance()->AddResource(result, graphics_2d);
}
return result;
}
@@ -95,9 +102,17 @@
PP_Resource image_data,
const PP_Point* top_left,
const PP_Rect* src_rect) {
+ Graphics2D* object = PluginResource::GetAs<Graphics2D>(graphics_2d);
+ if (!object)
+ return;
+ PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(
+ object->instance());
+ if (!dispatcher)
+ return;
+
PP_Rect dummy;
memset(&dummy, 0, sizeof(PP_Rect));
- PluginDispatcher::Get()->Send(new PpapiHostMsg_PPBGraphics2D_PaintImageData(
+ dispatcher->Send(new PpapiHostMsg_PPBGraphics2D_PaintImageData(
INTERFACE_ID_PPB_GRAPHICS_2D, graphics_2d, image_data, *top_left,
!!src_rect, src_rect ? *src_rect : dummy));
}
@@ -105,15 +120,31 @@
void Scroll(PP_Resource graphics_2d,
const PP_Rect* clip_rect,
const PP_Point* amount) {
+ Graphics2D* object = PluginResource::GetAs<Graphics2D>(graphics_2d);
+ if (!object)
+ return;
+ PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(
+ object->instance());
+ if (!dispatcher)
+ return;
+
PP_Rect dummy;
memset(&dummy, 0, sizeof(PP_Rect));
- PluginDispatcher::Get()->Send(new PpapiHostMsg_PPBGraphics2D_Scroll(
+ dispatcher->Send(new PpapiHostMsg_PPBGraphics2D_Scroll(
INTERFACE_ID_PPB_GRAPHICS_2D, graphics_2d, !!clip_rect,
clip_rect ? *clip_rect : dummy, *amount));
}
void ReplaceContents(PP_Resource graphics_2d, PP_Resource image_data) {
- PluginDispatcher::Get()->Send(new PpapiHostMsg_PPBGraphics2D_ReplaceContents(
+ Graphics2D* object = PluginResource::GetAs<Graphics2D>(graphics_2d);
+ if (!object)
+ return;
+ PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(
+ object->instance());
+ if (!dispatcher)
+ return;
+
+ dispatcher->Send(new PpapiHostMsg_PPBGraphics2D_ReplaceContents(
INTERFACE_ID_PPB_GRAPHICS_2D, graphics_2d, image_data));
}
@@ -122,6 +153,10 @@
Graphics2D* object = PluginResource::GetAs<Graphics2D>(graphics_2d);
if (!object)
return PP_ERROR_BADRESOURCE;
+ PluginDispatcher* dispatcher = PluginDispatcher::GetForInstance(
+ object->instance());
+ if (!dispatcher)
+ return PP_ERROR_FAILED;
// For now, disallow blocking calls. We'll need to add support for other
// threads to this later.
@@ -132,7 +167,7 @@
return PP_ERROR_INPROGRESS; // Can't have >1 flush pending.
object->set_current_flush_callback(callback);
- PluginDispatcher::Get()->Send(new PpapiHostMsg_PPBGraphics2D_Flush(
+ dispatcher->Send(new PpapiHostMsg_PPBGraphics2D_Flush(
INTERFACE_ID_PPB_GRAPHICS_2D, graphics_2d));
return PP_ERROR_WOULDBLOCK;
}
« no previous file with comments | « ppapi/proxy/ppb_fullscreen_proxy.cc ('k') | ppapi/proxy/ppb_image_data_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698