| Index: remoting/android/java/src/org/chromium/chromoting/GlDesktopView.java
|
| diff --git a/remoting/android/java/src/org/chromium/chromoting/GlDesktopView.java b/remoting/android/java/src/org/chromium/chromoting/GlDesktopView.java
|
| index 439eeab6d21644f38faa9a2f30daa45bccf665a7..79ba3112755bd1407d5958ab6b85c383a6ebca0f 100644
|
| --- a/remoting/android/java/src/org/chromium/chromoting/GlDesktopView.java
|
| +++ b/remoting/android/java/src/org/chromium/chromoting/GlDesktopView.java
|
| @@ -6,6 +6,7 @@ package org.chromium.chromoting;
|
|
|
| import android.graphics.Point;
|
| import android.view.SurfaceHolder;
|
| +import android.view.View;
|
|
|
| import org.chromium.chromoting.jni.Client;
|
| import org.chromium.chromoting.jni.GlDisplay;
|
| @@ -20,6 +21,9 @@ public class GlDesktopView extends AbstractDesktopView implements SurfaceHolder.
|
| private Object mOnHostSizeChangedListenerKey;
|
| private Object mOnCanvasRenderedListenerKey;
|
|
|
| + private static float sSmallFeedbackPixelDiameter = -1;
|
| + private static float sLargeFeedbackPixelDiameter = -1;
|
| +
|
| public GlDesktopView(GlDisplay display, Desktop desktop, Client client) {
|
| super(desktop, client);
|
| Preconditions.notNull(display);
|
| @@ -28,23 +32,36 @@ public class GlDesktopView extends AbstractDesktopView implements SurfaceHolder.
|
| getHolder().addCallback(this);
|
| }
|
|
|
| - @Override
|
| - public void showInputFeedback(InputFeedbackType feedbackToShow, Point pos) {
|
| - float diameter;
|
| - // TODO(yuweih): diameter (and radius in DesktopView) should be defined in dp so that it is
|
| - // DPI independent.
|
| - switch (feedbackToShow) {
|
| - case LARGE_ANIMATION:
|
| - diameter = 320.f;
|
| - break;
|
| + private static float getFeedbackDiameterInPixel(InputFeedbackType feedbackType, View view) {
|
| + // Note that the OpenGL renderer takes diameter as argument so the radius we got needs
|
| + // to be multiplied by 2.
|
| + switch (feedbackType) {
|
| case SMALL_ANIMATION:
|
| - diameter = 80.f;
|
| - break;
|
| + if (sSmallFeedbackPixelDiameter < 0) {
|
| + sSmallFeedbackPixelDiameter = 2 * view.getResources()
|
| + .getDimensionPixelSize(R.dimen.feedback_animation_radius_small);
|
| + }
|
| + return sSmallFeedbackPixelDiameter;
|
| +
|
| + case LARGE_ANIMATION:
|
| + if (sLargeFeedbackPixelDiameter < 0) {
|
| + sLargeFeedbackPixelDiameter = 2 * view.getResources()
|
| + .getDimensionPixelSize(R.dimen.feedback_animation_radius_large);
|
| + }
|
| + return sLargeFeedbackPixelDiameter;
|
| +
|
| default:
|
| - return;
|
| + // Unreachable, but required by Google Java style and findbugs.
|
| + assert false : "Unreached";
|
| + return 0.0f;
|
| }
|
| + }
|
| +
|
| + @Override
|
| + public void showInputFeedback(InputFeedbackType feedbackType, Point pos) {
|
| float scaleFactor = mRenderData.transform.mapRadius(1);
|
| - mDisplay.showCursorInputFeedback(pos.x, pos.y, diameter / scaleFactor);
|
| + mDisplay.showCursorInputFeedback(pos.x, pos.y,
|
| + getFeedbackDiameterInPixel(feedbackType, this) / scaleFactor);
|
| }
|
|
|
| @Override
|
|
|