From b3373b77e12e4b138848110884aedc37b56384e1 Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 11 Dec 2002 19:34:20 +0000 Subject: - SkinCache now operates on SkinData instead of single images --- (limited to 'noncore') 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 @@ -23,6 +23,9 @@ #include "skin.h" #include "singleton.h" +#include +#include + #include #include @@ -44,14 +47,16 @@ class SkinCache : public Singleton public: SkinCache(); - QImage loadImage( const QString &name ); + SkinData *lookupAndTake( const QString &skinPath, const QString &fileNameInfix ); -private: - typedef QDict ImageCache; + void store( const QString &skinPath, const QString &fileNameInfix, SkinData *data ); - ImageCache m_cache; +private: + typedef QCache DataCache; + typedef QCache BackgroundPixmapCache; - ThreadUtil::Mutex m_cacheGuard; + DataCache m_cache; + BackgroundPixmapCache m_backgroundPixmapCache; }; Skin::Skin( const QString &name, const QString &fileNameInfix ) @@ -68,13 +73,13 @@ Skin::Skin( const QString &fileNameInfix ) Skin::~Skin() { - delete d; + SkinCache::self().store( m_skinPath, m_fileNameInfix, d ); } void Skin::init( const QString &name ) { m_skinPath = "opieplayer2/skins/" + name; - d = new SkinData; + d = SkinCache::self().lookupAndTake( m_skinPath, m_fileNameInfix ); } void Skin::preload( const MediaWidget::SkinButtonInfo *skinButtonInfo, uint buttonCount ) @@ -161,22 +166,16 @@ QImage Skin::loadImage( const QString &fileName ) 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; } SkinLoader::SkinLoader() 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 @@ -25,8 +25,6 @@ #include #include -#include -#include #include "mediawidget.h" #include "threadutil.h" -- cgit v0.9.0.2