]> git.sesse.net Git - vlc/blobdiff - modules/gui/wxwidgets/wxwidgets.cpp
svg module: fix memleak.
[vlc] / modules / gui / wxwidgets / wxwidgets.cpp
index 0e7453da18f6ec90bfa62d9ed7b43bc01a670997..a919fa3cb457cb1607661ff3817995a99452578b 100644 (file)
  * Preamble
  *****************************************************************************/
 #include <errno.h>                                                 /* ENOMEM */
-#include <stdio.h>
 
-#include <vlc/vlc.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <vlc_common.h>
+#include <vlc_plugin.h>
 #include <vlc_interface.h>
 
 #ifdef HAVE_LOCALE_H
@@ -108,61 +112,59 @@ private:
                 "less features). You can select which one will be available " \
                 "on the toolbar (or both)." )
 
-static int pi_playlist_views[] = { 0,1,2 };
-static const char *psz_playlist_views[] = { N_("Normal" ), N_("Embedded" ) ,
-                                            N_("Both") };
+static const int pi_playlist_views[] = { 0,1,2 };
+static const char *const psz_playlist_views[] = {
+    N_("Normal" ), N_("Embedded" ), N_("Both") };
 
 vlc_module_begin();
-    int i_score = 150;
-    set_shortname( (char*) "wxWidgets" );
-    set_description( (char *) _("wxWidgets interface module") );
+    set_shortname( "wxWidgets" );
+    set_description( N_("wxWidgets interface module") );
     set_category( CAT_INTERFACE );
     set_subcategory( SUBCAT_INTERFACE_MAIN );
-    set_capability( "interface", i_score );
+    set_capability( "interface", 150 );
     set_callbacks( Open, Close );
     add_shortcut( "wxwindows" );
     add_shortcut( "wxwin" );
     add_shortcut( "wx" );
     add_shortcut( "wxwidgets" );
-    set_program( "wxvlc" );
 
     add_bool( "wx-embed", 1, NULL,
-              EMBED_TEXT, EMBED_LONGTEXT, VLC_FALSE );
+              EMBED_TEXT, EMBED_LONGTEXT, false );
         add_deprecated_alias( "wxwin-enbed" ); /*Deprecated since 0.8.4*/
     add_bool( "wx-bookmarks", 0, NULL,
-              BOOKMARKS_TEXT, BOOKMARKS_LONGTEXT, VLC_FALSE );
+              BOOKMARKS_TEXT, BOOKMARKS_LONGTEXT, false );
         add_deprecated_alias( "wxwin-bookmarks" ); /*Deprecated since 0.8.4*/
     add_bool( "wx-taskbar", 1, NULL,
-              TASKBAR_TEXT, TASKBAR_LONGTEXT, VLC_FALSE );
+              TASKBAR_TEXT, TASKBAR_LONGTEXT, false );
         add_deprecated_alias( "wxwin-taskbar" ); /*Deprecated since 0.8.4*/
     add_bool( "wx-extended", 0, NULL,
-              EXTENDED_TEXT, EXTENDED_LONGTEXT, VLC_FALSE );
+              EXTENDED_TEXT, EXTENDED_LONGTEXT, false );
     add_bool( "wx-minimal", 0, NULL,
-              MINIMAL_TEXT, MINIMAL_LONGTEXT, VLC_TRUE );
+              MINIMAL_TEXT, MINIMAL_LONGTEXT, true );
         add_deprecated_alias( "wxwin-minimal" ); /*Deprecated since 0.8.4*/
     add_bool( "wx-autosize", 1, NULL,
-              SIZE_TO_VIDEO_TEXT, SIZE_TO_VIDEO_LONGTEXT, VLC_TRUE );
+              SIZE_TO_VIDEO_TEXT, SIZE_TO_VIDEO_LONGTEXT, true );
         add_deprecated_alias( "wxwin-autosize" ); /*Deprecated since 0.8.4*/
     add_integer( "wx-playlist-view", 0, NULL, PLAYLIST_TEXT, PLAYLIST_LONGTEXT,
-             VLC_FALSE );
+             false );
         change_integer_list( pi_playlist_views, psz_playlist_views, 0 );
 /* wxCocoa pretends to support this, but at least 2.6.x doesn't */
 #ifndef __APPLE__
 #ifdef wxHAS_TASK_BAR_ICON
     add_bool( "wx-systray", 0, NULL,
-              SYSTRAY_TEXT, SYSTRAY_LONGTEXT, VLC_FALSE );
+              SYSTRAY_TEXT, SYSTRAY_LONGTEXT, false );
         add_deprecated_alias( "wxwin-systray" ); /*Deprecated since 0.8.4*/
 #endif
 #endif
