summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--library/resource.cpp11
-rw-r--r--library/resource.h9
2 files changed, 20 insertions, 0 deletions
diff --git a/library/resource.cpp b/library/resource.cpp
index 18139b9..da09892 100644
--- a/library/resource.cpp
+++ b/library/resource.cpp
@@ -20,16 +20,22 @@
#define QTOPIA_INTERNAL_MIMEEXT
#include <qpe/qpeapplication.h>
#include "resource.h"
#include "mimetype.h"
#include <qdir.h>
#include <qpixmapcache.h>
+/*
+ * enable or disable the search for the icon without .png or .xpm
+ * suffix. We would use MimeType to lookup possible extensions...
+ */
+bool qpe_fast_findPixmap = false; // visible in libqpe
+
// this namespace is just a workaround for a gcc bug
// gcc exports inline functions in the generated file
// inlinepics_p.h
#ifndef LIBQPE_NO_INLINE_IMAGES
namespace {
#include "inlinepics_p.h"
}
@@ -67,16 +73,18 @@ QPixmap Resource::loadPixmap( const QString &pix )
if ( !QPixmapCache::find(key,pm) ) {
QImage I = loadImage(pix);
if( I.isNull() ) {
qWarning( "Could not load %s", pix.latin1() );
} else {
pm.convertFromImage(I);
QPixmapCache::insert(key,pm);
}
+ }else {
+ qWarning("In Cache for %s pixmap %s", qApp->argv()[0], pix.local8Bit().data() );
}
return pm;
}
/*!
Returns the QBitmap called \a pix. You should avoid including
any filename type extension (e.g. .png, .xpm).
*/
@@ -135,27 +143,30 @@ QString Resource::findPixmap( const QString &pix )
// Common case optimizations...
f = picsPath + pix + ".png";
if ( QFile( f ).exists() )
return f;
f = picsPath + pix + ".xpm";
if ( QFile( f ).exists() )
return f;
+ if ( !qpe_fast_findPixmap ) {
+ printf("Doing slow search for %s %s\n", qApp->argv()[0], pix.local8Bit().data() );
// All formats...
QStringList exts = opie_imageExtensions();
for ( QStringList::ConstIterator it = exts.begin(); it!=exts.end(); ++it ) {
QString f = picsPath + pix + "." + *it;
if ( QFile(f).exists() )
return f;
}
// Finally, no (or existing) extension...
if ( QFile( picsPath + pix ).exists() )
return picsPath + pix;
+ }
//qDebug("Cannot find pixmap: %s", pix.latin1());
return QString();
}
/*!
Returns a sound file for a sound called \a name.
diff --git a/library/resource.h b/library/resource.h
index 1f1ba9a..4a3502a 100644
--- a/library/resource.h
+++ b/library/resource.h
@@ -37,21 +37,30 @@ public:
static QString findPixmap( const QString &name );
static QIconSet loadIconSet( const QString &name );
static QString findSound( const QString &name );
static QStringList allSounds();
};
+extern bool qpe_fast_findPixmap;
// Inline for compatibility with SHARP ROMs
inline QIconSet Resource::loadIconSet( const QString &pix )
{
+ /*
+ * disable the slow load
+ */
+ bool oldMode = qpe_fast_findPixmap;
+ qpe_fast_findPixmap = true;
+
QPixmap dpm = loadPixmap( pix + "_disabled" );
QPixmap pm = loadPixmap( pix );
QIconSet is( pm );
if ( !dpm.isNull() )
is.setPixmap( dpm, pm.width() <= 22 ? QIconSet::Small : QIconSet::Large, QIconSet::Disabled );
+
+ qpe_fast_findPixmap = oldMode;
return is;
}
#endif