Index: remoting/client/plugin/pepper_view.h |
diff --git a/remoting/client/plugin/pepper_view.h b/remoting/client/plugin/pepper_view.h |
index 9dc8a5679ac7ed87fb7ab3e11008544126645cd4..655b9ae92a0c23972f803dd368ce4a5b1f2afdf0 100644 |
--- a/remoting/client/plugin/pepper_view.h |
+++ b/remoting/client/plugin/pepper_view.h |
@@ -2,30 +2,38 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+// This class is an implementation of the ChromotingView using Pepper devices |
+// as the backing stores. The public APIs to this class are thread-safe. |
+// Calls will dispatch any interaction with the pepper API onto the pepper |
+// main thread. |
+// |
+// TODO(ajwong): We need to better understand the threading semantics of this |
+// class. Currently, we're just going to always run everything on the pepper |
+// main thread. Is this smart? |
+ |
#ifndef REMOTING_CLIENT_PLUGIN_PEPPER_VIEW_H_ |
#define REMOTING_CLIENT_PLUGIN_PEPPER_VIEW_H_ |
#include "base/scoped_ptr.h" |
#include "base/task.h" |
+#include "media/base/video_frame.h" |
#include "remoting/client/chromoting_view.h" |
-#include "third_party/npapi/bindings/npapi.h" |
-#include "third_party/npapi/bindings/npapi_extensions.h" |
- |
-class MessageLoop; |
+#include "remoting/client/decoder.h" |
+#include "third_party/ppapi/cpp/device_context_2d.h" |
namespace remoting { |
+class ChromotingPlugin; |
class Decoder; |
class PepperView : public ChromotingView { |
public: |
- // Constructs a PepperView that draw to the |rendering_device|. The |
+ // Constructs a PepperView that draws to the |rendering_device|. The |
// |rendering_device| instance must outlive this class. |
// |
// TODO(ajwong): This probably needs to synchronize with the pepper thread |
// to be safe. |
- PepperView(MessageLoop* message_loop, NPDevice* rendering_device, |
- NPP plugin_instance); |
+ explicit PepperView(ChromotingPlugin* plugin); |
virtual ~PepperView(); |
// ChromotingView implementation. |
@@ -39,21 +47,16 @@ class PepperView : public ChromotingView { |
virtual void HandleEndUpdateStream(HostMessage* msg); |
private: |
- void DoPaint(); |
- void DoSetSolidFill(uint32 color); |
- void DoUnsetSolidFill(); |
- void DoSetViewport(int x, int y, int width, int height); |
- void DoSetBackingStoreSize(int width, int height); |
- void DoHandleBeginUpdateStream(HostMessage* msg); |
- void DoHandleUpdateStreamPacket(HostMessage* msg); |
- void DoHandleEndUpdateStream(HostMessage* msg); |
- |
- // Synchronization and thread handling objects. |
- MessageLoop* message_loop_; |
- |
- // Handles to Pepper objects needed for drawing to the screen. |
- NPDevice* rendering_device_; |
- NPP plugin_instance_; |
+ void OnPaintDone(); |
+ void OnPartialDecodeDone(); |
+ void OnDecodeDone(); |
+ |
+ // Reference to the creating plugin instance. Needed for interacting with |
+ // pepper. Marking explciitly as const since it must be initialized at |
+ // object creation, and never change. |
+ ChromotingPlugin* const plugin_; |
+ |
+ pp::DeviceContext2D device_context_; |
int backing_store_width_; |
int backing_store_height_; |
@@ -66,6 +69,10 @@ class PepperView : public ChromotingView { |
bool is_static_fill_; |
uint32 static_fill_color_; |
+ scoped_refptr<media::VideoFrame> frame_; |
+ UpdatedRects update_rects_; |
+ UpdatedRects all_update_rects_; |
+ |
scoped_ptr<Decoder> decoder_; |
DISALLOW_COPY_AND_ASSIGN(PepperView); |