[vlc-devel] commit: Fix the leak caused by the QGridLayout of the FS controller, since it isn't a child of FullScreenController, and therefore not destroyed at exit. (Jean-Baptiste Kempf )

git version control git at videolan.org
Sat Jul 26 08:09:26 CEST 2008


vlc | branch: master | Jean-Baptiste Kempf <jb at videolan.org> | Fri Jul 25 23:10:23 2008 -0700| [b00904493e3d8a24c2612a16c19348dcc16ca60c]

Fix the leak caused by the QGridLayout of the FS controller, since it isn't a child of FullScreenController, and therefore not destroyed at exit.
Should fix #1677

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=b00904493e3d8a24c2612a16c19348dcc16ca60c
---

 modules/gui/qt4/components/interface_widgets.cpp |   82 +++++++++++-----------
 1 files changed, 41 insertions(+), 41 deletions(-)

diff --git a/modules/gui/qt4/components/interface_widgets.cpp b/modules/gui/qt4/components/interface_widgets.cpp
index 0cd05e6..2df4c51 100644
--- a/modules/gui/qt4/components/interface_widgets.cpp
+++ b/modules/gui/qt4/components/interface_widgets.cpp
@@ -249,8 +249,7 @@ VisualSelector::VisualSelector( intf_thread_t *_p_i ) :
     layout->addWidget( prevButton );
     layout->addWidget( nextButton );
 
-    layout->addItem( new QSpacerItem( 40,20,
-                              QSizePolicy::Expanding, QSizePolicy::Minimum ) );
+    layout->addStretch( 10 );
     layout->addWidget( new QLabel( qtr( "Current visualization" ) ) );
 
     current = new QLabel( qtr( "None" ) );
@@ -405,19 +404,10 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i,
                                 bool b_fsCreation) :
                                 QFrame( _p_mi ), p_intf( _p_i )
 {
-    controlLayout = new QGridLayout( );
-
-    controlLayout->setSpacing( 0 );
-    controlLayout->setLayoutMargins( 7, 5, 7, 3, 6 );
-
-    if( !b_fsCreation )
-        setLayout( controlLayout );
-
-    setSizePolicy( QSizePolicy::Preferred , QSizePolicy::Maximum );
+        setSizePolicy( QSizePolicy::Preferred , QSizePolicy::Maximum );
 
     /** The main Slider **/
     slider = new InputSlider( Qt::Horizontal, NULL );
-    controlLayout->addWidget( slider, 0, 1, 1, 16 );
     /* Update the position when the IM has changed */
     CONNECT( THEMIM->getIM(), positionUpdated( float, int, int ),
              slider, setPosition( float, int, int ) );
@@ -431,20 +421,17 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i,
     slowerButton->setMaximumSize( QSize( 26, 20 ) );
 
     BUTTON_SET_ACT( slowerButton, "-", qtr( "Slower" ), slower() );
-    controlLayout->addWidget( slowerButton, 0, 0 );
 
     fasterButton = new QToolButton;
     fasterButton->setAutoRaise( true );
     fasterButton->setMaximumSize( QSize( 26, 20 ) );
 
     BUTTON_SET_ACT( fasterButton, "+", qtr( "Faster" ), faster() );
-    controlLayout->addWidget( fasterButton, 0, 17 );
 
     /* advanced Controls handling */
     b_advancedVisible = b_advControls;
 
     advControls = new AdvControlsWidget( p_intf );
-    controlLayout->addWidget( advControls, 1, 3, 2, 4, Qt::AlignBottom );
     if( !b_advancedVisible ) advControls->hide();
 
     /** Disc and Menus handling */
@@ -466,8 +453,6 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i,
     setupSmallButton( nextSectionButton );
     discLayout->addWidget( nextSectionButton );
 
-    controlLayout->addWidget( discFrame, 1, 10, 2, 3, Qt::AlignBottom );
-
     BUTTON_SET_IMG( prevSectionButton, "", previous.png, "" );
     BUTTON_SET_IMG( nextSectionButton, "", next.png, "" );
     BUTTON_SET_IMG( menuButton, "", previous.png, qtr( "Menu" ) );
@@ -512,8 +497,6 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i,
     telexPage->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Minimum );
     telexLayout->addWidget( telexPage );
 
