- p_sys->p_keepalive_thread = vlc_object_create( p_access, sizeof( mmstu_keepalive_thread_t ) );
- p_sys->p_keepalive_thread->p_access = p_access;
- p_sys->p_keepalive_thread->b_paused = false;
- p_sys->p_keepalive_thread->b_thread_error = false;
- if( vlc_thread_create( p_sys->p_keepalive_thread, "mmstu keepalive thread", KeepAliveThread,
- VLC_THREAD_PRIORITY_LOW, false) )
- p_sys->p_keepalive_thread->b_thread_error = true;
+ p_sys->p_keepalive = malloc( sizeof( mmstu_keepalive_t ) );
+ p_sys->p_keepalive->p_access = p_access;
+ vlc_mutex_init( &p_sys->p_keepalive->lock );
+ p_sys->p_keepalive->b_paused = false;
+ if( vlc_clone( &p_sys->p_keepalive->handle, KeepAliveThread,
+ p_sys->p_keepalive, VLC_THREAD_PRIORITY_LOW ) )
+ {
+ vlc_mutex_destroy( &p_sys->p_keepalive->lock );
+ free( p_sys->p_keepalive );
+ p_sys->p_keepalive = NULL;
+ }