diff options
author | Paul Olav Tvete <paul.tvete@nokia.com> | 2010-08-04 12:12:57 (GMT) |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@nokia.com> | 2010-08-04 12:12:57 (GMT) |
commit | babf1ff43584b454ac24728fbf93bf291b9f36d1 (patch) | |
tree | c1d7567183d4a124fd4417a23e558d4fcef847ad /src/gui/image/qpixmap_s60.cpp | |
parent | 05e8e8056824dfa56830e12a6a50ec39018df6fc (diff) | |
parent | a6633a9cf1bb2083d0ce41f4667b3f9349a39865 (diff) | |
download | Qt-babf1ff43584b454ac24728fbf93bf291b9f36d1.zip Qt-babf1ff43584b454ac24728fbf93bf291b9f36d1.tar.gz Qt-babf1ff43584b454ac24728fbf93bf291b9f36d1.tar.bz2 |
Merge remote branch 'qt/master' into lighthouse-master
Conflicts:
configure
Diffstat (limited to 'src/gui/image/qpixmap_s60.cpp')
-rw-r--r-- | src/gui/image/qpixmap_s60.cpp | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/gui/image/qpixmap_s60.cpp b/src/gui/image/qpixmap_s60.cpp index a13c8c8..9d571b5 100644 --- a/src/gui/image/qpixmap_s60.cpp +++ b/src/gui/image/qpixmap_s60.cpp @@ -157,10 +157,10 @@ class QSymbianBitmapDataAccess { public: - bool heapWasLocked; + static int heapRefCount; QSysInfo::SymbianVersion symbianVersion; - explicit QSymbianBitmapDataAccess() : heapWasLocked(false) + explicit QSymbianBitmapDataAccess() { symbianVersion = QSysInfo::symbianVersion(); }; @@ -169,16 +169,22 @@ public: inline void beginDataAccess(CFbsBitmap *bitmap) { - if (symbianVersion == QSysInfo::SV_9_2) - heapWasLocked = qt_symbianFbsClient()->lockHeap(); - else + if (symbianVersion == QSysInfo::SV_9_2) { + if (heapRefCount == 0) + qt_symbianFbsClient()->lockHeap(); + } else { bitmap->LockHeap(ETrue); + } + + heapRefCount++; } inline void endDataAccess(CFbsBitmap *bitmap) { + heapRefCount--; + if (symbianVersion == QSysInfo::SV_9_2) { - if (!heapWasLocked) + if (heapRefCount == 0) qt_symbianFbsClient()->unlockHeap(); } else { bitmap->UnlockHeap(ETrue); @@ -186,6 +192,8 @@ public: } }; +int QSymbianBitmapDataAccess::heapRefCount = 0; + #define UPDATE_BUFFER() \ { \ |