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

Unified Diff: ppapi/proxy/ppb_graphics_2d_proxy.h

Issue 6905088: New thunk system for Pepper proxy and implementation (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 9 years, 7 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: ppapi/proxy/ppb_graphics_2d_proxy.h
===================================================================
--- ppapi/proxy/ppb_graphics_2d_proxy.h (revision 84344)
+++ ppapi/proxy/ppb_graphics_2d_proxy.h (working copy)
@@ -15,7 +15,9 @@
#include "ppapi/cpp/completion_callback.h"
#include "ppapi/proxy/host_resource.h"
#include "ppapi/proxy/interface_proxy.h"
+#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/proxy/proxy_non_thread_safe_ref_count.h"
+#include "ppapi/thunk/ppb_graphics_2d_api.h"
struct PPB_Graphics2D;
struct PP_Point;
@@ -40,10 +42,6 @@
private:
// Plugin->renderer message handlers.
- void OnMsgCreate(PP_Module module,
- const PP_Size& size,
- PP_Bool is_always_opaque,
- HostResource* result);
void OnMsgPaintImageData(const HostResource& graphics_2d,
const HostResource& image_data,
const PP_Point& top_left,
@@ -69,6 +67,60 @@
ProxyNonThreadSafeRefCount> callback_factory_;
};
+class Graphics2D : public PluginResource,
+ public ::ppapi::thunk::PPB_Graphics2D_API {
+ public:
+ Graphics2D(const HostResource& host_resource,
+ const PP_Size& size,
+ PP_Bool is_always_opaque)
+ : PluginResource(host_resource),
+ size_(size),
+ is_always_opaque_(is_always_opaque),
+ current_flush_callback_(PP_BlockUntilComplete()) {
+ }
+ virtual ~Graphics2D() {
+ }
+
+ // Resource overrides.
+ virtual Graphics2D* AsGraphics2D() { return this; }
+
+ const PP_Size& size() const { return size_; }
+ PP_Bool is_always_opaque() const { return is_always_opaque_; }
+
+ bool is_flush_pending() const { return !!current_flush_callback_.func; }
+
+ PP_CompletionCallback current_flush_callback() const {
+ return current_flush_callback_;
+ }
+ void set_current_flush_callback(PP_CompletionCallback cb) {
+ current_flush_callback_ = cb;
+ }
+
+ // ResourceObjectBase.
+ virtual PPB_Graphics2D_API* AsGraphics2D_API();
+
+ // PPB_Graphics_2D_API.
+ PP_Bool Describe(PP_Size* size, PP_Bool* is_always_opaque);
+ void PaintImageData(PP_Resource image_data,
+ const PP_Point* top_left,
+ const PP_Rect* src_rect);
+ void Scroll(const PP_Rect* clip_rect,
+ const PP_Point* amount);
+ void ReplaceContents(PP_Resource image_data);
+ int32_t Flush(PP_CompletionCallback callback);
+
+ private:
+ PP_Size size_;
+ PP_Bool is_always_opaque_;
+
+ // In the plugin, this is the current callback set for Flushes. When the
+ // callback function pointer is non-NULL, we're waiting for a flush ACK.
+ PP_CompletionCallback current_flush_callback_;
+
+ DISALLOW_COPY_AND_ASSIGN(Graphics2D);
+};
+
+
} // namespace proxy
} // namespace pp

Powered by Google App Engine
This is Rietveld 408576698