vlc | branch: master | Thomas Guillem <[email protected]> | Wed Oct 10 09:43:36 2018 +0200| [cff39b31f3260c7bc830fa92c30648045e006d85] | committer: Thomas Guillem
input: add VLC_INPUT_PROGRAM_UPDATED This avoids to destroy and recreate a program when the title changes. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=cff39b31f3260c7bc830fa92c30648045e006d85 --- include/vlc_input.h | 1 + src/input/es_out.c | 4 +--- src/input/event.h | 12 ++++++++++++ src/input/var.c | 5 +++++ 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/include/vlc_input.h b/include/vlc_input.h index 88d1da091f..8f6a7be472 100644 --- a/include/vlc_input.h +++ b/include/vlc_input.h @@ -429,6 +429,7 @@ struct vlc_input_event_program { enum { VLC_INPUT_PROGRAM_ADDED, VLC_INPUT_PROGRAM_DELETED, + VLC_INPUT_PROGRAM_UPDATED, VLC_INPUT_PROGRAM_SELECTED, VLC_INPUT_PROGRAM_SCRAMBLED, } action; diff --git a/src/input/es_out.c b/src/input/es_out.c index b215c3bce1..207520fa1b 100644 --- a/src/input/es_out.c +++ b/src/input/es_out.c @@ -1317,11 +1317,9 @@ static void EsOutProgramMeta( es_out_t *out, int i_group, const vlc_meta_t *p_me psz_text = strdup( psz_title ); } - /* ugly but it works */ if( psz_text ) { - input_SendEventProgramDel( p_input, i_group ); - input_SendEventProgramAdd( p_input, i_group, psz_text ); + input_SendEventProgramUpdated( p_input, i_group, psz_text ); if( p_sys->p_pgrm == p_pgrm ) input_SendEventProgramSelect( p_input, i_group ); free( psz_text ); diff --git a/src/input/event.h b/src/input/event.h index 7b0b1ebcd3..99cc8f3faf 100644 --- a/src/input/event.h +++ b/src/input/event.h @@ -197,6 +197,18 @@ static inline void input_SendEventProgramAdd(input_thread_t *p_input, } }); } +static inline void input_SendEventProgramUpdated(input_thread_t *p_input, + int i_program, const char *psz_text) +{ + input_SendEvent(p_input, &(struct vlc_input_event) { + .type = INPUT_EVENT_PROGRAM, + .program = { + .action = VLC_INPUT_PROGRAM_UPDATED, + .id = i_program, + .title = psz_text + } + }); +} static inline void input_SendEventProgramDel(input_thread_t *p_input, int i_program) { diff --git a/src/input/var.c b/src/input/var.c index 30f9d7e94f..3ef8c0fa31 100644 --- a/src/input/var.c +++ b/src/input/var.c @@ -314,6 +314,11 @@ void input_LegacyEvents( input_thread_t *p_input, case VLC_INPUT_PROGRAM_DELETED: VarListDel( p_input, "program", event->program.id ); break; + case VLC_INPUT_PROGRAM_UPDATED: + VarListDel( p_input, "program", event->program.id ); + VarListAdd( p_input, "program", event->program.id, + event->program.title ); + break; case VLC_INPUT_PROGRAM_SELECTED: VarListSelect( p_input, "program", event->program.id ); break; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
