From e0fe8f3cb3864de60273535431e8276df00fdaf4 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 24 Sep 2018 11:53:04 -0700 Subject: [PATCH] Support relative mouse for Samsung DeX on Samsung Experience 9.5 or later (Android 8.1 or later) --- .../app/src/main/java/org/libsdl/app/SDLActivity.java | 11 ++++++++--- .../java/org/libsdl/app/SDLControllerManager.java | 4 ++-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java b/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java index b6c90d87107a7..a624fb547feba 100644 --- a/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java +++ b/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java @@ -766,9 +766,14 @@ public static boolean supportsRelativeMouse() return false; } - // Samsung DeX mode doesn't support relative mice properly under Android 7 APIs, - // and simply returns no data under Android 8 APIs. - if (isDeXMode()) { + // DeX mode in Samsung Experience 9.0 and earlier doesn't support relative mice properly under + // Android 7 APIs, and simply returns no data under Android 8 APIs. + // + // This is fixed in Samsung Experience 9.5, which corresponds to Android 8.1.0, and + // thus SDK version 27. If we are in DeX mode and not API 27 or higher, as a result, + // we should stick to relative mode. + // + if ((Build.VERSION.SDK_INT < 27) && isDeXMode()) { return false; } diff --git a/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java b/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java index 342610fe7cf2e..a631c3ed0a6a0 100644 --- a/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java +++ b/android-project/app/src/main/java/org/libsdl/app/SDLControllerManager.java @@ -764,7 +764,7 @@ public boolean onGenericMotion(View v, MotionEvent event) { @Override public boolean supportsRelativeMouse() { - return !SDLActivity.isDeXMode(); + return (!SDLActivity.isDeXMode() || (Build.VERSION.SDK_INT >= 27)); } @Override @@ -774,7 +774,7 @@ public boolean inRelativeMode() { @Override public boolean setRelativeMouseEnabled(boolean enabled) { - if (!SDLActivity.isDeXMode()) { + if (!SDLActivity.isDeXMode() || (Build.VERSION.SDK_INT >= 27)) { if (enabled) { SDLActivity.getContentView().requestPointerCapture(); }