[vlc-devel] [PATCH 3/5] gui/qt: extended_panels: change return-type of ChangeFiltersString

Filip Roséen filip at atch.se
Sat Feb 25 07:31:43 CET 2017


By returning a QString instead of a heap-allocated c-style string we
reduce complexity, and hopefully increase correctness as there is less
manual memory-management to worry about.
---
 modules/gui/qt/components/extended_panels.cpp | 30 ++++++++-------------------
 1 file changed, 9 insertions(+), 21 deletions(-)

diff --git a/modules/gui/qt/components/extended_panels.cpp b/modules/gui/qt/components/extended_panels.cpp
index c2c375d037..837932eb79 100644
--- a/modules/gui/qt/components/extended_panels.cpp
+++ b/modules/gui/qt/components/extended_panels.cpp
@@ -52,7 +52,7 @@
 #include <vlc_modules.h>
 #include <vlc_plugin.h>
 
-static char *ChangeFiltersString( struct intf_thread_t *p_intf, const char *psz_filter_type, const char *psz_name, bool b_add );
+static QString ChangeFiltersString( struct intf_thread_t *p_intf, const char *psz_filter_type, const char *psz_name, bool b_add );
 static void ChangeAFiltersString( struct intf_thread_t *p_intf, const char *psz_name, bool b_add );
 static void ChangeVFiltersString( struct intf_thread_t *p_intf, const char *psz_name, bool b_add );
 
@@ -257,7 +257,7 @@ void ExtVideo::clean()
     ui.cropRightPx->setValue( 0 );
 }
 
-static char *ChangeFiltersString( struct intf_thread_t *p_intf, const char *psz_filter_type, const char *psz_name, bool b_add )
+static QString ChangeFiltersString( struct intf_thread_t *p_intf, const char *psz_filter_type, const char *psz_name, bool b_add )
 {
     char* psz_chain = config_GetPsz( p_intf, psz_filter_type );
 
@@ -269,13 +269,11 @@ static char *ChangeFiltersString( struct intf_thread_t *p_intf, const char *psz_
 
     free( psz_chain );
 
-    return strdup( qtu( list.join( ':' ) ) );
+    return list.join( ':' );
 }
 
 static void ChangeAFiltersString( struct intf_thread_t *p_intf, const char *psz_name, bool b_add )
 {
-    char *psz_string;
-
     module_t *p_obj = module_find( psz_name );
     if( !p_obj )
     {
@@ -283,13 +281,8 @@ static void ChangeAFiltersString( struct intf_thread_t *p_intf, const char *psz_
         return;
     }
 
-    psz_string = ChangeFiltersString( p_intf, "audio-filter", psz_name, b_add );
-    if( !psz_string )
-        return;
-
-    config_PutPsz( p_intf, "audio-filter", psz_string );
-
-    free( psz_string );
+    QString result = ChangeFiltersString( p_intf, "audio-filteR", psz_name, b_add );
+    config_PutPsz( p_intf, "audio-filter", qtu( result ) );
 }
 
 static const char* GetVFilterType( struct intf_thread_t *p_intf, const char *psz_name )
@@ -318,33 +311,28 @@ static const char* GetVFilterType( struct intf_thread_t *p_intf, const char *psz
 
 static void ChangeVFiltersString( struct intf_thread_t *p_intf, const char *psz_name, bool b_add )
 {
-    char *psz_string;
     const char *psz_filter_type = GetVFilterType( p_intf, psz_name );
 
-    psz_string = ChangeFiltersString( p_intf, psz_filter_type, psz_name, b_add );
-    if( !psz_string )
-        return;
+    QString result = ChangeFiltersString( p_intf, psz_filter_type, psz_name, b_add );
 
     /* Vout is not kept, so put that in the config */
-    config_PutPsz( p_intf, psz_filter_type, psz_string );
+    config_PutPsz( p_intf, psz_filter_type, qtu( result ) );
 
     /* Try to set on the fly */
     if( !strcmp( psz_filter_type, "video-splitter" ) )
     {
         playlist_t *p_playlist = THEPL;
-        var_SetString( p_playlist, psz_filter_type, psz_string );
+        var_SetString( p_playlist, psz_filter_type, qtu( result ) );
     }
     else
     {
         vout_thread_t *p_vout = THEMIM->getVout();
         if( p_vout )
         {
-            var_SetString( p_vout, psz_filter_type, psz_string );
+            var_SetString( p_vout, psz_filter_type, qtu( result ) );
             vlc_object_release( p_vout );
         }
     }
-
-    free( psz_string );
 }
 
 void ExtVideo::updateFilters()
-- 
2.11.1



More information about the vlc-devel mailing list