static void DoWork ( aout_instance_t *, aout_filter_t *, aout_buffer_t *,
aout_buffer_t * );
-static void Thread ( vlc_object_t * );
+static void* Thread ( vlc_object_t * );
static char *TitleGet( vlc_object_t * );
return VLC_EGENERIC;
}
vlc_mutex_init( &p_thread->lock );
- vlc_cond_init( p_filter, &p_thread->wait );
+ vlc_cond_init( &p_thread->wait );
p_thread->i_blocks = 0;
aout_DateInit( &p_thread->date, p_filter->output.i_rate );
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 );
free( p_thread->psz_title );
/*****************************************************************************
* Thread:
*****************************************************************************/
-static void Thread( vlc_object_t *p_this )
+static void* Thread( vlc_object_t *p_this )
{
goom_thread_t *p_thread = (goom_thread_t*)p_this;
vlc_value_t width, height, speed;
int16_t p_data[2][512];
int i_data = 0, i_count = 0;
PluginInfo *p_plugin_info;
+ int canc = vlc_savecancel ();
var_Get( p_this, "goom-width", &width );
var_Get( p_this, "goom-height", &height );
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;
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 );
}
}
goom_close( p_plugin_info );
+ vlc_restorecancel (canc);
+ return NULL;
}
/*****************************************************************************