X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fvideo_output%2Fvideo_output.c;h=d7a92f8e8d87bd0b4477aa1a8a1b729257894b7b;hb=6ee1e193fd896ab9a4729fde14f009d9ce629815;hp=b77497ff7eebc81357bfe006b2c29719012d307b;hpb=e3223c2dcb75afa90ba6583223097985df53fa8a;p=vlc diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c index b77497ff7e..d7a92f8e8d 100644 --- a/src/video_output/video_output.c +++ b/src/video_output/video_output.c @@ -208,6 +208,8 @@ vout_thread_t *__vout_Request( vlc_object_t *p_this, vout_thread_t *p_vout, /* This video output is cool! Hijack it. */ spu_Attach( p_vout->p_spu, p_this, VLC_TRUE ); vlc_object_attach( p_vout, p_this ); + if( p_vout->b_title_show ) + DisplayTitleOnOSD( p_vout ); vlc_object_release( p_vout ); } } @@ -758,7 +760,8 @@ static void RunThread( vout_thread_t *p_vout) return; } - DisplayTitleOnOSD( p_vout ); + if( p_vout->b_title_show ) + DisplayTitleOnOSD( p_vout ); /* * Main loop - it is not executed if an error occurred during @@ -1445,10 +1448,6 @@ static void SuxorRestartVideoES( suxor_thread_t *p_this ) vlc_object_release( p_this->p_input ); -#ifdef WIN32 - CloseHandle( p_this->thread_id ); -#endif - vlc_object_destroy( p_this ); } @@ -1642,37 +1641,39 @@ static void DisplayTitleOnOSD( vout_thread_t *p_vout ) if( p_input ) { i_now = mdate(); - i_stop = i_now + (mtime_t)(15000000); - if( input_GetItem(p_input)->p_meta && - input_GetItem(p_input)->p_meta->psz_nowplaying && - *input_GetItem(p_input)->p_meta->psz_nowplaying ) + i_stop = i_now + (mtime_t)(p_vout->i_title_timeout * 1000); + char *psz_nowplaying = + input_item_GetNowPlaying( input_GetItem( p_input ) ); + char *psz_artist = input_item_GetArtist( input_GetItem( p_input ) ); + char *psz_name = input_item_GetTitle( input_GetItem( p_input ) ); + if( EMPTY_STR( psz_name ) ) + { + free( psz_name ); + psz_name = input_item_GetName( input_GetItem( p_input ) ); + } + if( !EMPTY_STR( psz_nowplaying ) ) { vout_ShowTextAbsolute( p_vout, DEFAULT_CHAN, - input_GetItem(p_input)->p_meta->psz_nowplaying, NULL, - OSD_ALIGN_BOTTOM, + psz_nowplaying, NULL, + p_vout->i_title_position, 30 + p_vout->fmt_in.i_width - p_vout->fmt_in.i_visible_width - p_vout->fmt_in.i_x_offset, 20 + p_vout->fmt_in.i_y_offset, i_now, i_stop ); } - else if( input_GetItem(p_input)->p_meta && - input_GetItem(p_input)->p_meta->psz_artist && - *input_GetItem(p_input)->p_meta->psz_artist ) + else if( !EMPTY_STR( psz_artist ) ) { char *psz_string = NULL; - psz_string = malloc( strlen(input_GetItem(p_input)->psz_name) + - strlen(input_GetItem(p_input)->p_meta->psz_artist) ); + psz_string = malloc( strlen( psz_name ) + strlen( psz_artist ) ); if( psz_string ) { - sprintf( psz_string, "%s - %s", - input_GetItem(p_input)->psz_name, - input_GetItem(p_input)->p_meta->psz_artist ); + sprintf( psz_string, "%s - %s", psz_name, psz_artist ); vout_ShowTextAbsolute( p_vout, DEFAULT_CHAN, psz_string, NULL, - OSD_ALIGN_BOTTOM, + p_vout->i_title_position, 30 + p_vout->fmt_in.i_width - p_vout->fmt_in.i_visible_width - p_vout->fmt_in.i_x_offset, @@ -1684,8 +1685,8 @@ static void DisplayTitleOnOSD( vout_thread_t *p_vout ) else { vout_ShowTextAbsolute( p_vout, DEFAULT_CHAN, - input_GetItem(p_input)->psz_name, NULL, - OSD_ALIGN_BOTTOM, + psz_name, NULL, + p_vout->i_title_position, 30 + p_vout->fmt_in.i_width - p_vout->fmt_in.i_visible_width - p_vout->fmt_in.i_x_offset, @@ -1693,5 +1694,8 @@ static void DisplayTitleOnOSD( vout_thread_t *p_vout ) i_now, i_stop ); } vlc_object_release( p_input ); + free( psz_artist ); + free( psz_name ); + free( psz_nowplaying ); } }