From: Laurent Aimar Date: Mon, 8 Dec 2008 19:54:28 +0000 (+0100) Subject: Fixed input_AddSubtitle(s) coherency. X-Git-Tag: 1.0.0-pre1~1876 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=e03ea0d7fcb683eccd8b490064e2f53a8844286d;p=vlc Fixed input_AddSubtitle(s) coherency. --- diff --git a/include/vlc_input.h b/include/vlc_input.h index a3b1b7a3c0..fc1c447364 100644 --- a/include/vlc_input.h +++ b/include/vlc_input.h @@ -634,7 +634,8 @@ enum input_query_e INPUT_GET_ATTACHMENT, /* arg1=input_attachment_t**, arg2=char* res=can fail */ /* On the fly input slave */ - INPUT_ADD_SLAVE, /* arg1= char * */ + INPUT_ADD_SLAVE, /* arg1= const char * */ + INPUT_ADD_SUBTITLE, /* arg1= const char *, arg2=bool b_check_extension */ /* On the fly record while playing */ INPUT_SET_RECORD_STATE, /* arg1=bool res=can fail */ @@ -647,20 +648,31 @@ enum input_query_e VLC_EXPORT( int, input_vaControl,( input_thread_t *, int i_query, va_list ) ); VLC_EXPORT( int, input_Control, ( input_thread_t *, int i_query, ... ) ); +/** + * It will return the current state of the input. + * Provided for convenience. + */ static inline input_state_e input_GetState( input_thread_t * p_input ) { input_state_e state = INIT_S; input_Control( p_input, INPUT_GET_STATE, &state ); return state; } +/** + * It will add a new subtitle source to the input. + * Provided for convenience. + */ +static inline int input_AddSubtitle( input_thread_t *p_input, const char *psz_url, bool b_check_extension ) +{ + return input_Control( p_input, INPUT_ADD_SUBTITLE, psz_url, b_check_extension ); +} +/* */ typedef struct input_clock_t input_clock_t; VLC_EXPORT( decoder_t *, input_DecoderNew, ( input_thread_t *, es_format_t *, input_clock_t *, sout_instance_t * ) ); VLC_EXPORT( void, input_DecoderDelete, ( decoder_t * ) ); VLC_EXPORT( void, input_DecoderDecode,( decoder_t *, block_t * ) ); -VLC_EXPORT( bool, input_AddSubtitles, ( input_thread_t *, char *, bool ) ); - VLC_EXPORT( vlc_event_manager_t *, input_get_event_manager, ( input_thread_t * ) ); /** diff --git a/modules/gui/qt4/dialogs_provider.cpp b/modules/gui/qt4/dialogs_provider.cpp index a756e24b0b..b0c8eefaac 100644 --- a/modules/gui/qt4/dialogs_provider.cpp +++ b/modules/gui/qt4/dialogs_provider.cpp @@ -592,7 +592,7 @@ void DialogsProvider::loadSubtitlesFile() QString qsFile; foreach( qsFile, qsl ) { - if( !input_AddSubtitles( p_input, qtu( toNativeSeparators( qsFile ) ), + if( input_AddSubtitle( p_input, qtu( toNativeSeparators( qsFile ) ), true ) ) msg_Warn( p_intf, "unable to load subtitles from '%s'", qtu( qsFile ) ); diff --git a/modules/gui/qt4/main_interface.cpp b/modules/gui/qt4/main_interface.cpp index 0cd62dca11..a153800d0a 100644 --- a/modules/gui/qt4/main_interface.cpp +++ b/modules/gui/qt4/main_interface.cpp @@ -1035,7 +1035,7 @@ void MainInterface::dropEventPlay( QDropEvent *event, bool b_play ) { if( THEMIM->getIM()->hasInput() ) { - if( input_AddSubtitles( THEMIM->getInput(), + if( !input_AddSubtitle( THEMIM->getInput(), qtu( toNativeSeparators( mimeData->urls()[0].toLocalFile() ) ), true ) ) diff --git a/modules/gui/wxwidgets/interface.cpp b/modules/gui/wxwidgets/interface.cpp index 11514d37c3..19fc21f52b 100644 --- a/modules/gui/wxwidgets/interface.cpp +++ b/modules/gui/wxwidgets/interface.cpp @@ -1329,7 +1329,7 @@ bool DragAndDrop::OnDropFiles( wxCoord, wxCoord, VLC_OBJECT_INPUT, FIND_ANYWHERE ); if( p_input ) { - if( input_AddSubtitles( p_input, psz_utf8, true ) ) + if( !input_AddSubtitle( p_input, psz_utf8, true ) ) { vlc_object_release( p_input ); wxDnDLocaleFree( psz_utf8 ); diff --git a/src/control/video.c b/src/control/video.c index 323466495d..7b952afadf 100644 --- a/src/control/video.c +++ b/src/control/video.c @@ -440,7 +440,7 @@ int libvlc_video_set_subtitle_file( libvlc_media_player_t *p_mi, if( p_input_thread ) { - if( input_AddSubtitles( p_input_thread, psz_subtitle, true ) ) + if( !input_AddSubtitle( p_input_thread, psz_subtitle, true ) ) b_ret = true; vlc_object_release( p_input_thread ); } diff --git a/src/input/control.c b/src/input/control.c index 48f3a1dee0..a5a1b9f6cf 100644 --- a/src/input/control.c +++ b/src/input/control.c @@ -340,6 +340,19 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args ) } return VLC_SUCCESS; + case INPUT_ADD_SUBTITLE: + psz = (char*)va_arg( args, char * ); + b_bool = (bool)va_arg( args, int ); + + if( !psz || *psz == '\0' ) + return VLC_EGENERIC; + if( b_bool && !subtitles_Filter( psz ) ) + return VLC_EGENERIC; + + val.psz_string = strdup( psz ); + input_ControlPush( p_input, INPUT_CONTROL_ADD_SUBTITLE, &val ); + return VLC_SUCCESS; + case INPUT_GET_ATTACHMENTS: /* arg1=input_attachment_t***, arg2=int* res=can fail */ { input_attachment_t ***ppp_attachment = (input_attachment_t***)va_arg( args, input_attachment_t *** ); diff --git a/src/input/input.c b/src/input/input.c index b6c037b545..7293cde4b4 100644 --- a/src/input/input.c +++ b/src/input/input.c @@ -3159,22 +3159,6 @@ static void SubtitleAdd( input_thread_t *p_input, char *psz_subtitle, bool b_for } } -bool input_AddSubtitles( input_thread_t *p_input, char *psz_subtitle, - bool b_check_extension ) -{ - vlc_value_t val; - - if( b_check_extension && !subtitles_Filter( psz_subtitle ) ) - return false; - - assert( psz_subtitle != NULL ); - - val.psz_string = strdup( psz_subtitle ); - if( val.psz_string ) - input_ControlPush( p_input, INPUT_CONTROL_ADD_SUBTITLE, &val ); - return true; -} - /***************************************************************************** * Statistics *****************************************************************************/ diff --git a/src/libvlccore.sym b/src/libvlccore.sym index 24e5fc54d0..967138bc47 100644 --- a/src/libvlccore.sym +++ b/src/libvlccore.sym @@ -154,7 +154,6 @@ httpd_UrlNewUnique __image_HandlerCreate image_HandlerDelete InitMD5 -input_AddSubtitles input_Control __input_CreateThread input_DecoderDecode