diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/io/qdiriterator.cpp | 19 | ||||
-rw-r--r-- | src/corelib/io/qdiriterator.h | 2 | ||||
-rw-r--r-- | src/corelib/plugin/qfactoryloader.cpp | 13 | ||||
-rw-r--r-- | src/corelib/tools/qdatetime.cpp | 3 | ||||
-rw-r--r-- | src/gui/kernel/qapplication_s60.cpp | 7 | ||||
-rw-r--r-- | src/gui/kernel/qt_s60_p.h | 1 | ||||
-rw-r--r-- | src/gui/kernel/qwidget_s60.cpp | 11 | ||||
-rw-r--r-- | src/gui/painting/qwindowsurface_s60.cpp | 8 |
8 files changed, 43 insertions, 21 deletions
diff --git a/src/corelib/io/qdiriterator.cpp b/src/corelib/io/qdiriterator.cpp index 30d2558..2039827 100644 --- a/src/corelib/io/qdiriterator.cpp +++ b/src/corelib/io/qdiriterator.cpp @@ -99,6 +99,18 @@ QT_BEGIN_NAMESPACE +class QDirIteratorPrivateIteratorStack : public QStack<QAbstractFileEngineIterator *> +{ +public: + ~QDirIteratorPrivateIteratorStack(); +}; + +QDirIteratorPrivateIteratorStack::~QDirIteratorPrivateIteratorStack() +{ + qDeleteAll(*this); +} + + class QDirIteratorPrivate { public: @@ -112,7 +124,7 @@ public: void checkAndPushDirectory(const QFileInfo &); bool matchesFilters(const QString &fileName, const QFileInfo &fi) const; - QAbstractFileEngine * const engine; + QScopedPointer<QAbstractFileEngine> engine; const QString path; const QStringList nameFilters; @@ -123,7 +135,7 @@ public: QVector<QRegExp> nameRegExps; #endif - QStack<QAbstractFileEngineIterator *> fileEngineIterators; + QDirIteratorPrivateIteratorStack fileEngineIterators; QFileInfo currentFileInfo; QFileInfo nextFileInfo; @@ -163,7 +175,6 @@ QDirIteratorPrivate::QDirIteratorPrivate(const QString &path, const QStringList */ QDirIteratorPrivate::~QDirIteratorPrivate() { - delete engine; } /*! @@ -431,8 +442,6 @@ QDirIterator::QDirIterator(const QString &path, const QStringList &nameFilters, */ QDirIterator::~QDirIterator() { - qDeleteAll(d->fileEngineIterators); - delete d; } /*! diff --git a/src/corelib/io/qdiriterator.h b/src/corelib/io/qdiriterator.h index 3117bf9..2639e02 100644 --- a/src/corelib/io/qdiriterator.h +++ b/src/corelib/io/qdiriterator.h @@ -84,7 +84,7 @@ public: private: Q_DISABLE_COPY(QDirIterator) - QDirIteratorPrivate *d; + QScopedPointer<QDirIteratorPrivate> d; friend class QDir; }; diff --git a/src/corelib/plugin/qfactoryloader.cpp b/src/corelib/plugin/qfactoryloader.cpp index 3b44b47..2e852f7 100644 --- a/src/corelib/plugin/qfactoryloader.cpp +++ b/src/corelib/plugin/qfactoryloader.cpp @@ -64,6 +64,7 @@ class QFactoryLoaderPrivate : public QObjectPrivate Q_DECLARE_PUBLIC(QFactoryLoader) public: QFactoryLoaderPrivate(){} + ~QFactoryLoaderPrivate(); mutable QMutex mutex; QByteArray iid; QList<QLibraryPrivate*> libraryList; @@ -76,6 +77,12 @@ public: void unloadPath(const QString &path); }; +QFactoryLoaderPrivate::~QFactoryLoaderPrivate() +{ + for (int i = 0; i < libraryList.count(); ++i) + libraryList.at(i)->release(); +} + QFactoryLoader::QFactoryLoader(const char *iid, const QString &suffix, Qt::CaseSensitivity cs) @@ -89,8 +96,8 @@ QFactoryLoader::QFactoryLoader(const char *iid, QMutexLocker locker(qt_factoryloader_mutex()); - qt_factory_loaders()->append(this); update(); + qt_factory_loaders()->append(this); } @@ -197,10 +204,6 @@ void QFactoryLoader::update() QFactoryLoader::~QFactoryLoader() { - Q_D(QFactoryLoader); - for (int i = 0; i < d->libraryList.count(); ++i) - d->libraryList.at(i)->release(); - QMutexLocker locker(qt_factoryloader_mutex()); qt_factory_loaders()->removeAll(this); } diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 74fbe0a..d43b376 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -1842,7 +1842,8 @@ QTime QTime::currentTime() #else t = localtime(<ime); #endif - + Q_CHECK_PTR(t); + ct.mds = MSECS_PER_HOUR * t->tm_hour + MSECS_PER_MIN * t->tm_min + 1000 * t->tm_sec + tv.tv_usec / 1000; #else diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index 54bd44f..d2183d2 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -352,8 +352,13 @@ void QSymbianControl::HandleLongTapEventL( const TPoint& aPenEventLocation, cons void QSymbianControl::HandlePointerEventL(const TPointerEvent& pEvent) { - //### refactor me, getting too complex m_longTapDetector->PointerEventL(pEvent); + QT_TRYCATCH_LEAVING(HandlePointerEvent(pEvent)); +} + +void QSymbianControl::HandlePointerEvent(const TPointerEvent& pEvent) +{ + //### refactor me, getting too complex QMouseEvent::Type type; Qt::MouseButton button; mapS60MouseEventTypeToQt(&type, &button, &pEvent); diff --git a/src/gui/kernel/qt_s60_p.h b/src/gui/kernel/qt_s60_p.h index a54eeb8..1ac6a8e 100644 --- a/src/gui/kernel/qt_s60_p.h +++ b/src/gui/kernel/qt_s60_p.h @@ -150,6 +150,7 @@ protected: void FocusChanged(TDrawNow aDrawNow); private: + void HandlePointerEvent(const TPointerEvent& aPointerEvent); TKeyResponse OfferKeyEvent(const TKeyEvent& aKeyEvent,TEventCode aType); TKeyResponse sendKeyEvent(QWidget *widget, QKeyEvent *keyEvent); void sendMouseEvent(QWidget *widget, QMouseEvent *mEvent); diff --git a/src/gui/kernel/qwidget_s60.cpp b/src/gui/kernel/qwidget_s60.cpp index 4f3a396..a21c0e7 100644 --- a/src/gui/kernel/qwidget_s60.cpp +++ b/src/gui/kernel/qwidget_s60.cpp @@ -323,7 +323,7 @@ void QWidgetPrivate::create_sys(WId window, bool /* initializeWindow */, bool de } else { stackingFlags = ECoeStackFlagStandard; } - control->ControlEnv()->AppUi()->AddToStackL(control, ECoeStackPriorityDefault, stackingFlags); + QT_TRAP_THROWING(control->ControlEnv()->AppUi()->AddToStackL(control, ECoeStackPriorityDefault, stackingFlags)); QTLWExtra *topExtra = topData(); topExtra->rwindow = control->DrawableWindow(); @@ -356,7 +356,7 @@ void QWidgetPrivate::create_sys(WId window, bool /* initializeWindow */, bool de } else { stackingFlags = ECoeStackFlagStandard; } - control->ControlEnv()->AppUi()->AddToStackL(control, ECoeStackPriorityDefault, stackingFlags); + QT_TRAP_THROWING(control->ControlEnv()->AppUi()->AddToStackL(control, ECoeStackPriorityDefault, stackingFlags)); WId parentw = parentWidget->effectiveWinId(); QT_TRAP_THROWING(control->SetContainerWindowL(*parentw)); @@ -763,10 +763,11 @@ void QWidgetPrivate::setWindowTitle_sys(const QString &caption) Q_ASSERT(q->testAttribute(Qt::WA_WState_Created)); CAknTitlePane* titlePane = S60->titlePane(); if(titlePane) { - if(caption.isEmpty()) - titlePane->SetTextToDefaultL(); - else + if(caption.isEmpty()) { + QT_TRAP_THROWING(titlePane->SetTextToDefaultL()); + } else { QT_TRAP_THROWING(titlePane->SetTextL(qt_QString2TPtrC(caption))); + } } } #else diff --git a/src/gui/painting/qwindowsurface_s60.cpp b/src/gui/painting/qwindowsurface_s60.cpp index ef69c68..d13dc87 100644 --- a/src/gui/painting/qwindowsurface_s60.cpp +++ b/src/gui/painting/qwindowsurface_s60.cpp @@ -85,8 +85,8 @@ QS60WindowSurface::QS60WindowSurface(QWidget* widget) QS60WindowSurface::~QS60WindowSurface() { - // Ensure that locking and unlocking of this surface were symmetrical - Q_ASSERT(QS60WindowSurfacePrivate::lockedSurface != this); + if (QS60WindowSurfacePrivate::lockedSurface == this) + unlockBitmapHeap(); delete d_ptr->bitmap; delete d_ptr; @@ -97,7 +97,9 @@ void QS60WindowSurface::beginPaint(const QRegion &rgn) if(!d_ptr->bitmap) return; - Q_ASSERT(!QS60WindowSurfacePrivate::lockedSurface); + if (QS60WindowSurfacePrivate::lockedSurface) + unlockBitmapHeap(); + QS60WindowSurfacePrivate::lockedSurface = this; lockBitmapHeap(); |