Skip to content

Commit 89e3b01

Browse files
committed
android: add support for GameActivity
1 parent 5c89a86 commit 89e3b01

File tree

1 file changed

+21
-6
lines changed

1 file changed

+21
-6
lines changed

PluginSource/RenderAPI_Android.cpp

+21-6
Original file line numberDiff line numberDiff line change
@@ -108,17 +108,32 @@ jobject RenderAPI_Android::createWindowSurface()
108108
{
109109
DEBUG("Entering createWindowSurface");
110110

111-
jclass cls_JavaClass = jni_env->FindClass("org/videolan/libvlc/AWindow");
111+
jclass activityThread = jni_env->FindClass("android/app/ActivityThread");
112+
jmethodID currentApplication = jni_env->GetStaticMethodID(activityThread, "currentApplication", "()Landroid/app/Application;");
113+
jobject app = jni_env->CallStaticObjectMethod(activityThread, currentApplication);
114+
115+
jclass contextClass = jni_env->FindClass("android/content/Context");
116+
jmethodID getClassLoader = jni_env->GetMethodID(contextClass, "getClassLoader", "()Ljava/lang/ClassLoader;");
117+
jobject classLoader = jni_env->CallObjectMethod(app, getClassLoader);
118+
119+
jclass classLoaderClass = jni_env->FindClass("java/lang/ClassLoader");
120+
jmethodID loadClass = jni_env->GetMethodID(classLoaderClass, "loadClass", "(Ljava/lang/String;)Ljava/lang/Class;");
121+
122+
jstring className = jni_env->NewStringUTF("org.videolan.libvlc.AWindow");
123+
jclass cls_JavaClass = (jclass)jni_env->CallObjectMethod(classLoader, loadClass, className);
124+
jni_env->DeleteLocalRef(className);
125+
126+
if(cls_JavaClass == nullptr)
127+
{
128+
DEBUG("Failed to find class org.videolan.libvlc.AWindow");
129+
abort();
130+
}
112131
// find constructor method
113132
jmethodID mid_JavaClass = jni_env->GetMethodID (cls_JavaClass, "<init>", "(Lorg/videolan/libvlc/AWindow$SurfaceCallback;)V");
114-
// create object instance
115-
DEBUG("Calling jni_env->NewObject(cls_JavaClass, mid_JavaClass, nullptr)...");
116133

134+
// create object instance
117135
jobject obj_JavaClass = jni_env->NewObject(cls_JavaClass, mid_JavaClass, nullptr);
118136
// return object with a global reference
119-
120-
DEBUG("Calling jni_env->NewGlobalRef(obj_JavaClass)");
121-
122137
return jni_env->NewGlobalRef(obj_JavaClass);
123138
}
124139

0 commit comments

Comments
 (0)