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

Side by Side Diff: remoting/client/ui/renderer_proxy.cc

Issue 2903623002: Moving input related classes to the input folder. (Closed)
Patch Set: Hide gesture code from nacl. Created 3 years, 7 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
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "remoting/client/ui/renderer_proxy.h"
6
7 #include "base/bind.h"
8 #include "base/logging.h"
9 #include "remoting/client/display/gl_renderer.h"
10 #include "remoting/client/queued_task_poster.h"
11 #include "remoting/client/ui/view_matrix.h"
12
13 namespace remoting {
14
15 RendererProxy::RendererProxy(
16 scoped_refptr<base::SingleThreadTaskRunner> task_runner)
17 : task_runner_(task_runner),
18 ui_task_poster_(new remoting::QueuedTaskPoster(task_runner_)),
19 weak_factory_(this) {}
20
21 RendererProxy::~RendererProxy() {}
22
23 void RendererProxy::Initialize(base::WeakPtr<GlRenderer> renderer) {
24 renderer_ = renderer;
25 }
26
27 void RendererProxy::SetTransformation(const ViewMatrix& transformation) {
28 // Viewport and cursor movements need to be synchronized into the same frame.
29 RunTaskOnProperThread(base::Bind(&GlRenderer::OnPixelTransformationChanged,
30 renderer_, transformation.ToMatrixArray()),
31 true);
32 }
33
34 void RendererProxy::SetCursorPosition(float x, float y) {
35 RunTaskOnProperThread(base::Bind(&GlRenderer::OnCursorMoved, renderer_, x, y),
36 true);
37 }
38
39 void RendererProxy::SetCursorVisibility(bool visible) {
40 // Cursor visibility and position should be synchronized.
41 RunTaskOnProperThread(
42 base::Bind(&GlRenderer::OnCursorVisibilityChanged, renderer_, visible),
43 true);
44 }
45
46 void RendererProxy::StartInputFeedback(float x, float y, float diameter) {
47 RunTaskOnProperThread(
48 base::Bind(&GlRenderer::OnCursorInputFeedback, renderer_, x, y, diameter),
49 false);
50 }
51
52 base::WeakPtr<RendererProxy> RendererProxy::GetWeakPtr() {
53 return weak_factory_.GetWeakPtr();
54 }
55
56 void RendererProxy::RunTaskOnProperThread(const base::Closure& task,
57 bool needs_synchronization) {
58 if (task_runner_->BelongsToCurrentThread()) {
59 task.Run();
60 return;
61 }
62
63 if (needs_synchronization) {
64 ui_task_poster_->AddTask(task);
65 return;
66 }
67
68 task_runner_->PostTask(FROM_HERE, task);
69 }
70
71 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698