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

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

Issue 2282783003: [Remoting Android] Create Interfaces for GlDisplay (Closed)
Patch Set: [Remoting Android] Create Interfaces for GlDisplay 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; 24 private Event.ParameterRunnable<Void> mProcessAnimationRunnable;
25 25
26 private float mScaleFactor;
27
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;
30 display.setDesktopView(this);
32 31
33 mProcessAnimationRunnable = new Event.ParameterRunnable<Void>() { 32 mProcessAnimationRunnable = new Event.ParameterRunnable<Void>() {
34 @Override 33 @Override
35 public void run(Void p) { 34 public void run(Void p) {
36 mInputHandler.processAnimation(); 35 mInputHandler.processAnimation();
37 } 36 }
38 }; 37 };
39 38
40 mScaleFactor = 0;
41
42 getHolder().addCallback(this); 39 getHolder().addCallback(this);
Hzj_jie 2016/08/29 22:52:51 It looks like you are still using GlDesktopView fo
Yuwei 2016/08/29 23:38:21 Yep. I plan to completely remove GlDesktopView in
43 } 40 }
44 41
45 @Override 42 @Override
46 public void showInputFeedback(InputFeedbackType feedbackToShow, PointF pos) { 43 public void showInputFeedback(RenderStub.InputFeedbackType feedbackToShow, P ointF pos) {
47 float diameter = getFeedbackRadius(feedbackToShow, mScaleFactor) * 2.0f; 44 mDisplay.showInputFeedback(feedbackToShow, pos);
48 if (diameter <= 0.0f) {
49 return;
50 }
51 mDisplay.showCursorInputFeedback(pos.x, pos.y, diameter);
52 } 45 }
53 46
54 @Override 47 @Override
55 public void transformationChanged(Matrix matrix) { 48 public void transformationChanged(Matrix matrix) {
56 float[] matrixArray = new float[9]; 49 mDisplay.setTransformation(matrix);
57 matrix.getValues(matrixArray);
58 mDisplay.pixelTransformationChanged(matrixArray);
59 mScaleFactor = matrix.mapRadius(1);
60 } 50 }
61 51
62 @Override 52 @Override
63 public void cursorMoved(PointF position) { 53 public void cursorMoved(PointF position) {
64 mDisplay.cursorPixelPositionChanged(position.x, position.y); 54 mDisplay.moveCursor(position);
65 } 55 }
66 56
67 @Override 57 @Override
68 public void cursorVisibilityChanged(boolean visible) { 58 public void cursorVisibilityChanged(boolean visible) {
69 mDisplay.cursorVisibilityChanged(visible); 59 mDisplay.setCursorVisibility(visible);
70 } 60 }
71 61
72 @Override 62 @Override
73 public void setAnimationEnabled(boolean enabled) { 63 public void setAnimationEnabled(boolean enabled) {
74 if (enabled && mOnCanvasRenderedListenerKey == null) { 64 if (enabled && mOnCanvasRenderedListenerKey == null) {
75 mOnCanvasRenderedListenerKey = mDisplay.onCanvasRendered() 65 mOnCanvasRenderedListenerKey = mDisplay.onCanvasRendered()
76 .add(mProcessAnimationRunnable); 66 .add(mProcessAnimationRunnable);
77 mInputHandler.processAnimation(); 67 mInputHandler.processAnimation();
78 } else if (!enabled && mOnCanvasRenderedListenerKey != null) { 68 } else if (!enabled && mOnCanvasRenderedListenerKey != null) {
79 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey); 69 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey);
80 mOnCanvasRenderedListenerKey = null; 70 mOnCanvasRenderedListenerKey = null;
81 } 71 }
82 } 72 }
83 73
84 @Override 74 @Override
85 public void surfaceCreated(SurfaceHolder holder) { 75 public void surfaceCreated(SurfaceHolder holder) {
86 mOnHostSizeChangedListenerKey = mDisplay 76 mOnHostSizeChangedListenerKey = mDisplay
87 .onHostSizeChanged().add(new Event.ParameterRunnable<SizeChanged EventParameter>() { 77 .onHostSizeChanged().add(new Event.ParameterRunnable<SizeChanged EventParameter>() {
88 @Override 78 @Override
89 public void run(SizeChangedEventParameter p) { 79 public void run(SizeChangedEventParameter p) {
90 mOnHostSizeChanged.raise(p); 80 mOnHostSizeChanged.raise(p);
91 } 81 }
92 }); 82 });
93 83
94 mDisplay.surfaceCreated(holder.getSurface()); 84 mDisplay.surfaceCreated(holder);
95 } 85 }
96 86
97 @Override 87 @Override
98 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 88 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
99 mDisplay.surfaceChanged(width, height); 89 mDisplay.surfaceChanged(holder, format, width, height);
100 mOnClientSizeChanged.raise(new SizeChangedEventParameter(width, height)) ; 90 mOnClientSizeChanged.raise(new SizeChangedEventParameter(width, height)) ;
101 } 91 }
102 92
103 @Override 93 @Override
104 public void surfaceDestroyed(SurfaceHolder holder) { 94 public void surfaceDestroyed(SurfaceHolder holder) {
105 // GlDisplay's life time spans to the whole session while GlDesktopView may be created and 95 // 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 96 // 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. 97 // the listeners when the surface is about to be destroyed.
108 if (mOnHostSizeChangedListenerKey != null) { 98 if (mOnHostSizeChangedListenerKey != null) {
109 mDisplay.onHostSizeChanged().remove(mOnHostSizeChangedListenerKey); 99 mDisplay.onHostSizeChanged().remove(mOnHostSizeChangedListenerKey);
110 } 100 }
111 if (mOnCanvasRenderedListenerKey != null) { 101 if (mOnCanvasRenderedListenerKey != null) {
112 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey); 102 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey);
113 } 103 }
114 mDisplay.surfaceDestroyed(); 104 mDisplay.surfaceDestroyed(holder);
115 } 105 }
116 } 106 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698