diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-09-10 23:30:47 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-09-10 23:30:47 (GMT) |
commit | 86f167ceaf92b386595d62a43bb5d00b4019c989 (patch) | |
tree | 1353330a67306f2fdae49468dfdf07c5912baaca | |
parent | 581df4debb1660ad1879fd59baf79f7fbde260ed (diff) | |
parent | ff98c93a33170b8fdc28b553490819b51cb80d86 (diff) | |
download | Qt-86f167ceaf92b386595d62a43bb5d00b4019c989.zip Qt-86f167ceaf92b386595d62a43bb5d00b4019c989.tar.gz Qt-86f167ceaf92b386595d62a43bb5d00b4019c989.tar.bz2 |
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-s60-public into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-s60-public:
Fix crash in QRuntimeGraphicsSystem due to destruction order.
Fix crash in OpenVG when failing to allocate large VGImages.
Updated 4.7.0 changelog
-rw-r--r-- | dist/changes-4.7.0 | 4 | ||||
-rw-r--r-- | src/gui/kernel/qapplication.cpp | 2 | ||||
-rw-r--r-- | src/gui/painting/qgraphicssystem_runtime.cpp | 6 | ||||
-rw-r--r-- | src/openvg/qvgimagepool.cpp | 13 |
4 files changed, 20 insertions, 5 deletions
diff --git a/dist/changes-4.7.0 b/dist/changes-4.7.0 index a5939e3..53e51f8 100644 --- a/dist/changes-4.7.0 +++ b/dist/changes-4.7.0 @@ -371,6 +371,10 @@ Qt for Symbian - QSplashScreen * [QTBUG-11129] Fixed a hanging bug in QSplashScreen on 3.1 devices. + - QS60Main... classes + * The future compatibility of QS60MainAppUi, QS60MainDocument and + QS60MainApplication are improved by removing the need for any + sub-class to link to Avkon functions that may not exist in future. **************************************************************************** diff --git a/src/gui/kernel/qapplication.cpp b/src/gui/kernel/qapplication.cpp index e99f6ca..d6fb630 100644 --- a/src/gui/kernel/qapplication.cpp +++ b/src/gui/kernel/qapplication.cpp @@ -1140,6 +1140,8 @@ QApplication::~QApplication() QApplicationPrivate::app_style = 0; delete QApplicationPrivate::app_icon; QApplicationPrivate::app_icon = 0; + delete QApplicationPrivate::graphics_system; + QApplicationPrivate::graphics_system = 0; #ifndef QT_NO_CURSOR d->cursor_list.clear(); #endif diff --git a/src/gui/painting/qgraphicssystem_runtime.cpp b/src/gui/painting/qgraphicssystem_runtime.cpp index 2828e9d..a9fbbee 100644 --- a/src/gui/painting/qgraphicssystem_runtime.cpp +++ b/src/gui/painting/qgraphicssystem_runtime.cpp @@ -94,7 +94,8 @@ QRuntimePixmapData::QRuntimePixmapData(const QRuntimeGraphicsSystem *gs, PixelTy QRuntimePixmapData::~QRuntimePixmapData() { - m_graphicsSystem->removePixmapData(this); + if (QApplicationPrivate::graphics_system) + m_graphicsSystem->removePixmapData(this); delete m_data; } @@ -258,7 +259,8 @@ QRuntimeWindowSurface::QRuntimeWindowSurface(const QRuntimeGraphicsSystem *gs, Q QRuntimeWindowSurface::~QRuntimeWindowSurface() { - m_graphicsSystem->removeWindowSurface(this); + if (QApplicationPrivate::graphics_system) + m_graphicsSystem->removeWindowSurface(this); } QPaintDevice *QRuntimeWindowSurface::paintDevice() diff --git a/src/openvg/qvgimagepool.cpp b/src/openvg/qvgimagepool.cpp index 78277aa..0c236ea 100644 --- a/src/openvg/qvgimagepool.cpp +++ b/src/openvg/qvgimagepool.cpp @@ -154,16 +154,23 @@ bool QVGImagePool::reclaimSpace(VGImageFormat format, Q_UNUSED(width); Q_UNUSED(height); - if (data) + bool succeeded = false; + bool wasInLRU = false; + if (data) { + wasInLRU = data->inLRU; moveToHeadOfLRU(data); + } QVGPixmapData *lrudata = pixmapLRU(); if (lrudata && lrudata != data) { lrudata->reclaimImages(); - return true; + succeeded = true; } - return false; + if (data && !wasInLRU) + removeFromLRU(data); + + return succeeded; } void QVGImagePool::hibernate() |