[vlc-devel] [RFC PATCH] libvlc_media_player: don't use any vout if vout configuration fails

Thomas Guillem thomas at gllm.fr
Thu Oct 15 14:16:29 CEST 2015


Maybe we should also assert ?
Ideally these functions should return an integer to signal an error.

It's hard to reproduce with macosx, android, or win32 build. But I'm working on
an evas video output, and I don't want to fallback to a default vout without
any window if my (future function) libvlc_media_player_set_evas_object fails
(fail because libvlc is not built with --enable-evas).

---
 lib/media_player.c | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/lib/media_player.c b/lib/media_player.c
index 9824ede..e911f96 100644
--- a/lib/media_player.c
+++ b/lib/media_player.c
@@ -1051,7 +1051,10 @@ void libvlc_media_player_set_nsobject( libvlc_media_player_t *p_mi,
     var_SetString (p_mi, "window", "");
     var_SetAddress (p_mi, "drawable-nsobject", drawable);
 #else
-    (void) p_mi; (void)drawable;
+    (void)drawable;
+    libvlc_printerr ("can't set nsobject: APPLE build required");
+    var_SetString (p_mi, "vout", "none");
+    var_SetString (p_mi, "window", "none");
 #endif
 }
 
@@ -1075,7 +1078,10 @@ void * libvlc_media_player_get_nsobject( libvlc_media_player_t *p_mi )
 void libvlc_media_player_set_agl( libvlc_media_player_t *p_mi,
                                   uint32_t drawable )
 {
-    (void) p_mi; (void)drawable;
+    (void)drawable;
+    libvlc_printerr ("can't set agl: use libvlc_media_player_set_nsobject instead");
+    var_SetString (p_mi, "vout", "none");
+    var_SetString (p_mi, "window", "none");
 }
 
 /**************************************************************************
@@ -1123,7 +1129,10 @@ void libvlc_media_player_set_hwnd( libvlc_media_player_t *p_mi,
                    (drawable != NULL) ? "embed-hwnd,any" : "");
     var_SetInteger (p_mi, "drawable-hwnd", (uintptr_t)drawable);
 #else
-    (void) p_mi; (void) drawable;
+    (void) drawable;
+    libvlc_printerr ("can't set nsobject: WIN32 build required");
+    var_SetString (p_mi, "vout", "none");
+    var_SetString (p_mi, "window", "none");
 #endif
 }
 
@@ -1153,7 +1162,10 @@ void libvlc_media_player_set_android_context( libvlc_media_player_t *p_mi,
     var_SetAddress (p_mi, "android-jvm", p_jvm);
     var_SetAddress (p_mi, "drawable-androidwindow", p_awindow_handler);
 #else
-    (void) p_mi; (void) p_jvm; (void) p_awindow_handler;
+    (void) p_jvm; (void) p_awindow_handler;
+    libvlc_printerr ("can't set android context: ANDROID build required");
+    var_SetString (p_mi, "vout", "none");
+    var_SetString (p_mi, "window", "none");
 #endif
 }
 
-- 
2.1.4



More information about the vlc-devel mailing list