Index: remoting/client/plugin/chromoting_instance.h |
diff --git a/remoting/client/plugin/chromoting_instance.h b/remoting/client/plugin/chromoting_instance.h |
index ead3b5625e3f4f7c29a1333ef2020b9263328a2f..94e4100cd63cb871b1a28075d6e975ed4c08a537 100644 |
--- a/remoting/client/plugin/chromoting_instance.h |
+++ b/remoting/client/plugin/chromoting_instance.h |
@@ -43,6 +43,7 @@ class ClientContext; |
class InputHandler; |
class JingleThread; |
class PepperView; |
+class PepperViewProxy; |
class RectangleUpdateDecoder; |
struct ClientConfig; |
@@ -85,6 +86,15 @@ class ChromotingInstance : public pp::Instance { |
ClientContext context_; |
scoped_ptr<protocol::ConnectionToHost> host_connection_; |
scoped_ptr<PepperView> view_; |
+ |
+ // PepperViewProxy is refcounted and used to interface between shromoting |
+ // objects and PepperView and perform thread switching. It wraps around |
+ // |view_| and receives method calls on chromoting threads. These method |
+ // calls are then delegates on the pepper thread. During destruction of |
+ // ChromotingInstance we need to detach PepperViewProxy from PepperView since |
+ // both ChromotingInstance and PepperView are destroyed and there will be |
+ // outstanding tasks on the pepper message loo. |
+ scoped_refptr<PepperViewProxy> view_proxy_; |
scoped_ptr<RectangleUpdateDecoder> rectangle_decoder_; |
scoped_ptr<InputHandler> input_handler_; |
scoped_ptr<ChromotingClient> client_; |