X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fmisc%2Fbeos_specific.cpp;h=8dbec2e1637e0322a230bd3fc2bf16022fffda4d;hb=28b9113747582b3e34454c1d8ec150dfec7a624c;hp=9b7d5023a796eeda49720428ae4584bd9c6eaf63;hpb=449fd28aaf007c6411251dae9d0dbfdc65b135d1;p=vlc diff --git a/src/misc/beos_specific.cpp b/src/misc/beos_specific.cpp index 9b7d5023a7..8dbec2e163 100644 --- a/src/misc/beos_specific.cpp +++ b/src/misc/beos_specific.cpp @@ -37,7 +37,7 @@ extern "C" # include "config.h" #endif -#include +#include #include "../libvlc.h" } @@ -71,24 +71,26 @@ private: #include "../../modules/gui/beos/MsgVals.h" #define REALLY_QUIT 'requ' +static vlc_object_t *p_appthread; + extern "C" { /***************************************************************************** * Local prototypes. *****************************************************************************/ -static void AppThread( vlc_object_t *p_appthread ); +static void* AppThread( vlc_object_t *p_appthread ); /***************************************************************************** * system_Init: create a BApplication object and fill in program path. *****************************************************************************/ void system_Init( libvlc_int_t *p_this, int *pi_argc, const char *ppsz_argv[] ) { - vlc_global()->p_appthread = + p_appthread = (vlc_object_t *)vlc_object_create( p_this, sizeof(vlc_object_t) ); /* Create the BApplication thread and wait for initialization */ - vlc_thread_create( vlc_global()->p_appthread, "app thread", AppThread, + vlc_thread_create( p_appthread, "app thread", AppThread, VLC_THREAD_PRIORITY_LOW, true ); } @@ -107,10 +109,10 @@ void system_End( libvlc_int_t *p_this ) /* Tell the BApplication to die */ be_app->PostMessage( REALLY_QUIT ); - vlc_thread_join( vlc_global()->p_appthread ); - vlc_object_release( vlc_global()->p_appthread ); + vlc_thread_join( p_appthread ); + vlc_object_release( p_appthread ); - free( vlc_global()->psz_vlcpath ); + free( psz_vlcpath ); } /* following functions are local */ @@ -118,8 +120,9 @@ void system_End( libvlc_int_t *p_this ) /***************************************************************************** * AppThread: the BApplication thread. *****************************************************************************/ -static void AppThread( vlc_object_t * p_this ) +static void* AppThread( vlc_object_t * p_this ) { + int canc = vlc_savecancel (); VlcApplication * BeApp = new VlcApplication("application/x-vnd.videolan-vlc"); vlc_object_attach( p_this, p_this->p_libvlc ); @@ -127,6 +130,8 @@ static void AppThread( vlc_object_t * p_this ) BeApp->Run(); vlc_object_detach( p_this ); delete BeApp; + vlc_restorecancel (canc); + return NULL; } } /* extern "C" */ @@ -177,7 +182,7 @@ void VlcApplication::ReadyToRun( ) BEntry entry( &info.ref ); entry.GetPath( &path ); path.GetParent( &path ); - vlc_global()->psz_vlcpath = strdup( path.Path() ); + psz_vlcpath = strdup( path.Path() ); /* Tell the main thread we are finished initializing the BApplication */ vlc_thread_ready( p_this );