X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fvisualization%2Fgoom.c;h=0fb03910fc0453b8072473a4f26c972cee7698ff;hb=f2b2e37c04b2921e29daa3260dc696646ad4f10c;hp=06481d7ca6dc2ea8d2af4873ccbc3c911024ac6d;hpb=51880eb16eed467a21c34b9e4bb962d1bd6a5be7;p=vlc diff --git a/modules/visualization/goom.c b/modules/visualization/goom.c index 06481d7ca6..0fb03910fc 100644 --- a/modules/visualization/goom.c +++ b/modules/visualization/goom.c @@ -25,11 +25,14 @@ /***************************************************************************** * Preamble *****************************************************************************/ -#include /* malloc(), free() */ -#include /* strdup() */ #include -#include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include #include #include #include @@ -67,17 +70,17 @@ static void Close ( vlc_object_t * ); #define MAX_SPEED 10 vlc_module_begin(); - set_shortname( _("Goom")); - set_description( _("Goom effect") ); + set_shortname( N_("Goom")); + set_description( N_("Goom effect") ); set_category( CAT_AUDIO ); set_subcategory( SUBCAT_AUDIO_VISUAL ); set_capability( "visualization", 0 ); add_integer( "goom-width", 320, NULL, - WIDTH_TEXT, RES_LONGTEXT, VLC_FALSE ); + WIDTH_TEXT, RES_LONGTEXT, false ); add_integer( "goom-height", 240, NULL, - HEIGHT_TEXT, RES_LONGTEXT, VLC_FALSE ); + HEIGHT_TEXT, RES_LONGTEXT, false ); add_integer( "goom-speed", 6, NULL, - SPEED_TEXT, SPEED_LONGTEXT, VLC_FALSE ); + SPEED_TEXT, SPEED_LONGTEXT, false ); set_callbacks( Open, Close ); add_shortcut( "goom" ); vlc_module_end(); @@ -175,11 +178,11 @@ static int Open( vlc_object_t *p_this ) { msg_Err( p_filter, "no suitable vout module" ); vlc_object_detach( p_thread ); - vlc_object_destroy( p_thread ); + vlc_object_release( p_thread ); free( p_sys ); return VLC_EGENERIC; } - vlc_mutex_init( p_filter, &p_thread->lock ); + vlc_mutex_init( &p_thread->lock ); vlc_cond_init( p_filter, &p_thread->wait ); p_thread->i_blocks = 0; @@ -190,15 +193,15 @@ static int Open( vlc_object_t *p_this ) p_thread->psz_title = TitleGet( VLC_OBJECT( p_filter ) ); if( vlc_thread_create( p_thread, "Goom Update Thread", Thread, - VLC_THREAD_PRIORITY_LOW, VLC_FALSE ) ) + VLC_THREAD_PRIORITY_LOW, false ) ) { msg_Err( p_filter, "cannot lauch goom thread" ); - vout_Destroy( p_thread->p_vout ); + vlc_object_release( p_thread->p_vout ); vlc_mutex_destroy( &p_thread->lock ); vlc_cond_destroy( &p_thread->wait ); - if( p_thread->psz_title ) free( p_thread->psz_title ); + free( p_thread->psz_title ); vlc_object_detach( p_thread ); - vlc_object_destroy( p_thread ); + vlc_object_release( p_thread ); free( p_sys ); return VLC_EGENERIC; } @@ -214,6 +217,8 @@ static int Open( vlc_object_t *p_this ) static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter, aout_buffer_t * p_in_buf, aout_buffer_t * p_out_buf ) { + VLC_UNUSED( p_aout ); + aout_filter_sys_t *p_sys = p_filter->p_sys; block_t *p_block; @@ -331,7 +336,7 @@ static void Thread( vlc_object_t *p_this ) p_plugin_info = goom_init( width.i_int, height.i_int ); - while( !p_thread->b_die ) + while( vlc_object_alive (p_thread) ) { uint32_t *plane; picture_t *p_pic; @@ -352,14 +357,11 @@ static void Thread( vlc_object_t *p_this ) plane = goom_update( p_plugin_info, p_data, 0, 0.0, p_thread->psz_title, NULL ); - if( p_thread->psz_title ) - { - free( p_thread->psz_title ); - p_thread->psz_title = NULL; - } + free( p_thread->psz_title ); + p_thread->psz_title = NULL; while( !( p_pic = vout_CreatePicture( p_thread->p_vout, 0, 0, 0 ) ) && - !p_thread->b_die ) + vlc_object_alive (p_thread) ) { msleep( VOUT_OUTMEM_SLEEP ); } @@ -403,7 +405,7 @@ static void Close( vlc_object_t *p_this ) block_Release( p_sys->p_thread->pp_blocks[p_sys->p_thread->i_blocks] ); } - vlc_object_destroy( p_sys->p_thread ); + vlc_object_release( p_sys->p_thread ); free( p_sys ); } @@ -416,13 +418,12 @@ static char *TitleGet( vlc_object_t *p_this ) if( p_input ) { - if( !EMPTY_STR( input_item_GetTitle( input_GetItem(p_input) ) ) ) - { - psz_title = strdup( input_item_GetTitle( input_GetItem(p_input) ) ); - } - else + psz_title = input_item_GetTitle( input_GetItem( p_input ) ); + if( EMPTY_STR( psz_title ) ) { - char *psz = strrchr( input_GetItem(p_input)->psz_uri, '/' ); + free( psz_title ); + char *psz_orig = input_item_GetURI( input_GetItem( p_input ) ); + char *psz = strrchr( psz_orig, '/' ); if( psz ) { @@ -430,12 +431,13 @@ static char *TitleGet( vlc_object_t *p_this ) } else { - psz = input_GetItem(p_input)->psz_uri; + psz = psz_orig; } if( psz && *psz ) { psz_title = strdup( psz ); } + free( psz_orig ); } vlc_object_release( p_input ); }