Chromium Code Reviews| 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/pepper_view.h" | 5 #include "remoting/client/plugin/pepper_view.h" |
| 6 | 6 |
| 7 #include <functional> | 7 #include <functional> |
| 8 | 8 |
| 9 #include "base/message_loop.h" | 9 #include "base/message_loop.h" |
| 10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
| 11 #include "base/synchronization/waitable_event.h" | 11 #include "base/synchronization/waitable_event.h" |
| 12 #include "ppapi/cpp/completion_callback.h" | 12 #include "ppapi/cpp/completion_callback.h" |
| 13 #include "ppapi/cpp/graphics_2d.h" | 13 #include "ppapi/cpp/graphics_2d.h" |
| 14 #include "ppapi/cpp/image_data.h" | 14 #include "ppapi/cpp/image_data.h" |
| 15 #include "ppapi/cpp/mouse_cursor.h" | |
| 15 #include "ppapi/cpp/point.h" | 16 #include "ppapi/cpp/point.h" |
| 16 #include "ppapi/cpp/rect.h" | 17 #include "ppapi/cpp/rect.h" |
| 17 #include "ppapi/cpp/size.h" | 18 #include "ppapi/cpp/size.h" |
| 18 #include "remoting/base/util.h" | 19 #include "remoting/base/util.h" |
| 19 #include "remoting/client/chromoting_stats.h" | 20 #include "remoting/client/chromoting_stats.h" |
| 20 #include "remoting/client/client_context.h" | 21 #include "remoting/client/client_context.h" |
| 21 #include "remoting/client/frame_producer.h" | 22 #include "remoting/client/frame_producer.h" |
| 22 #include "remoting/client/plugin/chromoting_instance.h" | 23 #include "remoting/client/plugin/chromoting_instance.h" |
| 23 #include "remoting/client/plugin/pepper_util.h" | 24 #include "remoting/client/plugin/pepper_util.h" |
| 24 | 25 |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 142 ChromotingInstance::STATE_FAILED, | 143 ChromotingInstance::STATE_FAILED, |
| 143 ConvertConnectionError(error)); | 144 ConvertConnectionError(error)); |
| 144 break; | 145 break; |
| 145 } | 146 } |
| 146 } | 147 } |
| 147 | 148 |
| 148 protocol::ClipboardStub* PepperView::GetClipboardStub() { | 149 protocol::ClipboardStub* PepperView::GetClipboardStub() { |
| 149 return instance_; | 150 return instance_; |
| 150 } | 151 } |
| 151 | 152 |
| 153 void PepperView::SetCursorShape(const protocol::CursorShapeInfo& cursor_shape) { | |
| 154 if (!cursor_shape.has_data()) | |
| 155 return; | |
| 156 | |
| 157 int width = cursor_shape.width(); | |
|
Wez
2012/05/23 00:01:57
This and the other fields you use below are option
garykac
2012/05/26 01:58:01
Done.
| |
| 158 int height = cursor_shape.height(); | |
| 159 int hotspot_x = cursor_shape.hotspot_x(); | |
| 160 int hotspot_y = cursor_shape.hotspot_y(); | |
| 161 | |
| 162 pp::ImageData* cursor_image; | |
| 163 cursor_image = new pp::ImageData(instance_, | |
| 164 PP_IMAGEDATAFORMAT_BGRA_PREMUL, | |
| 165 pp::Size(width, height), | |
| 166 false); | |
|
Wez
2012/05/23 00:01:57
You're leaking the C++ wrapper for the ImageData r
garykac
2012/05/26 01:58:01
Done.
| |
| 167 | |
| 168 int total_bytes = width * height * 4; | |
| 169 memcpy(cursor_image->data(), cursor_shape.data().data(), total_bytes); | |
|
Wez
2012/05/23 00:01:57
Are we guaranteed that the stride of the ImageData
garykac
2012/05/26 01:58:01
Done.
| |
| 170 | |
| 171 // TODO(garykac) Use pp::ImageData::GetNativeImageDataFormat() and | |
| 172 // constrain to 32x32 pixels. | |
|
Wez
2012/05/23 00:01:57
nit: Clarify that this is because the SetCursor()
garykac
2012/05/26 01:58:01
Done.
| |
| 173 pp::MouseCursor::SetCursor(instance_, PP_MOUSECURSOR_TYPE_CUSTOM, | |
| 174 *cursor_image, | |
| 175 pp::Point(hotspot_x, hotspot_y)); | |
| 176 } | |
| 177 | |
| 152 void PepperView::SetView(const SkISize& view_size, const SkIRect& clip_area) { | 178 void PepperView::SetView(const SkISize& view_size, const SkIRect& clip_area) { |
| 153 bool view_changed = false; | 179 bool view_changed = false; |
| 154 | 180 |
| 155 if (view_size_ != view_size) { | 181 if (view_size_ != view_size) { |
| 156 view_changed = true; | 182 view_changed = true; |
| 157 view_size_ = view_size; | 183 view_size_ = view_size; |
| 158 | 184 |
| 159 pp::Size pp_size = pp::Size(view_size_.width(), view_size_.height()); | 185 pp::Size pp_size = pp::Size(view_size_.width(), view_size_.height()); |
| 160 graphics2d_ = pp::Graphics2D(instance_, pp_size, true); | 186 graphics2d_ = pp::Graphics2D(instance_, pp_size, true); |
| 161 bool result = instance_->BindGraphics(graphics2d_); | 187 bool result = instance_->BindGraphics(graphics2d_); |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 339 | 365 |
| 340 // If there is a buffer queued for rendering then render it now. | 366 // If there is a buffer queued for rendering then render it now. |
| 341 if (merge_buffer_ != NULL) { | 367 if (merge_buffer_ != NULL) { |
| 342 buffer = merge_buffer_; | 368 buffer = merge_buffer_; |
| 343 merge_buffer_ = NULL; | 369 merge_buffer_ = NULL; |
| 344 FlushBuffer(merge_clip_area_, buffer, merge_region_); | 370 FlushBuffer(merge_clip_area_, buffer, merge_region_); |
| 345 } | 371 } |
| 346 } | 372 } |
| 347 | 373 |
| 348 } // namespace remoting | 374 } // namespace remoting |
| OLD | NEW |