]> git.sesse.net Git - vlc/commitdiff
Fixed the last issue with FS (in embedded mode we not always be asked to
authorLaurent Aimar <fenrir@videolan.org>
Sat, 2 Aug 2008 23:30:38 +0000 (01:30 +0200)
committerLaurent Aimar <fenrir@videolan.org>
Sat, 2 Aug 2008 23:32:52 +0000 (01:32 +0200)
release the video).

modules/gui/qt4/main_interface.cpp
modules/gui/qt4/main_interface.hpp
modules/gui/qt4/qt4.cpp

index 8ac5ed54626f68d5e7a0eab9bbdb9553ec79fe54..69be9a816d4ceca95014db0cd74fe0faed7f9056 100644 (file)
@@ -690,10 +690,11 @@ void *MainInterface::requestVideo( vout_thread_t *p_nvout, int *pi_x,
     return ret;
 }
 
-void MainInterface::releaseVideo( vout_thread_t *p_vout, void *p_win )
+void MainInterface::releaseVideo( void *p_win )
 {
     if( fullscreenControls ) fullscreenControls->detachVout();
-    emit askReleaseVideo( p_win );
+    if( p_win )
+        emit askReleaseVideo( p_win );
 }
 
 void MainInterface::releaseVideoSlot( void *p_win )
index b4d25f3ebbeaa92ebc28d1a61d013cd2290dff31..4f953df1411d116fc568fb4db9dc5144ccf99d5b 100644 (file)
@@ -73,7 +73,7 @@ public:
     void *requestVideo( vout_thread_t *p_nvout, int *pi_x,
                         int *pi_y, unsigned int *pi_width,
                         unsigned int *pi_height );
-    void releaseVideo( vout_thread_t *, void * );
+    void releaseVideo( void * );
     int controlVideo( void *p_window, int i_query, va_list args );
 
     void requestLayoutUpdate();
index 37b5316c2b047db64323fd1c838efbb03e427777..06ea36a24eeba3f70fa5c4dbe96ec906a8583db4 100644 (file)
@@ -417,6 +417,11 @@ static void Init( intf_thread_t *p_intf )
     if (miP)
     {
         QMutexLocker locker (&windowLock);
+
+        /* We need to warn to detach from any vout before
+         * deleting miP (WindowClose will not be called after it) */
+        p_intf->p_sys->p_mi->releaseVideo( NULL );
+
         val.p_address = NULL;
         var_Set (p_intf, "window_widget", val);
         delete miP;
@@ -534,6 +539,6 @@ static void WindowClose (vlc_object_t *obj)
     QMutexLocker locker (&windowLock);
 
     if (!miP->isNull ())
-        (*miP)->releaseVideo( wnd->vout, wnd->handle );
+        (*miP)->releaseVideo( wnd->handle );
     delete miP;
 }