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

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

Issue 2272253004: [Remoting Android] Move mRenderData into TouchInputHandler (Closed)
Patch Set: 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.PointF; 8 import android.graphics.PointF;
8 import android.view.SurfaceHolder; 9 import android.view.SurfaceHolder;
9 10
10 import org.chromium.chromoting.jni.Client; 11 import org.chromium.chromoting.jni.Client;
11 import org.chromium.chromoting.jni.GlDisplay; 12 import org.chromium.chromoting.jni.GlDisplay;
12 13
13 /** 14 /**
14 * 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
15 * 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.
16 */ 17 */
17 public class GlDesktopView extends DesktopView implements SurfaceHolder.Callback { 18 public class GlDesktopView extends DesktopView implements SurfaceHolder.Callback {
18 private final GlDisplay mDisplay; 19 private final GlDisplay mDisplay;
19 20
20 private Object mOnHostSizeChangedListenerKey; 21 private Object mOnHostSizeChangedListenerKey;
21 private Object mOnCanvasRenderedListenerKey; 22 private Object mOnCanvasRenderedListenerKey;
22 23
23 private Event.ParameterRunnable<Void> mProcessAnimationRunnable; 24 private Event.ParameterRunnable<Void> mProcessAnimationRunnable;
24 25
26 private float mScaleFactor;
27
25 public GlDesktopView(GlDisplay display, Desktop desktop, Client client) { 28 public GlDesktopView(GlDisplay display, Desktop desktop, Client client) {
26 super(desktop, client); 29 super(desktop, client);
27 Preconditions.notNull(display); 30 Preconditions.notNull(display);
28 mDisplay = display; 31 mDisplay = display;
29 32
30 mProcessAnimationRunnable = new Event.ParameterRunnable<Void>() { 33 mProcessAnimationRunnable = new Event.ParameterRunnable<Void>() {
31 @Override 34 @Override
32 public void run(Void p) { 35 public void run(Void p) {
33 mInputHandler.processAnimation(); 36 mInputHandler.processAnimation();
34 } 37 }
35 }; 38 };
36 39
40 mScaleFactor = 0;
41
37 getHolder().addCallback(this); 42 getHolder().addCallback(this);
38 } 43 }
39 44
40 @Override 45 @Override
41 public void showInputFeedback(InputFeedbackType feedbackToShow, PointF pos) { 46 public void showInputFeedback(InputFeedbackType feedbackToShow, PointF pos) {
42 float scaleFactor = mRenderData.transform.mapRadius(1); 47 float diameter = getFeedbackRadius(feedbackToShow, mScaleFactor) * 2.0f;
43 float diameter = getFeedbackRadius(feedbackToShow, scaleFactor) * 2.0f;
44 if (diameter <= 0.0f) { 48 if (diameter <= 0.0f) {
45 return; 49 return;
46 } 50 }
47 mDisplay.showCursorInputFeedback(pos.x, pos.y, diameter); 51 mDisplay.showCursorInputFeedback(pos.x, pos.y, diameter);
48 } 52 }
49 53
50 @Override 54 @Override
51 public void transformationChanged() { 55 public void transformationChanged(Matrix matrix) {
52 if (mRenderData.imageHeight == 0 || mRenderData.imageWidth == 0 56 float[] matrixArray = new float[9];
Yuwei 2016/08/25 21:32:28 Just removed this check since it doesn't look usef
joedow 2016/08/25 22:57:47 The reason this existed was that there used to be
Yuwei 2016/08/25 23:14:35 Acknowledged.
53 || mRenderData.screenHeight == 0 || mRenderData.screenWidth == 0 ) { 57 matrix.getValues(matrixArray);
54 return; 58 mDisplay.pixelTransformationChanged(matrixArray);
55 } 59 mScaleFactor = matrix.mapRadius(1);
56 float[] matrix = new float[9];
57 mRenderData.transform.getValues(matrix);
58 mDisplay.pixelTransformationChanged(matrix);
59 } 60 }
60 61
61 @Override 62 @Override
62 public void cursorMoved() { 63 public void cursorMoved(PointF position) {
63 PointF cursorPosition = mRenderData.getCursorPosition(); 64 mDisplay.cursorPixelPositionChanged(position.x, position.y);
64 mDisplay.cursorPixelPositionChanged(cursorPosition.x, cursorPosition.y);
65 } 65 }
66 66
67 @Override 67 @Override
68 public void cursorVisibilityChanged() { 68 public void cursorVisibilityChanged(boolean visible) {
69 mDisplay.cursorVisibilityChanged(mRenderData.drawCursor); 69 mDisplay.cursorVisibilityChanged(visible);
70 } 70 }
71 71
72 @Override 72 @Override
73 public void setAnimationEnabled(boolean enabled) { 73 public void setAnimationEnabled(boolean enabled) {
74 if (enabled && mOnCanvasRenderedListenerKey == null) { 74 if (enabled && mOnCanvasRenderedListenerKey == null) {
75 mOnCanvasRenderedListenerKey = mDisplay.onCanvasRendered() 75 mOnCanvasRenderedListenerKey = mDisplay.onCanvasRendered()
76 .add(mProcessAnimationRunnable); 76 .add(mProcessAnimationRunnable);
77 mInputHandler.processAnimation(); 77 mInputHandler.processAnimation();
78 } else if (!enabled && mOnCanvasRenderedListenerKey != null) { 78 } else if (!enabled && mOnCanvasRenderedListenerKey != null) {
79 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey); 79 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey);
80 mOnCanvasRenderedListenerKey = null; 80 mOnCanvasRenderedListenerKey = null;
81 } 81 }
82 } 82 }
83 83
84 @Override 84 @Override
85 public void surfaceCreated(SurfaceHolder holder) { 85 public void surfaceCreated(SurfaceHolder holder) {
86 mOnHostSizeChangedListenerKey = mDisplay 86 mOnHostSizeChangedListenerKey = mDisplay
Hzj_jie 2016/08/25 21:55:14 Since GlDisplay and GlDesktopView are the only com
Yuwei 2016/08/25 22:22:49 Yep. That's what I am planning to do. I'm planning
87 .onHostSizeChanged().add(new Event.ParameterRunnable<SizeChanged EventParameter>() { 87 .onHostSizeChanged().add(new Event.ParameterRunnable<SizeChanged EventParameter>() {
88 @Override 88 @Override
89 public void run(SizeChangedEventParameter p) { 89 public void run(SizeChangedEventParameter p) {
90 mRenderData.imageHeight = p.height;
91 mRenderData.imageWidth = p.width;
92
93 // Note that imageHeight and imageWidth must be set befo re
94 // mOnHostSizeChanged is triggered. mInputHandler expect s the image size in
95 // mRenderData updated before its callback is called.
96 mOnHostSizeChanged.raise(p); 90 mOnHostSizeChanged.raise(p);
97 } 91 }
98 }); 92 });
99 93
100 mDisplay.surfaceCreated(holder.getSurface()); 94 mDisplay.surfaceCreated(holder.getSurface());
101 } 95 }
102 96
103 @Override 97 @Override
104 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 98 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
105 mRenderData.screenWidth = width;
106 mRenderData.screenHeight = height;
107
108 mDisplay.surfaceChanged(width, height); 99 mDisplay.surfaceChanged(width, height);
109 mOnClientSizeChanged.raise(new SizeChangedEventParameter(width, height)) ; 100 mOnClientSizeChanged.raise(new SizeChangedEventParameter(width, height)) ;
110 } 101 }
111 102
112 @Override 103 @Override
113 public void surfaceDestroyed(SurfaceHolder holder) { 104 public void surfaceDestroyed(SurfaceHolder holder) {
114 // GlDisplay's life time spans to the whole session while GlDesktopView may be created and 105 // GlDisplay's life time spans to the whole session while GlDesktopView may be created and
115 // destroyed for multiple times (say when the phone is rotated). It is i mportant to remove 106 // destroyed for multiple times (say when the phone is rotated). It is i mportant to remove
116 // the listeners when the surface is about to be destroyed. 107 // the listeners when the surface is about to be destroyed.
117 if (mOnHostSizeChangedListenerKey != null) { 108 if (mOnHostSizeChangedListenerKey != null) {
118 mDisplay.onHostSizeChanged().remove(mOnHostSizeChangedListenerKey); 109 mDisplay.onHostSizeChanged().remove(mOnHostSizeChangedListenerKey);
119 } 110 }
120 if (mOnCanvasRenderedListenerKey != null) { 111 if (mOnCanvasRenderedListenerKey != null) {
121 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey); 112 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey);
122 } 113 }
123 mDisplay.surfaceDestroyed(); 114 mDisplay.surfaceDestroyed();
124 } 115 }
125 } 116 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698