Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(336)

Side by Side Diff: remoting/client/display/gl_cursor.cc

Issue 2591363002: Adding drawable to CRD andorid and iOS gl rendering pipeline. (Closed)
Patch Set: More like GetZIndex. Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/display/gl_cursor.h" 5 #include "remoting/client/display/gl_cursor.h"
6 6
7 #include "remoting/base/util.h" 7 #include "remoting/base/util.h"
8 #include "remoting/client/display/gl_canvas.h" 8 #include "remoting/client/display/gl_canvas.h"
9 #include "remoting/client/display/gl_math.h" 9 #include "remoting/client/display/gl_math.h"
10 #include "remoting/client/display/gl_render_layer.h" 10 #include "remoting/client/display/gl_render_layer.h"
11 #include "remoting/client/display/gl_texture_ids.h" 11 #include "remoting/client/display/gl_texture_ids.h"
12 #include "remoting/proto/control.pb.h" 12 #include "remoting/proto/control.pb.h"
13 #include "third_party/libyuv/include/libyuv/convert_argb.h" 13 #include "third_party/libyuv/include/libyuv/convert_argb.h"
14 14
15 namespace remoting { 15 namespace remoting {
16 16
17 namespace { 17 namespace {
18 const int kDefaultCursorDataSize = 32 * 32 * GlRenderLayer::kBytesPerPixel; 18 const int kDefaultCursorDataSize = 32 * 32 * GlRenderLayer::kBytesPerPixel;
19 } // namespace 19 } // namespace
20 20
21 GlCursor::GlCursor() {} 21 GlCursor::GlCursor() : weak_factory_(this) {}
22 22
23 GlCursor::~GlCursor() {} 23 GlCursor::~GlCursor() {}
24 24
25 void GlCursor::SetCursorShape(const protocol::CursorShapeInfo& cursor_shape) { 25 void GlCursor::SetCursorShape(const protocol::CursorShapeInfo& cursor_shape) {
26 int data_size = cursor_shape.width() * cursor_shape.height() * 26 int data_size = cursor_shape.width() * cursor_shape.height() *
27 GlRenderLayer::kBytesPerPixel; 27 GlRenderLayer::kBytesPerPixel;
28 if (current_cursor_data_size_ < data_size) { 28 if (current_cursor_data_size_ < data_size) {
29 current_cursor_data_size_ = 29 current_cursor_data_size_ =
30 kDefaultCursorDataSize > data_size ? kDefaultCursorDataSize : data_size; 30 kDefaultCursorDataSize > data_size ? kDefaultCursorDataSize : data_size;
31 current_cursor_data_.reset(new uint8_t[current_cursor_data_size_]); 31 current_cursor_data_.reset(new uint8_t[current_cursor_data_size_]);
(...skipping 29 matching lines...) Expand all
61 current_cursor_width_, current_cursor_height_, &positions); 61 current_cursor_width_, current_cursor_height_, &positions);
62 if (layer_) { 62 if (layer_) {
63 layer_->SetVertexPositions(positions); 63 layer_->SetVertexPositions(positions);
64 } 64 }
65 } 65 }
66 66
67 void GlCursor::SetCursorVisible(bool visible) { 67 void GlCursor::SetCursorVisible(bool visible) {
68 visible_ = visible; 68 visible_ = visible;
69 } 69 }
70 70
71 void GlCursor::SetCanvas(GlCanvas* canvas) { 71 void GlCursor::SetCanvas(base::WeakPtr<Canvas> canvas) {
72 if (!canvas) { 72 if (!canvas) {
73 layer_.reset(); 73 layer_.reset();
74 return; 74 return;
75 } 75 }
76 layer_.reset(new GlRenderLayer(kGlCursorTextureId, canvas)); 76 layer_.reset(new GlRenderLayer(kGlCursorTextureId, canvas));
77 if (current_cursor_data_) { 77 if (current_cursor_data_) {
78 SetCurrentCursorShape(true); 78 SetCurrentCursorShape(true);
79 } 79 }
80 SetCursorPosition(cursor_x_, cursor_y_); 80 SetCursorPosition(cursor_x_, cursor_y_);
81 } 81 }
82 82
83 void GlCursor::Draw() { 83 bool GlCursor::Draw() {
84 DCHECK(thread_checker_.CalledOnValidThread());
84 if (layer_ && current_cursor_data_ && visible_) { 85 if (layer_ && current_cursor_data_ && visible_) {
85 layer_->Draw(1.f); 86 layer_->Draw(1.f);
86 } 87 }
88 return false;
89 }
90
91 int GlCursor::GetZIndex() {
92 return Drawable::ZIndex::CURSOR;
87 } 93 }
88 94
89 void GlCursor::SetCurrentCursorShape(bool size_changed) { 95 void GlCursor::SetCurrentCursorShape(bool size_changed) {
90 if (layer_) { 96 if (layer_) {
91 if (size_changed) { 97 if (size_changed) {
92 layer_->SetTexture(current_cursor_data_.get(), current_cursor_width_, 98 layer_->SetTexture(current_cursor_data_.get(), current_cursor_width_,
93 current_cursor_height_, 0); 99 current_cursor_height_, 0);
94 } else { 100 } else {
95 layer_->UpdateTexture(current_cursor_data_.get(), 0, 0, 101 layer_->UpdateTexture(current_cursor_data_.get(), 0, 0,
96 current_cursor_width_, current_cursor_width_, 0); 102 current_cursor_width_, current_cursor_width_, 0);
97 } 103 }
98 } 104 }
99 } 105 }
100 106
107 base::WeakPtr<Drawable> GlCursor::GetWeakPtr() {
108 DCHECK(thread_checker_.CalledOnValidThread());
109 return weak_factory_.GetWeakPtr();
110 }
111
101 } // namespace remoting 112 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698