X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fmisc%2Fqte_main.cpp;h=ea9510523145445c0e3351b88397faab982ffa4d;hb=b06464e4a8277e77dd7da3053b40d881e4861ee6;hp=22cc23c0606d37a771982d41d5dc0cab51b53bb0;hpb=e09c1d278e60f5924c35965e90aed401c5b003fe;p=vlc diff --git a/modules/misc/qte_main.cpp b/modules/misc/qte_main.cpp index 22cc23c060..ea95105231 100644 --- a/modules/misc/qte_main.cpp +++ b/modules/misc/qte_main.cpp @@ -1,10 +1,10 @@ /***************************************************************************** * qte_main.c : QT Embedded wrapper for gte_main ***************************************************************************** - * Copyright (C) 2003 VideoLAN - * $Id: qte_main.cpp,v 1.7 2003/06/09 19:56:26 jpsaman Exp $ + * Copyright (C) 2003 the VideoLAN team + * $Id$ * - * Authors: Jean-Paul Saman + * Authors: Jean-Paul Saman * * 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. *****************************************************************************/ /***************************************************************************** @@ -26,8 +26,12 @@ *****************************************************************************/ extern "C" { -#include -#include /* atexit() */ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include } #include @@ -42,7 +46,7 @@ typedef struct qte_thread_t QApplication* p_qte_application; QWidget* p_qte_widget; - bool b_gui_server; + bool b_gui_server; } qte_thread_t; @@ -63,14 +67,15 @@ static qte_thread_t * p_qte_main = NULL; /***************************************************************************** * Module descriptor *****************************************************************************/ -#define STANDALONE_TEXT N_("Run as standalone Qt/Embedded Gui Server") -#define STANDALONE_LONGTEXT N_("Use this option to run as standalone Qt/Embedded Gui Server. " \ - "This option is equivalent to the -qws option from normal Qt.") +#define STANDALONE_TEXT N_("Run as standalone Qt/Embedded GUI Server") +#define STANDALONE_LONGTEXT N_("Use this option to run as standalone " \ + "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_description( N_("Qt Embedded GUI helper") ); set_capability( "gui-helper", 90 ); - add_bool( "qte-guiserver", 0, NULL, STANDALONE_TEXT, STANDALONE_LONGTEXT, VLC_FALSE ); + add_bool( "qte-guiserver", 0, NULL, STANDALONE_TEXT, STANDALONE_LONGTEXT, false ); add_shortcut( "qte" ); set_callbacks( Open, Close ); vlc_module_end(); @@ -82,18 +87,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; } @@ -103,17 +104,19 @@ 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_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; } @@ -123,17 +126,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(); @@ -142,11 +143,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 ); } /***************************************************************************** @@ -158,33 +161,28 @@ 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; + 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; + msg_Dbg( p_this, "Running as Qt Embedded standalone GuiServer" ); + p_this->b_gui_server = true; } /* 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(); @@ -192,4 +190,3 @@ static void QteMain( qte_thread_t *p_this ) vlc_thread_ready( p_this ); p_this->p_qte_application->exec(); } -