]> git.sesse.net Git - vlc/commitdiff
android_window: fix deadlock if android surface won't be created
authorThomas Guillem <thomas@gllm.fr>
Wed, 21 Jan 2015 14:11:02 +0000 (14:11 +0000)
committerJean-Baptiste Kempf <jb@videolan.org>
Wed, 21 Jan 2015 15:27:47 +0000 (16:27 +0100)
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
modules/video_output/android/android_window.c

index 20abe80966d79a541f5ee94cfb697c6a455e1125..7316fab5f32cd1bd24f133f0745c3c6b09b5b26a 100644 (file)
@@ -74,6 +74,7 @@ extern jobject jni_LockAndGetAndroidJavaSurface();
 extern jobject jni_LockAndGetSubtitlesSurface();
 extern void  jni_UnlockAndroidSurface();
 
+extern bool jni_IsVideoPlayerActivityCreated();
 extern void  jni_SetSurfaceLayout(int width, int height, int visible_width, int visible_height, int sar_num, int sar_den);
 extern int jni_ConfigureSurface(jobject jsurf, int width, int height, int hal, bool *configured);
 extern int jni_GetWindowSize(int *width, int *height);
@@ -618,6 +619,13 @@ static int Open(vlc_object_t *p_this)
     if (vout_display_IsWindowed(vd))
         return VLC_EGENERIC;
 
+    /* XXX: android_window use a surface created by VideoPlayerActivity to
+     * alloc pictures. Don't try to open the vout if this activity is not
+     * created. This need to be replaced by something like var_CreateGetAddress
+     * (vd, "drawable-android") in the future. */
+    if (!jni_IsVideoPlayerActivityCreated())
+        return VLC_EGENERIC;
+
     /* Allocate structure */
     vd->sys = sys = (struct vout_display_sys_t*)calloc(1, sizeof(*sys));
     if (!sys)