]> git.sesse.net Git - vlc/blobdiff - modules/control/showintf.c
Add missing config.h
[vlc] / modules / control / showintf.c
index a9ad8ee5c7800c0b2174b60db08297d015493776..4ec461b1d3bf17607f77f92cd367a78eaf9c4bff 100644 (file)
  *****************************************************************************/
 struct intf_sys_t
 {
-    vlc_object_t * p_vout;
-    bool     b_button_pressed;
-    bool     b_triggered;
-    int            i_threshold;
+    vlc_mutex_t   lock;
+    vlc_object_t *p_vout;
+    bool          b_button_pressed;
+    bool          b_triggered;
+    int           i_threshold;
 };
 
 /*****************************************************************************
@@ -56,7 +57,6 @@ struct intf_sys_t
 int  Open ( vlc_object_t * );
 void Close( vlc_object_t * );
 static void RunIntf( intf_thread_t *p_intf );
-static int  InitThread( intf_thread_t *p_intf );
 static int  MouseEvent( vlc_object_t *, char const *,
                         vlc_value_t, vlc_value_t, void * );
 
@@ -66,14 +66,14 @@ static int  MouseEvent( vlc_object_t *, char const *,
 #define THRESHOLD_TEXT N_( "Threshold" )
 #define THRESHOLD_LONGTEXT N_( "Height of the zone triggering the interface." )
 
-vlc_module_begin();
-    set_shortname( "Showintf" );
-    add_integer( "showintf-threshold", 10, NULL, THRESHOLD_TEXT, THRESHOLD_LONGTEXT, true );
-    set_description( N_("Show interface with mouse") );
+vlc_module_begin ()
+    set_shortname( "Showintf" )
+    add_integer( "showintf-threshold", 10, NULL, THRESHOLD_TEXT, THRESHOLD_LONGTEXT, true )
+    set_description( N_("Show interface with mouse") )
 
-    set_capability( "interface", 0 );
-    set_callbacks( Open, Close );
-vlc_module_end();
+    set_capability( "interface", 0 )
+    set_callbacks( Open, Close )
+vlc_module_end ()
 
 /*****************************************************************************
  * Open: initialize interface
@@ -83,15 +83,19 @@ int Open( vlc_object_t *p_this )
     intf_thread_t *p_intf = (intf_thread_t *)p_this;
 
     /* Allocate instance and initialize some members */
-    p_intf->p_sys = malloc( sizeof( intf_sys_t ) );
-    if( p_intf->p_sys == NULL )
-    {
-        return( 1 );
-    };
+    intf_sys_t *p_sys = p_intf->p_sys = malloc( sizeof( intf_sys_t ) );
+    if( p_sys == NULL )
+        return VLC_ENOMEM;
+
+    vlc_mutex_init( &p_sys->lock );
+    p_sys->p_vout = NULL;
+    p_sys->b_button_pressed = false;
+    p_sys->b_triggered = false;
+    p_sys->i_threshold = config_GetInt( p_intf, "showintf-threshold" );
 
     p_intf->pf_run = RunIntf;
 
-    return( 0 );
+    return VLC_SUCCESS;
 }
 
 /*****************************************************************************
@@ -102,6 +106,7 @@ void Close( vlc_object_t *p_this )
     intf_thread_t *p_intf = (intf_thread_t *)p_this;
 
     /* Destroy structure */
+    vlc_mutex_destroy( &p_intf->p_sys->lock );
     free( p_intf->p_sys );
 }
 
