# include "config.h"
#endif
+#define VLC_MODULE_LICENSE VLC_LICENSE_GPL_2_PLUS
#include <vlc_common.h>
#include <vlc_plugin.h>
#include <vlc_interface.h>
bool b_button_pressed;
int i_last_x, i_last_y;
unsigned int i_pattern;
- int i_num_gestures;
+ unsigned int i_num_gestures;
int i_threshold;
int i_button_mask;
};
/*****************************************************************************
* gesture: return a subpattern within a pattern
*****************************************************************************/
-static int gesture( int i_pattern, int i_num )
+static inline unsigned gesture( unsigned i_pattern, unsigned i_num )
{
return ( i_pattern >> ( i_num * 4 ) ) & 0xF;
}
/* Destroy the callbacks (the order matters!) */
var_DelCallback( pl_Get(p_intf), "input-current", PlaylistEvent, p_intf );
- if( p_sys->p_input )
- {
+ if( p_sys->p_input != NULL )
var_DelCallback( p_sys->p_input, "intf-event", InputEvent, p_intf );
- vlc_object_release( p_sys->p_input );
- }
if( p_sys->p_vout )
{
{
int i_horizontal = newval.coords.x - p_sys->i_last_x;
int i_vertical = newval.coords.y - p_sys->i_last_y;
- int pattern = 0;
+ unsigned int pattern = 0;
- i_horizontal = i_horizontal / p_sys->i_threshold;
- i_vertical = i_vertical / p_sys->i_threshold;
+ i_horizontal /= p_sys->i_threshold;
+ i_vertical /= p_sys->i_threshold;
if( i_horizontal < 0 )
{
{
p_sys->i_last_x = newval.coords.x;
p_sys->i_last_y = newval.coords.y;
- if( gesture( p_sys->i_pattern, p_sys->i_num_gestures - 1 )
+ if( p_sys->i_num_gestures > 0
+ && gesture( p_sys->i_pattern, p_sys->i_num_gestures - 1 )
!= pattern )
{
p_sys->i_pattern |= pattern << ( p_sys->i_num_gestures * 4 );
p_sys->i_num_gestures++;
}
+ else if( p_sys->i_num_gestures == 0 )
+ {
+ p_sys->i_pattern = pattern;
+ p_sys->i_num_gestures++;
+ }
}
}
switch( val.i_int )
{
- case INPUT_EVENT_DEAD:
- vlc_object_release( p_input );
- p_sys->p_input = NULL; /* FIXME: locking!! */
- break;
-
case INPUT_EVENT_VOUT:
/* intf-event is serialized against itself and is the sole user of
* p_sys->p_vout. So there is no need to acquire the lock currently. */
intf_sys_t *p_sys = p_intf->p_sys;
input_thread_t *p_input = val.p_address;
- (void) p_this; (void) psz_var; (void) oldval;
+ (void) p_this; (void) psz_var;
- assert( p_sys->p_input == NULL );
+ if( p_sys->p_input != NULL )
+ {
+ assert( p_sys->p_input == oldval.p_address );
+ var_DelCallback( p_sys->p_input, "intf-event", InputEvent, p_intf );
+ }
+
+ p_sys->p_input = p_input;
if( p_input != NULL )
- {
var_AddCallback( p_input, "intf-event", InputEvent, p_intf );
- p_sys->p_input = vlc_object_hold( p_input );
- }
+
return VLC_SUCCESS;
}