Browse Source

Revert "Use the correct return type for SDL_GetAndroidJNIEnv()"

This reverts commit 2d3fa03d53b419bed2647cab2574ae27e9889586.

Different JDK implementations define JNIEnv differently for C++, so we can't provide the definition here.

Fixes:
/usr/lib/jvm/temurin-11-jdk-amd64/include/jni.h:195:17: error: conflicting declaration ‘typedef struct JNIEnv_ JNIEnv’
/home/runner/work/sdlwiki/sdlwiki/.github/../external/SDL3/include/SDL3/SDL_system.h:266:24: note: previous declaration as ‘typedef struct _JNIEnv JNIEnv’
Sam Lantinga 6 months ago
parent
commit
153f90a725

+ 1 - 8
include/SDL3/SDL_system.h

@@ -261,13 +261,6 @@ extern SDL_DECLSPEC void SDLCALL SDL_SetiOSEventPump(bool enabled);
 /*
  * Platform specific functions for Android
  */
-
-#if defined(__cplusplus)
-typedef struct _JNIEnv JNIEnv;
-#else
-typedef const struct JNINativeInterface* JNIEnv;
-#endif
-
 #ifdef SDL_PLATFORM_ANDROID
 
 /**
@@ -290,7 +283,7 @@ typedef const struct JNINativeInterface* JNIEnv;
  *
  * \sa SDL_GetAndroidActivity
  */
-extern SDL_DECLSPEC JNIEnv * SDLCALL SDL_GetAndroidJNIEnv(void);
+extern SDL_DECLSPEC void * SDLCALL SDL_GetAndroidJNIEnv(void);
 
 /**
  * Retrieve the Java instance of the Android activity class.

+ 2 - 2
src/core/SDL_core_unsupported.c

@@ -146,8 +146,8 @@ const char *SDL_GetAndroidInternalStoragePath(void)
     return NULL;
 }
 
-SDL_DECLSPEC JNIEnv *SDLCALL SDL_GetAndroidJNIEnv(void);
-JNIEnv *SDL_GetAndroidJNIEnv(void)
+SDL_DECLSPEC void *SDLCALL SDL_GetAndroidJNIEnv(void);
+void *SDL_GetAndroidJNIEnv(void)
 {
     SDL_Unsupported();
     return NULL;

+ 1 - 1
src/core/android/SDL_android.c

@@ -2177,7 +2177,7 @@ bool Android_JNI_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *b
 //////////////////////////////////////////////////////////////////////////////
 */
 
-JNIEnv *SDL_GetAndroidJNIEnv(void)
+void *SDL_GetAndroidJNIEnv(void)
 {
     return Android_JNI_GetEnv();
 }

+ 1 - 1
src/dynapi/SDL_dynapi_procs.h

@@ -255,7 +255,7 @@ SDL_DYNAPI_PROC(const char*,SDL_GetAndroidCachePath,(void),(),return)
 SDL_DYNAPI_PROC(const char*,SDL_GetAndroidExternalStoragePath,(void),(),return)
 SDL_DYNAPI_PROC(Uint32,SDL_GetAndroidExternalStorageState,(void),(),return)
 SDL_DYNAPI_PROC(const char*,SDL_GetAndroidInternalStoragePath,(void),(),return)
-SDL_DYNAPI_PROC(JNIEnv*,SDL_GetAndroidJNIEnv,(void),(),return)
+SDL_DYNAPI_PROC(void*,SDL_GetAndroidJNIEnv,(void),(),return)
 SDL_DYNAPI_PROC(int,SDL_GetAndroidSDKVersion,(void),(),return)
 SDL_DYNAPI_PROC(const char*,SDL_GetAppMetadataProperty,(const char *a),(a),return)
 SDL_DYNAPI_PROC(SDL_AssertionHandler,SDL_GetAssertionHandler,(void **a),(a),return)

+ 6 - 6
src/hidapi/android/hid.cpp

@@ -492,7 +492,7 @@ public:
 
 	bool BOpen()
 	{
-		JNIEnv *env = SDL_GetAndroidJNIEnv();
+		JNIEnv *env = (JNIEnv *)SDL_GetAndroidJNIEnv();
 
 		if ( !g_HIDDeviceManagerCallbackHandler )
 		{
@@ -624,7 +624,7 @@ public:
 
 	int WriteReport( const unsigned char *pData, size_t nDataLen, bool bFeature )
 	{
-		JNIEnv *env = SDL_GetAndroidJNIEnv();
+		JNIEnv *env = (JNIEnv *)SDL_GetAndroidJNIEnv();
 
 		if ( !g_HIDDeviceManagerCallbackHandler )
 		{
@@ -654,7 +654,7 @@ public:
 
 	int ReadReport( unsigned char *pData, size_t nDataLen, bool bFeature )
 	{
-		JNIEnv *env = SDL_GetAndroidJNIEnv();
+		JNIEnv *env = (JNIEnv *)SDL_GetAndroidJNIEnv();
 
 		if ( !g_HIDDeviceManagerCallbackHandler )
 		{
@@ -727,7 +727,7 @@ public:
 
 	void Close( bool bDeleteDevice )
 	{
-		JNIEnv *env = SDL_GetAndroidJNIEnv();
+		JNIEnv *env = (JNIEnv *)SDL_GetAndroidJNIEnv();
 
 		if ( g_HIDDeviceManagerCallbackHandler )
 		{
@@ -1022,7 +1022,7 @@ static void SDLCALL RequestBluetoothPermissionCallback( void *userdata, const ch
 
 	if ( granted && g_HIDDeviceManagerCallbackHandler )
 	{
-		JNIEnv *env = SDL_GetAndroidJNIEnv();
+		JNIEnv *env = (JNIEnv *)SDL_GetAndroidJNIEnv();
 
 		env->CallBooleanMethod( g_HIDDeviceManagerCallbackHandler, g_midHIDDeviceManagerInitialize, false, true );
 	}
@@ -1035,7 +1035,7 @@ int hid_init(void)
 		// HIDAPI doesn't work well with Android < 4.3
 		if ( SDL_GetAndroidSDKVersion() >= 18 )
 		{
-			JNIEnv *env = SDL_GetAndroidJNIEnv();
+			JNIEnv *env = (JNIEnv *)SDL_GetAndroidJNIEnv();
 
 			env->CallBooleanMethod( g_HIDDeviceManagerCallbackHandler, g_midHIDDeviceManagerInitialize, true, false );