author | zecke <zecke> | 2005-04-04 20:23:39 (UTC) |
---|---|---|
committer | zecke <zecke> | 2005-04-04 20:23:39 (UTC) |
commit | 8ea4d025ded75eee0918258121d54273aead66ad (patch) (unidiff) | |
tree | 9fd3ac0d4c355cc3e5c7345b2de8c7edd3b60db1 | |
parent | be7d04d2b402e5515cfac3a2b32ed5831e15340b (diff) | |
download | opie-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
-rw-r--r-- | library/resource.cpp | 35 | ||||
-rw-r--r-- | library/resource.h | 11 |
2 files changed, 33 insertions, 13 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 | */ | ||
32 | bool 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 |
33 | namespace { | 39 | namespace { |
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 |
@@ -56,31 +62,33 @@ namespace { | |||
56 | */ | 62 | */ |
57 | 63 | ||
58 | /*! | 64 | /*! |
59 | Returns the QPixmap called \a pix. You should avoid including | 65 | Returns the QPixmap called \a pix. You should avoid including |
60 | any filename type extension (e.g. .png, .xpm). | 66 | any filename type extension (e.g. .png, .xpm). |
61 | */ | 67 | */ |
62 | #include <stdio.h> | 68 | #include <stdio.h> |
63 | QPixmap Resource::loadPixmap( const QString &pix ) | 69 | QPixmap 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 | */ |
83 | QBitmap Resource::loadBitmap( const QString &pix ) | 91 | QBitmap 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 | ||
143 | // All formats... | 151 | if ( !qpe_fast_findPixmap ) { |
144 | QStringList exts = opie_imageExtensions(); | 152 | printf("Doing slow search for %s %s\n", qApp->argv()[0], pix.local8Bit().data() ); |
145 | for ( QStringList::ConstIterator it = exts.begin(); it!=exts.end(); ++it ) { | 153 | // All formats... |
146 | QString f = picsPath + pix + "." + *it; | 154 | QStringList exts = opie_imageExtensions(); |
147 | if ( QFile(f).exists() ) | 155 | for ( QStringList::ConstIterator it = exts.begin(); it!=exts.end(); ++it ) { |
148 | return f; | 156 | QString f = picsPath + pix + "." + *it; |
149 | } | 157 | if ( QFile(f).exists() ) |
158 | return f; | ||
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 | ||
45 | extern bool qpe_fast_findPixmap; | ||
45 | // Inline for compatibility with SHARP ROMs | 46 | // Inline for compatibility with SHARP ROMs |
46 | inline QIconSet Resource::loadIconSet( const QString &pix ) | 47 | inline 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 |