]> git.sesse.net Git - vlc/blobdiff - modules/misc/qte_main.cpp
fix macosx update gui
[vlc] / modules / misc / qte_main.cpp
index 8002def862543bb4711c5e42ccb3962f2315ec51..61f4c92799d342a0e699928228b117ec2f5165d1 100644 (file)
@@ -1,10 +1,10 @@
 /*****************************************************************************
  * qte_main.c : QT Embedded wrapper for gte_main
  *****************************************************************************
- * Copyright (C) 2003 VideoLAN
- * $Id: qte_main.cpp,v 1.8 2003/12/22 02:24:52 sam Exp $
+ * Copyright (C) 2003 the VideoLAN team
+ * $Id$
  *
- * Authors: Jean-Paul Saman <jpsaman@wxs.nl>
+ * Authors: Jean-Paul Saman <jpsaman _at_ videolan _dot_ org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -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.
  *****************************************************************************/
 
 /*****************************************************************************
  *****************************************************************************/
 extern "C"
 {
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
 #include <vlc/vlc.h>
-#include <stdlib.h>                                              /* atexit() */
 }
 
 #include <qapplication.h>
@@ -83,18 +86,14 @@ vlc_module_end();
  *****************************************************************************/
 static int Open( vlc_object_t *p_this )
 {
-    vlc_value_t lockval;
-
-    /* FIXME: put this in the module (de)initialization ASAP */
-    var_Create( p_this->p_libvlc, "qte", VLC_VAR_MUTEX );
+    vlc_mutex_t *lock;
 
-    var_Get( p_this->p_libvlc, "qte", &lockval );
-    vlc_mutex_lock( (vlc_mutex_t *) lockval.p_address );
+    lock = var_AcquireMutex( "qte" );
 
     if( i_refcount > 0 )
     {
         i_refcount++;
-        vlc_mutex_unlock( (vlc_mutex_t *) lockval.p_address );
+        vlc_mutex_unlock( lock );
 
         return VLC_SUCCESS;
     }
@@ -106,15 +105,17 @@ static int Open( vlc_object_t *p_this )
     if( vlc_thread_create( p_qte_main, "qte_main", QteMain,
                            VLC_THREAD_PRIORITY_LOW, VLC_TRUE ) )
     {
-        vlc_object_destroy( p_qte_main );
+        vlc_object_release( p_qte_main );
         i_refcount--;
-        vlc_mutex_unlock( (vlc_mutex_t *) lockval.p_address );
-        var_Destroy( p_this->p_libvlc, "qte" );
+        vlc_mutex_unlock( lock );
         return VLC_ETHREAD;
     }
 
     i_refcount++;
-    vlc_mutex_unlock( (vlc_mutex_t *) lockval.p_address );
+    vlc_mutex_unlock( lock );
+
+    vlc_object_attach( p_qte_main, p_this );
+    msg_Dbg( p_this, "qte_main running" );
 
     return VLC_SUCCESS;
 }
@@ -124,17 +125,15 @@ static int Open( vlc_object_t *p_this )
  *****************************************************************************/
 static void Close( vlc_object_t *p_this )
 {
-    vlc_value_t lockval;
+    vlc_mutex_t *lock;
 
-    var_Get( p_this->p_libvlc, "qte", &lockval );
-    vlc_mutex_lock( (vlc_mutex_t *) lockval.p_address );
+    lock = var_AcquireMutex( "qte" );
 
     i_refcount--;
 
     if( i_refcount > 0 )
     {
-        vlc_mutex_unlock( (vlc_mutex_t *) lockval.p_address );
-        var_Destroy( p_this->p_libvlc, "qte" );
+        vlc_mutex_unlock( lock );
         return;
     }
     p_qte_main->p_qte_application->quit();
@@ -143,11 +142,13 @@ static void Close( vlc_object_t *p_this )
     delete p_qte_main->p_qte_widget;
     delete p_qte_main->p_qte_application;
 
-    vlc_object_destroy( p_qte_main );
+    msg_Dbg( p_this, "Detaching qte_main" );
+    vlc_object_detach( p_qte_main );
+
+    vlc_object_release( p_qte_main );
     p_qte_main = NULL;
 
-    vlc_mutex_unlock( (vlc_mutex_t *) lockval.p_address );
-    var_Destroy( p_this->p_libvlc, "qte" );
+    vlc_mutex_unlock( lock );
 }
 
 /*****************************************************************************
@@ -159,8 +160,6 @@ static void Close( vlc_object_t *p_this )
 static void QteMain( qte_thread_t *p_this )
 {
     int i_argc = 1;
-    char *p_args[] = {"-qws", NULL};
-    char **pp_args = p_args;
 
     p_this->b_gui_server = VLC_FALSE;
     if( config_GetInt( p_this, "qte-guiserver" ) )
@@ -172,20 +171,17 @@ static void QteMain( qte_thread_t *p_this )
     /* Run as standalone GuiServer or as GuiClient. */
     QApplication* pApp = new QApplication(i_argc, NULL,
         (p_this->b_gui_server ? (QApplication::GuiServer):(QApplication::GuiClient)) );
-    if(pApp)
+    if( pApp )
     {
         p_this->p_qte_application = pApp;
     }
 
-    QWidget* pWidget = new QWidget();
-    if(pWidget)
+    QWidget* pWidget = new QWidget(0, _("video") );
+    if( pWidget )
     {
         p_this->p_qte_widget = pWidget;
     }
 
-    if (p_this->b_gui_server) {
-        p_this->p_qte_application->desktop()->setFixedSize(240, 320);
-    }
     /* signal the creation of the window */
     p_this->p_qte_application->setMainWidget(p_this->p_qte_widget);
     p_this->p_qte_widget->show();
@@ -193,4 +189,3 @@ static void QteMain( qte_thread_t *p_this )
     vlc_thread_ready( p_this );
     p_this->p_qte_application->exec();
 }
-