| Index: remoting/android/java/src/org/chromium/chromoting/jni/JniInterface.java
|
| diff --git a/remoting/android/java/src/org/chromium/chromoting/jni/JniInterface.java b/remoting/android/java/src/org/chromium/chromoting/jni/JniInterface.java
|
| index 4508e58786b83612b510ae15dfb0403986ab1d01..673dbb2872b493092bd5bf8897cffa51ae3b29fc 100644
|
| --- a/remoting/android/java/src/org/chromium/chromoting/jni/JniInterface.java
|
| +++ b/remoting/android/java/src/org/chromium/chromoting/jni/JniInterface.java
|
| @@ -11,6 +11,7 @@ import android.content.Context;
|
| import android.content.DialogInterface;
|
| import android.content.SharedPreferences;
|
| import android.graphics.Bitmap;
|
| +import android.graphics.Point;
|
| import android.os.Looper;
|
| import android.text.InputType;
|
| import android.util.Log;
|
| @@ -123,6 +124,12 @@ public class JniInterface {
|
| /** Performs the native portion of the cleanup. */
|
| private static native void disconnectNative();
|
|
|
| + /** Position of cursor hotspot within cursor image. */
|
| + public static Point getCursorHotspot() { return sCursorHotspot; }
|
| +
|
| + /** Returns the current cursor shape. */
|
| + public static Bitmap getCursorBitmap() { return sCursorBitmap; }
|
| +
|
| /*
|
| * Entry points *from* the native code.
|
| */
|
| @@ -138,6 +145,12 @@ public class JniInterface {
|
| /** Buffer holding the video feed. */
|
| private static ByteBuffer sBuffer = null;
|
|
|
| + /** Position of cursor hot-spot. */
|
| + private static Point sCursorHotspot = new Point();
|
| +
|
| + /** Bitmap holding the cursor shape. */
|
| + private static Bitmap sCursorBitmap = null;
|
| +
|
| /** Reports whenever the connection status changes. */
|
| private static void reportConnectionStatus(int state, int error) {
|
| if (state < SUCCESSFUL_CONNECTION && error == 0) {
|
| @@ -305,6 +318,21 @@ public class JniInterface {
|
| return Bitmap.createBitmap(frame, 0, sWidth, sWidth, sHeight, Bitmap.Config.ARGB_8888);
|
| }
|
|
|
| + /**
|
| + * Updates the cursor shape. This is called from native code on the graphics thread when
|
| + * receiving a new cursor shape from the host.
|
| + */
|
| + public static void updateCursorShape(int width, int height, int hotspotX, int hotspotY,
|
| + ByteBuffer buffer) {
|
| + sCursorHotspot.x = hotspotX;
|
| + sCursorHotspot.y = hotspotY;
|
| +
|
| + int[] data = new int[width * height];
|
| + buffer.order(ByteOrder.LITTLE_ENDIAN);
|
| + buffer.asIntBuffer().get(data, 0, data.length);
|
| + sCursorBitmap = Bitmap.createBitmap(data, width, height, Bitmap.Config.ARGB_8888);
|
| + }
|
| +
|
| /** Moves the mouse cursor, possibly while clicking the specified (nonnegative) button. */
|
| public static void mouseAction(int x, int y, int whichButton, boolean buttonDown) {
|
| if (!sConnected) {
|
|
|