]> git.sesse.net Git - vlc/blobdiff - src/misc/beos_specific.cpp
Use var_Inherit* instead of var_CreateGet*.
[vlc] / src / misc / beos_specific.cpp
index b642aba8fea10914f06d06dd1ba7c1ea79ef7a22..51c70cf8a8182b9caeb871e1b55dab9c037c16f0 100644 (file)
@@ -1,8 +1,8 @@
 /*****************************************************************************
  * beos_init.cpp: Initialization for BeOS specific features
  *****************************************************************************
- * Copyright (C) 1999-2001 VideoLAN
- * $Id: beos_specific.cpp,v 1.35 2003/12/14 16:26:21 titer Exp $
+ * Copyright (C) 1999-2004 the VideoLAN team
+ * $Id$
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *
@@ -18,7 +18,7 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 #include <Application.h>
 #include <Roster.h>
 
 extern "C"
 {
-#include <vlc/vlc.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc_common.h>
+#include "../libvlc.h"
 }
 
 /*****************************************************************************
@@ -66,46 +71,48 @@ 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( vlc_t *p_this, int *pi_argc, char *ppsz_argv[] )
+void system_Init( libvlc_int_t *p_this, int *pi_argc, const char *ppsz_argv[] )
 {
-    p_this->p_libvlc->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( p_this->p_libvlc->p_appthread, "app thread", AppThread,
-                       VLC_THREAD_PRIORITY_LOW, VLC_TRUE );
+    vlc_thread_create( p_appthread, "app thread", AppThread,
+                       VLC_THREAD_PRIORITY_LOW, true );
 }
 
 /*****************************************************************************
  * system_Configure: check for system specific configuration options.
  *****************************************************************************/
-void system_Configure( vlc_t *, int *pi_argc, char *ppsz_argv[] )
+void system_Configure( libvlc_int_t *, int *pi_argc, const char *ppsz_argv[] )
 {
 }
 
 /*****************************************************************************
  * system_End: destroy the BApplication object.
  *****************************************************************************/
-void system_End( vlc_t *p_this )
+void system_End( libvlc_int_t *p_this )
 {
     /* Tell the BApplication to die */
     be_app->PostMessage( REALLY_QUIT );
 
-    vlc_thread_join( p_this->p_libvlc->p_appthread );
-    vlc_object_destroy( p_this->p_libvlc->p_appthread );
+    vlc_thread_join( p_appthread );
+    vlc_object_release( p_appthread );
 
-    free( p_this->p_libvlc->psz_vlcpath );
+    free( psz_vlcpath );
 }
 
 /* following functions are local */
@@ -113,15 +120,18 @@ void system_End( vlc_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_vlc );
+    vlc_object_attach( p_this, p_this->p_libvlc );
     BeApp->p_this = p_this;
     BeApp->Run();
     vlc_object_detach( p_this );
     delete BeApp;
+    vlc_restorecancel (canc);
+    return NULL;
 }
 
 } /* extern "C" */
@@ -172,7 +182,7 @@ void VlcApplication::ReadyToRun( )
     BEntry entry( &info.ref );
     entry.GetPath( &path );
     path.GetParent( &path );
-    p_this->p_libvlc->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 );
@@ -223,7 +233,7 @@ void VlcApplication::MessageReceived(BMessage* message)
             fReadyToQuit = true;
             PostMessage( B_QUIT_REQUESTED );
             break;
-        
+
         default:
             BApplication::MessageReceived(message);
     }
@@ -233,7 +243,7 @@ bool VlcApplication::QuitRequested()
 {
     if( !fReadyToQuit )
     {
-        p_this->p_vlc->b_die = 1;
+        libvlc_Quit( p_this->p_libvlc );
         return false;
     }