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

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

Issue 2282783003: [Remoting Android] Create Interfaces for GlDisplay (Closed)
Patch Set: Merge ToT again 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 private final InputFeedbackRadiusMapper mInputFeedbackMapper;
21 20
22 private Object mOnHostSizeChangedListenerKey; 21 private Object mOnHostSizeChangedListenerKey;
23 private Object mOnCanvasRenderedListenerKey; 22 private Object mOnCanvasRenderedListenerKey;
24 23
25 private float mScaleFactor;
26
27 public GlDesktopView(GlDisplay display, Desktop desktop, Client client) { 24 public GlDesktopView(GlDisplay display, Desktop desktop, Client client) {
28 super(desktop, client); 25 super(desktop, client);
29 Preconditions.notNull(display); 26 Preconditions.notNull(display);
30 mDisplay = display; 27 mDisplay = display;
31 28 display.setDesktopView(this);
32 mInputFeedbackMapper = new InputFeedbackRadiusMapper(this);
33 29
34 getHolder().addCallback(this); 30 getHolder().addCallback(this);
35 } 31 }
36 32
37 @Override 33 @Override
38 public void showInputFeedback(InputFeedbackType feedbackToShow, PointF pos) { 34 public void showInputFeedback(RenderStub.InputFeedbackType feedbackToShow, P ointF pos) {
39 float diameter = 35 mDisplay.showInputFeedback(feedbackToShow, pos);
40 mInputFeedbackMapper.getFeedbackRadius(feedbackToShow, mScaleFac tor) * 2.0f;
41 if (diameter <= 0.0f) {
42 return;
43 }
44 mDisplay.showCursorInputFeedback(pos.x, pos.y, diameter);
45 } 36 }
46 37
47 @Override 38 @Override
48 public void transformationChanged(Matrix matrix) { 39 public void transformationChanged(Matrix matrix) {
49 float[] matrixArray = new float[9]; 40 mDisplay.setTransformation(matrix);
50 matrix.getValues(matrixArray);
51 mDisplay.pixelTransformationChanged(matrixArray);
52 mScaleFactor = matrix.mapRadius(1);
53 } 41 }
54 42
55 @Override 43 @Override
56 public void cursorMoved(PointF position) { 44 public void cursorMoved(PointF position) {
57 mDisplay.cursorPixelPositionChanged(position.x, position.y); 45 mDisplay.moveCursor(position);
58 } 46 }
59 47
60 @Override 48 @Override
61 public void cursorVisibilityChanged(boolean visible) { 49 public void cursorVisibilityChanged(boolean visible) {
62 mDisplay.cursorVisibilityChanged(visible); 50 mDisplay.setCursorVisibility(visible);
63 } 51 }
64 52
65 @Override 53 @Override
66 public void surfaceCreated(SurfaceHolder holder) { 54 public void surfaceCreated(SurfaceHolder holder) {
67 mOnHostSizeChangedListenerKey = mDisplay 55 mOnHostSizeChangedListenerKey = mDisplay
68 .onHostSizeChanged().add(new Event.ParameterRunnable<SizeChanged EventParameter>() { 56 .onHostSizeChanged().add(new Event.ParameterRunnable<SizeChanged EventParameter>() {
69 @Override 57 @Override
70 public void run(SizeChangedEventParameter p) { 58 public void run(SizeChangedEventParameter p) {
71 mOnHostSizeChanged.raise(p); 59 mOnHostSizeChanged.raise(p);
72 } 60 }
73 }); 61 });
74 62
75 mOnCanvasRenderedListenerKey = mDisplay 63 mOnCanvasRenderedListenerKey = mDisplay
76 .onCanvasRendered().add(new Event.ParameterRunnable<Void>() { 64 .onCanvasRendered().add(new Event.ParameterRunnable<Void>() {
77 @Override 65 @Override
78 public void run(Void p) { 66 public void run(Void p) {
79 mOnCanvasRendered.raise(p); 67 mOnCanvasRendered.raise(p);
80 } 68 }
81 }); 69 });
82 70
83 mDisplay.surfaceCreated(holder.getSurface()); 71 mDisplay.surfaceCreated(holder);
84 } 72 }
85 73
86 @Override 74 @Override
87 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 75 public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
88 mDisplay.surfaceChanged(width, height); 76 mDisplay.surfaceChanged(holder, format, width, height);
89 mOnClientSizeChanged.raise(new SizeChangedEventParameter(width, height)) ; 77 mOnClientSizeChanged.raise(new SizeChangedEventParameter(width, height)) ;
90 } 78 }
91 79
92 @Override 80 @Override
93 public void surfaceDestroyed(SurfaceHolder holder) { 81 public void surfaceDestroyed(SurfaceHolder holder) {
94 // GlDisplay's life time spans to the whole session while GlDesktopView may be created and 82 // GlDisplay's life time spans to the whole session while GlDesktopView may be created and
95 // destroyed for multiple times (say when the phone is rotated). It is i mportant to remove 83 // destroyed for multiple times (say when the phone is rotated). It is i mportant to remove
96 // the listeners when the surface is about to be destroyed. 84 // the listeners when the surface is about to be destroyed.
97 if (mOnHostSizeChangedListenerKey != null) { 85 if (mOnHostSizeChangedListenerKey != null) {
98 mDisplay.onHostSizeChanged().remove(mOnHostSizeChangedListenerKey); 86 mDisplay.onHostSizeChanged().remove(mOnHostSizeChangedListenerKey);
99 } 87 }
100 if (mOnCanvasRenderedListenerKey != null) { 88 if (mOnCanvasRenderedListenerKey != null) {
101 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey); 89 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey);
102 } 90 }
103 mDisplay.surfaceDestroyed(); 91 mDisplay.surfaceDestroyed(holder);
104 } 92 }
105 } 93 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698