X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fvisualization%2Fgalaktos%2Fplugin.c;h=285ae50995c6af3acc9da9ebe776e751d0b90d05;hb=422908a78df6587cb3fabd083ec484a68f8c796b;hp=f127b0d71555aa808651a41eef499caac01e2cb8;hpb=449fd28aaf007c6411251dae9d0dbfdc65b135d1;p=vlc diff --git a/modules/visualization/galaktos/plugin.c b/modules/visualization/galaktos/plugin.c index f127b0d715..285ae50995 100644 --- a/modules/visualization/galaktos/plugin.c +++ b/modules/visualization/galaktos/plugin.c @@ -36,6 +36,7 @@ #include #include +#include /***************************************************************************** * Module descriptor @@ -43,26 +44,26 @@ static int Open ( vlc_object_t * ); static void Close ( vlc_object_t * ); -vlc_module_begin(); - set_description( _("GaLaktos visualization plugin") ); - set_capability( "visualization", 0 ); - set_callbacks( Open, Close ); - add_shortcut( "galaktos" ); -vlc_module_end(); +vlc_module_begin () + set_description( N_("GaLaktos visualization") ) + set_capability( "visualization", 0 ) + set_callbacks( Open, Close ) + add_shortcut( "galaktos" ) +vlc_module_end () /***************************************************************************** * Local prototypes *****************************************************************************/ -typedef struct aout_filter_sys_t +struct aout_filter_sys_t { galaktos_thread_t *p_thread; -} aout_filter_sys_t; +}; 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 * ); @@ -120,7 +121,7 @@ static int Open( vlc_object_t *p_this ) p_thread->psz_title = TitleGet( VLC_OBJECT( p_filter ) ); if( vlc_thread_create( p_thread, "galaktos update thread", Thread, - VLC_THREAD_PRIORITY_LOW, false ) ) + VLC_THREAD_PRIORITY_LOW ) ) { msg_Err( p_filter, "cannot lauch galaktos thread" ); free( p_thread->psz_title ); @@ -187,7 +188,7 @@ static void DoWork( aout_instance_t * p_aout, aout_filter_t * p_filter, /***************************************************************************** * Thread: *****************************************************************************/ -static void Thread( vlc_object_t *p_this ) +static void* Thread( vlc_object_t *p_this ) { galaktos_thread_t *p_thread = (galaktos_thread_t*)p_this; @@ -196,14 +197,15 @@ static void Thread( vlc_object_t *p_this ) int timed=0; int timestart=0; int mspf=0; + int canc = vlc_savecancel (); /* Get on OpenGL provider */ p_thread->p_opengl = - (vout_thread_t *)vlc_object_create( p_this, VLC_OBJECT_OPENGL ); + (vout_thread_t *)vlc_object_create( p_this, sizeof( vout_thread_t ) ); if( p_thread->p_opengl == NULL ) { - msg_Err( p_thread, "out of memory" ); - return; + vlc_restorecancel (canc); + return NULL; } vlc_object_attach( p_thread->p_opengl, p_this ); @@ -216,7 +218,6 @@ static void Thread( vlc_object_t *p_this ) p_thread->p_opengl->render.i_width = p_thread->i_width; p_thread->p_opengl->render.i_height = p_thread->i_width; p_thread->p_opengl->render.i_aspect = VOUT_ASPECT_FACTOR; - p_thread->p_opengl->b_scale = true; p_thread->p_opengl->b_fullscreen = false; p_thread->p_opengl->i_alignment = 0; p_thread->p_opengl->fmt_in.i_sar_num = 1; @@ -224,13 +225,14 @@ static void Thread( vlc_object_t *p_this ) p_thread->p_opengl->fmt_render = p_thread->p_opengl->fmt_in; p_thread->p_module = - module_Need( p_thread->p_opengl, "opengl provider", NULL, 0 ); + module_need( p_thread->p_opengl, "opengl provider", NULL, false ); if( p_thread->p_module == NULL ) { msg_Err( p_thread, "unable to initialize OpenGL" ); vlc_object_detach( p_thread->p_opengl ); vlc_object_release( p_thread->p_opengl ); - return; + vlc_restorecancel (canc); + return NULL; } p_thread->p_opengl->pf_init( p_thread->p_opengl ); @@ -240,7 +242,7 @@ static void Thread( vlc_object_t *p_this ) timestart=mdate()/1000; - while( !p_thread->b_die ) + while( vlc_object_alive (p_thread) ) { mspf = 1000 / 60; if( galaktos_update( p_thread ) == 1 ) @@ -250,14 +252,15 @@ static void Thread( vlc_object_t *p_this ) free( p_thread->psz_title ); p_thread->psz_title = NULL; + mtime_t now = mdate(); if (++count%100==0) { - realfps=100/((mdate()/1000-fpsstart)/1000); + realfps=100/((now/1000-fpsstart)/1000); // printf("%f\n",realfps); - fpsstart=mdate()/1000; + fpsstart=now/1000; } //framerate limiter - timed=mspf-(mdate()/1000-timestart); + timed=mspf-(now/1000-timestart); // printf("%d,%d\n",time,mspf); if (timed>0) msleep(1000*timed); // printf("Limiter %d\n",(mdate()/1000-timestart)); @@ -265,9 +268,11 @@ static void Thread( vlc_object_t *p_this ) } /* Free the openGL provider */ - module_Unneed( p_thread->p_opengl, p_thread->p_module ); + module_unneed( p_thread->p_opengl, p_thread->p_module ); vlc_object_detach( p_thread->p_opengl ); vlc_object_release( p_thread->p_opengl ); + vlc_restorecancel (canc); + return NULL; } /*****************************************************************************