Index: ppapi/proxy/compositor_resource.h |
diff --git a/ppapi/proxy/compositor_resource.h b/ppapi/proxy/compositor_resource.h |
index 1ad74b9dbdecf71a227da44efa9102f18ece8c08..f3d13d4ffc71ab522051f80a97538c4599738011 100644 |
--- a/ppapi/proxy/compositor_resource.h |
+++ b/ppapi/proxy/compositor_resource.h |
@@ -5,6 +5,9 @@ |
#ifndef PPAPI_PROXY_COMPOSITOR_RESOURCE_H_ |
#define PPAPI_PROXY_COMPOSITOR_RESOURCE_H_ |
+#include <map> |
+ |
+#include "ppapi/proxy/compositor_layer_resource.h" |
#include "ppapi/proxy/plugin_resource.h" |
#include "ppapi/proxy/ppapi_proxy_export.h" |
#include "ppapi/thunk/ppb_compositor_api.h" |
@@ -19,18 +22,58 @@ class PPAPI_PROXY_EXPORT CompositorResource |
CompositorResource(Connection connection, |
PP_Instance instance); |
+ bool IsInProgress() const { |
+ return TrackedCallback::IsPending(commit_callback_); |
+ } |
+ |
+ int32_t GenerateResourceId() const { |
+ return ++last_resource_id_; |
+ } |
+ |
private: |
virtual ~CompositorResource(); |
// Resource overrides: |
virtual thunk::PPB_Compositor_API* AsPPB_Compositor_API() OVERRIDE; |
+ // PluginResource overrides: |
+ virtual void OnReplyReceived(const ResourceMessageReplyParams& params, |
+ const IPC::Message& msg) OVERRIDE; |
+ |
// thunk::PPB_Compositor_API overrides: |
virtual PP_Resource AddLayer() OVERRIDE; |
virtual int32_t CommitLayers( |
- const scoped_refptr<ppapi::TrackedCallback>& callback) OVERRIDE; |
+ const scoped_refptr<TrackedCallback>& callback) OVERRIDE; |
virtual int32_t ResetLayers() OVERRIDE; |
+ // IPC msg handlers: |
+ void OnPluginMsgCommitLayersReply(const ResourceMessageReplyParams& params); |
+ void OnPluginMsgReleaseResource( |
+ const ResourceMessageReplyParams& params, |
+ int32_t id, |
+ uint32_t sync_point, |
+ bool is_lost); |
+ |
+ void ResetLayersInternal(); |
+ |
+ // Callback for CommitLayers(). |
+ scoped_refptr<TrackedCallback> commit_callback_; |
+ |
+ // True if layers_ has been reset by ResetLayers(). |
+ bool layer_reset_; |
+ |
+ // Layer stack. |
+ typedef std::vector<scoped_refptr<CompositorLayerResource> > LayerList; |
+ LayerList layers_; |
+ |
+ // Release callback map for texture and image. |
+ typedef CompositorLayerResource::ReleaseCallback ReleaseCallback; |
+ typedef std::map<int32_t, ReleaseCallback> ReleaseCallbackMap; |
+ ReleaseCallbackMap release_callback_map_; |
+ |
+ // The last resource id for texture or image. |
+ mutable int32_t last_resource_id_; |
+ |
DISALLOW_COPY_AND_ASSIGN(CompositorResource); |
}; |