Index: remoting/android/java/src/org/chromium/chromoting/jni/Display.java |
diff --git a/remoting/android/java/src/org/chromium/chromoting/jni/Display.java b/remoting/android/java/src/org/chromium/chromoting/jni/Display.java |
deleted file mode 100644 |
index 926eb4fa764945851ea31b5c45df3b8240b84d90..0000000000000000000000000000000000000000 |
--- a/remoting/android/java/src/org/chromium/chromoting/jni/Display.java |
+++ /dev/null |
@@ -1,189 +0,0 @@ |
-// Copyright 2016 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-package org.chromium.chromoting.jni; |
- |
-import android.graphics.Bitmap; |
-import android.graphics.Point; |
-import android.os.Looper; |
- |
-import org.chromium.base.Log; |
-import org.chromium.base.annotations.CalledByNative; |
-import org.chromium.base.annotations.JNINamespace; |
-import org.chromium.chromoting.AbstractDesktopView; |
-import org.chromium.chromoting.Desktop; |
-import org.chromium.chromoting.DesktopView; |
-import org.chromium.chromoting.DesktopViewFactory; |
- |
-import java.nio.ByteBuffer; |
-import java.nio.ByteOrder; |
- |
-/** |
- * This class is for drawing the desktop on the canvas and controlling the lifetime of the |
- * corresponding C++ object. It only draws the desktop on the graphics (=display) thread but also |
- * has functions accessible on UI thread. |
- */ |
-@JNINamespace("remoting") |
-public class Display { |
- private static final String TAG = "Chromoting"; |
- |
- // Pointer to the C++ object. Casted to |long|. |
- private long mNativeJniDisplayHandler; |
- |
- /** |
- * Callback invoked on the graphics thread to repaint the desktop. Read on the UI and |
- * graphics threads. Write only on the UI thread. |
- */ |
- private Runnable mRedrawCallback; |
- |
- /** |
- * Protects access to {@link mRedrawCallback}. |
- * Locking is not required when reading on the UI thread. |
- */ |
- private final Object mRedrawCallbackLock = new Object(); |
- |
- /** Protects access to {@link mFrameBitmap}. */ |
- private final Object mFrameLock = new Object(); |
- |
- /** Bitmap holding a copy of the latest video frame. Accessed on the UI and graphics threads. */ |
- private Bitmap mFrameBitmap; |
- |
- /** Position of cursor hot-spot. Accessed on the graphics thread. */ |
- private Point mCursorHotspot = new Point(); |
- |
- /** Bitmap holding the cursor shape. Accessed on the graphics thread. */ |
- private Bitmap mCursorBitmap; |
- |
- private Display(long nativeDisplayHandler) { |
- mNativeJniDisplayHandler = nativeDisplayHandler; |
- } |
- |
- /** |
- * Sets the redraw callback to the provided functor. Provide a value of null whenever the |
- * window is no longer visible so that we don't continue to draw onto it. Called on the UI |
- * thread. |
- */ |
- public void provideRedrawCallback(Runnable redrawCallback) { |
- synchronized (mRedrawCallbackLock) { |
- mRedrawCallback = redrawCallback; |
- } |
- } |
- |
- /** |
- * Invalidates this object and disconnects from the native display handler. Called on the |
- * display thread by the native code. |
- */ |
- @CalledByNative |
- private void invalidate() { |
- // Drop the reference to free the Bitmap for GC. |
- synchronized (mFrameLock) { |
- mFrameBitmap = null; |
- } |
- |
- provideRedrawCallback(null); |
- mNativeJniDisplayHandler = 0; |
- } |
- |
- /** Forces the native graphics thread to redraw to the canvas. Called on the UI thread. */ |
- public boolean redrawGraphics() { |
- if (mRedrawCallback == null) return false; |
- |
- nativeScheduleRedraw(mNativeJniDisplayHandler); |
- return true; |
- } |
- |
- /** |
- * Called on the graphics thread to perform the redrawing callback requested by |
- * {@link #redrawGraphics}. This is a no-op if the window isn't visible (the callback is null). |
- */ |
- @CalledByNative |
- void redrawGraphicsInternal() { |
- Runnable callback; |
- synchronized (mRedrawCallbackLock) { |
- callback = mRedrawCallback; |
- } |
- if (callback != null) { |
- callback.run(); |
- } |
- } |
- |
- /** |
- * Returns a bitmap of the latest video frame. Called on the native graphics thread when |
- * DesktopView is repainted. |
- */ |
- public Bitmap getVideoFrame() { |
- if (Looper.myLooper() == Looper.getMainLooper()) { |
- Log.w(TAG, "Canvas being redrawn on UI thread"); |
- } |
- |
- synchronized (mFrameLock) { |
- return mFrameBitmap; |
- } |
- } |
- |
- /** |
- * Set a new video frame. Called on the native graphics thread when a new frame is allocated. |
- */ |
- @CalledByNative |
- void setVideoFrame(Bitmap bitmap) { |
- if (Looper.myLooper() == Looper.getMainLooper()) { |
- Log.w(TAG, "Video frame updated on UI thread"); |
- } |
- |
- synchronized (mFrameLock) { |
- mFrameBitmap = bitmap; |
- } |
- } |
- |
- /** |
- * Creates a new Bitmap to hold video frame pixels. The returned Bitmap is referenced by native |
- * code which writes the decoded frame pixels to it. |
- */ |
- @CalledByNative |
- static Bitmap newBitmap(int width, int height) { |
- return Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); |
- } |
- |
- /** |
- * Updates the cursor shape. This is called on the graphics thread when receiving a new cursor |
- * shape from the host. |
- */ |
- @CalledByNative |
- void updateCursorShape(int width, int height, int hotspotX, int hotspotY, ByteBuffer buffer) { |
- mCursorHotspot = new Point(hotspotX, hotspotY); |
- |
- int[] data = new int[width * height]; |
- buffer.order(ByteOrder.LITTLE_ENDIAN); |
- buffer.asIntBuffer().get(data, 0, data.length); |
- mCursorBitmap = Bitmap.createBitmap(data, width, height, Bitmap.Config.ARGB_8888); |
- } |
- |
- /** Position of cursor hotspot within cursor image. Called on the graphics thread. */ |
- public Point getCursorHotspot() { |
- return mCursorHotspot; |
- } |
- |
- /** Returns the current cursor shape. Called on the graphics thread. */ |
- public Bitmap getCursorBitmap() { |
- return mCursorBitmap; |
- } |
- |
- @CalledByNative |
- private void initializeClient(Client client) { |
- client.setDesktopViewFactory(new DesktopViewFactory() { |
- @Override |
- public AbstractDesktopView createDesktopView(Desktop desktop, Client client) { |
- return new DesktopView(Display.this, desktop, client); |
- } |
- }); |
- } |
- |
- @CalledByNative |
- private static Display createJavaDisplayObject(long nativeDisplayHandler) { |
- return new Display(nativeDisplayHandler); |
- } |
- |
- /** Schedules a redraw on the native graphics thread. */ |
- private native void nativeScheduleRedraw(long nativeJniDisplayHandler); |
-} |