]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/components/simple_preferences.cpp
Preferences: fix some memleaks and fix horrible video-filter bug. :D
[vlc] / modules / gui / qt4 / components / simple_preferences.cpp
index e2e07d4583c45688b55e0fad8e67c27a04a2d24a..980b504b6de62c2d52ccc35be5d69f6c773101d0 100644 (file)
@@ -40,6 +40,8 @@
 #include <QUrl>
 #include <QVBoxLayout>
 
+#include <QtAlgorithms>
+
 #include <string>
 
 #define ICON_HEIGHT 64
@@ -60,7 +62,7 @@ SPrefsCatList::SPrefsCatList( intf_thread_t *_p_intf, QWidget *_parent ) :
 
 #define ADD_CATEGORY( button, label, icon, numb )                           \
     QToolButton * button = new QToolButton( this );                         \
-    button->setIcon( QIcon( ":/pixmaps/" #icon ) );                         \
+    button->setIcon( QIcon( ":/pixmaps/prefs/" #icon ) );                   \
     button->setIconSize( QSize( ICON_HEIGHT , ICON_HEIGHT ) );              \
     button->setText( label );                                               \
     button->setToolButtonStyle( Qt::ToolButtonTextUnderIcon );              \
@@ -334,7 +336,9 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent,
 
             CONNECT( ui.volNormBox, toggled( bool ), ui.volNormSpin,
                      setEnabled( bool ) );
-            qs_filter = qfu( config_GetPsz( p_intf, "audio-filter" ) );
+            char* psz = config_GetPsz( p_intf, "audio-filter" );
+            qs_filter = qfu( psz );
+            free( psz );
             bool b_normalizer = ( qs_filter.contains( "volnorm" ) );
             {
                 ui.volNormBox->setChecked( b_normalizer );
@@ -365,8 +369,9 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent,
                 {
                     ui.DVDDevice->setText( qfu( psz_dvddiscpath ) );
                 }
-                delete psz_cddadiscpath; delete psz_dvddiscpath;
-                delete psz_vcddiscpath;
+                free( psz_cddadiscpath );
+                free( psz_dvddiscpath );
+                free( psz_vcddiscpath );
             }
 
             CONFIG_GENERIC_NO_BOOL( "server-port", Integer, NULL, UDPPort );
@@ -380,7 +385,9 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent,
             ui.systemCodecBox->hide();
 #endif
             /* Access Filters */
-            qs_filter = qfu( config_GetPsz( p_intf, "access-filter" ) );
+            char* psz = config_GetPsz( p_intf, "access-filter" );
+            qs_filter = qfu( psz );
+            free( psz );
             ui.timeshiftBox->setChecked( qs_filter.contains( "timeshift" ) );
             ui.dumpBox->setChecked( qs_filter.contains( "dump" ) );
             ui.recordBox->setChecked( qs_filter.contains( "record" ) );
@@ -470,7 +477,7 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent,
                 else if( strstr( psz_intf, "qt" ) )
                     ui.qt4->setChecked( true );
             }
-            delete psz_intf;
+            free( psz_intf );
 
             optionWidgets.append( ui.skins );
             optionWidgets.append( ui.qt4 );
@@ -478,6 +485,7 @@ SPrefsPanel::SPrefsPanel( intf_thread_t *_p_intf, QWidget *_parent,
             CONFIG_GENERIC( "qt-display-mode", IntegerList, NULL,
                             displayModeBox );
             CONFIG_GENERIC( "embedded-video", Bool, NULL, embedVideo );
+            CONFIG_GENERIC( "qt-fs-controller", Bool, NULL, fsController );
             CONFIG_GENERIC_FILE( "skins2-last", File, NULL, ui.fileSkin,
                     ui.skinBrowse );
 
@@ -562,6 +570,12 @@ void SPrefsPanel::updateAudioOptions( int number)
     optionWidgets[fileW]->setVisible( ( value == "aout_file" ) );
 }
 
+
+SPrefsPanel::~SPrefsPanel()
+{
+    qDeleteAll( controls ); controls.clear();
+}
+
 void SPrefsPanel::updateAudioVolume( int volume )
 {
     qobject_cast<QSpinBox *>(optionWidgets[volLW])