-    if( !b_fsCreation )
-        controlLayout->addWidget( telexFrame, 1, 10, 2, 4, Qt::AlignBottom );
     telexFrame->hide(); /* default hidden */
 
     CONNECT( telexPage, valueChanged( int ), THEMIM->getIM(),
@@ -553,12 +536,8 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i,
     playButton->setMinimumSize( QSize( 36, 36 ) );
     playButton->setIconSize( QSize( 30, 30 ) );
 
-    controlLayout->addWidget( playButton, 2, 0, 2, 2 );
 
-    controlLayout->setColumnMinimumWidth( 2, 20 );
-    controlLayout->setColumnStretch( 2, 0 );
-
-    /** Prev + Stop + Next Block **/
+        /** Prev + Stop + Next Block **/
     controlButLayout = new QHBoxLayout;
     controlButLayout->setSpacing( 0 ); /* Don't remove that, will be useful */
 
@@ -584,8 +563,6 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i,
     controlButLayout->addWidget( nextButton );
 
     /* Add this block to the main layout */
-    if( !b_fsCreation )
-        controlLayout->addLayout( controlButLayout, 3, 3, 1, 3 );
 
     BUTTON_SET_ACT_I( playButton, "", play.png, qtr( "Play" ), play() );
     BUTTON_SET_ACT_I( prevButton, "" , previous.png,
@@ -593,11 +570,6 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i,
     BUTTON_SET_ACT_I( nextButton, "", next.png, qtr( "Next" ), next() );
     BUTTON_SET_ACT_I( stopButton, "", stop.png, qtr( "Stop" ), stop() );
 
-    controlLayout->setColumnMinimumWidth( 7, 20 );
-    controlLayout->setColumnStretch( 7, 0 );
-    controlLayout->setColumnStretch( 8, 0 );
-    controlLayout->setColumnStretch( 9, 0 );
-
     /*
      * Other first Line buttons
      */
@@ -605,12 +577,10 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i,
     fullscreenButton = new QPushButton( "F" );
     BUTTON_SET_ACT( fullscreenButton, "F", qtr( "Fullscreen" ), fullscreen() );
     setupSmallButton( fullscreenButton );
-    controlLayout->addWidget( fullscreenButton, 3, 10, Qt::AlignBottom );
 
     /** Playlist Button **/
     playlistButton = new QPushButton;
     setupSmallButton( playlistButton );
-    controlLayout->addWidget( playlistButton, 3, 11, Qt::AlignBottom );
     BUTTON_SET_IMG( playlistButton, "" , playlist.png, qtr( "Show playlist" ) );
     CONNECT( playlistButton, clicked(), _p_mi, togglePlaylist() );
 
@@ -619,11 +589,7 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i,
     BUTTON_SET_ACT( extSettingsButton, "Ex", qtr( "Extended settings" ),
             extSettings() );
     setupSmallButton( extSettingsButton );
-    controlLayout->addWidget( extSettingsButton, 3, 12, Qt::AlignBottom );
 
-    controlLayout->setColumnStretch( 13, 0 );
-    controlLayout->setColumnMinimumWidth( 13, 24 );
-    controlLayout->setColumnStretch( 14, 5 );
 
     /* Volume */
     hVolLabel = new VolumeClickHandler( p_intf, this );
@@ -632,7 +598,6 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i,
     volMuteLabel->setPixmap( QPixmap( ":/pixmaps/volume-medium.png" ) );
     volMuteLabel->setToolTip( qtr( "Mute" ) );
     volMuteLabel->installEventFilter( hVolLabel );
-    controlLayout->addWidget( volMuteLabel, 3, 15, Qt::AlignBottom );
 
     if( b_shiny )
     {
@@ -649,7 +614,6 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i,
     volumeSlider->setMaximumSize( QSize( 200, 40 ) );
     volumeSlider->setMinimumSize( QSize( 106, 30 ) );
     volumeSlider->setFocusPolicy( Qt::NoFocus );
-    controlLayout->addWidget( volumeSlider, 2, 16, 2 , 2, Qt::AlignBottom );
 
     /* Set the volume from the config */
     volumeSlider->setValue( ( config_GetInt( p_intf, "volume" ) ) *
@@ -662,6 +626,43 @@ ControlsWidget::ControlsWidget( intf_thread_t *_p_i,
     CONNECT( volumeSlider, valueChanged( int ), this, updateVolume( int ) );
     CONNECT( THEMIM, volumeChanged( void ), this, updateVolume( void ) );
 
+    if( !b_fsCreation )
+    {
+        controlLayout = new QGridLayout( this );
+
+        controlLayout->setSpacing( 0 );
+        controlLayout->setLayoutMargins( 7, 5, 7, 3, 6 );
+
+        controlLayout->addWidget( slider, 0, 1, 1, 16 );
+        controlLayout->addWidget( slowerButton, 0, 0 );
+        controlLayout->addWidget( fasterButton, 0, 17 );
+
+        controlLayout->addWidget( advControls, 1, 3, 2, 4, Qt::AlignBottom );
+        controlLayout->addWidget( discFrame, 1, 10, 2, 3, Qt::AlignBottom );
+        controlLayout->addWidget( telexFrame, 1, 10, 2, 4, Qt::AlignBottom );
+
+        controlLayout->addWidget( playButton, 2, 0, 2, 2 );
+        controlLayout->setColumnMinimumWidth( 2, 20 );
+        controlLayout->setColumnStretch( 2, 0 );
+
+        controlLayout->addLayout( controlButLayout, 3, 3, 1, 3 );
+        controlLayout->setColumnMinimumWidth( 7, 20 );
+        controlLayout->setColumnStretch( 7, 0 );
+        controlLayout->setColumnStretch( 8, 0 );
+        controlLayout->setColumnStretch( 9, 0 );
+
+        controlLayout->addWidget( fullscreenButton, 3, 10, Qt::AlignBottom );
+        controlLayout->addWidget( playlistButton, 3, 11, Qt::AlignBottom );
+        controlLayout->addWidget( extSettingsButton, 3, 12, Qt::AlignBottom );
+
+        controlLayout->setColumnStretch( 13, 0 );
+        controlLayout->setColumnMinimumWidth( 13, 24 );
+        controlLayout->setColumnStretch( 14, 5 );
+
+        controlLayout->addWidget( volMuteLabel, 3, 15, Qt::AlignBottom );
+        controlLayout->addWidget( volumeSlider, 2, 16, 2 , 2, Qt::AlignBottom );
+    }
+
     updateInput();
 }
 
@@ -899,8 +900,7 @@ FullscreenControllerWidget::FullscreenControllerWidget( intf_thread_t *_p_i,
     setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum );
 
     QGridLayout *fsLayout = new QGridLayout( this );
-    controlLayout->setSpacing( 0 );
-    controlLayout->setLayoutMargins( 5, 1, 5, 1, 5 );
+    fsLayout->setLayoutMargins( 5, 1, 5, 1, 5 );
 
     fsLayout->addWidget( slowerButton, 0, 0 );
     slider->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Minimum);




More information about the vlc-devel mailing list