summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--remoting/android/java/src/org/chromium/chromoting/DesktopView.java17
-rw-r--r--remoting/android/java/src/org/chromium/chromoting/RenderData.java3
-rw-r--r--remoting/android/java/src/org/chromium/chromoting/TrackpadInputStrategy.java4
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