OLD | NEW |
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.Point; | 7 import android.graphics.Point; |
8 import android.view.SurfaceHolder; | 8 import android.view.SurfaceHolder; |
9 | 9 |
10 import org.chromium.chromoting.jni.Client; | 10 import org.chromium.chromoting.jni.Client; |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 if (mRenderData.imageHeight == 0 || mRenderData.imageWidth == 0 | 43 if (mRenderData.imageHeight == 0 || mRenderData.imageWidth == 0 |
44 || mRenderData.screenHeight == 0 || mRenderData.screenWidth == 0
) { | 44 || mRenderData.screenHeight == 0 || mRenderData.screenWidth == 0
) { |
45 return; | 45 return; |
46 } | 46 } |
47 float[] matrix = new float[9]; | 47 float[] matrix = new float[9]; |
48 mRenderData.transform.getValues(matrix); | 48 mRenderData.transform.getValues(matrix); |
49 mDisplay.pixelTransformationChanged(matrix); | 49 mDisplay.pixelTransformationChanged(matrix); |
50 } | 50 } |
51 | 51 |
52 @Override | 52 @Override |
53 public void cursorMoved() { | 53 public void cursorMoved(boolean followedByViewportChange) { |
54 Point cursorPosition = mRenderData.getCursorPosition(); | 54 Point cursorPosition = mRenderData.getCursorPosition(); |
55 mDisplay.cursorPixelPositionChanged(cursorPosition.x, cursorPosition.y); | 55 mDisplay.cursorPixelPositionChanged(cursorPosition.x, cursorPosition.y, |
| 56 followedByViewportChange); |
56 } | 57 } |
57 | 58 |
58 @Override | 59 @Override |
59 public void cursorVisibilityChanged() { | 60 public void cursorVisibilityChanged() { |
60 mDisplay.cursorVisibilityChanged(mRenderData.drawCursor); | 61 mDisplay.cursorVisibilityChanged(mRenderData.drawCursor); |
61 } | 62 } |
62 | 63 |
63 @Override | 64 @Override |
64 public void setAnimationEnabled(boolean enabled) { | 65 public void setAnimationEnabled(boolean enabled) { |
65 mDisplay.setRenderEventEnabled(enabled); | 66 mDisplay.setRenderEventEnabled(enabled); |
| 67 if (enabled) { |
| 68 mInputHandler.processAnimation(); |
| 69 } |
66 } | 70 } |
67 | 71 |
68 @Override | 72 @Override |
69 public void surfaceCreated(SurfaceHolder holder) { | 73 public void surfaceCreated(SurfaceHolder holder) { |
70 mOnHostSizeChangedListenerKey = mDisplay | 74 mOnHostSizeChangedListenerKey = mDisplay |
71 .onHostSizeChanged().add(new Event.ParameterRunnable<SizeChanged
EventParameter>() { | 75 .onHostSizeChanged().add(new Event.ParameterRunnable<SizeChanged
EventParameter>() { |
72 @Override | 76 @Override |
73 public void run(SizeChangedEventParameter p) { | 77 public void run(SizeChangedEventParameter p) { |
74 mRenderData.imageHeight = p.height; | 78 mRenderData.imageHeight = p.height; |
75 mRenderData.imageWidth = p.width; | 79 mRenderData.imageWidth = p.width; |
76 | 80 |
77 // Note that imageHeight and imageWidth must be set befo
re | 81 // Note that imageHeight and imageWidth must be set befo
re |
78 // mOnHostSizeChanged is triggered. mInputHandler expect
s the image size in | 82 // mOnHostSizeChanged is triggered. mInputHandler expect
s the image size in |
79 // mRenderData updated before its callback is called. | 83 // mRenderData updated before its callback is called. |
80 mOnHostSizeChanged.raise(p); | 84 mOnHostSizeChanged.raise(p); |
81 } | 85 } |
82 }); | 86 }); |
83 | 87 |
84 mOnCanvasRenderedListenerKey = mDisplay | 88 mOnCanvasRenderedListenerKey = mDisplay |
85 .onCanvasRendered().add(new Event.ParameterRunnable<Void>() { | 89 .onCanvasRendered().add(new Event.ParameterRunnable<Void>() { |
86 @Override | 90 @Override |
87 public void run(Void p) { | 91 public void run(Void p) { |
88 getHandler().post(new Runnable() { | 92 mInputHandler.processAnimation(); |
89 @Override | |
90 public void run() { | |
91 mInputHandler.processAnimation(); | |
92 } | |
93 }); | |
94 } | 93 } |
95 }); | 94 }); |
96 | 95 |
97 mDisplay.surfaceCreated(holder.getSurface()); | 96 mDisplay.surfaceCreated(holder.getSurface()); |
98 } | 97 } |
99 | 98 |
100 @Override | 99 @Override |
101 public void surfaceChanged(SurfaceHolder holder, int format, int width, int
height) { | 100 public void surfaceChanged(SurfaceHolder holder, int format, int width, int
height) { |
102 mRenderData.screenWidth = width; | 101 mRenderData.screenWidth = width; |
103 mRenderData.screenHeight = height; | 102 mRenderData.screenHeight = height; |
104 | 103 |
105 mDisplay.surfaceChanged(width, height); | 104 mDisplay.surfaceChanged(width, height); |
106 mOnClientSizeChanged.raise(new SizeChangedEventParameter(width, height))
; | 105 mOnClientSizeChanged.raise(new SizeChangedEventParameter(width, height))
; |
107 } | 106 } |
108 | 107 |
109 @Override | 108 @Override |
110 public void surfaceDestroyed(SurfaceHolder holder) { | 109 public void surfaceDestroyed(SurfaceHolder holder) { |
111 // GlDisplay's life time spans to the whole session while GlDesktopView
may be created and | 110 // GlDisplay's life time spans to the whole session while GlDesktopView
may be created and |
112 // destroyed for multiple times (say when the phone is rotated). It is i
mportant to remove | 111 // destroyed for multiple times (say when the phone is rotated). It is i
mportant to remove |
113 // the listeners when the surface is about to be destroyed. | 112 // the listeners when the surface is about to be destroyed. |
114 mDisplay.onHostSizeChanged().remove(mOnHostSizeChangedListenerKey); | 113 mDisplay.onHostSizeChanged().remove(mOnHostSizeChangedListenerKey); |
115 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey); | 114 mDisplay.onCanvasRendered().remove(mOnCanvasRenderedListenerKey); |
116 mDisplay.surfaceDestroyed(); | 115 mDisplay.surfaceDestroyed(); |
117 } | 116 } |
118 } | 117 } |
OLD | NEW |