*****************************************************************************/
#include <errno.h> /* ENOMEM */
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include <vlc/vlc.h>
+#include <vlc_plugin.h>
#include <vlc_interface.h>
#include <vlc_playlist.h>
#include <vlc_vout.h>
/* For RGB output */
int i_surfaces;
- vlc_bool_t b_cursor;
- vlc_bool_t b_cursor_autohidden;
+ bool b_cursor;
+ bool b_cursor_autohidden;
mtime_t i_lastmoved;
+ mtime_t i_mouse_hide_timeout;
mtime_t i_lastpressed; /* to track dbl-clicks */
};
set_shortname( "SDL" );
set_category( CAT_VIDEO );
set_subcategory( SUBCAT_VIDEO_VOUT );
- set_description( _("Simple DirectMedia Layer video output") );
+ set_description( N_("Simple DirectMedia Layer video output") );
set_capability( "video output", 60 );
add_shortcut( "sdl" );
- add_string( "sdl-chroma", NULL, NULL, CHROMA_TEXT, CHROMA_LONGTEXT, VLC_TRUE );
+ add_string( "sdl-chroma", NULL, NULL, CHROMA_TEXT, CHROMA_LONGTEXT, true );
set_callbacks( Open, Close );
#if defined( __i386__ ) || defined( __x86_64__ )
/* On i386, SDL is linked against svgalib */
/* Win32 SDL implementation doesn't support SDL_INIT_EVENTTHREAD yet*/
| SDL_INIT_EVENTTHREAD
#endif
-#ifdef DEBUG
+#ifndef NDEBUG
/* In debug mode you may want vlc to dump a core instead of staying
* stuck */
| SDL_INIT_NOPARACHUTE
p_vout->p_sys->b_cursor = 1;
p_vout->p_sys->b_cursor_autohidden = 0;
p_vout->p_sys->i_lastmoved = p_vout->p_sys->i_lastpressed = mdate();
+ p_vout->p_sys->i_mouse_hide_timeout =
+ var_GetInteger(p_vout, "mouse-hide-timeout") * 1000;
if( OpenDisplay( p_vout ) )
{
var_Set( p_vout, "mouse-y", val );
- val.b_bool = VLC_TRUE;
+ val.b_bool = true;
var_Set( p_vout, "mouse-moved", val );
if( p_vout->p_sys->b_cursor )
switch( event.button.button )
{
case SDL_BUTTON_LEFT:
- var_Get( p_vout, "mouse-button-down", &val );
- val.i_int &= ~1;
- var_Set( p_vout, "mouse-button-down", val );
+ {
+ playlist_t *p_playlist;
+
+ var_Get( p_vout, "mouse-button-down", &val );
+ val.i_int &= ~1;
+ var_Set( p_vout, "mouse-button-down", val );
- val.b_bool = VLC_TRUE;
- var_Set( p_vout, "mouse-clicked", val );
+ val.b_bool = true;
+ var_Set( p_vout, "mouse-clicked", val );
+
+ p_playlist = pl_Yield( p_vout );
+
+ if( p_playlist != NULL )
+ {
+ vlc_value_t val;
+ val.b_bool = false;
+ var_Set( p_playlist, "intf-popupmenu", val );
+ pl_Release( p_playlist );
+ }
+ }
break;
case SDL_BUTTON_MIDDLE:
val.i_int &= ~2;
var_Set( p_vout, "mouse-button-down", val );
- p_playlist = vlc_object_find( p_vout, VLC_OBJECT_PLAYLIST,
- FIND_ANYWHERE );
+ p_playlist = pl_Yield( p_vout );
if( p_playlist != NULL )
{
vlc_value_t val;
var_Get( p_playlist, "intf-show", &val );
val.b_bool = !val.b_bool;
var_Set( p_playlist, "intf-show", val );
- vlc_object_release( p_playlist );
+ pl_Release( p_playlist );
}
}
break;
vlc_object_release( p_intf );
}
- p_playlist = vlc_object_find( p_vout, VLC_OBJECT_PLAYLIST,
- FIND_ANYWHERE );
+ p_playlist = pl_Yield( p_vout );
if( p_playlist != NULL )
{
vlc_value_t val;
- val.b_bool = VLC_TRUE;
+ val.b_bool = true;
var_Set( p_playlist, "intf-popupmenu", val );
- vlc_object_release( p_playlist );
+ pl_Release( p_playlist );
}
}
break;
/* Quit event (close the window) */
case SDL_QUIT:
{
- playlist_t *p_playlist = (playlist_t *)vlc_object_find( p_vout, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE );
+ playlist_t *p_playlist = pl_Yield( p_vout );
if( p_playlist != NULL )
{
playlist_Stop( p_playlist );
- vlc_object_release( p_playlist );
+ pl_Release( p_playlist );
}
}
break;
/* Pointer change */
if( ! p_vout->p_sys->b_cursor_autohidden &&
- ( mdate() - p_vout->p_sys->i_lastmoved > 2000000 ) )
+ ( mdate() - p_vout->p_sys->i_lastmoved >
+ p_vout->p_sys->i_mouse_hide_timeout ) )
{
/* Hide the mouse automatically */
p_vout->p_sys->b_cursor_autohidden = 1;