OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // This class is an implementation of the ChromotingView using Pepper devices | 5 // This class is an implementation of the ChromotingView using Pepper devices |
6 // as the backing stores. The public APIs to this class are thread-safe. | 6 // as the backing stores. The public APIs to this class are thread-safe. |
7 // Calls will dispatch any interaction with the pepper API onto the pepper | 7 // Calls will dispatch any interaction with the pepper API onto the pepper |
8 // main thread. | 8 // main thread. |
9 // | 9 // |
10 // TODO(ajwong): We need to better understand the threading semantics of this | 10 // TODO(ajwong): We need to better understand the threading semantics of this |
11 // class. Currently, we're just going to always run everything on the pepper | 11 // class. Currently, we're just going to always run everything on the pepper |
12 // main thread. Is this smart? | 12 // main thread. Is this smart? |
13 | 13 |
14 #ifndef REMOTING_CLIENT_PLUGIN_PEPPER_VIEW_H_ | 14 #ifndef REMOTING_CLIENT_PLUGIN_PEPPER_VIEW_H_ |
15 #define REMOTING_CLIENT_PLUGIN_PEPPER_VIEW_H_ | 15 #define REMOTING_CLIENT_PLUGIN_PEPPER_VIEW_H_ |
16 | 16 |
17 #include "base/scoped_ptr.h" | 17 #include "base/scoped_ptr.h" |
18 #include "base/task.h" | 18 #include "base/task.h" |
19 #include "media/base/video_frame.h" | 19 #include "media/base/video_frame.h" |
20 #include "remoting/base/decoder.h" | 20 #include "remoting/base/decoder.h" |
21 #include "remoting/client/chromoting_view.h" | 21 #include "remoting/client/chromoting_view.h" |
22 #include "third_party/ppapi/cpp/device_context_2d.h" | 22 #include "third_party/ppapi/cpp/device_context_2d.h" |
23 | 23 |
24 namespace remoting { | 24 namespace remoting { |
25 | 25 |
26 class ChromotingPlugin; | 26 class ChromotingInstance; |
27 class Decoder; | 27 class Decoder; |
28 | 28 |
29 class PepperView : public ChromotingView { | 29 class PepperView : public ChromotingView { |
30 public: | 30 public: |
31 // Constructs a PepperView that draws to the |rendering_device|. The | 31 // Constructs a PepperView that draws to the |rendering_device|. The |
32 // |rendering_device| instance must outlive this class. | 32 // |rendering_device| instance must outlive this class. |
33 // | 33 // |
34 // TODO(ajwong): This probably needs to synchronize with the pepper thread | 34 // TODO(ajwong): This probably needs to synchronize with the pepper thread |
35 // to be safe. | 35 // to be safe. |
36 explicit PepperView(ChromotingPlugin* plugin); | 36 explicit PepperView(ChromotingInstance* instance); |
37 virtual ~PepperView(); | 37 virtual ~PepperView(); |
38 | 38 |
39 // ChromotingView implementation. | 39 // ChromotingView implementation. |
40 virtual bool Initialize(); | 40 virtual bool Initialize(); |
41 virtual void TearDown(); | 41 virtual void TearDown(); |
42 virtual void Paint(); | 42 virtual void Paint(); |
43 virtual void SetSolidFill(uint32 color); | 43 virtual void SetSolidFill(uint32 color); |
44 virtual void UnsetSolidFill(); | 44 virtual void UnsetSolidFill(); |
45 virtual void SetViewport(int x, int y, int width, int height); | 45 virtual void SetViewport(int x, int y, int width, int height); |
46 virtual void SetHostScreenSize(int width, int height); | 46 virtual void SetHostScreenSize(int width, int height); |
47 virtual void HandleBeginUpdateStream(HostMessage* msg); | 47 virtual void HandleBeginUpdateStream(HostMessage* msg); |
48 virtual void HandleUpdateStreamPacket(HostMessage* msg); | 48 virtual void HandleUpdateStreamPacket(HostMessage* msg); |
49 virtual void HandleEndUpdateStream(HostMessage* msg); | 49 virtual void HandleEndUpdateStream(HostMessage* msg); |
50 | 50 |
51 private: | 51 private: |
52 void OnPaintDone(); | 52 void OnPaintDone(); |
53 void OnPartialDecodeDone(); | 53 void OnPartialDecodeDone(); |
54 void OnDecodeDone(); | 54 void OnDecodeDone(); |
55 | 55 |
56 // Reference to the creating plugin instance. Needed for interacting with | 56 // Reference to the creating plugin instance. Needed for interacting with |
57 // pepper. Marking explciitly as const since it must be initialized at | 57 // pepper. Marking explciitly as const since it must be initialized at |
58 // object creation, and never change. | 58 // object creation, and never change. |
59 ChromotingPlugin* const plugin_; | 59 ChromotingInstance* const instance_; |
60 | 60 |
61 pp::DeviceContext2D device_context_; | 61 pp::DeviceContext2D device_context_; |
62 | 62 |
63 int backing_store_width_; | 63 int backing_store_width_; |
64 int backing_store_height_; | 64 int backing_store_height_; |
65 | 65 |
66 int viewport_x_; | 66 int viewport_x_; |
67 int viewport_y_; | 67 int viewport_y_; |
68 int viewport_width_; | 68 int viewport_width_; |
69 int viewport_height_; | 69 int viewport_height_; |
70 | 70 |
71 bool is_static_fill_; | 71 bool is_static_fill_; |
72 uint32 static_fill_color_; | 72 uint32 static_fill_color_; |
73 | 73 |
74 scoped_refptr<media::VideoFrame> frame_; | 74 scoped_refptr<media::VideoFrame> frame_; |
75 UpdatedRects update_rects_; | 75 UpdatedRects update_rects_; |
76 UpdatedRects all_update_rects_; | 76 UpdatedRects all_update_rects_; |
77 | 77 |
78 scoped_ptr<Decoder> decoder_; | 78 scoped_ptr<Decoder> decoder_; |
79 | 79 |
80 DISALLOW_COPY_AND_ASSIGN(PepperView); | 80 DISALLOW_COPY_AND_ASSIGN(PepperView); |
81 }; | 81 }; |
82 | 82 |
83 } // namespace remoting | 83 } // namespace remoting |
84 | 84 |
85 DISABLE_RUNNABLE_METHOD_REFCOUNT(remoting::PepperView); | 85 DISABLE_RUNNABLE_METHOD_REFCOUNT(remoting::PepperView); |
86 | 86 |
87 #endif // REMOTING_CLIENT_PLUGIN_PEPPER_VIEW_H_ | 87 #endif // REMOTING_CLIENT_PLUGIN_PEPPER_VIEW_H_ |
OLD | NEW |