| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/chromoting_instance.h" | 5 #include "remoting/client/plugin/chromoting_instance.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 LOG(ERROR) << "Media library not initialized."; | 111 LOG(ERROR) << "Media library not initialized."; |
| 112 return false; | 112 return false; |
| 113 } | 113 } |
| 114 | 114 |
| 115 // Start all the threads. | 115 // Start all the threads. |
| 116 context_.Start(); | 116 context_.Start(); |
| 117 | 117 |
| 118 // Create the chromoting objects that don't depend on the network connection. | 118 // Create the chromoting objects that don't depend on the network connection. |
| 119 // Because we decode on a separate thread we need a FrameConsumerProxy to | 119 // Because we decode on a separate thread we need a FrameConsumerProxy to |
| 120 // bounce calls from the RectangleUpdateDecoder back to the plugin thread. | 120 // bounce calls from the RectangleUpdateDecoder back to the plugin thread. |
| 121 view_.reset(new PepperView(this, &context_)); | 121 consumer_proxy_ = new FrameConsumerProxy(plugin_message_loop_); |
| 122 consumer_proxy_ = new FrameConsumerProxy(view_.get(), plugin_message_loop_); | |
| 123 rectangle_decoder_ = new RectangleUpdateDecoder( | 122 rectangle_decoder_ = new RectangleUpdateDecoder( |
| 124 context_.decode_message_loop(), consumer_proxy_.get()); | 123 context_.decode_message_loop(), consumer_proxy_.get()); |
| 124 view_.reset(new PepperView(this, &context_, rectangle_decoder_.get())); |
| 125 consumer_proxy_->Attach(view_.get()); |
| 125 | 126 |
| 126 // Default to a medium grey. | 127 // Default to a medium grey. |
| 127 view_->SetSolidFill(0xFFCDCDCD); | 128 view_->SetSolidFill(0xFFCDCDCD); |
| 128 | 129 |
| 129 return true; | 130 return true; |
| 130 } | 131 } |
| 131 | 132 |
| 132 void ChromotingInstance::Connect(const ClientConfig& config) { | 133 void ChromotingInstance::Connect(const ClientConfig& config) { |
| 133 DCHECK(plugin_message_loop_->BelongsToCurrentThread()); | 134 DCHECK(plugin_message_loop_->BelongsToCurrentThread()); |
| 134 | 135 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 188 GetScriptableObject()->SetConnectionStatus( | 189 GetScriptableObject()->SetConnectionStatus( |
| 189 ChromotingScriptableObject::STATUS_CLOSED, | 190 ChromotingScriptableObject::STATUS_CLOSED, |
| 190 ChromotingScriptableObject::ERROR_NONE); | 191 ChromotingScriptableObject::ERROR_NONE); |
| 191 } | 192 } |
| 192 | 193 |
| 193 void ChromotingInstance::DidChangeView(const pp::Rect& position, | 194 void ChromotingInstance::DidChangeView(const pp::Rect& position, |
| 194 const pp::Rect& clip) { | 195 const pp::Rect& clip) { |
| 195 DCHECK(plugin_message_loop_->BelongsToCurrentThread()); | 196 DCHECK(plugin_message_loop_->BelongsToCurrentThread()); |
| 196 | 197 |
| 197 SkISize new_size = SkISize::Make(position.width(), position.height()); | 198 SkISize new_size = SkISize::Make(position.width(), position.height()); |
| 198 if (view_->SetViewSize(new_size)) { | 199 SkIRect new_clip = |
| 200 SkIRect::MakeXYWH(clip.x(), clip.y(), clip.width(), clip.height()); |
| 201 |
| 202 if (view_->SetView(new_size, new_clip)) { |
| 199 if (mouse_input_filter_.get()) { | 203 if (mouse_input_filter_.get()) { |
| 200 mouse_input_filter_->set_input_size(new_size); | 204 mouse_input_filter_->set_input_size(new_size); |
| 201 } | 205 } |
| 202 rectangle_decoder_->SetOutputSize(new_size); | |
| 203 } | 206 } |
| 204 | |
| 205 rectangle_decoder_->UpdateClipRect( | |
| 206 SkIRect::MakeXYWH(clip.x(), clip.y(), clip.width(), clip.height())); | |
| 207 } | 207 } |
| 208 | 208 |
| 209 bool ChromotingInstance::HandleInputEvent(const pp::InputEvent& event) { | 209 bool ChromotingInstance::HandleInputEvent(const pp::InputEvent& event) { |
| 210 DCHECK(plugin_message_loop_->BelongsToCurrentThread()); | 210 DCHECK(plugin_message_loop_->BelongsToCurrentThread()); |
| 211 | 211 |
| 212 if (!input_handler_.get()) | 212 if (!input_handler_.get()) |
| 213 return false; | 213 return false; |
| 214 | 214 |
| 215 // TODO(wez): When we have a good hook into Host dimensions changes, move | 215 // TODO(wez): When we have a good hook into Host dimensions changes, move |
| 216 // this there. | 216 // this there. |
| 217 // If |input_handler_| is valid, then |mouse_input_filter_| must also be | 217 // If |input_handler_| is valid, then |mouse_input_filter_| must also be |
| 218 // since they are constructed together as part of the input pipeline | 218 // since they are constructed together as part of the input pipeline |
| 219 mouse_input_filter_->set_output_size(view_->get_host_size()); | 219 mouse_input_filter_->set_output_size(view_->get_screen_size()); |
| 220 | 220 |
| 221 return input_handler_->HandleInputEvent(event); | 221 return input_handler_->HandleInputEvent(event); |
| 222 } | 222 } |
| 223 | 223 |
| 224 ChromotingScriptableObject* ChromotingInstance::GetScriptableObject() { | 224 ChromotingScriptableObject* ChromotingInstance::GetScriptableObject() { |
| 225 pp::VarPrivate object = GetInstanceObject(); | 225 pp::VarPrivate object = GetInstanceObject(); |
| 226 if (!object.is_undefined()) { | 226 if (!object.is_undefined()) { |
| 227 pp::deprecated::ScriptableObject* so = object.AsScriptableObject(); | 227 pp::deprecated::ScriptableObject* so = object.AsScriptableObject(); |
| 228 DCHECK(so != NULL); | 228 DCHECK(so != NULL); |
| 229 return static_cast<ChromotingScriptableObject*>(so); | 229 return static_cast<ChromotingScriptableObject*>(so); |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 return client_->GetStats(); | 346 return client_->GetStats(); |
| 347 } | 347 } |
| 348 | 348 |
| 349 void ChromotingInstance::ReleaseAllKeys() { | 349 void ChromotingInstance::ReleaseAllKeys() { |
| 350 if (key_event_tracker_.get()) { | 350 if (key_event_tracker_.get()) { |
| 351 key_event_tracker_->ReleaseAllKeys(); | 351 key_event_tracker_->ReleaseAllKeys(); |
| 352 } | 352 } |
| 353 } | 353 } |
| 354 | 354 |
| 355 } // namespace remoting | 355 } // namespace remoting |
| OLD | NEW |