@@ -111,18 +116,12 @@ void Close( vlc_object_t *p_this )
  *****************************************************************************/
 static void RunIntf( intf_thread_t *p_intf )
 {
-    p_intf->p_sys->p_vout = NULL;
-
-    if( InitThread( p_intf ) < 0 )
-    {
-        msg_Err( p_intf, "cannot initialize interface" );
-        return;
-    }
+    int canc = vlc_savecancel( );
 
     /* Main loop */
-    while( !intf_ShouldDie( p_intf ) )
+    while( vlc_object_alive( p_intf ) )
     {
-        vlc_mutex_lock( &p_intf->change_lock );
+        vlc_mutex_lock( &p_intf->p_sys->lock );
 
         /* Notify the interfaces */
         if( p_intf->p_sys->b_triggered )
@@ -131,11 +130,11 @@ static void RunIntf( intf_thread_t *p_intf )
             p_intf->p_sys->b_triggered = false;
         }
 
-        vlc_mutex_unlock( &p_intf->change_lock );
+        vlc_mutex_unlock( &p_intf->p_sys->lock );
 
 
         /* Take care of the video output */
-        if( p_intf->p_sys->p_vout && p_intf->p_sys->p_vout->b_die )
+        if( p_intf->p_sys->p_vout && !vlc_object_alive (p_intf->p_sys->p_vout) )
         {
             var_DelCallback( p_intf->p_sys->p_vout, "mouse-moved",
                              MouseEvent, p_intf );
@@ -170,30 +169,7 @@ static void RunIntf( intf_thread_t *p_intf )
                          MouseEvent, p_intf );
         vlc_object_release( p_intf->p_sys->p_vout );
     }
-}
-
-/*****************************************************************************
- * InitThread:
- *****************************************************************************/
-static int InitThread( intf_thread_t * p_intf )
-{
-    if( !intf_ShouldDie( p_intf ) )
-    {
-        vlc_mutex_lock( &p_intf->change_lock );
-
-        p_intf->p_sys->b_triggered = false;
-        p_intf->p_sys->b_button_pressed = false;
-        p_intf->p_sys->i_threshold =
-            config_GetInt( p_intf, "showintf-threshold" );
-
-        vlc_mutex_unlock( &p_intf->change_lock );
-
-        return 0;
-    }
-    else
-    {
-        return -1;
-    }
+    vlc_restorecancel( canc );
 }
 
 /*****************************************************************************
@@ -203,7 +179,6 @@ static int MouseEvent( vlc_object_t *p_this, char const *psz_var,
                        vlc_value_t oldval, vlc_value_t newval, void *p_data )
 {
     VLC_UNUSED(p_this); VLC_UNUSED(oldval); VLC_UNUSED(newval);
-    vlc_value_t val;
 
     int i_mouse_x, i_mouse_y;
     intf_thread_t *p_intf = (intf_thread_t *)p_data;
@@ -213,17 +188,14 @@ static int MouseEvent( vlc_object_t *p_this, char const *psz_var,
         return VLC_SUCCESS;
 
     /* Nothing to do when not in fullscreen mode */
-    var_Get( p_intf->p_sys->p_vout, "fullscreen", &val );
-    if( !val.i_int )
+    if( !var_GetBool( p_intf->p_sys->p_vout, "fullscreen" ) )
         return VLC_SUCCESS;
 
-    vlc_mutex_lock( &p_intf->change_lock );
+    vlc_mutex_lock( &p_intf->p_sys->lock );
     if( !strcmp( psz_var, "mouse-moved" ) && !p_intf->p_sys->b_button_pressed )
     {
-        var_Get( p_intf->p_sys->p_vout, "mouse-x", &val );
-        i_mouse_x = val.i_int;
-        var_Get( p_intf->p_sys->p_vout, "mouse-y", &val );
-        i_mouse_y = val.i_int;
+        i_mouse_x = var_GetInteger( p_intf->p_sys->p_vout, "mouse-x" );
+        i_mouse_y = var_GetInteger( p_intf->p_sys->p_vout, "mouse-y" );
 
         /* Very basic test, we even ignore the x value :) */
         if ( i_mouse_y < p_intf->p_sys->i_threshold )
@@ -246,7 +218,7 @@ static int MouseEvent( vlc_object_t *p_this, char const *psz_var,
         p_intf->p_sys->b_button_pressed = false;
     }
 
-    vlc_mutex_unlock( &p_intf->change_lock );
+    vlc_mutex_unlock( &p_intf->p_sys->lock );
 
     return VLC_SUCCESS;
 }