-    add_bool( "wx-labels", 0, NULL, LABEL_TEXT, LABEL_LONGTEXT, VLC_TRUE);
+    add_bool( "wx-labels", 0, NULL, LABEL_TEXT, LABEL_LONGTEXT, true);
     add_string( "wx-config-last", NULL, NULL,
-                N_("last config"), N_("last config"), VLC_TRUE );
+                N_("last config"), N_("last config"), true );
         change_autosave();
         change_internal();
         add_deprecated_alias( "wxwin-config-last" ); /*Deprecated since 0.8.4*/
 
     add_submodule();
-    set_description( _("wxWidgets dialogs provider") );
+    set_description( N_("wxWidgets dialogs provider") );
     set_capability( "dialogs provider", 50 );
     set_callbacks( OpenDialogs, Close );
 
@@ -178,7 +180,7 @@ static int Open( vlc_object_t *p_this )
 {
     intf_thread_t *p_intf = (intf_thread_t *)p_this;
     /* Test in we have an X*/
-#if defined HAVE_GETENV && (defined __WXGTK__ || defined __WXX11) 
+#if defined HAVE_GETENV && (defined __WXGTK__ || defined __WXX11)
     if( !getenv( "DISPLAY" ) )
     {
         msg_Err( p_intf, "no X server");
@@ -188,15 +190,12 @@ static int Open( vlc_object_t *p_this )
     /* Allocate instance and initialize some members */
     p_intf->p_sys = (intf_sys_t *)malloc( sizeof( intf_sys_t ) );
     if( p_intf->p_sys == NULL )
-    {
-        msg_Err( p_intf, "out of memory" );
         return VLC_ENOMEM;
-    }
     memset( p_intf->p_sys, 0, sizeof( intf_sys_t ) );
 
     p_intf->pf_run = Run;
 
-    p_intf->p_sys->p_sub = msg_Subscribe( p_intf, MSG_QUEUE_NORMAL );
+    p_intf->p_sys->p_sub = msg_Subscribe( p_intf );
 
     /* Initialize wxWidgets thread */
     p_intf->p_sys->b_playing = 0;
@@ -209,9 +208,6 @@ static int Open( vlc_object_t *p_this )
 
     p_intf->pf_show_dialog = NULL;
 
-    /* We support play on start */
-    p_intf->b_play = VLC_TRUE;
-
     p_intf->p_sys->b_video_autosize =
         config_GetInt( p_intf, "wx-autosize" );
 
@@ -235,9 +231,9 @@ static void Close( vlc_object_t *p_this )
 {
     intf_thread_t *p_intf = (intf_thread_t *)p_this;
 
-    vlc_mutex_lock( &p_intf->object_lock );
-    p_intf->b_dead = VLC_TRUE;
-    vlc_mutex_unlock( &p_intf->object_lock );
+    vlc_object_lock( p_intf );
+    p_intf->b_dead = true;
+    vlc_object_unlock( p_intf );
 
     if( p_intf->pf_show_dialog )
     {
@@ -283,7 +279,7 @@ static void Run( intf_thread_t *p_intf )
 
         /* Create a new thread for wxWidgets */
         if( vlc_thread_create( p_intf, "Skins Dialogs Thread",
-                               Init, 0, VLC_TRUE ) )
+                               Init, 0, true ) )
         {
             msg_Err( p_intf, "cannot create Skins Dialogs Thread" );
             p_intf->pf_show_dialog = NULL;
@@ -391,19 +387,6 @@ bool Instance::OnInit()
     /* OK, initialization is over */
     vlc_thread_ready( p_intf );
 
-    /* Check if we need to start playing */
-    if( !p_intf->pf_show_dialog && p_intf->b_play )
-    {
-        playlist_t *p_playlist =
-            (playlist_t *)vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST,
-                                           FIND_ANYWHERE );
-        if( p_playlist )
-        {
-            playlist_Control( p_playlist, PLAYLIST_AUTOPLAY, VLC_FALSE );
-            vlc_object_release( p_playlist );
-        }
-    }
-
     /* Return TRUE to tell program to continue (FALSE would terminate) */
     return TRUE;
 }
@@ -416,7 +399,7 @@ int Instance::OnExit()
     if( p_intf->pf_show_dialog )
     {
          /* We need to manually clean up the dialogs class */
-         if( p_intf->p_sys->p_wxwindow ) delete p_intf->p_sys->p_wxwindow;
+         delete p_intf->p_sys->p_wxwindow;
     }
 
 #if (wxCHECK_VERSION(2,5,0))
@@ -558,7 +541,7 @@ WindowSettings::WindowSettings( intf_thread_t *_p_intf )
         }
     }
 
-    if( psz_org ) free( psz_org );
+    free( psz_org );
     return;
 
 invalid:
@@ -570,7 +553,7 @@ invalid:
         position[i] = wxDefaultPosition;
         size[i] = wxDefaultSize;
     }
-    if( psz_org ) free( psz_org );
+    free( psz_org );
 }