소스 검색

Added GetAssetManager function to SDL2. Move this stuff to libc!

Mark Sibly 8 년 전
부모
커밋
d622e420b1
2개의 변경된 파일32개의 추가작업 그리고 0개의 파일을 삭제
  1. 26 0
      modules/sdl2/SDL/src/core/android/SDL_android.c
  2. 6 0
      modules/sdl2/SDL/src/core/android/SDL_android.h

+ 26 - 0
modules/sdl2/SDL/src/core/android/SDL_android.c

@@ -792,6 +792,32 @@ static SDL_bool Android_JNI_ExceptionOccurred(SDL_bool silent)
     return SDL_FALSE;
 }
 
+AAssetManager *Android_JNI_GetAssetManager(){
+
+	static AAssetManager *assetManager;
+	
+	if( assetManager ) return assetManager;
+
+    JNIEnv *mEnv = Android_JNI_GetEnv();
+    
+    /* context = SDLActivity.getContext(); */
+    jmethodID mid = (*mEnv)->GetStaticMethodID(mEnv, mActivityClass,
+            "getContext","()Landroid/content/Context;");
+    jobject context = (*mEnv)->CallStaticObjectMethod(mEnv, mActivityClass, mid);
+
+
+    /* assetManager = context.getAssets(); */
+    mid = (*mEnv)->GetMethodID(mEnv, (*mEnv)->GetObjectClass(mEnv, context),
+            "getAssets", "()Landroid/content/res/AssetManager;");
+    jobject jassetManager = (*mEnv)->CallObjectMethod(mEnv, context, mid);
+    
+    jassetManager=(*mEnv)->NewGlobalRef(mEnv, jassetManager);
+    
+    assetManager=AAssetManager_fromJava( mEnv,jassetManager );
+    
+    return assetManager;
+}
+
 static int Internal_Android_JNI_FileOpen(SDL_RWops* ctx)
 {
     struct LocalReferenceHolder refs = LocalReferenceHolder_Setup(__FUNCTION__);

+ 6 - 0
modules/sdl2/SDL/src/core/android/SDL_android.h

@@ -29,6 +29,7 @@ extern "C" {
 
 #include <EGL/eglplatform.h>
 #include <android/native_window_jni.h>
+#include <android/asset_manager.h>
 
 #include "SDL_rect.h"
 
@@ -75,10 +76,15 @@ int Android_JNI_GetTouchDeviceIds(int **ids);
 
 /* Threads */
 #include <jni.h>
+
 JNIEnv *Android_JNI_GetEnv(void);
+
 int Android_JNI_SetupThread(void);
+
 jclass Android_JNI_GetActivityClass(void);
 
+AAssetManager* Android_JNI_GetAssetManager(void);
+
 /* Generic messages */
 int Android_JNI_SendMessage(int command, int param);