]> git.sesse.net Git - vlc/blobdiff - src/video_output/vout_intf.c
Spatializer: add the remaining files, add a correct check in configure, fix dist
[vlc] / src / video_output / vout_intf.c
index 94060b627c904800e01eec703a7d774f05e0e762..917043da9554f5bb3f7d6741818d5665059ad5d1 100644 (file)
@@ -43,6 +43,7 @@
 
 #include <vlc_strings.h>
 #include <vlc_charset.h>
+#include "../libvlc.h"
 
 /*****************************************************************************
  * Local prototypes
@@ -62,6 +63,8 @@ static int FullscreenCallback( vlc_object_t *, char const *,
                                vlc_value_t, vlc_value_t, void * );
 static int SnapshotCallback( vlc_object_t *, char const *,
                              vlc_value_t, vlc_value_t, void * );
+static int TitleCallback( vlc_object_t *, char const *,
+                       vlc_value_t, vlc_value_t, void * );
 
 /*****************************************************************************
  * vout_RequestWindow: Create/Get a video window if possible.
@@ -209,6 +212,18 @@ void vout_IntfInit( vout_thread_t *p_vout )
     var_Create( p_vout, "video-x", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
     var_Create( p_vout, "video-y", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
 
+    var_Create( p_vout, "video-title-show", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );
+    var_Create( p_vout, "video-title-timeout", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
+    var_Create( p_vout, "video-title-position", VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );
+
+    p_vout->b_title_show = var_GetBool( p_vout, "video-title-show" );
+    p_vout->i_title_timeout = (mtime_t) var_GetInteger( p_vout, "video-title-timeout" );
+    p_vout->i_title_position = var_GetInteger( p_vout, "video-title-position" );
+
+    var_AddCallback( p_vout, "video-title-show", TitleCallback, NULL );
+    var_AddCallback( p_vout, "video-title-timeout", TitleCallback, NULL );
+    var_AddCallback( p_vout, "video-title-position", TitleCallback, NULL );
+
     /* Zoom object var */
     var_Create( p_vout, "zoom", VLC_VAR_FLOAT | VLC_VAR_ISCOMMAND |
                 VLC_VAR_HASCHOICE | VLC_VAR_DOINHERIT );
@@ -510,7 +525,6 @@ int vout_Snapshot( vout_thread_t *p_vout, picture_t *p_pic )
             msg_Err( p_vout, "Could not get snapshot" );
             image_HandlerDelete( p_image );
             vlc_cond_signal( &p_dest->object_wait );
-            vlc_mutex_unlock( &p_dest->object_lock );
             vlc_object_release( p_dest );
             return VLC_EGENERIC;
         }
@@ -523,7 +537,6 @@ int vout_Snapshot( vout_thread_t *p_vout, picture_t *p_pic )
             block_Release( p_block );
             image_HandlerDelete( p_image );
             vlc_cond_signal( &p_dest->object_wait );
-            vlc_mutex_unlock( &p_dest->object_lock );
             vlc_object_release( p_dest );
             return VLC_ENOMEM;
         }
@@ -541,7 +554,6 @@ int vout_Snapshot( vout_thread_t *p_vout, picture_t *p_pic )
             free( p_snapshot );
             image_HandlerDelete( p_image );
             vlc_cond_signal( &p_dest->object_wait );
-            vlc_mutex_unlock( &p_dest->object_lock );
             vlc_object_release( p_dest );
             return VLC_ENOMEM;
         }
@@ -553,7 +565,6 @@ int vout_Snapshot( vout_thread_t *p_vout, picture_t *p_pic )
 
         /* Unlock the object */
         vlc_cond_signal( &p_dest->object_wait );
-        vlc_mutex_unlock( &p_dest->object_lock );
         vlc_object_release( p_dest );
 
         image_HandlerDelete( p_image );
@@ -564,8 +575,9 @@ int vout_Snapshot( vout_thread_t *p_vout, picture_t *p_pic )
 #if defined(__APPLE__) || defined(SYS_BEOS)
     if( !val.psz_string && p_vout->p_libvlc->psz_homedir )
     {
-        asprintf( &val.psz_string, "%s/Desktop",
-                  p_vout->p_libvlc->psz_homedir );
+        if( asprintf( &val.psz_string, "%s/Desktop",
+                      p_vout->p_libvlc->psz_homedir ) == -1 )
+            val.psz_string = NULL;
     }
 
 #elif defined(WIN32) && !defined(UNDER_CE)
@@ -607,12 +619,14 @@ int vout_Snapshot( vout_thread_t *p_vout, picture_t *p_pic )
 
         if( p_mypicturesdir == NULL )
         {
-            asprintf( &val.psz_string, "%s\\" CONFIG_DIR,
-                      p_vout->p_libvlc->psz_homedir );
+            if( asprintf( &val.psz_string, "%s\\" CONFIG_DIR,
+                          p_vout->p_libvlc->psz_homedir ) == -1 )
+                val.psz_string = NULL;
         }
         else
         {
-            asprintf( &val.psz_string, p_mypicturesdir );
+            if( asprintf( &val.psz_string, p_mypicturesdir ) == -1 )
+                val.psz_string = NULL;
             free( p_mypicturesdir );
         }
     }
@@ -620,8 +634,9 @@ int vout_Snapshot( vout_thread_t *p_vout, picture_t *p_pic )
 #else
     if( !val.psz_string && p_vout->p_libvlc->psz_homedir )
     {
-        asprintf( &val.psz_string, "%s/" CONFIG_DIR,
-                  p_vout->p_libvlc->psz_homedir );
+        if( asprintf( &val.psz_string, "%s/" CONFIG_DIR,
+                      p_vout->p_libvlc->psz_homedir ) == -1 )
+            val.psz_string = NULL;
     }
 #endif
 
@@ -1148,12 +1163,6 @@ static int FullscreenCallback( vlc_object_t *p_this, char const *psz_cmd,
     var_Set( p_playlist, "fullscreen", newval );
     pl_Release( p_playlist );
 
-    /* Disable "always on top" in fullscreen mode */
-    var_Get( p_vout, "video-on-top", &val );
-    if( val.b_bool )
-        vout_Control( p_vout, VOUT_SET_STAY_ON_TOP,
-                      (vlc_bool_t)!newval.b_bool );
-
     val.b_bool = VLC_TRUE;
     var_Set( p_vout, "intf-change", val );
     return VLC_SUCCESS;
@@ -1167,3 +1176,18 @@ static int SnapshotCallback( vlc_object_t *p_this, char const *psz_cmd,
     (void)psz_cmd; (void)oldval; (void)newval; (void)p_data;
     return VLC_SUCCESS;
 }
+
+static int TitleCallback( vlc_object_t *p_this, char const *psz_cmd,
+                       vlc_value_t oldval, vlc_value_t newval, void *p_data )
+{
+    vout_thread_t *p_vout = (vout_thread_t *)p_this;
+
+    if( !strncmp( psz_cmd, "video-title-show", 16 ) )
+        p_vout->b_title_show = newval.b_bool;
+    else if( !strncmp( psz_cmd, "video-title-timeout", 19 ) )
+        p_vout->i_title_timeout = (mtime_t) newval.i_int;
+    else if( !strncmp( psz_cmd, "video-title-position", 20 ) )
+        p_vout->i_title_position = newval.i_int;
+    return VLC_SUCCESS;
+}
+