summaryrefslogtreecommitdiff
authorsimon <simon>2002-12-11 19:34:20 (UTC)
committer simon <simon>2002-12-11 19:34:20 (UTC)
commitb3373b77e12e4b138848110884aedc37b56384e1 (patch) (unidiff)
tree7432537024816d316d05fdc364d26db73fae190b
parente59fabf981834292c2ed9b7192dd4f789cc4b7cb (diff)
downloadopie-b3373b77e12e4b138848110884aedc37b56384e1.zip
opie-b3373b77e12e4b138848110884aedc37b56384e1.tar.gz
opie-b3373b77e12e4b138848110884aedc37b56384e1.tar.bz2
- SkinCache now operates on SkinData instead of single images
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/skin.cpp37
-rw-r--r--noncore/multimedia/opieplayer2/skin.h2
2 files changed, 18 insertions, 21 deletions
diff --git a/noncore/multimedia/opieplayer2/skin.cpp b/noncore/multimedia/opieplayer2/skin.cpp
index d2e3b00..5013bb4 100644
--- a/noncore/multimedia/opieplayer2/skin.cpp
+++ b/noncore/multimedia/opieplayer2/skin.cpp
@@ -24,4 +24,7 @@
24#include "singleton.h" 24#include "singleton.h"
25 25
26#include <qcache.h>
27#include <qmap.h>
28
26#include <qpe/resource.h> 29#include <qpe/resource.h>
27#include <qpe/config.h> 30#include <qpe/config.h>
@@ -45,12 +48,14 @@ public:
45 SkinCache(); 48 SkinCache();
46 49
47 QImage loadImage( const QString &name ); 50 SkinData *lookupAndTake( const QString &skinPath, const QString &fileNameInfix );
48 51
49private: 52 void store( const QString &skinPath, const QString &fileNameInfix, SkinData *data );
50 typedef QDict<QImage> ImageCache;
51 53
52 ImageCache m_cache; 54private:
55 typedef QCache<SkinData> DataCache;
56 typedef QCache<QPixmap> BackgroundPixmapCache;
53 57
54 ThreadUtil::Mutex m_cacheGuard; 58 DataCache m_cache;
59 BackgroundPixmapCache m_backgroundPixmapCache;
55}; 60};
56 61
@@ -69,5 +74,5 @@ Skin::Skin( const QString &fileNameInfix )
69Skin::~Skin() 74Skin::~Skin()
70{ 75{
71 delete d; 76 SkinCache::self().store( m_skinPath, m_fileNameInfix, d );
72} 77}
73 78
@@ -75,5 +80,5 @@ void Skin::init( const QString &name )
75{ 80{
76 m_skinPath = "opieplayer2/skins/" + name; 81 m_skinPath = "opieplayer2/skins/" + name;
77 d = new SkinData; 82 d = SkinCache::self().lookupAndTake( m_skinPath, m_fileNameInfix );
78} 83}
79 84
@@ -162,20 +167,14 @@ QImage Skin::loadImage( const QString &fileName )
162SkinCache::SkinCache() 167SkinCache::SkinCache()
163{ 168{
164 m_cache.setAutoDelete( true );
165} 169}
166 170
167QImage SkinCache::loadImage( const QString &name ) 171SkinData *SkinCache::lookupAndTake( const QString &skinPath, const QString &fileNameInfix )
168{ 172{
169 ThreadUtil::AutoLock lock( m_cacheGuard ); 173 return new SkinData;
170 174}
171 QImage *image = m_cache.find( name );
172 if ( image ) {
173 qDebug( "cache hit for %s", name.ascii() );
174 return *image;
175 }
176 175
177 image = new QImage( Resource::findPixmap( name ) ); 176void SkinCache::store( const QString &skinPath, const QString &fileNameInfix, SkinData *data )
178 m_cache.insert( name, image ); 177{
179 return *image; 178 delete data;
180} 179}
181 180
diff --git a/noncore/multimedia/opieplayer2/skin.h b/noncore/multimedia/opieplayer2/skin.h
index e55832c..9180067 100644
--- a/noncore/multimedia/opieplayer2/skin.h
+++ b/noncore/multimedia/opieplayer2/skin.h
@@ -26,6 +26,4 @@
26#include <qstring.h> 26#include <qstring.h>
27#include <qimage.h> 27#include <qimage.h>
28#include <qmap.h>
29#include <qdict.h>
30 28
31#include "mediawidget.h" 29#include "mediawidget.h"