# HG changeset patch # User Sam Lantinga # Date 1528227973 25200 # Node ID 91f9b8f22b17a5efc3e3a280de7b9fa41549730b # Parent ecfb6a793c30d1cedb624836b2d93b5e8507ad72 Added SDL_IsChromebook() to determine if we're running on a Chromebook. diff -r ecfb6a793c30 -r 91f9b8f22b17 android-project/app/src/main/java/org/libsdl/app/SDLActivity.java --- a/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java Tue Jun 05 12:46:11 2018 -0700 +++ b/android-project/app/src/main/java/org/libsdl/app/SDLActivity.java Tue Jun 05 12:46:13 2018 -0700 @@ -698,6 +698,13 @@ /** * This method is called by SDL using JNI. */ + public static boolean isChromebook() { + return getContext().getPackageManager().hasSystemFeature("org.chromium.arc.device_management"); + } + + /** + * This method is called by SDL using JNI. + */ public static DisplayMetrics getDisplayDPI() { return getContext().getResources().getDisplayMetrics(); } diff -r ecfb6a793c30 -r 91f9b8f22b17 include/SDL_system.h --- a/include/SDL_system.h Tue Jun 05 12:46:11 2018 -0700 +++ b/include/SDL_system.h Tue Jun 05 12:46:13 2018 -0700 @@ -126,6 +126,11 @@ extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void); /** + \brief Return true if the application is running on a Chromebook + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void); + +/** See the official Android developer guide for more information: http://developer.android.com/guide/topics/data/data-storage.html */ diff -r ecfb6a793c30 -r 91f9b8f22b17 src/core/android/SDL_android.c --- a/src/core/android/SDL_android.c Tue Jun 05 12:46:11 2018 -0700 +++ b/src/core/android/SDL_android.c Tue Jun 05 12:46:13 2018 -0700 @@ -213,6 +213,7 @@ static jmethodID midSetOrientation; static jmethodID midGetContext; static jmethodID midIsAndroidTV; +static jmethodID midIsChromebook; static jmethodID midInputGetInputDeviceIds; static jmethodID midSendMessage; static jmethodID midShowTextInput; @@ -316,6 +317,8 @@ "getContext","()Landroid/content/Context;"); midIsAndroidTV = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass, "isAndroidTV","()Z"); + midIsChromebook = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass, + "isChromebook", "()Z"); midInputGetInputDeviceIds = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass, "inputGetInputDeviceIds", "(I)[I"); midSendMessage = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass, @@ -349,7 +352,8 @@ !midSendMessage || !midShowTextInput || !midIsScreenKeyboardShown || !midClipboardSetText || !midClipboardGetText || !midClipboardHasText || !midOpenAPKExpansionInputStream || !midGetManifestEnvironmentVariables || !midGetDisplayDPI || - !midCreateCustomCursor || !midSetCustomCursor || !midSetSystemCursor || !midSupportsRelativeMouse || !midSetRelativeMouseEnabled) { + !midCreateCustomCursor || !midSetCustomCursor || !midSetSystemCursor || !midSupportsRelativeMouse || !midSetRelativeMouseEnabled || + !midIsChromebook) { __android_log_print(ANDROID_LOG_WARN, "SDL", "Missing some Java callbacks, do you have the latest version of SDLActivity.java?"); } @@ -2024,6 +2028,12 @@ return (*env)->CallStaticBooleanMethod(env, mActivityClass, midIsAndroidTV); } +SDL_bool SDL_IsChromebook(void) +{ + JNIEnv *env = Android_JNI_GetEnv(); + return (*env)->CallStaticBooleanMethod(env, mActivityClass, midIsChromebook); +} + const char * SDL_AndroidGetInternalStoragePath(void) { static char *s_AndroidInternalFilesPath = NULL; diff -r ecfb6a793c30 -r 91f9b8f22b17 src/dynapi/SDL_dynapi_overrides.h --- a/src/dynapi/SDL_dynapi_overrides.h Tue Jun 05 12:46:11 2018 -0700 +++ b/src/dynapi/SDL_dynapi_overrides.h Tue Jun 05 12:46:13 2018 -0700 @@ -672,3 +672,4 @@ #define SDL_GameControllerMappingForDeviceIndex SDL_GameControllerMappingForDeviceIndex_REAL #define SDL_LinuxSetThreadPriority SDL_LinuxSetThreadPriority_REAL #define SDL_HasAVX512F SDL_HasAVX512F_REAL +#define SDL_IsChromebook SDL_IsChromebook_REAL diff -r ecfb6a793c30 -r 91f9b8f22b17 src/dynapi/SDL_dynapi_procs.h --- a/src/dynapi/SDL_dynapi_procs.h Tue Jun 05 12:46:11 2018 -0700 +++ b/src/dynapi/SDL_dynapi_procs.h Tue Jun 05 12:46:13 2018 -0700 @@ -712,3 +712,6 @@ SDL_DYNAPI_PROC(int,SDL_LinuxSetThreadPriority,(Sint64 a, int b),(a,b),return) #endif SDL_DYNAPI_PROC(SDL_bool,SDL_HasAVX512F,(void),(),return) +#ifdef __ANDROID__ +SDL_DYNAPI_PROC(SDL_bool,SDL_IsChromebook,(void),(),return) +#endif