From 1c0551f16b97927e5eaf045301957be0f53d1140 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Cl=C3=A9ment=20Stenac?= Date: Sun, 17 Sep 2006 12:40:52 +0000 Subject: [PATCH] Clean up a bit of redundant code --- include/variables.h | 40 ++++-- modules/control/hotkeys.c | 259 ++++++++++---------------------------- 2 files changed, 98 insertions(+), 201 deletions(-) diff --git a/include/variables.h b/include/variables.h index 50861490d3..356e498af5 100644 --- a/include/variables.h +++ b/include/variables.h @@ -232,7 +232,7 @@ static inline int __var_SetInteger( vlc_object_t *p_obj, const char *psz_name, i val.i_int = i; return __var_Set( p_obj, psz_name, val ); } - +#define var_SetInteger(a,b,c) __var_SetInteger( VLC_OBJECT(a),b,c) /** * Set the value of an boolean variable * @@ -301,11 +301,8 @@ static inline int __var_SetVoid( vlc_object_t *p_obj, const char *psz_name ) val.b_bool = VLC_TRUE; return __var_Set( p_obj, psz_name, val ); } +#define var_SetVoid(a,b) __var_SetVoid( VLC_OBJECT(a),b) -/** - * __var_SetInteger() with automatic casting - */ -#define var_SetInteger(a,b,c) __var_SetInteger( VLC_OBJECT(a),b,c) /** * __var_SetBool() with automatic casting */ @@ -323,14 +320,10 @@ static inline int __var_SetVoid( vlc_object_t *p_obj, const char *psz_name ) * __var_SetString() with automatic casting */ #define var_SetString(a,b,c) __var_SetString( VLC_OBJECT(a),b,c) -/** - * __var_SetVoid() with automatic casting - */ -#define var_SetVoid(a,b) __var_SetVoid( VLC_OBJECT(a),b) /** - * Get a integer value - * + * Get an integer value +* * \param p_obj The object that holds the variable * \param psz_name The name of the variable */ @@ -425,6 +418,31 @@ static inline char *__var_GetString( vlc_object_t *p_obj, const char *psz_name ) #define var_GetString(a,b) __var_GetString( VLC_OBJECT(a),b) + +/** + * Increment an integer variable + * \param p_obj the object that holds the variable + * \param psz_name the name of the variable + */ +static inline void __var_IncInteger( vlc_object_t *p_obj, const char *psz_name ) +{ + int i_val = __var_GetInteger( p_obj, psz_name ); + __var_SetInteger( p_obj, psz_name, ++i_val ); +} +#define var_IncInteger(a,b) __var_IncInteger( VLC_OBJECT(a), b ) + +/** + * Decrement an integer variable + * \param p_obj the object that holds the variable + * \param psz_name the name of the variable + */ +static inline void __var_DecInteger( vlc_object_t *p_obj, const char *psz_name ) +{ + int i_val = __var_GetInteger( p_obj, psz_name ); + __var_SetInteger( p_obj, psz_name, --i_val ); +} +#define var_DecInteger(a,b) __var_DecInteger( VLC_OBJECT(a), b ) + /** * Create a integer variable with inherit and get its value. * diff --git a/modules/control/hotkeys.c b/modules/control/hotkeys.c index 6ca2f9a12a..355a4b287d 100644 --- a/modules/control/hotkeys.c +++ b/modules/control/hotkeys.c @@ -106,14 +106,8 @@ vlc_module_end(); static int Open( vlc_object_t *p_this ) { intf_thread_t *p_intf = (intf_thread_t *)p_this; + MALLOC_ERR( p_intf->P_sys, intf_sys_t ); - /* Allocate instance and initialize some members */ - p_intf->p_sys = malloc( sizeof( intf_sys_t ) ); - if( p_intf->p_sys == NULL ) - { - msg_Err( p_intf, "out of memory" ); - return 1; - } vlc_mutex_init( p_intf, &p_intf->p_sys->change_lock ); p_intf->p_sys->i_size = 0; p_intf->pf_run = Run; @@ -122,7 +116,7 @@ static int Open( vlc_object_t *p_this ) p_intf->p_sys->p_vout = NULL; var_AddCallback( p_intf->p_libvlc, "key-pressed", KeyEvent, p_intf ); - return 0; + return VLC_SUCCESS; } /***************************************************************************** @@ -150,13 +144,13 @@ static void Close( vlc_object_t *p_this ) *****************************************************************************/ static void Run( intf_thread_t *p_intf ) { - playlist_t *p_playlist = NULL; input_thread_t *p_input = NULL; vout_thread_t *p_vout = NULL; vout_thread_t *p_last_vout = NULL; struct hotkey *p_hotkeys = p_intf->p_libvlc->p_hotkeys; vlc_value_t val; int i; + playlist_t *p_playlist = pl_Yield( p_intf ); /* Initialize hotkey structure */ for( i = 0; p_hotkeys[i].psz_action != NULL; i++ ) @@ -181,11 +175,11 @@ static void Run( intf_thread_t *p_intf ) /* Update the input */ if( p_intf->p_sys->p_input == NULL ) { - p_playlist = pl_Yield( p_intf ); + PL_LOCK; p_intf->p_sys->p_input = p_playlist->p_input; if( p_intf->p_sys->p_input ) vlc_object_yield( p_intf->p_sys->p_input ); - vlc_object_release( p_playlist ); + PL_UNLOCK; } else if( p_intf->p_sys->p_input->b_dead ) { @@ -277,23 +271,9 @@ static void Run( intf_thread_t *p_intf ) } } else if( i_action == ACTIONID_INTF_SHOW ) - { - val.b_bool = VLC_TRUE; - p_playlist = pl_Yield( p_intf ); - var_Set( p_playlist, "intf-show", val ); - vlc_object_release( p_playlist ); - } + var_SetBool( p_playlist, "intf-show", VLC_TRUE ); else if( i_action == ACTIONID_INTF_HIDE ) - { - val.b_bool = VLC_FALSE; - p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, - FIND_ANYWHERE ); - if( p_playlist ) - { - var_Set( p_playlist, "intf-show", val ); - vlc_object_release( p_playlist ); - } - } + var_SetBool( p_playlist, "intf-show", VLC_FALSE ); else if( i_action == ACTIONID_SNAPSHOT ) { if( p_vout ) vout_Control( p_vout, VOUT_SNAPSHOT ); @@ -308,15 +288,9 @@ static void Run( intf_thread_t *p_intf ) } else { - p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, - FIND_ANYWHERE ); - if( p_playlist ) - { - var_Get( p_playlist, "fullscreen", &val ); - val.b_bool = !val.b_bool; - var_Set( p_playlist, "fullscreen", val ); - vlc_object_release( p_playlist ); - } + var_Get( p_playlist, "fullscreen", &val ); + val.b_bool = !val.b_bool; + var_Set( p_playlist, "fullscreen", val ); } } else if( i_action == ACTIONID_PLAY_PAUSE ) @@ -343,13 +317,7 @@ static void Run( intf_thread_t *p_intf ) } else { - p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, - FIND_ANYWHERE ); - if( p_playlist ) - { - playlist_Play( p_playlist ); - vlc_object_release( p_playlist ); - } + playlist_Play( p_playlist ); } } else if( p_input ) @@ -611,96 +579,46 @@ static void Run( intf_thread_t *p_intf ) } } else if( i_action == ACTIONID_CROP_TOP && p_vout ) - { - int i_val = var_GetInteger( p_vout, "crop-top" ); - var_SetInteger( p_vout, "crop-top", i_val+1 ); - } + var_IncInteger( p_vout, "crop-top" ); else if( i_action == ACTIONID_UNCROP_TOP && p_vout ) - { - int i_val = var_GetInteger( p_vout, "crop-top" ); - if( i_val != 0 ) - var_SetInteger( p_vout, "crop-top", i_val-1 ); - } + var_DecInteger( p_vout, "crop-top" ); else if( i_action == ACTIONID_CROP_BOTTOM && p_vout ) - { - int i_val = var_GetInteger( p_vout, "crop-bottom" ); - var_SetInteger( p_vout, "crop-bottom", i_val+1 ); - } + var_IncInteger( p_vout, "crop-bottom" ); else if( i_action == ACTIONID_UNCROP_BOTTOM && p_vout ) - { - int i_val = var_GetInteger( p_vout, "crop-bottom" ); - if( i_val != 0 ) - var_SetInteger( p_vout, "crop-bottom", i_val-1 ); - } + var_DecInteger( p_vout, "crop-bottom" ); else if( i_action == ACTIONID_CROP_LEFT && p_vout ) - { - int i_val = var_GetInteger( p_vout, "crop-left" ); - var_SetInteger( p_vout, "crop-left", i_val+1 ); - } + var_IncInteger( p_vout, "crop-left" ); else if( i_action == ACTIONID_UNCROP_LEFT && p_vout ) - { - int i_val = var_GetInteger( p_vout, "crop-left" ); - if( i_val != 0 ) - var_SetInteger( p_vout, "crop-left", i_val-1 ); - } + var_DecInteger( p_vout, "crop-left" ); else if( i_action == ACTIONID_CROP_RIGHT && p_vout ) - { - int i_val = var_GetInteger( p_vout, "crop-right" ); - var_SetInteger( p_vout, "crop-right", i_val+1 ); - } + var_IncInteger( p_vout, "crop-right" ); else if( i_action == ACTIONID_UNCROP_RIGHT && p_vout ) - { - int i_val = var_GetInteger( p_vout, "crop-right" ); - if( i_val != 0 ) - var_SetInteger( p_vout, "crop-right", i_val-1 ); - } + var_DecInteger( p_vout, "crop-right" ); + else if( i_action == ACTIONID_NEXT ) { - p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, - FIND_ANYWHERE ); - if( p_playlist ) - { - vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN, - _("Next") ); - playlist_Next( p_playlist ); - vlc_object_release( p_playlist ); - } + vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN, _("Next") ); + playlist_Next( p_playlist ); } else if( i_action == ACTIONID_PREV ) { - p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, - FIND_ANYWHERE ); - if( p_playlist ) - { - vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN, - _("Previous") ); - playlist_Prev( p_playlist ); - vlc_object_release( p_playlist ); - } + vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN, + _("Previous") ); + playlist_Prev( p_playlist ); } else if( i_action == ACTIONID_STOP ) { - p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, - FIND_ANYWHERE ); - if( p_playlist ) - { - playlist_Stop( p_playlist ); - vlc_object_release( p_playlist ); - } + playlist_Stop( p_playlist ); } else if( i_action == ACTIONID_FASTER ) { - vlc_value_t val; - val.b_bool = VLC_TRUE; - var_Set( p_input, "rate-faster", val ); + var_SetVoid( p_input, "rate-faster" ); vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN, _("Faster") ); } else if( i_action == ACTIONID_SLOWER ) { - vlc_value_t val; - val.b_bool = VLC_TRUE; - var_Set( p_input, "rate-slower", val ); + var_SetVoid( p_input, "rate-slower" ); vout_OSDMessage( VLC_OBJECT(p_input), DEFAULT_CHAN, _("Slower") ); } @@ -720,36 +638,20 @@ static void Run( intf_thread_t *p_intf ) } /* Only makes sense with DVD */ else if( i_action == ACTIONID_TITLE_PREV ) - { - val.b_bool = VLC_TRUE; - var_Set( p_input, "prev-title", val ); - } + var_SetVoid( p_input, "prev-title" ); else if( i_action == ACTIONID_TITLE_NEXT ) - { - val.b_bool = VLC_TRUE; - var_Set( p_input, "next-title", val ); - } + var_SetVoid( p_input, "next-title" ); else if( i_action == ACTIONID_CHAPTER_PREV ) - { - val.b_bool = VLC_TRUE; - var_Set( p_input, "prev-chapter", val ); - } + var_SetVoid( p_input, "prev-chapter" ); else if( i_action == ACTIONID_CHAPTER_NEXT ) - { - val.b_bool = VLC_TRUE; - var_Set( p_input, "next-chapter", val ); - } + var_SetVoid( p_input, "next-chapter" ); else if( i_action == ACTIONID_DISC_MENU ) - { - vlc_value_t val; val.i_int = 2; - var_Set( p_input, "title 0", val); - } + var_SetInteger( p_input, "title 0", 2 ); + else if( i_action == ACTIONID_SUBDELAY_DOWN ) { int64_t i_delay = var_GetTime( p_input, "spu-delay" ); - i_delay -= 50000; /* 50 ms */ - var_SetTime( p_input, "spu-delay", i_delay ); ClearChannels( p_intf, p_vout ); vout_OSDMessage( p_intf, DEFAULT_CHAN, "Subtitle delay %i ms", @@ -758,9 +660,7 @@ static void Run( intf_thread_t *p_intf ) else if( i_action == ACTIONID_SUBDELAY_UP ) { int64_t i_delay = var_GetTime( p_input, "spu-delay" ); - i_delay += 50000; /* 50 ms */ - var_SetTime( p_input, "spu-delay", i_delay ); ClearChannels( p_intf, p_vout ); vout_OSDMessage( p_intf, DEFAULT_CHAN, "Subtitle delay %i ms", @@ -769,9 +669,7 @@ static void Run( intf_thread_t *p_intf ) else if( i_action == ACTIONID_AUDIODELAY_DOWN ) { int64_t i_delay = var_GetTime( p_input, "audio-delay" ); - i_delay -= 50000; /* 50 ms */ - var_SetTime( p_input, "audio-delay", i_delay ); ClearChannels( p_intf, p_vout ); vout_OSDMessage( p_intf, DEFAULT_CHAN, "Audio delay %i ms", @@ -780,9 +678,7 @@ static void Run( intf_thread_t *p_intf ) else if( i_action == ACTIONID_AUDIODELAY_UP ) { int64_t i_delay = var_GetTime( p_input, "audio-delay" ); - i_delay += 50000; /* 50 ms */ - var_SetTime( p_input, "audio-delay", i_delay ); ClearChannels( p_intf, p_vout ); vout_OSDMessage( p_intf, DEFAULT_CHAN, "Audio delay %i ms", @@ -790,30 +686,23 @@ static void Run( intf_thread_t *p_intf ) } else if( i_action == ACTIONID_PLAY ) { - p_playlist = vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, - FIND_ANYWHERE ); - if( p_playlist ) + var_Get( p_input, "rate", &val ); + if( val.i_int != INPUT_RATE_DEFAULT ) { - var_Get( p_input, "rate", &val ); - msg_Dbg( p_input, "rate %d", val.i_int ); - if( val.i_int != INPUT_RATE_DEFAULT ) - { - /* Return to normal speed */ - val.i_int = INPUT_RATE_DEFAULT; - var_Set( p_input, "rate", val ); - } - else - { - ClearChannels( p_intf, p_vout ); - vout_OSDIcon( VLC_OBJECT( p_intf ), DEFAULT_CHAN, - OSD_PLAY_ICON ); - playlist_Play( p_playlist ); - } - vlc_object_release( p_playlist ); + /* Return to normal speed */ + var_SetInteger( p_input, "rate", INPUT_RATE_DEFAULT ); + } + else + { + ClearChannels( p_intf, p_vout ); + vout_OSDIcon( VLC_OBJECT( p_intf ), DEFAULT_CHAN, + OSD_PLAY_ICON ); + playlist_Play( p_playlist ); } } } } + pl_Release( p_intf ); } static int GetKey( intf_thread_t *p_intf) @@ -894,50 +783,42 @@ static void PlayBookmark( intf_thread_t *p_intf, int i_num ) vlc_value_t val; int i; char psz_bookmark_name[11]; - playlist_t *p_playlist = - vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); + playlist_t *p_playlist = pl_Yield( p_intf ); sprintf( psz_bookmark_name, "bookmark%i", i_num ); var_Create( p_intf, psz_bookmark_name, VLC_VAR_STRING|VLC_VAR_DOINHERIT ); var_Get( p_intf, psz_bookmark_name, &val ); - if( p_playlist ) + char *psz_bookmark = strdup( val.psz_string ); + for( i = 0; i < p_playlist->i_size; i++) { - char *psz_bookmark = strdup( val.psz_string ); - for( i = 0; i < p_playlist->i_size; i++) + if( !strcmp( psz_bookmark, + p_playlist->pp_items[i]->p_input->psz_uri ) ) { - if( !strcmp( psz_bookmark, - p_playlist->pp_items[i]->p_input->psz_uri ) ) - { - playlist_LockControl( p_playlist, PLAYLIST_VIEWPLAY, NULL, - p_playlist->pp_items[i] ); - break; - } + playlist_LockControl( p_playlist, PLAYLIST_VIEWPLAY, NULL, + p_playlist->pp_items[i] ); + break; } - vlc_object_release( p_playlist ); } + vlc_object_release( p_playlist ); } static void SetBookmark( intf_thread_t *p_intf, int i_num ) { - playlist_t *p_playlist = - vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); - if( p_playlist ) + playlist_t *p_playlist = pl_Yield( p_intf ); + char psz_bookmark_name[11]; + sprintf( psz_bookmark_name, "bookmark%i", i_num ); + var_Create( p_intf, psz_bookmark_name, + VLC_VAR_STRING|VLC_VAR_DOINHERIT ); + if( p_playlist->status.p_item ) { - char psz_bookmark_name[11]; - sprintf( psz_bookmark_name, "bookmark%i", i_num ); - var_Create( p_intf, psz_bookmark_name, - VLC_VAR_STRING|VLC_VAR_DOINHERIT ); - if( p_playlist->status.p_item ) - { - config_PutPsz( p_intf, psz_bookmark_name, - p_playlist->status.p_item->p_input->psz_uri); - msg_Info( p_intf, "setting playlist bookmark %i to %s", i_num, - p_playlist->status.p_item->p_input->psz_uri); - config_SaveConfigFile( p_intf, "hotkeys" ); - } - vlc_object_release( p_playlist ); + config_PutPsz( p_intf, psz_bookmark_name, + p_playlist->status.p_item->p_input->psz_uri); + msg_Info( p_intf, "setting playlist bookmark %i to %s", i_num, + p_playlist->status.p_item->p_input->psz_uri); + config_SaveConfigFile( p_intf, "hotkeys" ); } + pl_Release( p_intf ); } static void DisplayPosition( intf_thread_t *p_intf, vout_thread_t *p_vout, @@ -948,10 +829,8 @@ static void DisplayPosition( intf_thread_t *p_intf, vout_thread_t *p_vout, vlc_value_t time, pos; mtime_t i_seconds; - if( p_vout == NULL ) - { - return; - } + if( p_vout == NULL ) return; + ClearChannels( p_intf, p_vout ); var_Get( p_input, "time", &time ); -- 2.39.5