]> git.sesse.net Git - vlc/blobdiff - modules/misc/qte_main.cpp
BDA allow card selection
[vlc] / modules / misc / qte_main.cpp
index 61f4c92799d342a0e699928228b117ec2f5165d1..05ab4b4290418d013b99e5a5591d4525582c4e74 100644 (file)
@@ -30,7 +30,8 @@ extern "C"
 # include "config.h"
 #endif
 
-#include <vlc/vlc.h>
+#include <vlc_common.h>
+#include <vlc_plugin.h>
 }
 
 #include <qapplication.h>
@@ -55,7 +56,7 @@ typedef struct qte_thread_t
 static int  Open    ( vlc_object_t * );
 static void Close   ( vlc_object_t * );
 
-static void QteMain ( qte_thread_t * );
+static void* QteMain( vlc_object_t * );
 
 /*****************************************************************************
  * Local variables (mutex-protected).
@@ -71,29 +72,29 @@ static qte_thread_t * p_qte_main = NULL;
     "Qt/Embedded GUI Server. This option is equivalent to the -qws option " \
     "from normal Qt.")
 
-vlc_module_begin();
-    set_description( _("Qt Embedded GUI helper") );
-    set_capability( "gui-helper", 90 );
-    add_bool( "qte-guiserver", 0, NULL, STANDALONE_TEXT, STANDALONE_LONGTEXT, VLC_FALSE );
-    add_shortcut( "qte" );
-    set_callbacks( Open, Close );
-vlc_module_end();
+vlc_module_begin ()
+    set_description( N_("Qt Embedded GUI helper") )
+    set_capability( "gui-helper", 90 )
+    add_bool( "qte-guiserver", 0, NULL, STANDALONE_TEXT, STANDALONE_LONGTEXT, false )
+    add_shortcut( "qte" )
+    set_callbacks( Open, Close )
+vlc_module_end ()
 
 } /* extern "C" */
 
+static vlc_mutex_t qte_lock = VLC_STATIC_MUTEX;
+
 /*****************************************************************************
  * Open: initialize and create window
  *****************************************************************************/
 static int Open( vlc_object_t *p_this )
 {
-    vlc_mutex_t *lock;
-
-    lock = var_AcquireMutex( "qte" );
+    vlc_mutex_lock( &qte_lock );
 
     if( i_refcount > 0 )
     {
         i_refcount++;
-        vlc_mutex_unlock( lock );
+        vlc_mutex_unlock( &qte_lock );
 
         return VLC_SUCCESS;
     }
@@ -103,7 +104,7 @@ static int Open( vlc_object_t *p_this )
     /* Launch the QApplication::exec() thread. It will not return until the
      * application is properly initialized, which ensures us thread safety. */
     if( vlc_thread_create( p_qte_main, "qte_main", QteMain,
-                           VLC_THREAD_PRIORITY_LOW, VLC_TRUE ) )
+                           VLC_THREAD_PRIORITY_LOW, true ) )
     {
         vlc_object_release( p_qte_main );
         i_refcount--;
@@ -112,7 +113,7 @@ static int Open( vlc_object_t *p_this )
     }
 
     i_refcount++;
-    vlc_mutex_unlock( lock );
+    vlc_mutex_unlock( &qte_lock );
 
     vlc_object_attach( p_qte_main, p_this );
     msg_Dbg( p_this, "qte_main running" );
@@ -125,9 +126,7 @@ static int Open( vlc_object_t *p_this )
  *****************************************************************************/
 static void Close( vlc_object_t *p_this )
 {
-    vlc_mutex_t *lock;
-
-    lock = var_AcquireMutex( "qte" );
+    vlc_mutex_lock( &qte_lock );
 
     i_refcount--;
 
@@ -148,7 +147,7 @@ static void Close( vlc_object_t *p_this )
     vlc_object_release( p_qte_main );
     p_qte_main = NULL;
 
-    vlc_mutex_unlock( lock );
+    vlc_mutex_unlock( &qte_lock );
 }
 
 /*****************************************************************************
@@ -157,15 +156,17 @@ static void Close( vlc_object_t *p_this )
  * this part of the interface is in a separate thread so that we can call
  * qte_main() from within it without annoying the rest of the program.
  *****************************************************************************/
-static void QteMain( qte_thread_t *p_this )
+static void* QteMain( vlc_object_t* p_vlc_obj )
 {
+    qte_thread_t *p_this = (qte_thread_t*)p_vlc_obj;
     int i_argc = 1;
+    int canc = vlc_savecancel ();
 
-    p_this->b_gui_server = VLC_FALSE;
+    p_this->b_gui_server = false;
     if( config_GetInt( p_this, "qte-guiserver" ) )
     {
         msg_Dbg( p_this, "Running as Qt Embedded standalone GuiServer" );
-        p_this->b_gui_server = VLC_TRUE;
+        p_this->b_gui_server = true;
     }
 
     /* Run as standalone GuiServer or as GuiClient. */
@@ -188,4 +189,7 @@ static void QteMain( qte_thread_t *p_this )
 
     vlc_thread_ready( p_this );
     p_this->p_qte_application->exec();
+
+    vlc_restorecancel (canc);
+    return NULL;
 }