From a8bf114168e22da27e28b6b4473c11ec8a57bc28 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Kempf Date: Fri, 7 Oct 2011 18:25:52 +0200 Subject: [PATCH] Qt: export PLModel in the main struct --- modules/gui/qt4/components/playlist/playlist.cpp | 2 +- modules/gui/qt4/components/playlist/playlist_model.hpp | 13 +++++++++++++ modules/gui/qt4/qt4.cpp | 4 ++++ modules/gui/qt4/qt4.hpp | 9 ++++++--- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/modules/gui/qt4/components/playlist/playlist.cpp b/modules/gui/qt4/components/playlist/playlist.cpp index 7193040926..296d117d11 100644 --- a/modules/gui/qt4/components/playlist/playlist.cpp +++ b/modules/gui/qt4/components/playlist/playlist.cpp @@ -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 ); diff --git a/modules/gui/qt4/components/playlist/playlist_model.hpp b/modules/gui/qt4/components/playlist/playlist_model.hpp index d1bf758e3e..4fc4109e3f 100644 --- a/modules/gui/qt4/components/playlist/playlist_model.hpp +++ b/modules/gui/qt4/components/playlist/playlist_model.hpp @@ -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 */ diff --git a/modules/gui/qt4/qt4.cpp b/modules/gui/qt4/qt4.cpp index c8a32b77c7..b1b3e1578a 100644 --- a/modules/gui/qt4/qt4.cpp +++ b/modules/gui/qt4/qt4.cpp @@ -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(); diff --git a/modules/gui/qt4/qt4.hpp b/modules/gui/qt4/qt4.hpp index 6d0ce5fdfc..3e904e83a1 100644 --- a/modules/gui/qt4/qt4.hpp +++ b/modules/gui/qt4/qt4.hpp @@ -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 -- 2.11.4.GIT