diff options
-rw-r--r-- | src/corelib/kernel/qvariant.cpp | 12 | ||||
-rw-r--r-- | src/corelib/kernel/qvariant_p.h | 1 | ||||
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 3 | ||||
-rw-r--r-- | src/gui/kernel/qguivariant.cpp | 8 | ||||
-rw-r--r-- | src/widgets/kernel/qwidgetsvariant.cpp | 8 | ||||
-rw-r--r-- | tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp | 28 |
6 files changed, 28 insertions, 32 deletions
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index cbef47566c..19b999a1e2 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -96,8 +96,6 @@ public: { Handlers[name] = handler; } - - inline void unregisterHandler(const QModulesPrivate::Names name); }; } // namespace @@ -892,21 +890,11 @@ Q_CORE_EXPORT const QVariant::Handler *qcoreVariantHandler() return &qt_kernel_variant_handler; } -inline void HandlersManager::unregisterHandler(const QModulesPrivate::Names name) -{ - Handlers[name] = &qt_dummy_variant_handler; -} - Q_CORE_EXPORT void QVariantPrivate::registerHandler(const int /* Modules::Names */name, const QVariant::Handler *handler) { handlerManager.registerHandler(static_cast<QModulesPrivate::Names>(name), handler); } -Q_CORE_EXPORT void QVariantPrivate::unregisterHandler(const int /* Modules::Names */ name) -{ - handlerManager.unregisterHandler(static_cast<QModulesPrivate::Names>(name)); -} - /*! \class QVariant \brief The QVariant class acts like a union for the most common Qt data types. diff --git a/src/corelib/kernel/qvariant_p.h b/src/corelib/kernel/qvariant_p.h index 75c94ed401..2f5c4f54ee 100644 --- a/src/corelib/kernel/qvariant_p.h +++ b/src/corelib/kernel/qvariant_p.h @@ -459,7 +459,6 @@ private: namespace QVariantPrivate { Q_CORE_EXPORT void registerHandler(const int /* Modules::Names */ name, const QVariant::Handler *handler); -Q_CORE_EXPORT void unregisterHandler(const int /* Modules::Names */ name); } #if !defined(QT_NO_DEBUG_STREAM) diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index d72647091d..c6ff5bb230 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -143,7 +143,6 @@ QFont *QGuiApplicationPrivate::app_font = 0; bool QGuiApplicationPrivate::obey_desktop_settings = true; extern void qRegisterGuiVariant(); -extern void qUnregisterGuiVariant(); extern void qInitDrawhelperAsm(); extern void qInitImageConversions(); @@ -358,8 +357,6 @@ QGuiApplication::~QGuiApplication() clearPalette(); - qUnregisterGuiVariant(); - #ifndef QT_NO_CURSOR d->cursor_list.clear(); #endif diff --git a/src/gui/kernel/qguivariant.cpp b/src/gui/kernel/qguivariant.cpp index 50d3f0b7d1..531afeef2d 100644 --- a/src/gui/kernel/qguivariant.cpp +++ b/src/gui/kernel/qguivariant.cpp @@ -389,12 +389,4 @@ void qRegisterGuiVariant() } Q_CONSTRUCTOR_FUNCTION(qRegisterGuiVariant) -void qUnregisterGuiVariant() -{ - QVariantPrivate::unregisterHandler(QModulesPrivate::Gui); - qMetaTypeGuiHelper = 0; -} -Q_DESTRUCTOR_FUNCTION(qUnregisterGuiVariant) - - QT_END_NAMESPACE diff --git a/src/widgets/kernel/qwidgetsvariant.cpp b/src/widgets/kernel/qwidgetsvariant.cpp index 81847681e4..f6817cec8a 100644 --- a/src/widgets/kernel/qwidgetsvariant.cpp +++ b/src/widgets/kernel/qwidgetsvariant.cpp @@ -184,12 +184,4 @@ void qRegisterWidgetsVariant() } Q_CONSTRUCTOR_FUNCTION(qRegisterWidgetsVariant) -void qUnregisterWidgetsVariant() -{ - QVariantPrivate::unregisterHandler(QModulesPrivate::Widgets); - qMetaTypeWidgetsHelper = 0; -} -Q_DESTRUCTOR_FUNCTION(qUnregisterWidgetsVariant) - - QT_END_NAMESPACE diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp index 89c8f77e4a..b6cb6b3632 100644 --- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp +++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp @@ -58,6 +58,7 @@ #include <qmatrix4x4.h> #include <qpen.h> #include <qpolygon.h> +#include <qpalette.h> #include <qtransform.h> #include <qvector2d.h> #include <qvector3d.h> @@ -286,6 +287,9 @@ private slots: void loadQt5Stream(); void saveQt5Stream_data(); void saveQt5Stream(); + + void guiVariantAtExit(); + void widgetsVariantAtExit(); private: void dataStream_data(QDataStream::Version version); void loadQVariantFromDataStream(QDataStream::Version version); @@ -3735,5 +3739,29 @@ void tst_QVariant::debugStreamType() QVERIFY(msgHandler.testPassed()); } +void tst_QVariant::guiVariantAtExit() +{ + // crash test, it should not crash at QGuiApplication exit + static QVariant cursor = QCursor(); + static QVariant point = QPoint(); + static QVariant image = QImage(); + static QVariant pallete = QPalette(); + Q_UNUSED(cursor); + Q_UNUSED(point); + Q_UNUSED(image); + Q_UNUSED(pallete); + QVERIFY(true); +} + +void tst_QVariant::widgetsVariantAtExit() +{ + // crash test, it should not crash at QGuiApplication exit + static QVariant icon= QIcon(); + static QVariant sizePolicy = QSizePolicy(); + Q_UNUSED(icon); + Q_UNUSED(sizePolicy); + QVERIFY(true); +} + QTEST_MAIN(tst_QVariant) #include "tst_qvariant.moc" |