summaryrefslogtreecommitdiff
authorzecke <zecke>2005-04-04 20:23:39 (UTC)
committer zecke <zecke>2005-04-04 20:23:39 (UTC)
commit8ea4d025ded75eee0918258121d54273aead66ad (patch) (unidiff)
tree9fd3ac0d4c355cc3e5c7345b2de8c7edd3b60db1
parentbe7d04d2b402e5515cfac3a2b32ed5831e15340b (diff)
downloadopie-8ea4d025ded75eee0918258121d54273aead66ad.zip
opie-8ea4d025ded75eee0918258121d54273aead66ad.tar.gz
opie-8ea4d025ded75eee0918258121d54273aead66ad.tar.bz2
Speed up start times of applications:
-Do not load MimeType when using Resource::loadIconSet we introduce a global boolean (like TT) What is bad: The boolean is visible outside of libqpe and we've that extern in the header... On the former we can use visibility attributes soon
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
@@ -16,24 +16,30 @@
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#define QTOPIA_INTERNAL_MIMEEXT 21#define QTOPIA_INTERNAL_MIMEEXT
22#include <qpe/qpeapplication.h> 22#include <qpe/qpeapplication.h>
23#include "resource.h" 23#include "resource.h"
24#include "mimetype.h" 24#include "mimetype.h"
25#include <qdir.h> 25#include <qdir.h>
26#include <qpixmapcache.h> 26#include <qpixmapcache.h>
27 27
28/*
29 * enable or disable the search for the icon without .png or .xpm
30 * suffix. We would use MimeType to lookup possible extensions...
31 */
32bool qpe_fast_findPixmap = false; // visible in libqpe
33
28// this namespace is just a workaround for a gcc bug 34// this namespace is just a workaround for a gcc bug
29// gcc exports inline functions in the generated file 35// gcc exports inline functions in the generated file
30// inlinepics_p.h 36// inlinepics_p.h
31 37
32#ifndef LIBQPE_NO_INLINE_IMAGES 38#ifndef LIBQPE_NO_INLINE_IMAGES
33namespace { 39namespace {
34#include "inlinepics_p.h" 40#include "inlinepics_p.h"
35} 41}
36#endif 42#endif
37 43
38/*! 44/*!
39 \class Resource resource.h 45 \class Resource resource.h
@@ -63,24 +69,26 @@ namespace {
63QPixmap Resource::loadPixmap( const QString &pix ) 69QPixmap Resource::loadPixmap( const QString &pix )
64{ 70{
65 QPixmap pm; // null pixmap 71 QPixmap pm; // null pixmap
66 QString key="QPE_"+pix; 72 QString key="QPE_"+pix;
67 if ( !QPixmapCache::find(key,pm) ) { 73 if ( !QPixmapCache::find(key,pm) ) {
68 QImage I = loadImage(pix); 74 QImage I = loadImage(pix);
69 if( I.isNull() ) { 75 if( I.isNull() ) {
70 qWarning( "Could not load %s", pix.latin1() ); 76 qWarning( "Could not load %s", pix.latin1() );
71 } else { 77 } else {
72 pm.convertFromImage(I); 78 pm.convertFromImage(I);
73 QPixmapCache::insert(key,pm); 79 QPixmapCache::insert(key,pm);
74 } 80 }
81 }else {
82 qWarning("In Cache for %s pixmap %s", qApp->argv()[0], pix.local8Bit().data() );
75 } 83 }
76 return pm; 84 return pm;
77} 85}
78 86
79/*! 87/*!
80 Returns the QBitmap called \a pix. You should avoid including 88 Returns the QBitmap called \a pix. You should avoid including
81 any filename type extension (e.g. .png, .xpm). 89 any filename type extension (e.g. .png, .xpm).
82*/ 90*/
83QBitmap Resource::loadBitmap( const QString &pix ) 91QBitmap Resource::loadBitmap( const QString &pix )
84{ 92{
85 QBitmap bm; 93 QBitmap bm;
86 bm = loadPixmap(pix); 94 bm = loadPixmap(pix);
@@ -131,35 +139,38 @@ QString Resource::findPixmap( const QString &pix )
131{ 139{
132 QString picsPath = QPEApplication::qpeDir() + "pics/"; 140 QString picsPath = QPEApplication::qpeDir() + "pics/";
133 QString f; 141 QString f;
134 142
135 // Common case optimizations... 143 // Common case optimizations...
136 f = picsPath + pix + ".png"; 144 f = picsPath + pix + ".png";
137 if ( QFile( f ).exists() ) 145 if ( QFile( f ).exists() )
138 return f; 146 return f;
139 f = picsPath + pix + ".xpm"; 147 f = picsPath + pix + ".xpm";
140 if ( QFile( f ).exists() ) 148 if ( QFile( f ).exists() )
141 return f; 149 return f;
142 150
151 if ( !qpe_fast_findPixmap ) {
152 printf("Doing slow search for %s %s\n", qApp->argv()[0], pix.local8Bit().data() );
143 // All formats... 153 // All formats...
144 QStringList exts = opie_imageExtensions(); 154 QStringList exts = opie_imageExtensions();
145 for ( QStringList::ConstIterator it = exts.begin(); it!=exts.end(); ++it ) { 155 for ( QStringList::ConstIterator it = exts.begin(); it!=exts.end(); ++it ) {
146 QString f = picsPath + pix + "." + *it; 156 QString f = picsPath + pix + "." + *it;
147 if ( QFile(f).exists() ) 157 if ( QFile(f).exists() )
148 return f; 158 return f;
149 } 159 }
150 160
151 // Finally, no (or existing) extension... 161 // Finally, no (or existing) extension...
152 if ( QFile( picsPath + pix ).exists() ) 162 if ( QFile( picsPath + pix ).exists() )
153 return picsPath + pix; 163 return picsPath + pix;
164 }
154 165
155 //qDebug("Cannot find pixmap: %s", pix.latin1()); 166 //qDebug("Cannot find pixmap: %s", pix.latin1());
156 return QString(); 167 return QString();
157} 168}
158 169
159/*! 170/*!
160 Returns a sound file for a sound called \a name. 171 Returns a sound file for a sound called \a name.
161 172
162 You should avoid including any filename type extension (e.g. .wav), 173 You should avoid including any filename type extension (e.g. .wav),
163 as the system will search for only those fileformats which are supported 174 as the system will search for only those fileformats which are supported
164 by the library. 175 by the library.
165 176
diff --git a/library/resource.h b/library/resource.h
index 1f1ba9a..4a3502a 100644
--- a/library/resource.h
+++ b/library/resource.h
@@ -33,25 +33,34 @@ public:
33 static QImage loadImage( const QString &name); 33 static QImage loadImage( const QString &name);
34 34
35 static QPixmap loadPixmap( const QString &name ); 35 static QPixmap loadPixmap( const QString &name );
36 static QBitmap loadBitmap( const QString &name ); 36 static QBitmap loadBitmap( const QString &name );
37 static QString findPixmap( const QString &name ); 37 static QString findPixmap( const QString &name );
38 38
39 static QIconSet loadIconSet( const QString &name ); 39 static QIconSet loadIconSet( const QString &name );
40 40
41 static QString findSound( const QString &name ); 41 static QString findSound( const QString &name );
42 static QStringList allSounds(); 42 static QStringList allSounds();
43}; 43};
44 44
45extern bool qpe_fast_findPixmap;
45// Inline for compatibility with SHARP ROMs 46// Inline for compatibility with SHARP ROMs
46inline QIconSet Resource::loadIconSet( const QString &pix ) 47inline QIconSet Resource::loadIconSet( const QString &pix )
47{ 48{
49 /*
50 * disable the slow load
51 */
52 bool oldMode = qpe_fast_findPixmap;
53 qpe_fast_findPixmap = true;
54
48 QPixmap dpm = loadPixmap( pix + "_disabled" ); 55 QPixmap dpm = loadPixmap( pix + "_disabled" );
49 QPixmap pm = loadPixmap( pix ); 56 QPixmap pm = loadPixmap( pix );
50 QIconSet is( pm ); 57 QIconSet is( pm );
51 if ( !dpm.isNull() ) 58 if ( !dpm.isNull() )
52 is.setPixmap( dpm, pm.width() <= 22 ? QIconSet::Small : QIconSet::Large, QIconSet::Disabled ); 59 is.setPixmap( dpm, pm.width() <= 22 ? QIconSet::Small : QIconSet::Large, QIconSet::Disabled );
60
61 qpe_fast_findPixmap = oldMode;
53 return is; 62 return is;
54} 63}
55 64
56 65
57#endif 66#endif