diff options
3 files changed, 19 insertions, 5 deletions
diff --git a/remoting/android/java/src/org/chromium/chromoting/DesktopView.java b/remoting/android/java/src/org/chromium/chromoting/DesktopView.java index 5d015e5..5d4e33d 100644 --- a/remoting/android/java/src/org/chromium/chromoting/DesktopView.java +++ b/remoting/android/java/src/org/chromium/chromoting/DesktopView.java @@ -233,6 +233,7 @@ public class DesktopView extends SurfaceView implements DesktopViewInterface, Canvas canvas; Point cursorPosition; + boolean drawCursor; synchronized (mRenderData) { mRepaintPending = false; // Don't try to lock the canvas before it is ready, as the implementation of @@ -247,6 +248,7 @@ public class DesktopView extends SurfaceView implements DesktopViewInterface, return; } canvas.setMatrix(mRenderData.transform); + drawCursor = mRenderData.drawCursor; cursorPosition = mRenderData.getCursorPosition(); } @@ -263,11 +265,13 @@ public class DesktopView extends SurfaceView implements DesktopViewInterface, mFeedbackAnimator.render(canvas, cursorPosition.x, cursorPosition.y, scaleFactor); } - Bitmap cursorBitmap = JniInterface.getCursorBitmap(); - if (cursorBitmap != null) { - Point hotspot = JniInterface.getCursorHotspot(); - canvas.drawBitmap(cursorBitmap, cursorPosition.x - hotspot.x, - cursorPosition.y - hotspot.y, new Paint()); + if (drawCursor) { + Bitmap cursorBitmap = JniInterface.getCursorBitmap(); + if (cursorBitmap != null) { + Point hotspot = JniInterface.getCursorHotspot(); + canvas.drawBitmap(cursorBitmap, cursorPosition.x - hotspot.x, + cursorPosition.y - hotspot.y, new Paint()); + } } getHolder().unlockCanvasAndPost(canvas); @@ -427,5 +431,8 @@ public class DesktopView extends SurfaceView implements DesktopViewInterface, // Unreachable, but required by Google Java style and findbugs. assert false : "Unreached"; } + + // Ensure the cursor state is updated appropriately. + requestRepaint(); } } diff --git a/remoting/android/java/src/org/chromium/chromoting/RenderData.java b/remoting/android/java/src/org/chromium/chromoting/RenderData.java index 50d7217..8e21488 100644 --- a/remoting/android/java/src/org/chromium/chromoting/RenderData.java +++ b/remoting/android/java/src/org/chromium/chromoting/RenderData.java @@ -20,6 +20,9 @@ public class RenderData { public int imageWidth = 0; public int imageHeight = 0; + /** Determines whether the local cursor should be drawn. */ + public boolean drawCursor = false; + /** * Specifies the position, in image coordinates, at which the cursor image will be drawn. * This will normally be at the location of the most recently injected motion event. diff --git a/remoting/android/java/src/org/chromium/chromoting/TrackpadInputStrategy.java b/remoting/android/java/src/org/chromium/chromoting/TrackpadInputStrategy.java index b992124..326eff9 100644 --- a/remoting/android/java/src/org/chromium/chromoting/TrackpadInputStrategy.java +++ b/remoting/android/java/src/org/chromium/chromoting/TrackpadInputStrategy.java @@ -22,6 +22,10 @@ public class TrackpadInputStrategy implements InputStrategyInterface { public TrackpadInputStrategy(RenderData renderData) { mRenderData = renderData; + + synchronized (mRenderData) { + mRenderData.drawCursor = true; + } } @Override |