summaryrefslogtreecommitdiff
path: root/noncore/multimedia/opieplayer2/skin.cpp
authorsimon <simon>2002-12-11 19:34:20 (UTC)
committer simon <simon>2002-12-11 19:34:20 (UTC)
commitb3373b77e12e4b138848110884aedc37b56384e1 (patch) (side-by-side diff)
tree7432537024816d316d05fdc364d26db73fae190b /noncore/multimedia/opieplayer2/skin.cpp
parente59fabf981834292c2ed9b7192dd4f789cc4b7cb (diff)
downloadopie-b3373b77e12e4b138848110884aedc37b56384e1.zip
opie-b3373b77e12e4b138848110884aedc37b56384e1.tar.gz
opie-b3373b77e12e4b138848110884aedc37b56384e1.tar.bz2
- SkinCache now operates on SkinData instead of single images
Diffstat (limited to 'noncore/multimedia/opieplayer2/skin.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/multimedia/opieplayer2/skin.cpp37
1 files changed, 18 insertions, 19 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
@@ -25,2 +25,5 @@
+#include <qcache.h>
+#include <qmap.h>
+
#include <qpe/resource.h>
@@ -46,10 +49,12 @@ public:
- QImage loadImage( const QString &name );
+ SkinData *lookupAndTake( const QString &skinPath, const QString &fileNameInfix );
-private:
- typedef QDict<QImage> ImageCache;
+ void store( const QString &skinPath, const QString &fileNameInfix, SkinData *data );
- ImageCache m_cache;
+private:
+ typedef QCache<SkinData> DataCache;
+ typedef QCache<QPixmap> BackgroundPixmapCache;
- ThreadUtil::Mutex m_cacheGuard;
+ DataCache m_cache;
+ BackgroundPixmapCache m_backgroundPixmapCache;
};
@@ -70,3 +75,3 @@ Skin::~Skin()
{
- delete d;
+ SkinCache::self().store( m_skinPath, m_fileNameInfix, d );
}
@@ -76,3 +81,3 @@ void Skin::init( const QString &name )
m_skinPath = "opieplayer2/skins/" + name;
- d = new SkinData;
+ d = SkinCache::self().lookupAndTake( m_skinPath, m_fileNameInfix );
}
@@ -163,18 +168,12 @@ SkinCache::SkinCache()
{
- m_cache.setAutoDelete( true );
}
-QImage SkinCache::loadImage( const QString &name )
+SkinData *SkinCache::lookupAndTake( const QString &skinPath, const QString &fileNameInfix )
{
- ThreadUtil::AutoLock lock( m_cacheGuard );
-
- QImage *image = m_cache.find( name );
- if ( image ) {
- qDebug( "cache hit for %s", name.ascii() );
- return *image;
- }
+ return new SkinData;
+}
- image = new QImage( Resource::findPixmap( name ) );
- m_cache.insert( name, image );
- return *image;
+void SkinCache::store( const QString &skinPath, const QString &fileNameInfix, SkinData *data )
+{
+ delete data;
}