| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #include "remoting/client/plugin/pepper_view_proxy.h" | 5 #include "remoting/client/plugin/pepper_view_proxy.h" |
| 6 | 6 |
| 7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
| 8 #include "remoting/client/client_context.h" | 8 #include "remoting/client/client_context.h" |
| 9 #include "remoting/client/plugin/chromoting_instance.h" | 9 #include "remoting/client/plugin/chromoting_instance.h" |
| 10 | 10 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 bool PepperViewProxy::Initialize() { | 23 bool PepperViewProxy::Initialize() { |
| 24 // This method needs a return value so we can't post a task and process on | 24 // This method needs a return value so we can't post a task and process on |
| 25 // another thread so just return true since PepperView doesn't do anything | 25 // another thread so just return true since PepperView doesn't do anything |
| 26 // either. | 26 // either. |
| 27 return true; | 27 return true; |
| 28 } | 28 } |
| 29 | 29 |
| 30 void PepperViewProxy::TearDown() { | 30 void PepperViewProxy::TearDown() { |
| 31 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { | 31 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { |
| 32 plugin_message_loop_->PostTask( | 32 plugin_message_loop_->PostTask( |
| 33 FROM_HERE, NewRunnableMethod(this, &PepperViewProxy::TearDown)); | 33 FROM_HERE, base::Bind(&PepperViewProxy::TearDown, this)); |
| 34 return; | 34 return; |
| 35 } | 35 } |
| 36 | 36 |
| 37 if (view_) | 37 if (view_) |
| 38 view_->TearDown(); | 38 view_->TearDown(); |
| 39 } | 39 } |
| 40 | 40 |
| 41 void PepperViewProxy::Paint() { | 41 void PepperViewProxy::Paint() { |
| 42 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { | 42 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { |
| 43 plugin_message_loop_->PostTask( | 43 plugin_message_loop_->PostTask( |
| 44 FROM_HERE, NewRunnableMethod(this, &PepperViewProxy::Paint)); | 44 FROM_HERE, base::Bind(&PepperViewProxy::Paint, this)); |
| 45 return; | 45 return; |
| 46 } | 46 } |
| 47 | 47 |
| 48 if (view_) | 48 if (view_) |
| 49 view_->Paint(); | 49 view_->Paint(); |
| 50 } | 50 } |
| 51 | 51 |
| 52 void PepperViewProxy::SetSolidFill(uint32 color) { | 52 void PepperViewProxy::SetSolidFill(uint32 color) { |
| 53 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { | 53 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { |
| 54 plugin_message_loop_->PostTask(FROM_HERE, NewRunnableMethod( | 54 plugin_message_loop_->PostTask(FROM_HERE, base::Bind( |
| 55 this, &PepperViewProxy::SetSolidFill, color)); | 55 &PepperViewProxy::SetSolidFill, this, color)); |
| 56 return; | 56 return; |
| 57 } | 57 } |
| 58 | 58 |
| 59 if (view_) | 59 if (view_) |
| 60 view_->SetSolidFill(color); | 60 view_->SetSolidFill(color); |
| 61 } | 61 } |
| 62 | 62 |
| 63 void PepperViewProxy::UnsetSolidFill() { | 63 void PepperViewProxy::UnsetSolidFill() { |
| 64 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { | 64 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { |
| 65 plugin_message_loop_->PostTask( | 65 plugin_message_loop_->PostTask( |
| 66 FROM_HERE, NewRunnableMethod(this, &PepperViewProxy::UnsetSolidFill)); | 66 FROM_HERE, base::Bind(&PepperViewProxy::UnsetSolidFill, this)); |
| 67 return; | 67 return; |
| 68 } | 68 } |
| 69 | 69 |
| 70 if (view_) | 70 if (view_) |
| 71 view_->UnsetSolidFill(); | 71 view_->UnsetSolidFill(); |
| 72 } | 72 } |
| 73 | 73 |
| 74 void PepperViewProxy::SetConnectionState( | 74 void PepperViewProxy::SetConnectionState( |
| 75 protocol::ConnectionToHost::State state, | 75 protocol::ConnectionToHost::State state, |
| 76 protocol::ConnectionToHost::Error error) { | 76 protocol::ConnectionToHost::Error error) { |
| 77 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { | 77 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { |
| 78 plugin_message_loop_->PostTask(FROM_HERE, NewRunnableMethod( | 78 plugin_message_loop_->PostTask(FROM_HERE, base::Bind( |
| 79 this, &PepperViewProxy::SetConnectionState, state, error)); | 79 &PepperViewProxy::SetConnectionState, this, state, error)); |
| 80 return; | 80 return; |
| 81 } | 81 } |
| 82 | 82 |
| 83 if (view_) | 83 if (view_) |
| 84 view_->SetConnectionState(state, error); | 84 view_->SetConnectionState(state, error); |
| 85 } | 85 } |
| 86 | 86 |
| 87 double PepperViewProxy::GetHorizontalScaleRatio() const { | 87 double PepperViewProxy::GetHorizontalScaleRatio() const { |
| 88 // This method returns a value, so must run synchronously, so must be | 88 // This method returns a value, so must run synchronously, so must be |
| 89 // called only on the pepper thread. | 89 // called only on the pepper thread. |
| 90 DCHECK(plugin_message_loop_->BelongsToCurrentThread()); | 90 DCHECK(plugin_message_loop_->BelongsToCurrentThread()); |
| 91 | 91 |
| 92 if (view_) | 92 if (view_) |
| 93 return view_->GetHorizontalScaleRatio(); | 93 return view_->GetHorizontalScaleRatio(); |
| 94 return 1.0; | 94 return 1.0; |
| 95 } | 95 } |
| 96 | 96 |
| 97 double PepperViewProxy::GetVerticalScaleRatio() const { | 97 double PepperViewProxy::GetVerticalScaleRatio() const { |
| 98 // This method returns a value, so must run synchronously, so must be | 98 // This method returns a value, so must run synchronously, so must be |
| 99 // called only on the pepper thread. | 99 // called only on the pepper thread. |
| 100 DCHECK(plugin_message_loop_->BelongsToCurrentThread()); | 100 DCHECK(plugin_message_loop_->BelongsToCurrentThread()); |
| 101 | 101 |
| 102 if (view_) | 102 if (view_) |
| 103 return view_->GetVerticalScaleRatio(); | 103 return view_->GetVerticalScaleRatio(); |
| 104 return 1.0; | 104 return 1.0; |
| 105 } | 105 } |
| 106 | 106 |
| 107 void PepperViewProxy::AllocateFrame( | 107 void PepperViewProxy::AllocateFrame( |
| 108 media::VideoFrame::Format format, | 108 media::VideoFrame::Format format, |
| 109 size_t width, | 109 const SkISize& size, |
| 110 size_t height, | |
| 111 base::TimeDelta timestamp, | |
| 112 base::TimeDelta duration, | |
| 113 scoped_refptr<media::VideoFrame>* frame_out, | 110 scoped_refptr<media::VideoFrame>* frame_out, |
| 114 Task* done) { | 111 const base::Closure& done) { |
| 115 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { | 112 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { |
| 116 plugin_message_loop_->PostTask(FROM_HERE, NewRunnableMethod( | 113 plugin_message_loop_->PostTask(FROM_HERE, base::Bind( |
| 117 this, &PepperViewProxy::AllocateFrame, format, width, | 114 &PepperViewProxy::AllocateFrame, this, format, size, frame_out, done)); |
| 118 height, timestamp, duration, frame_out, done)); | |
| 119 return; | 115 return; |
| 120 } | 116 } |
| 121 | 117 |
| 122 if (view_) { | 118 if (view_) { |
| 123 view_->AllocateFrame(format, width, height, timestamp, duration, frame_out, | 119 view_->AllocateFrame(format, size, frame_out, done); |
| 124 done); | |
| 125 } | 120 } |
| 126 } | 121 } |
| 127 | 122 |
| 128 void PepperViewProxy::ReleaseFrame(media::VideoFrame* frame) { | 123 void PepperViewProxy::ReleaseFrame(media::VideoFrame* frame) { |
| 129 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { | 124 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { |
| 130 plugin_message_loop_->PostTask(FROM_HERE, NewRunnableMethod( | 125 plugin_message_loop_->PostTask(FROM_HERE, base::Bind( |
| 131 this, &PepperViewProxy::ReleaseFrame, make_scoped_refptr(frame))); | 126 &PepperViewProxy::ReleaseFrame, this, make_scoped_refptr(frame))); |
| 132 return; | 127 return; |
| 133 } | 128 } |
| 134 | 129 |
| 135 if (view_) | 130 if (view_) |
| 136 view_->ReleaseFrame(frame); | 131 view_->ReleaseFrame(frame); |
| 137 } | 132 } |
| 138 | 133 |
| 139 void PepperViewProxy::OnPartialFrameOutput(media::VideoFrame* frame, | 134 void PepperViewProxy::OnPartialFrameOutput(media::VideoFrame* frame, |
| 140 RectVector* rects, | 135 RectVector* rects, |
| 141 Task* done) { | 136 const base::Closure& done) { |
| 142 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { | 137 if (instance_ && !plugin_message_loop_->BelongsToCurrentThread()) { |
| 143 plugin_message_loop_->PostTask(FROM_HERE, NewRunnableMethod( | 138 plugin_message_loop_->PostTask(FROM_HERE, base::Bind( |
| 144 this, &PepperViewProxy::OnPartialFrameOutput, | 139 &PepperViewProxy::OnPartialFrameOutput, this, |
| 145 make_scoped_refptr(frame), rects, done)); | 140 make_scoped_refptr(frame), rects, done)); |
| 146 return; | 141 return; |
| 147 } | 142 } |
| 148 | 143 |
| 149 if (view_) | 144 if (view_) |
| 150 view_->OnPartialFrameOutput(frame, rects, done); | 145 view_->OnPartialFrameOutput(frame, rects, done); |
| 151 } | 146 } |
| 152 | 147 |
| 153 void PepperViewProxy::Detach() { | 148 void PepperViewProxy::Detach() { |
| 154 DCHECK(plugin_message_loop_->BelongsToCurrentThread()); | 149 DCHECK(plugin_message_loop_->BelongsToCurrentThread()); |
| 155 instance_ = NULL; | 150 instance_ = NULL; |
| 156 view_ = NULL; | 151 view_ = NULL; |
| 157 } | 152 } |
| 158 | 153 |
| 159 } // namespace remoting | 154 } // namespace remoting |
| OLD | NEW |