Commit ed9fae5e authored by Erwan Tulou's avatar Erwan Tulou Committed by Rémi Denis-Courmont

at qt4 termination, ensure quit() function is executed in the right thread

Signed-off-by: default avatarRémi Denis-Courmont <remi@remlab.net>
parent 0c2ad187
...@@ -57,6 +57,7 @@ nodist_SOURCES_qt4 = \ ...@@ -57,6 +57,7 @@ nodist_SOURCES_qt4 = \
components/sout/sout_widgets.moc.cpp \ components/sout/sout_widgets.moc.cpp \
util/input_slider.moc.cpp \ util/input_slider.moc.cpp \
util/customwidgets.moc.cpp \ util/customwidgets.moc.cpp \
util/qvlcapp.moc.cpp \
resources.cpp \ resources.cpp \
ui/equalizer.h \ ui/equalizer.h \
ui/v4l2.h \ ui/v4l2.h \
......
...@@ -329,7 +329,7 @@ static void Close( vlc_object_t *p_this ) ...@@ -329,7 +329,7 @@ static void Close( vlc_object_t *p_this )
intf_sys_t *p_sys = p_intf->p_sys; intf_sys_t *p_sys = p_intf->p_sys;
var_Destroy (p_this->p_libvlc, "qt4-iface"); var_Destroy (p_this->p_libvlc, "qt4-iface");
QApplication::quit(); QVLCApp::triggerQuit();
vlc_join (p_sys->thread, NULL); vlc_join (p_sys->thread, NULL);
#ifdef Q_WS_X11 #ifdef Q_WS_X11
......
...@@ -52,7 +52,7 @@ enum { ...@@ -52,7 +52,7 @@ enum {
MsgEventType = 300, MsgEventType = 300,
}; };
class QApplication; class QVLCApp;
class QMenu; class QMenu;
class MainInterface; class MainInterface;
class QSettings; class QSettings;
...@@ -61,7 +61,7 @@ struct intf_sys_t ...@@ -61,7 +61,7 @@ struct intf_sys_t
{ {
vlc_thread_t thread; vlc_thread_t thread;
QApplication *p_app; /* Main Qt Application */ QVLCApp *p_app; /* Main Qt Application */
MainInterface *p_mi; /* Main Interface, NULL if DialogProvider Mode */ MainInterface *p_mi; /* Main Interface, NULL if DialogProvider Mode */
QSettings *mainSettings; /* Qt State settings not messing main VLC ones */ QSettings *mainSettings; /* Qt State settings not messing main VLC ones */
......
...@@ -30,13 +30,26 @@ ...@@ -30,13 +30,26 @@
class QVLCApp : public QApplication class QVLCApp : public QApplication
{ {
Q_OBJECT
public: public:
QVLCApp( int & argc, char ** argv ) : QApplication( argc, argv, true ) { } QVLCApp( int & argc, char ** argv ) : QApplication( argc, argv, true )
{
connect( this, SIGNAL(quitSignal()), this, SLOT(quit()) );
}
static void triggerQuit()
{
QVLCApp *app = qobject_cast<QVLCApp*>( instance() );
if ( app )
emit app->quitSignal();
}
#if defined (Q_WS_X11) #if defined (Q_WS_X11)
QVLCApp( Display *dp, int & argc, char ** argv ) QVLCApp( Display *dp, int & argc, char ** argv )
: QApplication( dp, argc, argv ) : QApplication( dp, argc, argv )
{ {
connect( this, SIGNAL(quitSignal()), this, SLOT(quit()) );
} }
#endif #endif
...@@ -54,6 +67,11 @@ protected: ...@@ -54,6 +67,11 @@ protected:
return false; return false;
} }
#endif #endif
signals:
void quitSignal();
}; };
#endif #endif
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment