diff --git a/project/java/MainActivity.java b/project/java/MainActivity.java index 85b780d5d..9f690c359 100644 --- a/project/java/MainActivity.java +++ b/project/java/MainActivity.java @@ -1617,6 +1617,13 @@ public class MainActivity extends Activity } } + public void setSystemMousePointerVisible(int visible) { + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) + { + mGLView.setPointerIcon(android.view.PointerIcon.getSystemIcon(this, (visible == 0) ? android.view.PointerIcon.TYPE_NULL : android.view.PointerIcon.TYPE_DEFAULT)); + } + } + public FrameLayout getVideoLayout() { return _videoLayout; } DemoGLSurfaceView mGLView = null; diff --git a/project/java/Video.java b/project/java/Video.java index f0bd8dd64..205eb0611 100644 --- a/project/java/Video.java +++ b/project/java/Video.java @@ -943,6 +943,11 @@ class DemoRenderer extends GLSurfaceView_SDL.Renderer } } + public void setSystemMousePointerVisible(int visible) + { + context.setSystemMousePointerVisible(visible); + } + public void restartMyself(String restartParams) { Intent intent = new Intent(context, RestartMainActivity.class); diff --git a/project/jni/sdl-1.2/include/SDL_android.h b/project/jni/sdl-1.2/include/SDL_android.h index 7cd48cf01..d22494b6e 100644 --- a/project/jni/sdl-1.2/include/SDL_android.h +++ b/project/jni/sdl-1.2/include/SDL_android.h @@ -151,6 +151,9 @@ extern DECLSPEC void SDLCALL SDL_ANDROID_SetMouseEmulationMode( extern DECLSPEC int SDLCALL SDL_ANDROID_GetMouseEmulationMode(); +/* Control the System mouse pointer visibility */ +extern DECLSPEC void SDLCALL SDL_ANDROID_SetSystemMousePointerVisible(int visible); + #ifdef __cplusplus } #endif diff --git a/project/jni/sdl-1.2/src/video/android/SDL_androidvideo.c b/project/jni/sdl-1.2/src/video/android/SDL_androidvideo.c index 5075ca3aa..ca886e194 100644 --- a/project/jni/sdl-1.2/src/video/android/SDL_androidvideo.c +++ b/project/jni/sdl-1.2/src/video/android/SDL_androidvideo.c @@ -89,6 +89,7 @@ static jmethodID JavaRequestCloudLoad = NULL; static jmethodID JavaRequestOpenExternalApp = NULL; static jmethodID JavaRequestRestartMyself = NULL; static jmethodID JavaRequestSetConfigOption = NULL; +static jmethodID JavaSetSystemMousePointerVisible = NULL; static int glContextLost = 0; static int showScreenKeyboardDeferred = 0; static const char * showScreenKeyboardOldText = ""; @@ -391,7 +392,8 @@ JAVA_EXPORT_NAME(DemoRenderer_nativeInitJavaCallbacks) ( JNIEnv* env, jobject t JavaRequestOpenExternalApp = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "openExternalApp", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); JavaRequestRestartMyself = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "restartMyself", "(Ljava/lang/String;)V"); JavaRequestSetConfigOption = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "setConfigOptionFromSDL", "(II)V"); - + JavaSetSystemMousePointerVisible = (*JavaEnv)->GetMethodID(JavaEnv, JavaRendererClass, "setSystemMousePointerVisible", "(I)V"); + ANDROID_InitOSKeymap(); } @@ -652,6 +654,12 @@ void SDLCALL SDL_ANDROID_OpenExternalWebBrowser(const char *url) SDL_ANDROID_OpenExternalApp(NULL, NULL, url); } +void SDLCALL SDL_ANDROID_SetSystemMousePointerVisible(int visible) +{ + JNIEnv *JavaEnv = GetJavaEnv(); + (*JavaEnv)->CallVoidMethod( JavaEnv, JavaRenderer, JavaSetSystemMousePointerVisible, (jint)visible ); +} + // Dummy callback for SDL2 to satisfy linker extern void SDL_Android_Init(JNIEnv* env, jclass cls); void SDL_Android_Init(JNIEnv* env, jclass cls)