/*****************************************************************************
* Preamble
*****************************************************************************/
-#include <stdlib.h> /* malloc(), free() */
-#include <string.h>
-#include <vlc/vlc.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc_common.h>
+#include <vlc_plugin.h>
#include <vlc_interface.h>
#include <vlc_vout.h>
#include <vlc_aout.h>
struct intf_sys_t
{
vlc_object_t * p_vout;
- vlc_bool_t b_got_gesture;
- vlc_bool_t b_button_pressed;
+ bool b_got_gesture;
+ bool b_button_pressed;
int i_mouse_x, i_mouse_y;
int i_last_x, i_last_y;
unsigned int i_pattern;
#define NONE 0
#define GESTURE( a, b, c, d ) (a | ( b << 4 ) | ( c << 8 ) | ( d << 12 ))
-int E_(Open) ( vlc_object_t * );
-void E_(Close) ( vlc_object_t * );
+int Open ( vlc_object_t * );
+void Close ( vlc_object_t * );
static int InitThread ( intf_thread_t *p_intf );
static void EndThread ( intf_thread_t *p_intf );
static int MouseEvent ( vlc_object_t *, char const *,
#define BUTTON_LONGTEXT N_( \
"Trigger button for mouse gestures." )
-static const char *button_list[] = { "left", "middle", "right" };
-static const char *button_list_text[] =
+static const char *const button_list[] = { "left", "middle", "right" };
+static const char *const button_list_text[] =
{ N_("Left"), N_("Middle"), N_("Right") };
-vlc_module_begin();
- set_shortname( _("Gestures"));
- set_category( CAT_INTERFACE );
- set_subcategory( SUBCAT_INTERFACE_CONTROL );
+vlc_module_begin ()
+ set_shortname( N_("Gestures"))
+ set_category( CAT_INTERFACE )
+ set_subcategory( SUBCAT_INTERFACE_CONTROL )
add_integer( "gestures-threshold", 30, NULL,
- THRESHOLD_TEXT, THRESHOLD_LONGTEXT, VLC_TRUE );
+ THRESHOLD_TEXT, THRESHOLD_LONGTEXT, true )
add_string( "gestures-button", "right", NULL,
- BUTTON_TEXT, BUTTON_LONGTEXT, VLC_FALSE );
- change_string_list( button_list, button_list_text, 0 );
- set_description( _("Mouse gestures control interface") );
+ BUTTON_TEXT, BUTTON_LONGTEXT, false )
+ change_string_list( button_list, button_list_text, 0 )
+ set_description( N_("Mouse gestures control interface") )
- set_capability( "interface", 0 );
- set_callbacks( E_(Open), E_(Close) );
-vlc_module_end();
+ set_capability( "interface", 0 )
+ set_callbacks( Open, Close )
+vlc_module_end ()
/*****************************************************************************
* OpenIntf: initialize interface
*****************************************************************************/
-int E_(Open) ( vlc_object_t *p_this )
+int Open ( vlc_object_t *p_this )
{
intf_thread_t *p_intf = (intf_thread_t *)p_this;
*****************************************************************************/
static input_thread_t * input_from_playlist ( playlist_t *p_playlist )
{
- input_thread_t * p_input;
-
- PL_LOCK;
- p_input = p_playlist->p_input;
- if( p_input )
- vlc_object_yield( p_input );
- PL_UNLOCK;
-
- return p_input;
+ return playlist_CurrentInput( p_playlist );
}
/*****************************************************************************
* CloseIntf: destroy dummy interface
*****************************************************************************/
-void E_(Close) ( vlc_object_t *p_this )
+void Close ( vlc_object_t *p_this )
{
intf_thread_t *p_intf = (intf_thread_t *)p_this;
static void RunIntf( intf_thread_t *p_intf )
{
playlist_t * p_playlist = NULL;
+ int canc = vlc_savecancel();
vlc_mutex_lock( &p_intf->change_lock );
p_intf->p_sys->p_vout = NULL;
msg_Dbg( p_intf, "interface thread initialized" );
/* Main loop */
- while( !intf_ShouldDie( p_intf ) )
+ while( vlc_object_alive( p_intf ) )
{
vlc_mutex_lock( &p_intf->change_lock );
case GESTURE(RIGHT,LEFT,NONE,NONE):
{
input_thread_t * p_input;
- p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
- FIND_ANYWHERE );
-
- if( !p_playlist )
- break;
+ p_playlist = pl_Hold( p_intf );
p_input = input_from_playlist( p_playlist );
vlc_object_release( p_playlist );
-
+
if( !p_input )
break;
-
+
val.i_int = PLAYING_S;
if( p_input )
{
}
break;
case GESTURE(LEFT,DOWN,NONE,NONE):
- p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
- FIND_ANYWHERE );
- if( p_playlist == NULL )
- {
- break;
- }
+ p_playlist = pl_Hold( p_intf );
playlist_Prev( p_playlist );
vlc_object_release( p_playlist );
break;
case GESTURE(RIGHT,DOWN,NONE,NONE):
- p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
- FIND_ANYWHERE );
- if( p_playlist == NULL )
- {
- break;
- }
+ p_playlist = pl_Hold( p_intf );
playlist_Next( p_playlist );
vlc_object_release( p_playlist );
vlc_value_t val, list, list2;
int i_count, i;
- p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
- FIND_ANYWHERE );
-
- if( !p_playlist )
- break;
+ p_playlist = pl_Hold( p_intf );
p_input = input_from_playlist( p_playlist );
vlc_value_t val, list, list2;
int i_count, i;
- p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
- FIND_ANYWHERE );
-
- if( !p_playlist )
- break;
+ p_playlist = pl_Hold( p_intf );
p_input = input_from_playlist( p_playlist );
vlc_object_release( p_playlist );
}
else
{
- var_Set( p_input, "spu-es",
+ var_Set( p_input, "spu-es",
list.p_list->p_values[i+1] );
i = i + 1;
}
break;
case GESTURE(DOWN,LEFT,NONE,NONE):
/* FIXME: Should close the vout!"*/
- p_intf->p_libvlc->b_die = VLC_TRUE;
+ libvlc_Quit( p_intf->p_libvlc );
break;
case GESTURE(DOWN,LEFT,UP,RIGHT):
case GESTURE(UP,RIGHT,DOWN,LEFT):
}
p_intf->p_sys->i_num_gestures = 0;
p_intf->p_sys->i_pattern = 0;
- p_intf->p_sys->b_got_gesture = VLC_FALSE;
+ p_intf->p_sys->b_got_gesture = false;
}
/*
* 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 );
}
EndThread( p_intf );
+ vlc_restorecancel( canc );
}
/*****************************************************************************
{
char *psz_button;
/* we might need some locking here */
- if( !intf_ShouldDie( p_intf ) )
+ if( vlc_object_alive( p_intf ) )
{
/* p_intf->change_lock locking strategy:
* - Every access to p_intf->p_sys are locked threw p_intf->change_lock
* during those operations */
vlc_mutex_lock( &p_intf->change_lock );
- p_intf->p_sys->b_got_gesture = VLC_FALSE;
- p_intf->p_sys->b_button_pressed = VLC_FALSE;
+ p_intf->p_sys->b_got_gesture = false;
+ p_intf->p_sys->b_button_pressed = false;
p_intf->p_sys->i_threshold =
config_GetInt( p_intf, "gestures-threshold" );
psz_button = config_GetPsz( p_intf, "gestures-button" );
{
p_intf->p_sys->i_button_mask = 4;
}
+ free( psz_button );
p_intf->p_sys->i_pattern = 0;
p_intf->p_sys->i_num_gestures = 0;
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_value_t val;
int pattern = 0;
&& newval.i_int & p_intf->p_sys->i_button_mask
&& !p_intf->p_sys->b_button_pressed )
{
- p_intf->p_sys->b_button_pressed = VLC_TRUE;
+ p_intf->p_sys->b_button_pressed = true;
var_Get( p_intf->p_sys->p_vout, "mouse-x", &val );
p_intf->p_sys->i_last_x = val.i_int;
var_Get( p_intf->p_sys->p_vout, "mouse-y", &val );
&& !( newval.i_int & p_intf->p_sys->i_button_mask )
&& p_intf->p_sys->b_button_pressed )
{
- p_intf->p_sys->b_button_pressed = VLC_FALSE;
- p_intf->p_sys->b_got_gesture = VLC_TRUE;
+ p_intf->p_sys->b_button_pressed = false;
+ p_intf->p_sys->b_got_gesture = true;
}
vlc_mutex_unlock( &p_intf->change_lock );