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

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

Issue 2879743002: [CRD iOS] Hook the touch input feedback (Closed)
Patch Set: Fix dependency and race condition 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
« no previous file with comments | « remoting/client/ui/renderer_proxy.h ('k') | remoting/ios/display/gl_display_handler.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 RunTaskOnProperThread(
41 base::Bind(&GlRenderer::OnCursorVisibilityChanged, renderer_, visible),
42 false);
43 }
44
45 void RendererProxy::StartInputFeedback(float x, float y, float diameter) {
46 RunTaskOnProperThread(
47 base::Bind(&GlRenderer::OnCursorInputFeedback, renderer_, x, y, diameter),
48 false);
49 }
50
51 base::WeakPtr<RendererProxy> RendererProxy::GetWeakPtr() {
52 return weak_factory_.GetWeakPtr();
53 }
54
55 void RendererProxy::RunTaskOnProperThread(const base::Closure& task,
56 bool needs_synchronization) {
57 if (task_runner_->BelongsToCurrentThread()) {
58 task.Run();
59 return;
60 }
61
62 if (needs_synchronization) {
63 ui_task_poster_->AddTask(task);
64 return;
65 }
66
67 task_runner_->PostTask(FROM_HERE, task);
68 }
69
70 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/client/ui/renderer_proxy.h ('k') | remoting/ios/display/gl_display_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698