]> git.sesse.net Git - vlc/commitdiff
Qt: export PLModel in the main struct
authorJean-Baptiste Kempf <jb@videolan.org>
Fri, 7 Oct 2011 16:25:52 +0000 (18:25 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Sun, 9 Oct 2011 21:24:05 +0000 (23:24 +0200)
modules/gui/qt4/components/playlist/playlist.cpp
modules/gui/qt4/components/playlist/playlist_model.hpp
modules/gui/qt4/qt4.cpp
modules/gui/qt4/qt4.hpp

index 7193040926a74128851f2f375af32ee43894104b..296d117d1131341c7db2af300def2e109ae7f168 100644 (file)
@@ -94,7 +94,7 @@ PlaylistWidget::PlaylistWidget( intf_thread_t *_p_i, QWidget *_par )
 
     setMinimumWidth( 400 );
 
-    PLModel *model = new PLModel( p_playlist, p_intf, p_root, this );
+    PLModel *model = PLModel::getPLModel( p_intf );
 #ifdef MEDIA_LIBRARY
     MLModel *mlmodel = new MLModel( p_intf, this );
     mainView = new StandardPLPanel( this, p_intf, p_root, selector, model, mlmodel );
index d1bf758e3eeb26f4260b5b3b3af4ebc9d9531179..4fc4109e3f1a7651c28724218fea0e62f4c3fd70 100644 (file)
@@ -56,6 +56,19 @@ public:
              playlist_item_t *, QObject *parent = 0 );
     virtual ~PLModel();
 
+    static PLModel* getPLModel( intf_thread_t *p_intf )
+    {
+        if(!p_intf->p_sys->pl_model )
+        {
+            playlist_Lock( THEPL );
+            playlist_item_t *p_root = THEPL->p_playing;
+            playlist_Unlock( THEPL );
+            p_intf->p_sys->pl_model = new PLModel( THEPL, p_intf, p_root, NULL );
+        }
+
+        return p_intf->p_sys->pl_model;
+    }
+
     /*** QModel subclassing ***/
 
     /* Data structure */
index c8a32b77c7ae9a09a581eb6b79a98577b8dfefd5..b1b3e1578acb3973d04845172b332f8983404dbc 100644 (file)
@@ -356,6 +356,7 @@ static int Open( vlc_object_t *p_this, bool isDialogProvider )
     intf_sys_t *p_sys = p_intf->p_sys = new intf_sys_t;
     p_intf->p_sys->b_isDialogProvider = isDialogProvider;
     p_sys->p_mi = NULL;
+    p_sys->pl_model = NULL;
 
     /* */
     vlc_sem_init (&ready, 0);
@@ -555,6 +556,9 @@ static void *Thread( void *obj )
     /* Delete the configuration. Application has to be deleted after that. */
     delete p_intf->p_sys->mainSettings;
 
+    /* */
+    delete p_intf->p_sys->pl_model;
+
     /* Destroy the MainInputManager */
     MainInputManager::killInstance();
 
index 6d0ce5fdfce2fc7b49339552c36271cc95609bd5..3e904e83a1cba526036f07f5978f73228e000815 100644 (file)
@@ -53,22 +53,25 @@ class QVLCApp;
 class QMenu;
 class MainInterface;
 class QSettings;
+class PLModel;
 
 struct intf_sys_t
 {
     vlc_thread_t thread;
 
     QVLCApp *p_app;          /* Main Qt Application */
+
     MainInterface *p_mi;     /* Main Interface, NULL if DialogProvider Mode */
 
     QSettings *mainSettings; /* Qt State settings not messing main VLC ones */
 
-    bool b_isDialogProvider; /* Qt mode or Skins mode */
-
-    int  i_screenHeight;     /* Detection of Small screens */
+    PLModel *pl_model;
 
     QString filepath;        /* Last path used in dialogs */
 
+    int  i_screenHeight;     /* Detection of Small screens */
+
+    bool b_isDialogProvider; /* Qt mode or Skins mode */
 #ifdef WIN32
     bool disable_volume_keys;
 #endif