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

Side by Side Diff: remoting/android/java/src/org/chromium/chromoting/GlDesktopView.java

Issue 2281983004: [Remoting Android] Move setAnimationEnabled to TouchInputHandler (Closed)
Patch Set: Reviewer's Feedback Created 4 years, 3 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 package org.chromium.chromoting; 5 package org.chromium.chromoting;
6 6
7 import android.graphics.Matrix; 7 import android.graphics.Matrix;
8 import android.graphics.PointF; 8 import android.graphics.PointF;
9 import android.view.SurfaceHolder; 9 import android.view.SurfaceHolder;
10 10
11 import org.chromium.chromoting.jni.Client; 11 import org.chromium.chromoting.jni.Client;
12 import org.chromium.chromoting.jni.GlDisplay; 12 import org.chromium.chromoting.jni.GlDisplay;
13 13
14 /** 14 /**
15 * The user interface for viewing and interacting with a specific remote host. U ses OpenGL to draw 15 * The user interface for viewing and interacting with a specific remote host. U ses OpenGL to draw
16 * the desktop and cursor. Should be used entirely on the UI thread. 16 * the desktop and cursor. Should be used entirely on the UI thread.
17 */ 17 */
18 public class GlDesktopView extends DesktopView implements SurfaceHolder.Callback { 18 public class GlDesktopView extends DesktopView implements SurfaceHolder.Callback {
19 private final GlDisplay mDisplay; 19 private final GlDisplay mDisplay;
20 20
21 private Object mOnHostSizeChangedListenerKey; 21 private Object mOnHostSizeChangedListenerKey;
22 private Object mOnCanvasRenderedListenerKey; 22 private Object mOnCanvasRenderedListenerKey;
23 23
24 private Event.ParameterRunnable<Void> mProcessAnimationRunnable;
25
26 private float mScaleFactor; 24 private float mScaleFactor;
27 25
28 public GlDesktopView(GlDisplay display, Desktop desktop, Client client) { 26 public GlDesktopView(GlDisplay display, Desktop desktop, Client client) {
29 super(desktop, client); 27 super(desktop, client);
30 Preconditions.notNull(display); 28 Preconditions.notNull(display);
31 mDisplay = display; 29 mDisplay = display;
32 30
33 mProcessAnimationRunnable = new Event.ParameterRunnable<Void>() {
34 @Override
35 public void run(Void p) {
36 mInputHandler.processAnimation();
37 }
38 };
39
40 mScaleFactor = 0; 31 mScaleFactor = 0;
41 32
42 getHolder().addCallback(this); 33 getHolder().addCallback(this);
43 } 34 }
44 35
45 @Override 36 @Override
46 public void showInputFeedback(InputFeedbackType feedbackToShow, PointF pos) { 37 public void showInputFeedback(InputFeedbackType feedbackToShow, PointF pos) {
47 float diameter = getFeedbackRadius(feedbackToShow, mScaleFactor) * 2.0f; 38 float diameter = getFeedbackRadius(feedbackToShow, mScaleFactor) * 2.0f;
48 if (diameter <= 0.0f) { 39 if (diameter <= 0.0f) {
49 return; 40 return;
(...skipping 13 matching lines...) Expand all
63 public void cursorMoved(PointF position) { 54 public void cursorMoved(PointF position) {
64 mDisplay.cursorPixelPositionChanged(position.x, position.y); 55 mDisplay.cursorPixelPositionChanged(position.x, position.y);
65 } 56 }
66 57
67 @Override 58 @Override
68 public void cursorVisibilityChanged(boolean visible) { 59 public void cursorVisibilityChanged(boolean visible) {
69 mDisplay.cursorVisibilityChanged(visible); 60 mDisplay.cursorVisibilityChanged(visible);
70 } 61 }
71 62
72 @Override 63 @Override
73 public void setAnimationEnabled(boolean enabled) {
74 if (enabled && mOnCanvasRenderedListenerKey == null) {
75 mOnCanvasRenderedListenerKey = mDisplay.onCanvasRendered()
76 .add(mProcessAnimationRunnable);
77 mInputHandler.processAnimation();
78 } else if (!enabled && mOnCanvasRenderedListenerKey != null) {
79 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey);
80 mOnCanvasRenderedListenerKey = null;
81 }
82 }
83
84 @Override
85 public void surfaceCreated(SurfaceHolder holder) { 64 public void surfaceCreated(SurfaceHolder holder) {
86 mOnHostSizeChangedListenerKey = mDisplay 65 mOnHostSizeChangedListenerKey = mDisplay
87 .onHostSizeChanged().add(new Event.ParameterRunnable<SizeChanged EventParameter>() { 66 .onHostSizeChanged().add(new Event.ParameterRunnable<SizeChanged EventParameter>() {
88 @Override 67 @Override
89 public void run(SizeChangedEventParameter p) { 68 public void run(SizeChangedEventParameter p) {
90 mOnHostSizeChanged.raise(p); 69 mOnHostSizeChanged.raise(p);
91 } 70 }
92 }); 71 });
93 72
73 mOnCanvasRenderedListenerKey = mDisplay
74 .onCanvasRendered().add(new Event.ParameterRunnable<Void>() {
75 @Override
76 public void run(Void p) {
77 mOnCanvasRendered.raise(p);
78 }
79 });
80
94 mDisplay.surfaceCreated(holder.getSurface()); 81 mDisplay.surfaceCreated(holder.getSurface());
95 } 82 }
96 83
97 @Override 84 @Override
98 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 85 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
99 mDisplay.surfaceChanged(width, height); 86 mDisplay.surfaceChanged(width, height);
100 mOnClientSizeChanged.raise(new SizeChangedEventParameter(width, height)) ; 87 mOnClientSizeChanged.raise(new SizeChangedEventParameter(width, height)) ;
101 } 88 }
102 89
103 @Override 90 @Override
104 public void surfaceDestroyed(SurfaceHolder holder) { 91 public void surfaceDestroyed(SurfaceHolder holder) {
105 // GlDisplay's life time spans to the whole session while GlDesktopView may be created and 92 // GlDisplay's life time spans to the whole session while GlDesktopView may be created and
106 // destroyed for multiple times (say when the phone is rotated). It is i mportant to remove 93 // destroyed for multiple times (say when the phone is rotated). It is i mportant to remove
107 // the listeners when the surface is about to be destroyed. 94 // the listeners when the surface is about to be destroyed.
108 if (mOnHostSizeChangedListenerKey != null) { 95 if (mOnHostSizeChangedListenerKey != null) {
109 mDisplay.onHostSizeChanged().remove(mOnHostSizeChangedListenerKey); 96 mDisplay.onHostSizeChanged().remove(mOnHostSizeChangedListenerKey);
110 } 97 }
111 if (mOnCanvasRenderedListenerKey != null) { 98 if (mOnCanvasRenderedListenerKey != null) {
112 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey); 99 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey);
113 } 100 }
114 mDisplay.surfaceDestroyed(); 101 mDisplay.surfaceDestroyed();
115 } 102 }
116 } 103 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698