From 03daf059647c0a0222e8774b0a083f58c8e64934 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 2 Mar 2010 11:03:12 +0100 Subject: QMetaType: Now we can register typedefs. Task-number: QTBUG-6833 Task-number: QTBUG-937 Reviewed-by: Brad Reviewed-by: Kent Hansen --- .../snippets/code/src_corelib_kernel_qmetatype.cpp | 5 ++ src/corelib/kernel/qmetatype.cpp | 60 +++++++++++++++++++++- src/corelib/kernel/qmetatype.h | 37 ++++++++++++- tests/auto/qmetaobject/tst_qmetaobject.cpp | 20 ++++++++ tests/auto/qmetatype/tst_qmetatype.cpp | 14 ++++- tests/auto/qobject/tst_qobject.cpp | 16 ++++++ 6 files changed, 146 insertions(+), 6 deletions(-) diff --git a/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp b/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp index bff72a0..19e37ba 100644 --- a/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp +++ b/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp @@ -108,3 +108,8 @@ int id = qRegisterMetaType(); int id = qMetaTypeId(); // id is now QMetaType::QString id = qMetaTypeId(); // compile error if MyStruct not declared //! [8] + +//! [9] +typedef QString CustomString; +qRegisterMetaType("CustomString"); +//! [9] diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 779b69b..be506b4 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -352,6 +352,7 @@ public: QMetaType::SaveOperator saveOp; QMetaType::LoadOperator loadOp; #endif + int alias; }; Q_DECLARE_TYPEINFO(QCustomTypeInfo, Q_MOVABLE_TYPE); @@ -436,8 +437,11 @@ static int qMetaTypeCustomType_unlocked(const char *typeName, int length) return 0; for (int v = 0; v < ct->count(); ++v) { - if ((length == ct->at(v).typeName.size()) - && !strcmp(typeName, ct->at(v).typeName.constData())) { + const QCustomTypeInfo &customInfo = ct->at(v); + if ((length == customInfo.typeName.size()) + && !strcmp(typeName, customInfo.typeName.constData())) { + if (customInfo.alias >= 0) + return customInfo.alias; return v + QMetaType::User; } } @@ -475,6 +479,7 @@ int QMetaType::registerType(const char *typeName, Destructor destructor, inf.typeName = normalizedTypeName; inf.constr = constructor; inf.destr = destructor; + inf.alias = -1; idx = ct->size() + User; ct->append(inf); } @@ -482,6 +487,51 @@ int QMetaType::registerType(const char *typeName, Destructor destructor, return idx; } +/*! \internal + \since 4.7 + + Registers a user type for marshalling, as an alias of another type (typedef) +*/ +int QMetaType::registerTypedef(const char* typeName, int aliasId) +{ + QVector *ct = customTypes(); + if (!ct || !typeName) + return -1; + +#ifdef QT_NO_QOBJECT + NS(QByteArray) normalizedTypeName = typeName; +#else + NS(QByteArray) normalizedTypeName = QMetaObject::normalizedType(typeName); +#endif + + int idx = qMetaTypeStaticType(normalizedTypeName.constData(), + normalizedTypeName.size()); + + if (idx) { + Q_ASSERT(idx == aliasId); + return idx; + } + + QWriteLocker locker(customTypesLock()); + idx = qMetaTypeCustomType_unlocked(normalizedTypeName.constData(), + normalizedTypeName.size()); + + if (idx) { + Q_ASSERT(idx == aliasId); + return idx; + } + + if (!idx) { + QCustomTypeInfo inf; + inf.typeName = normalizedTypeName; + inf.alias = aliasId; + inf.constr = 0; + inf.destr = 0; + ct->append(inf); + } + return aliasId; +} + /*! \since 4.4 @@ -507,6 +557,7 @@ void QMetaType::unregisterType(const char *typeName) inf.typeName.clear(); inf.constr = 0; inf.destr = 0; + inf.alias = -1; } } } @@ -1349,6 +1400,11 @@ void QMetaType::destroy(int type, void *data) \snippet doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp 4 + This function is usefull to register typedefs so they can be used + by QMetaProperty, or in QueuedConnections + + \snippet doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp 9 + \sa qRegisterMetaTypeStreamOperators(), QMetaType::isRegistered(), Q_DECLARE_METATYPE() */ diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 33126e8..2ed4a1f 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -113,6 +113,7 @@ public: #endif static int registerType(const char *typeName, Destructor destructor, Constructor constructor); + static int registerTypedef(const char *typeName, int aliasId); static int type(const char *typeName); static const char *typeName(int type); static bool isRegistered(int type); @@ -154,13 +155,31 @@ void qMetaTypeLoadHelper(QDataStream &stream, T *t) } #endif // QT_NO_DATASTREAM +template struct QMetaTypeId2; + +namespace QtPrivate { + template ::Defined> + struct QMetaTypeIdHelper { + static inline int qt_metatype_id() + { return QMetaTypeId2::qt_metatype_id(); } + }; + template struct QMetaTypeIdHelper { + static inline int qt_metatype_id() + { return -1; } + }; +} + template int qRegisterMetaType(const char *typeName #ifndef qdoc - , T * /* dummy */ = 0 + , typename QMetaTypeId2::CustomType * dummy = 0 #endif ) { + const int typedefOf = dummy ? -1 : QtPrivate::QMetaTypeIdHelper::qt_metatype_id(); + if (typedefOf != -1) + return QMetaType::registerTypedef(typeName, typedefOf); + typedef void*(*ConstructPtr)(const T*); ConstructPtr cptr = qMetaTypeConstructHelper; typedef void(*DeletePtr)(T*); @@ -170,6 +189,17 @@ int qRegisterMetaType(const char *typeName reinterpret_cast(cptr)); } +template +int qRegisterMetaType(const char *typeName +#ifndef qdoc + , typename QMetaTypeId2::BuiltinType * /* dummy */ = 0 +#endif +) +{ + return QMetaType::registerTypedef(typeName, QMetaTypeId2::MetaType); +} + + #ifndef QT_NO_DATASTREAM template void qRegisterMetaTypeStreamOperators(const char *typeName @@ -198,6 +228,7 @@ struct QMetaTypeId template struct QMetaTypeId2 { + typedef T CustomType; enum { Defined = QMetaTypeId::Defined }; static inline int qt_metatype_id() { return QMetaTypeId::qt_metatype_id(); } }; @@ -254,7 +285,8 @@ inline int qRegisterMetaTypeStreamOperators() { \ static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); \ if (!metatype_id) \ - metatype_id = qRegisterMetaType< TYPE >(#TYPE); \ + metatype_id = qRegisterMetaType< TYPE >(#TYPE, \ + reinterpret_cast< TYPE *>(quintptr(-1))); \ return metatype_id; \ } \ }; \ @@ -264,6 +296,7 @@ inline int qRegisterMetaTypeStreamOperators() QT_BEGIN_NAMESPACE \ template<> struct QMetaTypeId2 \ { \ + typedef TYPE BuiltinType; \ enum { Defined = 1, MetaType = QMetaType::NAME }; \ static inline int qt_metatype_id() { return QMetaType::NAME; } \ }; \ diff --git a/tests/auto/qmetaobject/tst_qmetaobject.cpp b/tests/auto/qmetaobject/tst_qmetaobject.cpp index bd54975..bb4a0d2 100644 --- a/tests/auto/qmetaobject/tst_qmetaobject.cpp +++ b/tests/auto/qmetaobject/tst_qmetaobject.cpp @@ -157,6 +157,7 @@ private slots: void invokeQueuedMetaMember(); void invokeCustomTypes(); void invokeMetaConstructor(); + void invokeTypedefTypes(); void qtMetaObjectInheritance(); void normalizedSignature_data(); void normalizedSignature(); @@ -598,6 +599,8 @@ struct MyType int i1, i2, i3; }; +typedef QString CustomString; + class QtTestCustomObject: public QObject { Q_OBJECT @@ -607,6 +610,9 @@ public: public slots: void sl1(MyType myType); +signals: + void sig_custom(const CustomString &string); + public: int sum; }; @@ -664,6 +670,20 @@ void tst_QMetaObject::invokeMetaConstructor() } } +void tst_QMetaObject::invokeTypedefTypes() +{ + qRegisterMetaType("CustomString"); + QtTestCustomObject obj; + QSignalSpy spy(&obj, SIGNAL(sig_custom(CustomString))); + + QCOMPARE(spy.count(), 0); + CustomString arg("hello"); + QVERIFY(QMetaObject::invokeMethod(&obj, "sig_custom", Q_ARG(CustomString, arg))); + QCOMPARE(spy.count(), 1); + QCOMPARE(spy.at(0).count(), 1); + QCOMPARE(spy.at(0).at(0), QVariant(arg)); +} + void tst_QMetaObject::normalizedSignature_data() { QTest::addColumn("signature"); diff --git a/tests/auto/qmetatype/tst_qmetatype.cpp b/tests/auto/qmetatype/tst_qmetatype.cpp index 943b05b..f4e122f 100644 --- a/tests/auto/qmetatype/tst_qmetatype.cpp +++ b/tests/auto/qmetatype/tst_qmetatype.cpp @@ -241,6 +241,9 @@ void tst_QMetaType::construct() QMetaType::destroy(QMetaType::QSize, size); } +typedef QString CustomString; +Q_DECLARE_METATYPE(CustomString) //this line is useless + void tst_QMetaType::typedefs() { QCOMPARE(QMetaType::type("long long"), int(QMetaType::LongLong)); @@ -256,6 +259,13 @@ void tst_QMetaType::typedefs() // make sure the qreal typeId is the type id of the type it's defined to QCOMPARE(QMetaType::type("qreal"), ::qMetaTypeId()); + + qRegisterMetaType("CustomString"); + QCOMPARE(QMetaType::type("CustomString"), ::qMetaTypeId()); + + typedef Whity WhityDouble; + qRegisterMetaType("WhityDouble"); + QCOMPARE(QMetaType::type("WhityDouble"), ::qMetaTypeId()); } class IsRegisteredDummyType { }; @@ -286,9 +296,9 @@ void tst_QMetaType::isRegistered() QCOMPARE(QMetaType::isRegistered(typeId), registered); } -class RegUnreg +class RegUnreg { -public: +public: RegUnreg() {}; RegUnreg(const RegUnreg &) {}; ~RegUnreg() {}; diff --git a/tests/auto/qobject/tst_qobject.cpp b/tests/auto/qobject/tst_qobject.cpp index 3896d70..c8f846e 100644 --- a/tests/auto/qobject/tst_qobject.cpp +++ b/tests/auto/qobject/tst_qobject.cpp @@ -1112,6 +1112,8 @@ void tst_QObject::streamCustomTypes() QCOMPARE(instanceCount, 0); } +typedef QString CustomString; + class PropertyObject : public QObject { Q_OBJECT @@ -1125,6 +1127,7 @@ class PropertyObject : public QObject Q_PROPERTY(CustomType* custom READ custom WRITE setCustom) Q_PROPERTY(float myFloat READ myFloat WRITE setMyFloat) Q_PROPERTY(qreal myQReal READ myQReal WRITE setMyQReal) + Q_PROPERTY(CustomString customString READ customString WRITE setCustomString ) public: enum Alpha { @@ -1163,6 +1166,9 @@ public: void setMyQReal(qreal value) { m_qreal = value; } qreal myQReal() const { return m_qreal; } + CustomString customString() const { return m_customString; } + void setCustomString(const QString &string) { m_customString = string; } + private: Alpha m_alpha; Priority m_priority; @@ -1172,6 +1178,7 @@ private: CustomType *m_custom; float m_float; qreal m_qreal; + CustomString m_customString; }; Q_DECLARE_METATYPE(PropertyObject::Priority) @@ -1626,6 +1633,15 @@ void tst_QObject::property() QCOMPARE(qVariantValue(object.property("priority")), PropertyObject::Low); object.setProperty("priority", var); QCOMPARE(qVariantValue(object.property("priority")), PropertyObject::High); + + qRegisterMetaType("CustomString"); + QVERIFY(mo->indexOfProperty("customString") != -1); + QCOMPARE(object.property("customString").toString(), QString()); + object.setCustomString("String1"); + QCOMPARE(object.property("customString"), QVariant("String1")); + QVERIFY(object.setProperty("customString", "String2")); + QCOMPARE(object.property("customString"), QVariant("String2")); + QVERIFY(!object.setProperty("customString", QVariant())); } void tst_QObject::metamethod() -- cgit v0.12 From e614e3548bbe505c75e8b3a54f44f07522a6ecf5 Mon Sep 17 00:00:00 2001 From: Tom Cooksey Date: Tue, 2 Mar 2010 16:41:16 +0100 Subject: Add and use QGLContextPrivate::eglSurfaceForDevice() The QGLContext only stores the EGLSurface for QWidgets & QGLWidgets, other device types like QPixmap & QGLPixelBuffer store the surface themsselves. With this patch it is possible to create a QGLContext on a QPixmap, make it current and render GL to that QPixmap on X11. Reviewed-By: TrustMe --- src/opengl/qgl_egl.cpp | 33 ++++++++++++++++++++++++++++++--- src/opengl/qgl_p.h | 1 + src/opengl/qgl_x11egl.cpp | 2 +- src/opengl/qglpixelbuffer.h | 1 + 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/opengl/qgl_egl.cpp b/src/opengl/qgl_egl.cpp index f1abab8..7bfcf27 100644 --- a/src/opengl/qgl_egl.cpp +++ b/src/opengl/qgl_egl.cpp @@ -40,8 +40,14 @@ ****************************************************************************/ #include +#include #include "qgl_p.h" #include "qgl_egl_p.h" +#include "qglpixelbuffer_p.h" + +#ifdef Q_WS_X11 +#include +#endif QT_BEGIN_NAMESPACE @@ -154,12 +160,12 @@ void QGLContext::reset() void QGLContext::makeCurrent() { Q_D(QGLContext); - if (!d->valid || !d->eglContext || d->eglSurface == EGL_NO_SURFACE) { + if (!d->valid || !d->eglContext || d->eglSurfaceForDevice() == EGL_NO_SURFACE) { qWarning("QGLContext::makeCurrent(): Cannot make invalid context current"); return; } - if (d->eglContext->makeCurrent(d->eglSurface)) + if (d->eglContext->makeCurrent(d->eglSurfaceForDevice())) QGLContextPrivate::setCurrentContext(this); } @@ -179,7 +185,7 @@ void QGLContext::swapBuffers() const if (!d->valid || !d->eglContext) return; - d->eglContext->swapBuffers(d->eglSurface); + d->eglContext->swapBuffers(d->eglSurfaceForDevice()); } void QGLContextPrivate::destroyEglSurfaceForDevice() @@ -202,6 +208,27 @@ void QGLContextPrivate::destroyEglSurfaceForDevice() } } +EGLSurface QGLContextPrivate::eglSurfaceForDevice() const +{ + if (paintDevice->devType() == QInternal::Widget) + return eglSurface; + if (paintDevice->devType() == QInternal::Pixmap) { +#ifdef Q_WS_X11 + QPixmapData *pmd = static_cast(paintDevice)->data_ptr().data(); + if (pmd->classId() == QPixmapData::X11Class) { + QX11PixmapData* x11PixmapData = static_cast(pmd); + return (EGLSurface)x11PixmapData->gl_surface; + } else +#endif + return eglSurface; + } + if (paintDevice->devType() == QInternal::Pbuffer) { + QGLPixelBuffer* pbuf = static_cast(paintDevice); + return pbuf->d_func()->pbuf; + } + return EGL_NO_SURFACE; +} + void QGLWidget::setMouseTracking(bool enable) { QWidget::setMouseTracking(enable); diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h index ecd8b43..b828bea 100644 --- a/src/opengl/qgl_p.h +++ b/src/opengl/qgl_p.h @@ -356,6 +356,7 @@ public: QEglContext *eglContext; EGLSurface eglSurface; void destroyEglSurfaceForDevice(); + EGLSurface eglSurfaceForDevice() const; #elif defined(Q_WS_X11) || defined(Q_WS_MAC) void* cx; #endif diff --git a/src/opengl/qgl_x11egl.cpp b/src/opengl/qgl_x11egl.cpp index bcde8c4..ba05e72 100644 --- a/src/opengl/qgl_x11egl.cpp +++ b/src/opengl/qgl_x11egl.cpp @@ -229,7 +229,7 @@ bool QGLContext::chooseContext(const QGLContext* shareContext) // QWidget - yes, create the EGLSurface and store it in QGLContextPrivate::eglSurface // QGLWidget - yes, create the EGLSurface and store it in QGLContextPrivate::eglSurface // QPixmap - yes, create the EGLSurface but store it in QX11PixmapData::gl_surface - // QGLPixelBuffer - no, it creates the surface itself + // QGLPixelBuffer - no, it creates the surface itself and stores it in QGLPixelBufferPrivate::pbuf if (devType == QInternal::Widget) { if (d->eglSurface != EGL_NO_SURFACE) diff --git a/src/opengl/qglpixelbuffer.h b/src/opengl/qglpixelbuffer.h index 3304dd8..d9c7e3e 100644 --- a/src/opengl/qglpixelbuffer.h +++ b/src/opengl/qglpixelbuffer.h @@ -112,6 +112,7 @@ private: friend class QGLWindowSurface; friend class QGLPaintDevice; friend class QGLPBufferGLPaintDevice; + friend class QGLContextPrivate; }; QT_END_NAMESPACE -- cgit v0.12 From 6e0565eaa293b84f7583947822fe5939cb47af89 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Tue, 2 Mar 2010 15:39:28 +0100 Subject: remove a warning on windows and simplify a bit the code --- src/gui/dialogs/qfontdialog.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/gui/dialogs/qfontdialog.cpp b/src/gui/dialogs/qfontdialog.cpp index a4bf15d..b987611 100644 --- a/src/gui/dialogs/qfontdialog.cpp +++ b/src/gui/dialogs/qfontdialog.cpp @@ -988,13 +988,10 @@ void QFontDialog::open(QObject *receiver, const char *member) */ void QFontDialog::setVisible(bool visible) { - Q_D(QFontDialog); - if (visible) { - if (testAttribute(Qt::WA_WState_ExplicitShowHide) && !testAttribute(Qt::WA_WState_Hidden)) - return; - } else if (testAttribute(Qt::WA_WState_ExplicitShowHide) && testAttribute(Qt::WA_WState_Hidden)) + if (testAttribute(Qt::WA_WState_ExplicitShowHide) && testAttribute(Qt::WA_WState_Hidden) != visible) return; #ifdef Q_WS_MAC + Q_D(QFontDialog); if (d->canBeNativeDialog()){ if (d->setVisible_sys(visible)){ d->nativeDialogInUse = true; -- cgit v0.12 From 60324267fbb8a8554e62aaf9ef01360709292320 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Tue, 2 Mar 2010 16:27:46 +0100 Subject: Make the sub-menu accessible via its shortcut even if it is the current Task-number: QTBUG-7411 Reviewed-by: ogoffart --- src/gui/widgets/qmenu.cpp | 12 ++---------- tests/auto/qmenu/tst_qmenu.cpp | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp index e2cf25b..5db14b8 100644 --- a/src/gui/widgets/qmenu.cpp +++ b/src/gui/widgets/qmenu.cpp @@ -487,7 +487,7 @@ void QMenuPrivate::popupAction(QAction *action, int delay, bool activateFirst) if (action && action->isEnabled()) { if (!delay) q->internalDelayedPopup(); - else + else if (!QMenuPrivate::menuDelayTimer.isActive() && (!action->menu() || !action->menu()->isVisible())) QMenuPrivate::menuDelayTimer.start(delay, q); if (activateFirst && action->menu()) action->menu()->d_func()->setFirstActionActive(); @@ -543,15 +543,6 @@ void QMenuPrivate::setCurrentAction(QAction *action, int popup, SelectionReason { Q_Q(QMenu); tearoffHighlighted = 0; - if (action == currentAction) { - if (!action || !action->menu() || action->menu() == activeMenu) { - if(QMenu *menu = qobject_cast(causedPopup.widget)) { - if(causedPopup.action && menu->d_func()->activeMenu == q) - menu->d_func()->setCurrentAction(causedPopup.action, 0, reason, false); - } - } - return; - } if (currentAction) q->update(actionRect(currentAction)); @@ -565,6 +556,7 @@ void QMenuPrivate::setCurrentAction(QAction *action, int popup, SelectionReason #ifdef QT3_SUPPORT emitHighlighted = action; #endif + currentAction = action; if (action) { if (!action->isSeparator()) { diff --git a/tests/auto/qmenu/tst_qmenu.cpp b/tests/auto/qmenu/tst_qmenu.cpp index 3559b15..e10d7ee 100644 --- a/tests/auto/qmenu/tst_qmenu.cpp +++ b/tests/auto/qmenu/tst_qmenu.cpp @@ -105,6 +105,7 @@ private slots: void deleteActionInTriggered(); void pushButtonPopulateOnAboutToShow(); void QTBUG7907_submenus_autoselect(); + void QTBUG7411_submenus_activate(); protected slots: void onActivated(QAction*); void onHighlighted(QAction*); @@ -948,6 +949,25 @@ void tst_QMenu::QTBUG7907_submenus_autoselect() QVERIFY(!subset.isVisible()); } +void tst_QMenu::QTBUG7411_submenus_activate() +{ + QMenu menu("Test Menu"); + QAction *act = menu.addAction("foo"); + QMenu sub1("&sub1"); + sub1.addAction("foo"); + sub1.setTitle("&sub1"); + QAction *act1 = menu.addMenu(&sub1); + menu.show(); + QTest::qWaitForWindowShown(&menu); + menu.setActiveAction(act); + QTest::keyPress(&menu, Qt::Key_Down); + QCOMPARE(menu.activeAction(), act1); + QVERIFY(!sub1.isVisible()); + QTest::keyPress(&menu, Qt::Key_S); + QTRY_VERIFY(sub1.isVisible()); +} + + QTEST_MAIN(tst_QMenu) #include "tst_qmenu.moc" -- cgit v0.12 From a4af046157c7ef94990f9520c4611597ff271c57 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Wed, 3 Mar 2010 11:42:12 +0100 Subject: fixed a memory leak when restoring a state in QMainWindow Task-number: QTBUG-8631 --- src/gui/widgets/qdockarealayout.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/gui/widgets/qdockarealayout.cpp b/src/gui/widgets/qdockarealayout.cpp index c1b1ea3..f44858a 100644 --- a/src/gui/widgets/qdockarealayout.cpp +++ b/src/gui/widgets/qdockarealayout.cpp @@ -1985,7 +1985,10 @@ bool QDockAreaLayoutInfo::restoreState(QDataStream &stream, QList emit widget->dockLocationChanged(toDockWidgetArea(dockPos)); } } - + if (testing) { + //was it is not really added to the layout, we need to delete the object here + delete item.widgetItem; + } } } else if (nextMarker == SequenceMarker) { int dummy; -- cgit v0.12 From 24cf789b68f21b2d1ea31580e55c91a2cae25a12 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Wed, 3 Mar 2010 11:02:11 +0100 Subject: Fix compilation of Q_DECLARE_METATYPE(QVariant) by introducing QMetaType::QVariant After 03daf059647c0a0222e8774b0a083f58c8e64934 With the recent change in QMetaType, qRegisterMetaType instantiates QMetaTypeId2, which itself instantiates QMetaTypeId if T is not builtin into QMetaType. But qRegisterMetaType is called in qvariant.h which makes further call to Q_DECLARE_METATYPE(QVariant) to fail as QMetaTypeId would have been instantied before The solution is to make QVariant a builtin type. Reviewed-by: Thierry --- src/corelib/kernel/qmetatype.cpp | 15 +++++++++++++++ src/corelib/kernel/qmetatype.h | 5 ++++- src/corelib/kernel/qvariant.h | 3 +-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index be506b4..8f2d025 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -133,6 +133,7 @@ QT_BEGIN_NAMESPACE \value Float \c float \value QObjectStar QObject * \value QWidgetStar QWidget * + \value QVariant QVariant \value QColorGroup QColorGroup \value QCursor QCursor @@ -300,6 +301,7 @@ static const struct { const char * typeName; int typeNameLength; int type; } typ QT_ADD_STATIC_METATYPE("float", QMetaType::Float), QT_ADD_STATIC_METATYPE("QObject*", QMetaType::QObjectStar), QT_ADD_STATIC_METATYPE("QWidget*", QMetaType::QWidgetStar), + QT_ADD_STATIC_METATYPE("QVariant", QMetaType::QVariant), /* Type aliases - order doesn't matter */ QT_ADD_STATIC_METATYPE("unsigned long", QMetaType::ULong), @@ -686,6 +688,9 @@ bool QMetaType::save(QDataStream &stream, int type, const void *data) case QMetaType::QVariantList: stream << *static_cast(data); break; + case QMetaType::QVariant: + stream << *static_cast(data); + break; #endif case QMetaType::QByteArray: stream << *static_cast(data); @@ -888,6 +893,9 @@ bool QMetaType::load(QDataStream &stream, int type, void *data) case QMetaType::QVariantList: stream >> *static_cast< NS(QVariantList)*>(data); break; + case QMetaType::QVariant: + stream >> *static_cast< NS(QVariant)*>(data); + break; #endif case QMetaType::QByteArray: stream >> *static_cast< NS(QByteArray)*>(data); @@ -1055,6 +1063,8 @@ void *QMetaType::construct(int type, const void *copy) return new NS(QVariantHash)(*static_cast(copy)); case QMetaType::QVariantList: return new NS(QVariantList)(*static_cast(copy)); + case QMetaType::QVariant: + return new NS(QVariant)(*static_cast(copy)); #endif case QMetaType::QByteArray: return new NS(QByteArray)(*static_cast(copy)); @@ -1150,6 +1160,8 @@ void *QMetaType::construct(int type, const void *copy) return new NS(QVariantHash); case QMetaType::QVariantList: return new NS(QVariantList); + case QMetaType::QVariant: + return new NS(QVariant); #endif case QMetaType::QByteArray: return new NS(QByteArray); @@ -1291,6 +1303,9 @@ void QMetaType::destroy(int type, void *data) case QMetaType::QVariantList: delete static_cast< NS(QVariantList)* >(data); break; + case QMetaType::QVariant: + delete static_cast< NS(QVariant)* >(data); + break; #endif case QMetaType::QByteArray: delete static_cast< NS(QByteArray)* >(data); diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 2ed4a1f..98ed4bd 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -86,7 +86,8 @@ public: FirstCoreExtType = 128 /* VoidStar */, VoidStar = 128, Long = 129, Short = 130, Char = 131, ULong = 132, UShort = 133, UChar = 134, Float = 135, QObjectStar = 136, QWidgetStar = 137, - LastCoreExtType = QWidgetStar, + QVariant = 138, + LastCoreExtType = QVariant, // This logic must match the one in qglobal.h #if defined(QT_COORD_TYPE) @@ -353,6 +354,7 @@ class QVector2D; class QVector3D; class QVector4D; class QQuaternion; +class QVariant; QT_END_NAMESPACE @@ -421,6 +423,7 @@ Q_DECLARE_BUILTIN_METATYPE(QVector2D, QVector2D) Q_DECLARE_BUILTIN_METATYPE(QVector3D, QVector3D) Q_DECLARE_BUILTIN_METATYPE(QVector4D, QVector4D) Q_DECLARE_BUILTIN_METATYPE(QQuaternion, QQuaternion) +Q_DECLARE_BUILTIN_METATYPE(QVariant, QVariant) QT_END_HEADER diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h index 9628dbf..cb2825c 100644 --- a/src/corelib/kernel/qvariant.h +++ b/src/corelib/kernel/qvariant.h @@ -589,8 +589,7 @@ template inline T qvariant_cast(const QVariant &v) template<> inline QVariant qvariant_cast(const QVariant &v) { - static const int vid = qRegisterMetaType("QVariant"); - if (vid == v.userType()) + if (v.userType() == QMetaType::QVariant) return *reinterpret_cast(v.constData()); return v; } -- cgit v0.12 From 7a6f492a6dcf9140eda309dcdff6e0f8d321df19 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Wed, 3 Mar 2010 11:07:26 +0100 Subject: Fix QVariant autotest After 03daf059647c0a0222e8774b0a083f58c8e64934, typedef of int are just aliases to int, and therefor we need to use a real custom type for the test now Reviewed-by: Thierry --- tests/auto/qvariant/tst_qvariant.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/tests/auto/qvariant/tst_qvariant.cpp b/tests/auto/qvariant/tst_qvariant.cpp index a316dda..1a4182f 100644 --- a/tests/auto/qvariant/tst_qvariant.cpp +++ b/tests/auto/qvariant/tst_qvariant.cpp @@ -2518,15 +2518,23 @@ void tst_QVariant::variant_to() QCOMPARE(qVariantFromValue(0.25f).toDouble(), 0.25); } +struct Blah { int i; }; + +QDataStream& operator>>(QDataStream& s, Blah& c) +{ return (s >> c.i); } + +QDataStream& operator<<(QDataStream& s, const Blah& c) +{ return (s << c.i); } + void tst_QVariant::saveLoadCustomTypes() { QByteArray data; - int i = 42; - int tp = qRegisterMetaType("Blah"); + Blah i = { 42 }; + int tp = qRegisterMetaType("Blah"); QVariant v = QVariant(tp, &i); - qRegisterMetaTypeStreamOperators("Blah"); + qRegisterMetaTypeStreamOperators("Blah"); QCOMPARE(v.userType(), tp); QVERIFY(v.type() == QVariant::UserType); -- cgit v0.12 From 9957e85e37345e946ecc67196d65fbca867a2001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Lind?= Date: Wed, 3 Mar 2010 10:34:44 +0100 Subject: Add config.test for multimedia/qml using pkg-config from pri file is not good for cross-compiling Reviewed-by: paul --- config.tests/unix/pulseaudio/pulseaudio.pro | 4 ++ config.tests/unix/pulseaudio/pulseaudiotest.cpp | 49 +++++++++++++++++++++++++ configure | 15 ++++++++ src/multimedia/qml/qml.pri | 20 +++++----- 4 files changed, 79 insertions(+), 9 deletions(-) create mode 100644 config.tests/unix/pulseaudio/pulseaudio.pro create mode 100644 config.tests/unix/pulseaudio/pulseaudiotest.cpp diff --git a/config.tests/unix/pulseaudio/pulseaudio.pro b/config.tests/unix/pulseaudio/pulseaudio.pro new file mode 100644 index 0000000..698a35f --- /dev/null +++ b/config.tests/unix/pulseaudio/pulseaudio.pro @@ -0,0 +1,4 @@ +SOURCES = pulseaudiotest.cpp +LIBS+=-lpulse +CONFIG -= qt dylib +mac:CONFIG -= app_bundle diff --git a/config.tests/unix/pulseaudio/pulseaudiotest.cpp b/config.tests/unix/pulseaudio/pulseaudiotest.cpp new file mode 100644 index 0000000..eed88da --- /dev/null +++ b/config.tests/unix/pulseaudio/pulseaudiotest.cpp @@ -0,0 +1,49 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** No Commercial Usage +** This file contains pre-release code and may not be distributed. +** You may use this file in accordance with the terms and conditions +** contained in the Technology Preview License Agreement accompanying +** this package. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** If you have questions regarding the use of this file, please contact +** Nokia at qt-info@nokia.com. +** +** +** +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +int main(int ,char **) +{ + pa_threaded_mainloop *mainloop = pa_threaded_mainloop_new(); + return 0; +} + diff --git a/configure b/configure index 2312165..7ac4ff0 100755 --- a/configure +++ b/configure @@ -784,6 +784,7 @@ OPT_HELP= CFG_SILENT=no CFG_GRAPHICS_SYSTEM=default CFG_ALSA=auto +CFG_PULSEAUDIO=auto CFG_NETWORKMANAGER=auto CFG_COREWLAN=auto @@ -5945,6 +5946,14 @@ if [ "$CFG_ALSA" = "auto" ]; then fi fi +if [ "$CFG_PULSEAUDIO" = "auto" ]; then + if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/pulseaudio "pulseaudio" $L_FLAGS $I_FLAGS $l_FLAGS; then + CFG_PULSEAUDIO=yes + else + CFG_PULSEAUDIO=no + fi +fi + if [ "$CFG_NETWORKMANAGER" = "auto" ]; then if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/networkmanager "NetworkManager" $L_FLAGS $I_FLAGS $l_FLAGS; then CFG_NETWORKMANAGER=yes @@ -6439,6 +6448,10 @@ if [ "$CFG_ALSA" = "yes" ]; then QT_CONFIG="$QT_CONFIG alsa" fi +if [ "$CFG_PULSEAUDIO" = "yes" ]; then + QT_CONFIG="$QT_CONFIG pulseaudio" +fi + if [ "$CFG_NETWORKMANAGER" = "yes" ]; then QT_CONFIG="$QT_CONFIG networkmanager" fi @@ -7154,6 +7167,7 @@ fi [ "$CFG_XRANDR" = "runtime" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_RUNTIME_XRANDR" [ "$CFG_XINPUT" = "runtime" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_RUNTIME_XINPUT" [ "$CFG_ALSA" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_ALSA" +[ "$CFG_PULSEAUDIO" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_PULSEAUDIO" [ "$CFG_NETWORKMANAGER" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_NETWORKMANAGER" [ "$CFG_COREWLAN" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_COREWLAN" @@ -7657,6 +7671,7 @@ elif [ "$CFG_OPENSSL" = "linked" ]; then fi echo "OpenSSL support ........ $CFG_OPENSSL $OPENSSL_LINKAGE" echo "Alsa support ........... $CFG_ALSA" +echo "Pulse Audio support .... $CFG_PULSEAUDIO" echo "NetworkManager support . $CFG_NETWORKMANAGER" if [ "$PLATFORM_MAC" = "yes" ]; then echo "CoreWlan support ....... $CFG_COREWLAN" diff --git a/src/multimedia/qml/qml.pri b/src/multimedia/qml/qml.pri index d0ff71d..d7aef1a 100644 --- a/src/multimedia/qml/qml.pri +++ b/src/multimedia/qml/qml.pri @@ -2,15 +2,17 @@ contains(QT_CONFIG, declarative) { QT += declarative - system(pkg-config --exists \'libpulse >= 0.9.10\') { - DEFINES += QT_MULTIMEDIA_PULSEAUDIO - HEADERS += $$PWD/qsoundeffect_pulse_p.h - SOURCES += $$PWD/qsoundeffect_pulse_p.cpp - LIBS += -lpulse - } else:x11 { - DEFINES += QT_MULTIMEDIA_QMEDIAPLAYER - HEADERS += $$PWD/qsoundeffect_qmedia_p.h - SOURCES += $$PWD/qsoundeffect_qmedia_p.cpp + unix { + unix:contains(QT_CONFIG, pulseaudio) { + DEFINES += QT_MULTIMEDIA_PULSEAUDIO + HEADERS += $$PWD/qsoundeffect_pulse_p.h + SOURCES += $$PWD/qsoundeffect_pulse_p.cpp + LIBS += -lpulse + } else { + DEFINES += QT_MULTIMEDIA_QMEDIAPLAYER + HEADERS += $$PWD/qsoundeffect_qmedia_p.h + SOURCES += $$PWD/qsoundeffect_qmedia_p.cpp + } } else { HEADERS += $$PWD/qsoundeffect_qsound_p.h SOURCES += $$PWD/qsoundeffect_qsound_p.cpp -- cgit v0.12 From 388bd11da343f5e7bc9928bc1151de18bc01fe7f Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Wed, 3 Mar 2010 11:56:56 +0100 Subject: Revert "Fixes crash when destroying a QGraphicsItem." The patch was wrong. The new one is pushed into 4.6. The old one is reverted to avoid merge conflicts. This reverts commit a7ef2d899d711d750238a8d69284da808188b407. --- src/gui/graphicsview/qgraphicsitem.cpp | 5 +-- tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp | 57 -------------------------- 2 files changed, 2 insertions(+), 60 deletions(-) diff --git a/src/gui/graphicsview/qgraphicsitem.cpp b/src/gui/graphicsview/qgraphicsitem.cpp index 5735cd6..4f06f80 100644 --- a/src/gui/graphicsview/qgraphicsitem.cpp +++ b/src/gui/graphicsview/qgraphicsitem.cpp @@ -3179,9 +3179,8 @@ void QGraphicsItemPrivate::setFocusHelper(Qt::FocusReason focusReason, bool clim */ void QGraphicsItem::clearFocus() { - // Pass focus to the closest parent focus scope when clearing focus - // from a focus scope. - if (!d_ptr->inDestructor && (d_ptr->flags & ItemIsFocusScope)) { + // Pass focus to the closest parent focus scope. + if (!d_ptr->inDestructor) { QGraphicsItem *p = d_ptr->parent; while (p) { if (p->flags() & ItemIsFocusScope) { diff --git a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp index 269ec24..7c1b97e 100644 --- a/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp +++ b/tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp @@ -438,7 +438,6 @@ private slots: void QTBUG_6738_missingUpdateWithSetParent(); void QTBUG_7714_fullUpdateDiscardingOpacityUpdate2(); void QT_2653_fullUpdateDiscardingOpacityUpdate(); - void QT_2649_focusScope(); private: QList paintedItems; @@ -10003,61 +10002,5 @@ void tst_QGraphicsItem::QTBUG_7714_fullUpdateDiscardingOpacityUpdate2() QTRY_COMPARE(view.repaints, 1); } -void tst_QGraphicsItem::QT_2649_focusScope() -{ - QGraphicsScene *scene = new QGraphicsScene; - - QGraphicsRectItem *subFocusItem = new QGraphicsRectItem; - subFocusItem->setFlags(QGraphicsItem::ItemIsFocusable); - subFocusItem->setFocus(); - QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)subFocusItem); - - QGraphicsRectItem *scope = new QGraphicsRectItem; - scope->setFlags(QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemIsFocusScope); - scope->setFocus(); - subFocusItem->setParentItem(scope); - QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(subFocusItem->focusScopeItem(), (QGraphicsItem *)0); - QCOMPARE(scope->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(scope->focusScopeItem(), (QGraphicsItem *)subFocusItem); - - QGraphicsRectItem *rootItem = new QGraphicsRectItem; - rootItem->setFlags(QGraphicsItem::ItemIsFocusable); - scope->setParentItem(rootItem); - QCOMPARE(rootItem->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(rootItem->focusScopeItem(), (QGraphicsItem *)0); - QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(subFocusItem->focusScopeItem(), (QGraphicsItem *)0); - QCOMPARE(scope->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(scope->focusScopeItem(), (QGraphicsItem *)subFocusItem); - - scene->addItem(rootItem); - - QEvent windowActivate(QEvent::WindowActivate); - qApp->sendEvent(scene, &windowActivate); - scene->setFocus(); - - QCOMPARE(rootItem->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(scope->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(rootItem->focusScopeItem(), (QGraphicsItem *)0); - QCOMPARE(scope->focusScopeItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(subFocusItem->focusScopeItem(), (QGraphicsItem *)0); - QVERIFY(subFocusItem->hasFocus()); - - //If we hide the focusScope, the entire subFocus chain should be cleared - scope->hide(); - - QCOMPARE(rootItem->focusItem(), (QGraphicsItem *)0); - QCOMPARE(scope->focusItem(), (QGraphicsItem *)0); - QCOMPARE(subFocusItem->focusItem(), (QGraphicsItem *)0); - QCOMPARE(rootItem->focusScopeItem(), (QGraphicsItem *)0); - QCOMPARE(scope->focusScopeItem(), (QGraphicsItem *)subFocusItem); - QCOMPARE(subFocusItem->focusScopeItem(), (QGraphicsItem *)0); - QVERIFY(!subFocusItem->hasFocus()); - - delete scene; -} - QTEST_MAIN(tst_QGraphicsItem) #include "tst_qgraphicsitem.moc" -- cgit v0.12 From 4a5eaccce02dbabfd81e8809d453fc268cdba644 Mon Sep 17 00:00:00 2001 From: aavit Date: Tue, 2 Mar 2010 14:38:39 +0100 Subject: Some cleanup of outdated src/3rdparty stuff Reviewed-by: trustme --- src/3rdparty/README | 34 +- src/3rdparty/patches/freetype-2.3.5-config.patch | 265 --------------- src/3rdparty/patches/freetype-2.3.6-ascii.patch | 174 ---------- src/3rdparty/patches/freetype-2.3.6-vxworks.patch | 35 -- src/3rdparty/patches/libjpeg-6b-config.patch | 50 --- src/3rdparty/patches/libjpeg-6b-vxworks.patch | 23 -- .../patches/libpng-1.2.20-elf-visibility.patch | 17 - src/3rdparty/patches/libpng-1.2.20-vxworks.patch | 13 - src/3rdparty/patches/libtiff-3.8.2-config.patch | 374 --------------------- src/3rdparty/patches/libtiff-3.8.2-vxworks.patch | 11 - src/3rdparty/patches/sqlite-3.5.6-config.patch | 38 --- src/3rdparty/patches/sqlite-3.5.6-vxworks.patch | 68 ---- src/3rdparty/patches/sqlite-3.5.6-wince.patch | 19 -- 13 files changed, 15 insertions(+), 1106 deletions(-) delete mode 100644 src/3rdparty/patches/freetype-2.3.5-config.patch delete mode 100644 src/3rdparty/patches/freetype-2.3.6-ascii.patch delete mode 100644 src/3rdparty/patches/freetype-2.3.6-vxworks.patch delete mode 100644 src/3rdparty/patches/libjpeg-6b-config.patch delete mode 100644 src/3rdparty/patches/libjpeg-6b-vxworks.patch delete mode 100644 src/3rdparty/patches/libpng-1.2.20-elf-visibility.patch delete mode 100644 src/3rdparty/patches/libpng-1.2.20-vxworks.patch delete mode 100644 src/3rdparty/patches/libtiff-3.8.2-config.patch delete mode 100644 src/3rdparty/patches/libtiff-3.8.2-vxworks.patch delete mode 100644 src/3rdparty/patches/sqlite-3.5.6-config.patch delete mode 100644 src/3rdparty/patches/sqlite-3.5.6-vxworks.patch delete mode 100644 src/3rdparty/patches/sqlite-3.5.6-wince.patch diff --git a/src/3rdparty/README b/src/3rdparty/README index ef05674..0248db1 100644 --- a/src/3rdparty/README +++ b/src/3rdparty/README @@ -1,26 +1,22 @@ The libraries included here are the original packages, unpacked, and with their version number removed from the directory name (for version -information, see the README files in the directories). The following -have been removed: - - libjpeg - some source files, images, Makefiles, manual pages - libpng/contrib - a collection of examples and test-suite - libmng/bcb - a collection of files for the Borland compiler - libmng/contrib - a collection of projects that use libmng - libmng/special - configuration file for Mozilla integration - libtiff/contrib - a collection of additions to libtiff - libtiff/man - manual pages - libtiff/tools - a collection of command-line tools based on libtiff - zlib/contrib - a collection of non-zlib code - zlib/amiga - zlib for a platform not supported by Qt - zlib/as400 - zlib for a platform not supported by Qt - zlib/msdos - zlib for a platform not supported by Qt - zlib/old - zlib for a platform not supported by Qt - zlib/qnx - zlib packaging +information, see the README files in the directories). -Some patches are applied from time to time. Recent patches can be -found in the patches subdirectory. +Certain files and subdirectories of the original library packages that +are irrelevant to Qt may not be included here. Typically, those are +the standalone library configuration and make files, tools, test +files, contribs, documentation, and similar. +Patches may have been applied, typically for configuration and build +issues in the Qt framework. Such patches can be reviewed in the the +public git repository; they will appear in the commit logs of each +library directory, following the latest clean version update commit. + +The 'patches' subdirectory contains certain patches applied prior to +the start of the public git history, where the library has not been +updated since. + +-- The pvr2d.h & wsegl.h in the powervr directory are required for building the PowerVR plugin on Qt for Embedded Linux. These headers are for SGX diff --git a/src/3rdparty/patches/freetype-2.3.5-config.patch b/src/3rdparty/patches/freetype-2.3.5-config.patch deleted file mode 100644 index 2653467..0000000 --- a/src/3rdparty/patches/freetype-2.3.5-config.patch +++ /dev/null @@ -1,265 +0,0 @@ ---- builds/unix/ftconfig.h 1970-01-01 01:00:00.000000000 +0100 -+++ builds/unix/ftconfig.h 2007-07-15 00:00:00.000000000 +0200 -@@ -0,0 +1,262 @@ -+/* ftconfig.h. Generated by configure. */ -+/***************************************************************************/ -+/* */ -+/* ftconfig.in */ -+/* */ -+/* UNIX-specific configuration file (specification only). */ -+/* */ -+/* Copyright 1996-2000, 2002 by */ -+/* David Turner, Robert Wilhelm, and Werner Lemberg. */ -+/* */ -+/* This file is part of the FreeType project, and may only be used, */ -+/* modified, and distributed under the terms of the FreeType project */ -+/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ -+/* this file you indicate that you have read the license and */ -+/* understand and accept it fully. */ -+/* */ -+/***************************************************************************/ -+ -+ -+ /*************************************************************************/ -+ /* */ -+ /* This header file contains a number of macro definitions that are used */ -+ /* by the rest of the engine. Most of the macros here are automatically */ -+ /* determined at compile time, and you should not need to change it to */ -+ /* port FreeType, except to compile the library with a non-ANSI */ -+ /* compiler. */ -+ /* */ -+ /* Note however that if some specific modifications are needed, we */ -+ /* advise you to place a modified copy in your build directory. */ -+ /* */ -+ /* The build directory is usually `freetype/builds/', and */ -+ /* contains system-specific files that are always included first when */ -+ /* building the library. */ -+ /* */ -+ /*************************************************************************/ -+ -+ -+#ifndef __FTCONFIG_H__ -+#define __FTCONFIG_H__ -+ -+#include -+#include FT_CONFIG_OPTIONS_H -+#include FT_CONFIG_STANDARD_LIBRARY_H -+ -+ -+FT_BEGIN_HEADER -+ -+ -+ /*************************************************************************/ -+ /* */ -+ /* PLATFORM-SPECIFIC CONFIGURATION MACROS */ -+ /* */ -+ /* These macros can be toggled to suit a specific system. The current */ -+ /* ones are defaults used to compile FreeType in an ANSI C environment */ -+ /* (16bit compilers are also supported). Copy this file to your own */ -+ /* `freetype/builds/' directory, and edit it to port the engine. */ -+ /* */ -+ /*************************************************************************/ -+ -+ -+#define HAVE_UNISTD_H 1 -+#define HAVE_FCNTL_H 1 -+ -+#define SIZEOF_INT 4 -+#define SIZEOF_LONG 4 -+ -+#define FT_SIZEOF_INT SIZEOF_INT -+#define FT_SIZEOF_LONG SIZEOF_LONG -+ -+ -+ /* Preferred alignment of data */ -+#define FT_ALIGNMENT 8 -+ -+ -+ /* FT_UNUSED is a macro used to indicate that a given parameter is not */ -+ /* used -- this is only used to get rid of unpleasant compiler warnings */ -+#ifndef FT_UNUSED -+#define FT_UNUSED( arg ) ( (arg) = (arg) ) -+#endif -+ -+ -+ /*************************************************************************/ -+ /* */ -+ /* AUTOMATIC CONFIGURATION MACROS */ -+ /* */ -+ /* These macros are computed from the ones defined above. Don't touch */ -+ /* their definition, unless you know precisely what you are doing. No */ -+ /* porter should need to mess with them. */ -+ /* */ -+ /*************************************************************************/ -+ -+ -+ /*************************************************************************/ -+ /* */ -+ /* IntN types */ -+ /* */ -+ /* Used to guarantee the size of some specific integers. */ -+ /* */ -+ typedef signed short FT_Int16; -+ typedef unsigned short FT_UInt16; -+ -+#if FT_SIZEOF_INT == 4 -+ -+ typedef signed int FT_Int32; -+ typedef unsigned int FT_UInt32; -+ -+#elif FT_SIZEOF_LONG == 4 -+ -+ typedef signed long FT_Int32; -+ typedef unsigned long FT_UInt32; -+ -+#else -+#error "no 32bit type found -- please check your configuration files" -+#endif -+ -+#if FT_SIZEOF_LONG == 8 -+ -+ /* FT_LONG64 must be defined if a 64-bit type is available */ -+#define FT_LONG64 -+#define FT_INT64 long -+ -+#else -+ -+ /*************************************************************************/ -+ /* */ -+ /* Many compilers provide the non-ANSI `long long' 64-bit type. You can */ -+ /* activate it by defining the FTCALC_USE_LONG_LONG macro in */ -+ /* `ftoption.h'. */ -+ /* */ -+ /* Note that this will produce many -ansi warnings during library */ -+ /* compilation, and that in many cases, the generated code will be */ -+ /* neither smaller nor faster! */ -+ /* */ -+#ifdef FTCALC_USE_LONG_LONG -+ -+#define FT_LONG64 -+#define FT_INT64 long long -+ -+#endif /* FTCALC_USE_LONG_LONG */ -+#endif /* FT_SIZEOF_LONG == 8 */ -+ -+ -+#ifdef FT_MAKE_OPTION_SINGLE_OBJECT -+ -+#define FT_LOCAL( x ) static x -+#define FT_LOCAL_DEF( x ) static x -+ -+#else -+ -+#ifdef __cplusplus -+#define FT_LOCAL( x ) extern "C" x -+#define FT_LOCAL_DEF( x ) extern "C" x -+#else -+#define FT_LOCAL( x ) extern x -+#define FT_LOCAL_DEF( x ) extern x -+#endif -+ -+#endif /* FT_MAKE_OPTION_SINGLE_OBJECT */ -+ -+ -+#ifndef FT_BASE -+ -+#ifdef __cplusplus -+#define FT_BASE( x ) extern "C" x -+#else -+#define FT_BASE( x ) extern x -+#endif -+ -+#endif /* !FT_BASE */ -+ -+ -+#ifndef FT_BASE_DEF -+ -+#ifdef __cplusplus -+#define FT_BASE_DEF( x ) extern "C" x -+#else -+#define FT_BASE_DEF( x ) extern x -+#endif -+ -+#endif /* !FT_BASE_DEF */ -+ -+ -+#ifndef FT_EXPORT -+ -+#ifdef __cplusplus -+#define FT_EXPORT( x ) extern "C" x -+#else -+#define FT_EXPORT( x ) extern x -+#endif -+ -+#endif /* !FT_EXPORT */ -+ -+ -+#ifndef FT_EXPORT_DEF -+ -+#ifdef __cplusplus -+#define FT_EXPORT_DEF( x ) extern "C" x -+#else -+#define FT_EXPORT_DEF( x ) extern x -+#endif -+ -+#endif /* !FT_EXPORT_DEF */ -+ -+ -+#ifndef FT_EXPORT_VAR -+ -+#ifdef __cplusplus -+#define FT_EXPORT_VAR( x ) extern "C" x -+#else -+#define FT_EXPORT_VAR( x ) extern x -+#endif -+ -+#endif /* !FT_EXPORT_VAR */ -+ -+ /* The following macros are needed to compile the library with a */ -+ /* C++ compiler and with 16bit compilers. */ -+ /* */ -+ -+ /* This is special. Within C++, you must specify `extern "C"' for */ -+ /* functions which are used via function pointers, and you also */ -+ /* must do that for structures which contain function pointers to */ -+ /* assure C linkage -- it's not possible to have (local) anonymous */ -+ /* functions which are accessed by (global) function pointers. */ -+ /* */ -+ /* */ -+ /* FT_CALLBACK_DEF is used to _define_ a callback function. */ -+ /* */ -+ /* FT_CALLBACK_TABLE is used to _declare_ a constant variable that */ -+ /* contains pointers to callback functions. */ -+ /* */ -+ /* FT_CALLBACK_TABLE_DEF is used to _define_ a constant variable */ -+ /* that contains pointers to callback functions. */ -+ /* */ -+ /* */ -+ /* Some 16bit compilers have to redefine these macros to insert */ -+ /* the infamous `_cdecl' or `__fastcall' declarations. */ -+ /* */ -+#ifndef FT_CALLBACK_DEF -+#ifdef __cplusplus -+#define FT_CALLBACK_DEF( x ) extern "C" x -+#else -+#define FT_CALLBACK_DEF( x ) static x -+#endif -+#endif /* FT_CALLBACK_DEF */ -+ -+#ifndef FT_CALLBACK_TABLE -+#ifdef __cplusplus -+#define FT_CALLBACK_TABLE extern "C" -+#define FT_CALLBACK_TABLE_DEF extern "C" -+#else -+#define FT_CALLBACK_TABLE extern -+#define FT_CALLBACK_TABLE_DEF /* nothing */ -+#endif -+#endif /* FT_CALLBACK_TABLE */ -+ -+ -+FT_END_HEADER -+ -+#endif /* __FTCONFIG_H__ */ -+ -+ -+/* END */ diff --git a/src/3rdparty/patches/freetype-2.3.6-ascii.patch b/src/3rdparty/patches/freetype-2.3.6-ascii.patch deleted file mode 100644 index cc46296..0000000 --- a/src/3rdparty/patches/freetype-2.3.6-ascii.patch +++ /dev/null @@ -1,174 +0,0 @@ ---- include/freetype/ftbbox.h.orig 2007-10-20 15:27:57.000000000 +0200 -+++ include/freetype/ftbbox.h 2008-06-15 00:00:00.000000000 +0200 -@@ -61,7 +61,7 @@ - /* Computes the exact bounding box of an outline. This is slower */ - /* than computing the control box. However, it uses an advanced */ - /* algorithm which returns _very_ quickly when the two boxes */ -- /* coincide. Otherwise, the outline Bézier arcs are traversed to */ -+ /* coincide. Otherwise, the outline Bezier arcs are traversed to */ - /* extract their extrema. */ - /* */ - /* */ ---- include/freetype/ftglyph.h.orig 2008-04-13 23:58:59.000000000 +0200 -+++ include/freetype/ftglyph.h 2008-06-15 00:00:00.000000000 +0200 -@@ -354,10 +354,10 @@ - /* */ - /* */ - /* Return a glyph's `control box'. The control box encloses all the */ -- /* outline's points, including Bézier control points. Though it */ -+ /* outline's points, including Bezier control points. Though it */ - /* coincides with the exact bounding box for most glyphs, it can be */ - /* slightly larger in some situations (like when rotating an outline */ -- /* which contains Bézier outside arcs). */ -+ /* which contains Bezier outside arcs). */ - /* */ - /* Computing the control box is very fast, while getting the bounding */ - /* box can take much more time as it needs to walk over all segments */ ---- include/freetype/ftimage.h.orig 2008-05-31 08:46:38.000000000 +0200 -+++ include/freetype/ftimage.h 2008-06-15 00:00:00.000000000 +0200 -@@ -318,11 +318,11 @@ - /* */ - /* tags :: A pointer to an array of `n_points' chars, giving */ - /* each outline point's type. If bit 0 is unset, the */ -- /* point is `off' the curve, i.e., a Bézier control */ -+ /* point is `off' the curve, i.e., a Bezier control */ - /* point, while it is `on' when set. */ - /* */ - /* Bit 1 is meaningful for `off' points only. If set, */ -- /* it indicates a third-order Bézier arc control point; */ -+ /* it indicates a third-order Bezier arc control point; */ - /* and a second-order control point if unset. */ - /* */ - /* contours :: An array of `n_contours' shorts, giving the end */ -@@ -528,7 +528,7 @@ - /* A function pointer type use to describe the signature of a `conic */ - /* to' function during outline walking/decomposition. */ - /* */ -- /* A `conic to' is emitted to indicate a second-order Bézier arc in */ -+ /* A `conic to' is emitted to indicate a second-order Bezier arc in */ - /* the outline. */ - /* */ - /* */ -@@ -560,12 +560,12 @@ - /* A function pointer type used to describe the signature of a `cubic */ - /* to' function during outline walking/decomposition. */ - /* */ -- /* A `cubic to' is emitted to indicate a third-order Bézier arc. */ -+ /* A `cubic to' is emitted to indicate a third-order Bezier arc. */ - /* */ - /* */ -- /* control1 :: A pointer to the first Bézier control point. */ -+ /* control1 :: A pointer to the first Bezier control point. */ - /* */ -- /* control2 :: A pointer to the second Bézier control point. */ -+ /* control2 :: A pointer to the second Bezier control point. */ - /* */ - /* to :: A pointer to the target end point. */ - /* */ -@@ -591,7 +591,7 @@ - /* */ - /* */ - /* A structure to hold various function pointers used during outline */ -- /* decomposition in order to emit segments, conic, and cubic Béziers, */ -+ /* decomposition in order to emit segments, conic, and cubic Beziers, */ - /* as well as `move to' and `close to' operations. */ - /* */ - /* */ -@@ -599,9 +599,9 @@ - /* */ - /* line_to :: The segment emitter. */ - /* */ -- /* conic_to :: The second-order Bézier arc emitter. */ -+ /* conic_to :: The second-order Bezier arc emitter. */ - /* */ -- /* cubic_to :: The third-order Bézier arc emitter. */ -+ /* cubic_to :: The third-order Bezier arc emitter. */ - /* */ - /* shift :: The shift that is applied to coordinates before they */ - /* are sent to the emitter. */ -@@ -698,7 +698,7 @@ - /* */ - /* FT_GLYPH_FORMAT_OUTLINE :: */ - /* The glyph image is a vectorial outline made of line segments */ -- /* and Bézier arcs; it can be described as an @FT_Outline; you */ -+ /* and Bezier arcs; it can be described as an @FT_Outline; you */ - /* generally want to access the `outline' field of the */ - /* @FT_GlyphSlotRec structure to read it. */ - /* */ ---- include/freetype/ftoutln.h.orig 2008-05-29 00:05:07.000000000 +0200 -+++ include/freetype/ftoutln.h 2008-06-15 00:00:00.000000000 +0200 -@@ -85,7 +85,7 @@ - /* */ - /* */ - /* Walks over an outline's structure to decompose it into individual */ -- /* segments and Bézier arcs. This function is also able to emit */ -+ /* segments and Bezier arcs. This function is also able to emit */ - /* `move to' and `close to' operations to indicate the start and end */ - /* of new contours in the outline. */ - /* */ -@@ -213,10 +213,10 @@ - /* */ - /* */ - /* Returns an outline's `control box'. The control box encloses all */ -- /* the outline's points, including Bézier control points. Though it */ -+ /* the outline's points, including Bezier control points. Though it */ - /* coincides with the exact bounding box for most glyphs, it can be */ - /* slightly larger in some situations (like when rotating an outline */ -- /* which contains Bézier outside arcs). */ -+ /* which contains Bezier outside arcs). */ - /* */ - /* Computing the control box is very fast, while getting the bounding */ - /* box can take much more time as it needs to walk over all segments */ ---- include/freetype/ftstroke.h.orig 2008-05-29 00:06:54.000000000 +0200 -+++ include/freetype/ftstroke.h 2008-06-15 00:00:00.000000000 +0200 -@@ -407,7 +407,7 @@ - * FT_Stroker_ConicTo - * - * @description: -- * `Draw' a single quadratic Bézier in the stroker's current sub-path, -+ * `Draw' a single quadratic Bezier in the stroker's current sub-path, - * from the last position. - * - * @input: -@@ -415,7 +415,7 @@ - * The target stroker handle. - * - * control :: -- * A pointer to a Bézier control point. -+ * A pointer to a Bezier control point. - * - * to :: - * A pointer to the destination point. -@@ -439,7 +439,7 @@ - * FT_Stroker_CubicTo - * - * @description: -- * `Draw' a single cubic Bézier in the stroker's current sub-path, -+ * `Draw' a single cubic Bezier in the stroker's current sub-path, - * from the last position. - * - * @input: -@@ -447,10 +447,10 @@ - * The target stroker handle. - * - * control1 :: -- * A pointer to the first Bézier control point. -+ * A pointer to the first Bezier control point. - * - * control2 :: -- * A pointer to second Bézier control point. -+ * A pointer to second Bezier control point. - * - * to :: - * A pointer to the destination point. ---- include/freetype/ftwinfnt.h.orig 2008-05-28 23:27:19.000000000 +0200 -+++ include/freetype/ftwinfnt.h 2008-06-15 00:00:00.000000000 +0200 -@@ -77,7 +77,7 @@ - * Mac Roman encoding. - * - * FT_WinFNT_ID_OEM :: -- * From Michael Pöttgen : -+ * From Michael Poettgen : - * - * The `Windows Font Mapping' article says that FT_WinFNT_ID_OEM - * is used for the charset of vector fonts, like `modern.fon', diff --git a/src/3rdparty/patches/freetype-2.3.6-vxworks.patch b/src/3rdparty/patches/freetype-2.3.6-vxworks.patch deleted file mode 100644 index 21e884c..0000000 --- a/src/3rdparty/patches/freetype-2.3.6-vxworks.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff --git builds/unix/ftsystem.c builds/unix/ftsystem.c -index 3a740fd..40fa8d0 100644 ---- builds/unix/ftsystem.c -+++ builds/unix/ftsystem.c -@@ -69,6 +69,9 @@ - #include - #include - -+#ifdef VXWORKS -+#include -+#endif - - /*************************************************************************/ - /* */ -@@ -238,7 +241,7 @@ - return FT_Err_Invalid_Stream_Handle; - - /* open the file */ -- file = open( filepathname, O_RDONLY ); -+ file = open( filepathname, O_RDONLY, 0); - if ( file < 0 ) - { - FT_ERROR(( "FT_Stream_Open:" )); -@@ -317,7 +320,11 @@ - - - read_count = read( file, -+#ifndef VXWORKS - stream->base + total_read_count, -+#else -+ (char *) stream->base + total_read_count, -+#endif - stream->size - total_read_count ); - - if ( read_count <= 0 ) diff --git a/src/3rdparty/patches/libjpeg-6b-config.patch b/src/3rdparty/patches/libjpeg-6b-config.patch deleted file mode 100644 index 3012b8f..0000000 --- a/src/3rdparty/patches/libjpeg-6b-config.patch +++ /dev/null @@ -1,50 +0,0 @@ ---- jconfig.h.orig 1970-01-01 01:00:00.000000000 +0100 -+++ jconfig.h 2006-06-15 00:00:00.000000000 +0200 -@@ -0,0 +1,47 @@ -+/* jconfig.vc --- jconfig.h for Microsoft Visual C++ on Windows 95 or NT. */ -+/* see jconfig.doc for explanations */ -+ -+#define HAVE_PROTOTYPES -+#define HAVE_UNSIGNED_CHAR -+#define HAVE_UNSIGNED_SHORT -+/* #define void char */ -+/* #define const */ -+#undef CHAR_IS_UNSIGNED -+#define HAVE_STDDEF_H -+#define HAVE_STDLIB_H -+#undef NEED_BSD_STRINGS -+#undef NEED_SYS_TYPES_H -+#undef NEED_FAR_POINTERS /* we presume a 32-bit flat memory model */ -+#undef NEED_SHORT_EXTERNAL_NAMES -+#undef INCOMPLETE_TYPES_BROKEN -+ -+#if defined(_WIN32) -+/* Define "boolean" as unsigned char, not int, per Windows custom */ -+#ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ -+typedef unsigned char boolean; -+#endif -+#define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */ -+#endif -+ -+ -+#ifdef JPEG_INTERNALS -+ -+#undef RIGHT_SHIFT_IS_UNSIGNED -+ -+#endif /* JPEG_INTERNALS */ -+ -+#ifdef JPEG_CJPEG_DJPEG -+ -+#define BMP_SUPPORTED /* BMP image file format */ -+#define GIF_SUPPORTED /* GIF image file format */ -+#define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */ -+#undef RLE_SUPPORTED /* Utah RLE image file format */ -+#define TARGA_SUPPORTED /* Targa image file format */ -+ -+#define TWO_FILE_COMMANDLINE /* optional */ -+#define USE_SETMODE /* Microsoft has setmode() */ -+#undef NEED_SIGNAL_CATCHER -+#undef DONT_USE_B_MODE -+#undef PROGRESS_REPORT /* optional */ -+ -+#endif /* JPEG_CJPEG_DJPEG */ diff --git a/src/3rdparty/patches/libjpeg-6b-vxworks.patch b/src/3rdparty/patches/libjpeg-6b-vxworks.patch deleted file mode 100644 index 263c8d0..0000000 --- a/src/3rdparty/patches/libjpeg-6b-vxworks.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git jmorecfg.h jmorecfg.h -index 54a7d1c..b0b5870 100644 ---- jmorecfg.h -+++ jmorecfg.h -@@ -157,7 +157,7 @@ typedef short INT16; - - /* INT32 must hold at least signed 32-bit values. */ - --#ifndef XMD_H /* X11/xmd.h correctly defines INT32 */ -+#if !defined(XMD_H) && !defined(VXWORKS) /* X11/xmd.h correctly defines INT32 */ - typedef long INT32; - #endif - -@@ -183,6 +183,9 @@ typedef unsigned int JDIMENSION; - /* a function called through method pointers: */ - #define METHODDEF(type) static type - /* a function used only in its module: */ -+#if defined(VXWORKS) && defined(LOCAL) -+# undef LOCAL -+#endif - #define LOCAL(type) static type - /* a function referenced thru EXTERNs: */ - #define GLOBAL(type) type diff --git a/src/3rdparty/patches/libpng-1.2.20-elf-visibility.patch b/src/3rdparty/patches/libpng-1.2.20-elf-visibility.patch deleted file mode 100644 index a374cbf..0000000 --- a/src/3rdparty/patches/libpng-1.2.20-elf-visibility.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- pngconf.h.orig 2007-09-08 05:22:56.000000000 +0200 -+++ pngconf.h 2007-09-09 00:00:00.000000000 +0200 -@@ -1375,6 +1375,14 @@ - # if 0 /* ... other platforms, with other meanings */ - # endif - # endif -+ -+# if !defined(PNG_IMPEXP) -+# include -+# if defined(QT_VISIBILITY_AVAILABLE) -+# define PNG_IMPEXP __attribute__((visibility("default"))) -+# endif -+# endif -+ - #endif - - #ifndef PNGAPI diff --git a/src/3rdparty/patches/libpng-1.2.20-vxworks.patch b/src/3rdparty/patches/libpng-1.2.20-vxworks.patch deleted file mode 100644 index 4c49b3f..0000000 --- a/src/3rdparty/patches/libpng-1.2.20-vxworks.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git pngconf.h pngconf.h -index 19e4732..8eb7d35 100644 ---- pngconf.h -+++ pngconf.h -@@ -344,7 +344,7 @@ - # endif /* __linux__ */ - #endif /* PNG_SETJMP_SUPPORTED */ - --#ifdef BSD -+#if defined(BSD) && !defined(VXWORKS) - # include - #else - # include diff --git a/src/3rdparty/patches/libtiff-3.8.2-config.patch b/src/3rdparty/patches/libtiff-3.8.2-config.patch deleted file mode 100644 index 44230ea..0000000 --- a/src/3rdparty/patches/libtiff-3.8.2-config.patch +++ /dev/null @@ -1,374 +0,0 @@ ---- libtiff/tif_config.h 1970-01-01 01:00:00.000000000 +0100 -+++ libtiff/tif_config.h 2008-05-25 00:00:00.000000000 +0200 -@@ -0,0 +1,296 @@ -+/* -+ Configuration defines by Trolltech. -+*/ -+ -+#include -+#if defined(Q_OS_WINCE) -+# include -+#endif -+ -+/* Support CCITT Group 3 & 4 algorithms */ -+#define CCITT_SUPPORT 1 -+ -+/* Pick up YCbCr subsampling info from the JPEG data stream to support files -+ lacking the tag (default enabled). */ -+#define CHECK_JPEG_YCBCR_SUBSAMPLING 1 -+ -+/* Support C++ stream API (requires C++ compiler) */ -+/* #undef CXX_SUPPORT */ -+ -+/* Treat extra sample as alpha (default enabled). The RGBA interface will -+ treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many -+ packages produce RGBA files but don't mark the alpha properly. */ -+#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1 -+ -+/* Use the Apple OpenGL framework. */ -+/* #undef HAVE_APPLE_OPENGL_FRAMEWORK */ -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_ASSERT_H 1 -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_DLFCN_H */ -+ -+/* Define to 1 if you have the header file. */ -+#if !defined(Q_OS_WINCE) -+#define HAVE_FCNTL_H 1 -+#endif -+ -+/* Define to 1 if you have the `floor' function. */ -+/* #undef HAVE_FLOOR */ -+ -+/* Define to 1 if you have the `getopt' function. */ -+/* #undef HAVE_GETOPT */ -+ -+/* Define as 0 or 1 according to the floating point format suported by the -+ machine */ -+#define HAVE_IEEEFP 1 -+ -+/* Define to 1 if the system has the type `int16'. */ -+/* #undef HAVE_INT16 */ -+#ifdef Q_OS_AIX -+#define HAVE_INT16 1 -+#endif -+ -+/* Define to 1 if the system has the type `int32'. */ -+/* #undef HAVE_INT32 */ -+#ifdef Q_OS_AIX -+#define HAVE_INT32 1 -+#endif -+ -+/* Define to 1 if the system has the type `int8'. */ -+/* #undef HAVE_INT8 */ -+#ifdef Q_OS_AIX -+#define HAVE_INT8 1 -+#endif -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_INTTYPES_H */ -+ -+/* Define to 1 if you have the `isascii' function. */ -+/* #undef HAVE_ISASCII */ -+ -+/* Define to 1 if you have the `lfind' function. */ -+/* #undef HAVE_LFIND */ -+ -+/* Define to 1 if you have the `c' library (-lc). */ -+/* #undef HAVE_LIBC */ -+ -+/* Define to 1 if you have the `m' library (-lm). */ -+/* #undef HAVE_LIBM */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_LIMITS_H */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_MALLOC_H */ -+ -+/* Define to 1 if you have the `memmove' function. */ -+/* #undef HAVE_MEMMOVE */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_MEMORY_H */ -+ -+/* Define to 1 if you have the `memset' function. */ -+/* #undef HAVE_MEMSET */ -+ -+/* Define to 1 if you have the `mmap' function. */ -+/* #undef HAVE_MMAP */ -+ -+/* Define to 1 if you have the `pow' function. */ -+/* #undef HAVE_POW */ -+ -+/* Define if you have POSIX threads libraries and header files. */ -+/* #undef HAVE_PTHREAD */ -+ -+/* Define to 1 if you have the header file. */ -+#if !defined(Q_OS_WINCE) -+#define HAVE_SEARCH_H 1 -+#endif -+ -+/* Define to 1 if you have the `sqrt' function. */ -+/* #undef HAVE_SQRT */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_STDINT_H */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_STDLIB_H */ -+ -+/* Define to 1 if you have the `strcasecmp' function. */ -+/* #undef HAVE_STRCASECMP */ -+ -+/* Define to 1 if you have the `strchr' function. */ -+/* #undef HAVE_STRCHR */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_STRINGS_H */ -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_STRING_H 1 -+ -+/* Define to 1 if you have the `strrchr' function. */ -+/* #undef HAVE_STRRCHR */ -+ -+/* Define to 1 if you have the `strstr' function. */ -+/* #undef HAVE_STRSTR */ -+ -+/* Define to 1 if you have the `strtol' function. */ -+/* #undef HAVE_STRTOL */ -+ -+/* Define to 1 if you have the `strtoul' function. */ -+/* #undef HAVE_STRTOUL */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_SYS_STAT_H */ -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_SYS_TIME_H */ -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_SYS_TYPES_H 1 -+ -+/* Define to 1 if you have the header file. */ -+#define HAVE_UNISTD_H 1 -+ -+/* Define to 1 if you have the header file. */ -+/* #undef HAVE_WINDOWS_H */ -+#ifdef Q_OS_WIN -+#define TIF_PLATFORM_CONSOLE -+#endif -+ -+/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian -+ (Intel) */ -+#if (Q_BYTE_ORDER == Q_BIG_ENDIAN) -+#define HOST_BIGENDIAN 1 -+#else -+#define HOST_BIGENDIAN 0 -+#endif -+ -+/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */ -+#define HOST_FILLORDER FILLORDER_LSB2MSB -+ -+/* Support JPEG compression (requires IJG JPEG library) */ -+/* #undef JPEG_SUPPORT */ -+ -+/* Support LogLuv high dynamic range encoding */ -+#define LOGLUV_SUPPORT 1 -+ -+/* Define to the sub-directory in which libtool stores uninstalled libraries. -+ */ -+/* #undef LT_OBJDIR */ -+ -+/* Support LZW algorithm */ -+#define LZW_SUPPORT 1 -+ -+/* Support Microsoft Document Imaging format */ -+#define MDI_SUPPORT 1 -+ -+/* Support NeXT 2-bit RLE algorithm */ -+#define NEXT_SUPPORT 1 -+ -+/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -+/* #undef NO_MINUS_C_MINUS_O */ -+ -+/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation -+ fails with unpatched IJG JPEG library) */ -+/* #undef OJPEG_SUPPORT */ -+ -+/* Name of package */ -+/* #undef PACKAGE */ -+ -+/* Define to the address where bug reports for this package should be sent. */ -+/* #undef PACKAGE_BUGREPORT */ -+ -+/* Define to the full name of this package. */ -+/* #undef PACKAGE_NAME */ -+ -+/* Define to the full name and version of this package. */ -+/* #undef PACKAGE_STRING */ -+ -+/* Define to the one symbol short name of this package. */ -+/* #undef PACKAGE_TARNAME */ -+ -+/* Define to the version of this package. */ -+/* #undef PACKAGE_VERSION */ -+ -+/* Support Macintosh PackBits algorithm */ -+#define PACKBITS_SUPPORT 1 -+ -+/* Support Pixar log-format algorithm (requires Zlib) */ -+#define PIXARLOG_SUPPORT 1 -+ -+/* Define to necessary symbol if this constant uses a non-standard name on -+ your system. */ -+/* #undef PTHREAD_CREATE_JOINABLE */ -+ -+/* The size of a `int', as computed by sizeof. */ -+#define SIZEOF_INT 4 -+ -+/* The size of a `long', as computed by sizeof. */ -+#if (QT_POINTER_SIZE == 8) && !defined(Q_OS_WIN64) -+#define SIZEOF_LONG 8 -+#else -+#define SIZEOF_LONG 4 -+#endif -+ -+/* Define to 1 if you have the ANSI C header files. */ -+/* #undef STDC_HEADERS */ -+ -+/* Support strip chopping (whether or not to convert single-strip uncompressed -+ images to mutiple strips of specified size to reduce memory usage) */ -+#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP -+ -+/* Default size of the strip in bytes (when strip chopping enabled) */ -+/* #undef STRIP_SIZE_DEFAULT */ -+ -+/* Enable SubIFD tag (330) support */ -+#define SUBIFD_SUPPORT 1 -+ -+/* Support ThunderScan 4-bit RLE algorithm */ -+#define THUNDER_SUPPORT 1 -+ -+/* Define to 1 if you can safely include both and . */ -+/* #undef TIME_WITH_SYS_TIME */ -+ -+/* Define to 1 if your declares `struct tm'. */ -+/* #undef TM_IN_SYS_TIME */ -+ -+/* Version number of package */ -+/* #undef VERSION */ -+ -+/* Define to 1 if your processor stores words with the most significant byte -+ first (like Motorola and SPARC, unlike Intel and VAX). */ -+#if (Q_BYTE_ORDER == Q_BIG_ENDIAN) -+#define WORDS_BIGENDIAN 1 -+#else -+/* #undef WORDS_BIGENDIAN */ -+#endif -+ -+/* Define to 1 if the X Window System is missing or not being used. */ -+/* #undef X_DISPLAY_MISSING */ -+ -+/* Support Deflate compression */ -+#define ZIP_SUPPORT 1 -+ -+/* Number of bits in a file offset, on hosts where this is settable. */ -+/* #undef _FILE_OFFSET_BITS */ -+ -+/* Define for large files, on AIX-style hosts. */ -+/* #undef _LARGE_FILES */ -+ -+/* Define to empty if `const' does not conform to ANSI C. */ -+/* #undef const */ -+ -+/* Define to `__inline__' or `__inline' if that's what the C compiler -+ calls it, or to nothing if 'inline' is not supported under any name. */ -+#ifndef __cplusplus -+#undef inline -+#define inline -+#endif -+ -+/* Define to `long' if does not define. */ -+/* #undef off_t */ -+ -+/* Define to `unsigned' if does not define. */ -+/* #undef size_t */ ---- libtiff/tiffconf.h 2006-03-23 15:55:22.000000000 +0100 -+++ libtiff/tiffconf.h 2008-05-25 00:00:00.000000000 +0200 -@@ -1,6 +1,5 @@ --/* libtiff/tiffconf.h. Generated by configure. */ - /* -- Configuration defines for installed libtiff. -+ Configuration defines by Trolltech. - This file maintained for backward compatibility. Do not use definitions - from this file in your programs. - */ -@@ -8,6 +7,8 @@ - #ifndef _TIFFCONF_ - #define _TIFFCONF_ - -+#include -+ - /* Define to 1 if the system has the type `int16'. */ - /* #undef HAVE_INT16 */ - -@@ -21,7 +22,11 @@ - #define SIZEOF_INT 4 - - /* The size of a `long', as computed by sizeof. */ -+#if (QT_POINTER_SIZE == 8) && !defined(Q_OS_WIN64) -+#define SIZEOF_LONG 8 -+#else - #define SIZEOF_LONG 4 -+#endif - - /* Compatibility stuff. */ - -@@ -34,13 +39,17 @@ - - /* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian - (Intel) */ -+#if (Q_BYTE_ORDER == Q_BIG_ENDIAN) -+#define HOST_BIGENDIAN 1 -+#else - #define HOST_BIGENDIAN 0 -+#endif - - /* Support CCITT Group 3 & 4 algorithms */ - #define CCITT_SUPPORT 1 - - /* Support JPEG compression (requires IJG JPEG library) */ --#define JPEG_SUPPORT 1 -+/* #undef JPEG_SUPPORT */ - - /* Support LogLuv high dynamic range encoding */ - #define LOGLUV_SUPPORT 1 ---- libtiff/tiffiop.h 2006-03-21 17:42:50.000000000 +0100 -+++ libtiff/tiffiop.h 2008-05-25 00:00:00.000000000 +0200 -@@ -37,7 +37,12 @@ - #endif - - #ifdef HAVE_SYS_TYPES_H -+#if !defined(Q_OS_WINCE) - # include -+#else -+# include -+# include -+#endif - #endif - - #ifdef HAVE_STRING_H ---- libtiff/tif_win32.c 2006-02-07 14:51:03.000000000 +0100 -+++ libtiff/tif_win32.c 2008-05-25 00:00:00.000000000 +0200 -@@ -29,6 +29,7 @@ - * Scott Wagner (wagner@itek.com), Itek Graphix, Rochester, NY USA - */ - #include "tiffiop.h" -+#include - - static tsize_t - _tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size) diff --git a/src/3rdparty/patches/libtiff-3.8.2-vxworks.patch b/src/3rdparty/patches/libtiff-3.8.2-vxworks.patch deleted file mode 100644 index b1b725e..0000000 --- a/src/3rdparty/patches/libtiff-3.8.2-vxworks.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- libtiff/tif_config.h.orig -+++ libtiff/tif_config.h -@@ -104,7 +104,7 @@ - /* #undef HAVE_PTHREAD */ - - /* Define to 1 if you have the header file. */ --#if !defined(Q_OS_WINCE) -+#if !defined(Q_OS_WINCE) && !defined(Q_OS_VXWORKS) - #define HAVE_SEARCH_H 1 - #endif - diff --git a/src/3rdparty/patches/sqlite-3.5.6-config.patch b/src/3rdparty/patches/sqlite-3.5.6-config.patch deleted file mode 100644 index cf158ea..0000000 --- a/src/3rdparty/patches/sqlite-3.5.6-config.patch +++ /dev/null @@ -1,38 +0,0 @@ ---- sqlite3.c.orig 2008-02-06 16:03:28.000000000 +0100 -+++ sqlite3.c 2008-02-13 00:00:00.000000000 +0100 -@@ -16823,6 +16823,8 @@ - */ - #if OS_UNIX /* This file is used on unix only */ - -+#include -+ - /* #define SQLITE_ENABLE_LOCKING_STYLE 0 */ - - /* -@@ -16865,7 +16867,7 @@ - ** If we are to be thread-safe, include the pthreads header and define - ** the SQLITE_UNIX_THREADS macro. - */ --#if SQLITE_THREADSAFE -+#ifndef QT_NO_THREAD - # define SQLITE_UNIX_THREADS 1 - #endif - -@@ -19739,6 +19741,8 @@ - ** desktops but not so well in embedded systems. - */ - -+#include -+ - #include - - #ifdef __CYGWIN__ -@@ -19748,7 +19752,7 @@ - /* - ** Macros used to determine whether or not to use threads. - */ --#if defined(THREADSAFE) && THREADSAFE -+#ifndef QT_NO_THREAD - # define SQLITE_W32_THREADS 1 - #endif - diff --git a/src/3rdparty/patches/sqlite-3.5.6-vxworks.patch b/src/3rdparty/patches/sqlite-3.5.6-vxworks.patch deleted file mode 100644 index 6ae65fd..0000000 --- a/src/3rdparty/patches/sqlite-3.5.6-vxworks.patch +++ /dev/null @@ -1,68 +0,0 @@ ---- sqlite3.c.orig -+++ sqlite3.c -@@ -383,7 +383,7 @@ SQLITE_PRIVATE void sqlite3Coverage(int); - ** - ** See also ticket #2741. - */ --#if !defined(_XOPEN_SOURCE) && !defined(__DARWIN__) && !defined(__APPLE__) && SQLITE_THREADSAFE -+#if !defined(_XOPEN_SOURCE) && !defined(__DARWIN__) && !defined(__APPLE__) && SQLITE_THREADSAFE && !defined(VXWORKS) - # define _XOPEN_SOURCE 500 /* Needed to enable pthread recursive mutexes */ - #endif - -@@ -440,6 +440,13 @@ SQLITE_PRIVATE void sqlite3Coverage(int); - */ - #ifndef _SQLITE3_H_ - #define _SQLITE3_H_ -+ -+#ifdef VXWORKS -+# define SQLITE_HOMEGROWN_RECURSIVE_MUTEX -+# define NO_GETTOD -+# include -+#endif -+ - #include /* Needed for the definition of va_list */ - - /* -@@ -18792,7 +18799,11 @@ SQLITE_PRIVATE sqlite3_vfs *sqlite3OsDefaultVfs(void){ - #include - #include - #include --#include -+#ifdef VXWORKS -+# include -+#else -+# include -+#endif - #include - #ifdef SQLITE_ENABLE_LOCKING_STYLE - #include -@@ -19728,7 +19739,11 @@ static int seekAndWrite(unixFile *id, i64 offset, const void *pBuf, int cnt){ - if( newOffset!=offset ){ - return -1; - } -+# ifndef VXWORKS - got = write(id->h, pBuf, cnt); -+# else -+ got = write(id->h, (char *)pBuf, cnt); -+# endif - #endif - TIMER_END; - OSTRACE5("WRITE %-3d %5d %7lld %d\n", id->h, got, offset, TIMER_ELAPSED); -@@ -21554,12 +21569,16 @@ static int unixRandomness(sqlite3_vfs *pVfs, int nBuf, char *zBuf){ - #if !defined(SQLITE_TEST) - { - int pid, fd; -- fd = open("/dev/urandom", O_RDONLY); -+ fd = open("/dev/urandom", O_RDONLY, 0); - if( fd<0 ){ - time_t t; - time(&t); - memcpy(zBuf, &t, sizeof(t)); -+#ifndef VXWORKS - pid = getpid(); -+#else -+ pid = (int)taskIdCurrent(); -+#endif - memcpy(&zBuf[sizeof(t)], &pid, sizeof(pid)); - }else{ - read(fd, zBuf, nBuf); diff --git a/src/3rdparty/patches/sqlite-3.5.6-wince.patch b/src/3rdparty/patches/sqlite-3.5.6-wince.patch deleted file mode 100644 index 02965f8..0000000 --- a/src/3rdparty/patches/sqlite-3.5.6-wince.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- sqlite3.c.orig 2008-02-06 16:03:28.000000000 +0100 -+++ sqlite3.c 2008-02-13 00:00:00.000000000 +0100 -@@ -8837,6 +8837,16 @@ - } - - /* -+** Windows CE does not declare the localtime -+** function as it is not defined anywhere. -+** Anyway we need the forward-declaration to be -+** able to define it later on. -+*/ -+#if defined(_WIN32_WCE) && (_WIN32_WCE >= 0x600) -+struct tm *__cdecl localtime(const time_t *t); -+#endif -+ -+/* - ** Compute the difference (in days) between localtime and UTC (a.k.a. GMT) - ** for the time value p where p is in UTC. - */ -- cgit v0.12 From 515f6a8c3dbe382bbb4f84f758a61c719143d8a6 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Wed, 3 Mar 2010 14:53:16 +0100 Subject: sizeHint of checkbox/radiobutton without text is not correct Reviewed-by: Jens Bache-Wiig --- src/gui/styles/qcommonstyle.cpp | 2 +- src/gui/widgets/qcheckbox.cpp | 2 +- src/gui/widgets/qradiobutton.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gui/styles/qcommonstyle.cpp b/src/gui/styles/qcommonstyle.cpp index f8464cc..b0e2d37 100644 --- a/src/gui/styles/qcommonstyle.cpp +++ b/src/gui/styles/qcommonstyle.cpp @@ -4760,7 +4760,7 @@ QSize QCommonStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt, int margins = 0; // we add 4 pixels for label margins - if (btn->icon.isNull() || !btn->text.isEmpty()) + if (!btn->icon.isNull() || !btn->text.isEmpty()) margins = 4 + proxy()->pixelMetric(isRadio ? PM_RadioButtonLabelSpacing : PM_CheckBoxLabelSpacing, opt, widget); sz += QSize(w + margins, 4); diff --git a/src/gui/widgets/qcheckbox.cpp b/src/gui/widgets/qcheckbox.cpp index 4e0ff66..bc0900e 100644 --- a/src/gui/widgets/qcheckbox.cpp +++ b/src/gui/widgets/qcheckbox.cpp @@ -291,7 +291,7 @@ QSize QCheckBox::sizeHint() const QFontMetrics fm = fontMetrics(); QStyleOptionButton opt; initStyleOption(&opt); - QSize sz = style()->itemTextRect(fm, QRect(0, 0, 1, 1), Qt::TextShowMnemonic, false, + QSize sz = style()->itemTextRect(fm, QRect(), Qt::TextShowMnemonic, false, text()).size(); if (!opt.icon.isNull()) sz = QSize(sz.width() + opt.iconSize.width() + 4, qMax(sz.height(), opt.iconSize.height())); diff --git a/src/gui/widgets/qradiobutton.cpp b/src/gui/widgets/qradiobutton.cpp index d73ff2f..20b6c720 100644 --- a/src/gui/widgets/qradiobutton.cpp +++ b/src/gui/widgets/qradiobutton.cpp @@ -195,7 +195,7 @@ QSize QRadioButton::sizeHint() const ensurePolished(); QStyleOptionButton opt; initStyleOption(&opt); - QSize sz = style()->itemTextRect(fontMetrics(), QRect(0, 0, 1, 1), Qt::TextShowMnemonic, + QSize sz = style()->itemTextRect(fontMetrics(), QRect(), Qt::TextShowMnemonic, false, text()).size(); if (!opt.icon.isNull()) sz = QSize(sz.width() + opt.iconSize.width() + 4, qMax(sz.height(), opt.iconSize.height())); -- cgit v0.12 From 5b97c515ea574c1ac23c8595af34de406db2536d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20Lind?= Date: Wed, 3 Mar 2010 15:58:02 +0100 Subject: Updating documentation for how to build QWS with tslib Reviewed-by: David Boddie --- doc/src/platforms/emb-pointer.qdoc | 6 +++--- doc/src/snippets/code/doc_src_emb-pointer.qdoc | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/doc/src/platforms/emb-pointer.qdoc b/doc/src/platforms/emb-pointer.qdoc index 34510da..3c37b63 100644 --- a/doc/src/platforms/emb-pointer.qdoc +++ b/doc/src/platforms/emb-pointer.qdoc @@ -154,9 +154,9 @@ in the build environment. The tslib sources can be downloaded from \l - http://tslib.berlios.de. Use the \c configure script's -L and - -I options to explicitly specify the location of the library and - its headers: + http://tslib.berlios.de. Specify the location of the library and + its headers using -L and -I options in the \c qmake.conf file in + your \c mkspec. Also it can be helpful to add a -rpath-link: \snippet doc/src/snippets/code/doc_src_emb-pointer.qdoc 7 diff --git a/doc/src/snippets/code/doc_src_emb-pointer.qdoc b/doc/src/snippets/code/doc_src_emb-pointer.qdoc index 9661ae5..0d66e18 100644 --- a/doc/src/snippets/code/doc_src_emb-pointer.qdoc +++ b/doc/src/snippets/code/doc_src_emb-pointer.qdoc @@ -77,7 +77,10 @@ export QWS_MOUSE_PROTO="Vr41xx:press=500:/dev/misc/ts" //! [7] -./configure -L -I +.... +QMAKE_CFLAGS += -I +QMAKE_LFLAGS += -L -Wl,-rpath-link= +.... //! [7] -- cgit v0.12 From bfd0d6557dc54c0fd0270de6c138ea1031ea092c Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Wed, 3 Mar 2010 16:52:41 +0100 Subject: Fix warnings on MSVC --- src/gui/graphicsview/qgraphicslinearlayout.cpp | 2 ++ src/gui/image/qpixmapfilter.cpp | 4 ++-- src/gui/kernel/qwidget.cpp | 1 - src/gui/painting/qdrawhelper.cpp | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/gui/graphicsview/qgraphicslinearlayout.cpp b/src/gui/graphicsview/qgraphicslinearlayout.cpp index 6a9eb29..9722683 100644 --- a/src/gui/graphicsview/qgraphicslinearlayout.cpp +++ b/src/gui/graphicsview/qgraphicslinearlayout.cpp @@ -554,6 +554,8 @@ void QGraphicsLinearLayout::dump(int indent) const d->orientation == Qt::Horizontal ? "Horizontal" : "Vertical"); d->engine.dump(indent + 1); } +#else + Q_UNUSED(indent); #endif } diff --git a/src/gui/image/qpixmapfilter.cpp b/src/gui/image/qpixmapfilter.cpp index 2792e45..0abf51f 100644 --- a/src/gui/image/qpixmapfilter.cpp +++ b/src/gui/image/qpixmapfilter.cpp @@ -726,7 +726,7 @@ void expblur(QImage &img, qreal radius, bool improvedQuality = false, int transp int img_height = img.height(); for (int row = 0; row < img_height; ++row) { - for (int i = 0; i <= improvedQuality; ++i) + for (int i = 0; i <= int(improvedQuality); ++i) qt_blurrow(img, row, alpha); } @@ -759,7 +759,7 @@ void expblur(QImage &img, qreal radius, bool improvedQuality = false, int transp img_height = temp.height(); for (int row = 0; row < img_height; ++row) { - for (int i = 0; i <= improvedQuality; ++i) + for (int i = 0; i <= int(improvedQuality); ++i) qt_blurrow(temp, row, alpha); } diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp index 2f6ec6b..aa5d259 100644 --- a/src/gui/kernel/qwidget.cpp +++ b/src/gui/kernel/qwidget.cpp @@ -5339,7 +5339,6 @@ void QWidgetPrivate::render(QPaintDevice *target, const QPoint &targetOffset, const QRegion &sourceRegion, QWidget::RenderFlags renderFlags, bool readyToRender) { - Q_Q(QWidget); if (!target) { qWarning("QWidget::render: null pointer to paint device"); return; diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp index 891f4c2..acd286a 100644 --- a/src/gui/painting/qdrawhelper.cpp +++ b/src/gui/painting/qdrawhelper.cpp @@ -7813,7 +7813,6 @@ static void qt_blend_color_argb_armv6(int count, const QSpan *spans, void *userD void qInitDrawhelperAsm() { - const uint features = qDetectCPUFeatures(); qt_memfill32 = qt_memfill_template; qt_memfill16 = qt_memfill_quint16; //qt_memfill_template; @@ -7822,6 +7821,7 @@ void qInitDrawhelperAsm() CompositionFunctionSolid *functionForModeSolidAsm = 0; #ifdef QT_NO_DEBUG + const uint features = qDetectCPUFeatures(); if (false) { #ifdef QT_HAVE_SSE2 } else if (features & SSE2) { -- cgit v0.12 From 9b60566af57543310a7b5bec03b5de1e24c7f746 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Wed, 3 Mar 2010 18:30:51 +0100 Subject: Fix source compatibility of qRegisterMetaType ActiveQt is having construct like qRegisterMetaType("Foo*", (Foo*)0 ); instead of qRegisterMetaType("Foo*"); Which the compiler could not disambiguate anymore since commit 03daf059647c0a0222e8774b0a083f58c8e64934 Reviewed-by: Thierry --- src/corelib/kernel/qmetatype.h | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h index 98ed4bd..2108b92 100644 --- a/src/corelib/kernel/qmetatype.h +++ b/src/corelib/kernel/qmetatype.h @@ -173,7 +173,7 @@ namespace QtPrivate { template int qRegisterMetaType(const char *typeName #ifndef qdoc - , typename QMetaTypeId2::CustomType * dummy = 0 + , T * dummy = 0 #endif ) { @@ -190,17 +190,6 @@ int qRegisterMetaType(const char *typeName reinterpret_cast(cptr)); } -template -int qRegisterMetaType(const char *typeName -#ifndef qdoc - , typename QMetaTypeId2::BuiltinType * /* dummy */ = 0 -#endif -) -{ - return QMetaType::registerTypedef(typeName, QMetaTypeId2::MetaType); -} - - #ifndef QT_NO_DATASTREAM template void qRegisterMetaTypeStreamOperators(const char *typeName @@ -229,7 +218,6 @@ struct QMetaTypeId template struct QMetaTypeId2 { - typedef T CustomType; enum { Defined = QMetaTypeId::Defined }; static inline int qt_metatype_id() { return QMetaTypeId::qt_metatype_id(); } }; @@ -297,7 +285,6 @@ inline int qRegisterMetaTypeStreamOperators() QT_BEGIN_NAMESPACE \ template<> struct QMetaTypeId2 \ { \ - typedef TYPE BuiltinType; \ enum { Defined = 1, MetaType = QMetaType::NAME }; \ static inline int qt_metatype_id() { return QMetaType::NAME; } \ }; \ -- cgit v0.12 From c7fec28e7b2f7192c6589c37f3db3e0b4ee85460 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Thu, 4 Mar 2010 10:21:06 +0100 Subject: Fixes tst_QScriptExtQObject::connectAndDisconnect Now that QVariant is known to QMetaType, it has an ID. This is much more robust as before. This would have fail if QVariant, would have been registered by the user. Reviewed-by: Kent Hansen --- src/script/bridge/qscriptqobject.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/script/bridge/qscriptqobject.cpp b/src/script/bridge/qscriptqobject.cpp index 8d111f9..39ba935 100644 --- a/src/script/bridge/qscriptqobject.cpp +++ b/src/script/bridge/qscriptqobject.cpp @@ -2174,14 +2174,12 @@ void QObjectConnectionManager::execute(int slotIndex, void **argv) QByteArray typeName = parameterTypes.at(i); int argType = QMetaType::type(parameterTypes.at(i)); if (!argType) { - if (typeName == "QVariant") { - actual = QScriptEnginePrivate::jscValueFromVariant(exec, *reinterpret_cast(arg)); - } else { - qWarning("QScriptEngine: Unable to handle unregistered datatype '%s' " - "when invoking handler of signal %s::%s", - typeName.constData(), meta->className(), method.signature()); - actual = JSC::jsUndefined(); - } + qWarning("QScriptEngine: Unable to handle unregistered datatype '%s' " + "when invoking handler of signal %s::%s", + typeName.constData(), meta->className(), method.signature()); + actual = JSC::jsUndefined(); + } else if (argType == QMetaType::QVariant) { + actual = QScriptEnginePrivate::jscValueFromVariant(exec, *reinterpret_cast(arg)); } else { actual = QScriptEnginePrivate::create(exec, argType, arg); } -- cgit v0.12 From a99fe8624a25f8a09fe9b3234306a4d8b3a3f38e Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Thu, 4 Mar 2010 10:47:36 +0100 Subject: QScript: Test against QMetaType::QVariant instead of against the string now that QVariant is known to QMetaType, we can test for the metatype id instead of doing string comparison Reviewed-by: Kent Hansen --- src/script/api/qscriptengine.cpp | 11 ++++++----- src/script/bridge/qscriptqobject.cpp | 37 ++++++++++++++---------------------- 2 files changed, 20 insertions(+), 28 deletions(-) diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp index 9cd5c63..47c5262 100644 --- a/src/script/api/qscriptengine.cpp +++ b/src/script/api/qscriptengine.cpp @@ -2901,6 +2901,9 @@ JSC::JSValue QScriptEnginePrivate::create(JSC::ExecState *exec, int type, const result = eng->newQObject(*reinterpret_cast(ptr)); break; #endif + case QMetaType::QVariant: + result = jscValueFromVariant(exec, *reinterpret_cast(ptr)); + break; default: if (type == qMetaTypeId()) { result = eng->scriptValueToJSCValue(*reinterpret_cast(ptr)); @@ -2922,8 +2925,6 @@ JSC::JSValue QScriptEnginePrivate::create(JSC::ExecState *exec, int type, const else { QByteArray typeName = QMetaType::typeName(type); - if (typeName == "QVariant") - result = jscValueFromVariant(exec, *reinterpret_cast(ptr)); if (typeName.endsWith('*') && !*reinterpret_cast(ptr)) return JSC::jsNull(); else @@ -3046,6 +3047,9 @@ bool QScriptEnginePrivate::convertValue(JSC::ExecState *exec, JSC::JSValue value *reinterpret_cast(ptr) = variantMapFromObject(exec, value); return true; } break; + case QMetaType::QVariant: + *reinterpret_cast(ptr) = toVariant(exec, value); + return true; default: ; } @@ -3096,9 +3100,6 @@ bool QScriptEnginePrivate::convertValue(JSC::ExecState *exec, JSC::JSValue value return false; *reinterpret_cast(ptr) = eng->scriptValueFromJSCValue(value); return true; - } else if (name == "QVariant") { - *reinterpret_cast(ptr) = toVariant(exec, value); - return true; } // lazy registration of some common list types diff --git a/src/script/bridge/qscriptqobject.cpp b/src/script/bridge/qscriptqobject.cpp index 39ba935..91636da 100644 --- a/src/script/bridge/qscriptqobject.cpp +++ b/src/script/bridge/qscriptqobject.cpp @@ -523,19 +523,15 @@ static JSC::JSValue callQtMethod(JSC::ExecState *exec, QMetaMethod::MethodType c QByteArray returnTypeName = method.typeName(); int rtype = QMetaType::type(returnTypeName); if ((rtype == 0) && !returnTypeName.isEmpty()) { - if (returnTypeName == "QVariant") { - types.append(QScriptMetaType::variant()); - } else { - int enumIndex = indexOfMetaEnum(meta, returnTypeName); - if (enumIndex != -1) - types.append(QScriptMetaType::metaEnum(enumIndex, returnTypeName)); - else - types.append(QScriptMetaType::unresolved(returnTypeName)); - } + int enumIndex = indexOfMetaEnum(meta, returnTypeName); + if (enumIndex != -1) + types.append(QScriptMetaType::metaEnum(enumIndex, returnTypeName)); + else + types.append(QScriptMetaType::unresolved(returnTypeName)); } else { if (callType == QMetaMethod::Constructor) types.append(QScriptMetaType::metaType(QMetaType::QObjectStar, "QObject*")); - else if (returnTypeName == "QVariant") + else if (rtype == QMetaType::QVariant) types.append(QScriptMetaType::variant()); else types.append(QScriptMetaType::metaType(rtype, returnTypeName)); @@ -547,20 +543,15 @@ static JSC::JSValue callQtMethod(JSC::ExecState *exec, QMetaMethod::MethodType c QByteArray argTypeName = parameterTypeNames.at(i); int atype = QMetaType::type(argTypeName); if (atype == 0) { - if (argTypeName == "QVariant") { - types.append(QScriptMetaType::variant()); - } else { - int enumIndex = indexOfMetaEnum(meta, argTypeName); - if (enumIndex != -1) - types.append(QScriptMetaType::metaEnum(enumIndex, argTypeName)); - else - types.append(QScriptMetaType::unresolved(argTypeName)); - } - } else { - if (argTypeName == "QVariant") - types.append(QScriptMetaType::variant()); + int enumIndex = indexOfMetaEnum(meta, argTypeName); + if (enumIndex != -1) + types.append(QScriptMetaType::metaEnum(enumIndex, argTypeName)); else - types.append(QScriptMetaType::metaType(atype, argTypeName)); + types.append(QScriptMetaType::unresolved(argTypeName)); + } else if (atype == QMetaType::QVariant) { + types.append(QScriptMetaType::variant()); + } else { + types.append(QScriptMetaType::metaType(atype, argTypeName)); } } -- cgit v0.12 From 625f6b92a08d8ef2a1e5697fce28ca39d29917fe Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Thu, 4 Mar 2010 10:57:15 +0100 Subject: Fixes QMenu to only have static POD members This also fixes the autotests --- src/gui/widgets/qmenu.cpp | 24 ++++++++++++------------ src/gui/widgets/qmenu_p.h | 6 +++--- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/gui/widgets/qmenu.cpp b/src/gui/widgets/qmenu.cpp index 5db14b8..9a4916e 100644 --- a/src/gui/widgets/qmenu.cpp +++ b/src/gui/widgets/qmenu.cpp @@ -85,9 +85,8 @@ QT_BEGIN_NAMESPACE -QPointer QMenuPrivate::mouseDown; -QBasicTimer QMenuPrivate::menuDelayTimer; -QBasicTimer QMenuPrivate::sloppyDelayTimer; +QMenu *QMenuPrivate::mouseDown = 0; +int QMenuPrivate::sloppyDelayTimer = 0; /* QMenu code */ // internal class used for the torn off popup @@ -487,8 +486,8 @@ void QMenuPrivate::popupAction(QAction *action, int delay, bool activateFirst) if (action && action->isEnabled()) { if (!delay) q->internalDelayedPopup(); - else if (!QMenuPrivate::menuDelayTimer.isActive() && (!action->menu() || !action->menu()->isVisible())) - QMenuPrivate::menuDelayTimer.start(delay, q); + else if (!menuDelayTimer.isActive() && (!action->menu() || !action->menu()->isVisible())) + menuDelayTimer.start(delay, q); if (activateFirst && action->menu()) action->menu()->d_func()->setFirstActionActive(); } else if (QMenu *menu = activeMenu) { //hide the current item @@ -2375,8 +2374,8 @@ QMenu::event(QEvent *e) } } break; case QEvent::ContextMenu: - if(QMenuPrivate::menuDelayTimer.isActive()) { - QMenuPrivate::menuDelayTimer.stop(); + if(d->menuDelayTimer.isActive()) { + d->menuDelayTimer.stop(); internalDelayedPopup(); } break; @@ -2809,7 +2808,7 @@ void QMenu::mouseMoveEvent(QMouseEvent *e) } if (d->sloppyRegion.contains(e->pos())) { d->sloppyAction = action; - QMenuPrivate::sloppyDelayTimer.start(style()->styleHint(QStyle::SH_Menu_SubMenuPopupDelay, 0, this)*6, this); + QMenuPrivate::sloppyDelayTimer = startTimer(style()->styleHint(QStyle::SH_Menu_SubMenuPopupDelay, 0, this)*6); } else { d->setCurrentAction(action, style()->styleHint(QStyle::SH_Menu_SubMenuPopupDelay, 0, this)); } @@ -2847,11 +2846,12 @@ QMenu::timerEvent(QTimerEvent *e) d->scrollMenu((QMenuPrivate::QMenuScroller::ScrollDirection)d->scroll->scrollDirection); if (d->scroll->scrollFlags == QMenuPrivate::QMenuScroller::ScrollNone) d->scroll->scrollTimer.stop(); - } else if(QMenuPrivate::menuDelayTimer.timerId() == e->timerId()) { - QMenuPrivate::menuDelayTimer.stop(); + } else if(d->menuDelayTimer.timerId() == e->timerId()) { + d->menuDelayTimer.stop(); internalDelayedPopup(); - } else if(QMenuPrivate::sloppyDelayTimer.timerId() == e->timerId()) { - QMenuPrivate::sloppyDelayTimer.stop(); + } else if(QMenuPrivate::sloppyDelayTimer == e->timerId()) { + killTimer(QMenuPrivate::sloppyDelayTimer); + QMenuPrivate::sloppyDelayTimer = 0; internalSetSloppyAction(); } else if(d->searchBufferTimer.timerId() == e->timerId()) { d->searchBuffer.clear(); diff --git a/src/gui/widgets/qmenu_p.h b/src/gui/widgets/qmenu_p.h index aaed6b1..276ffe6 100644 --- a/src/gui/widgets/qmenu_p.h +++ b/src/gui/widgets/qmenu_p.h @@ -202,7 +202,7 @@ public: bool activationRecursionGuard; //selection - static QPointer mouseDown; + static QMenu *mouseDown; QPoint mousePopupPos; uint hasHadMouse : 1; uint aboutToHide : 1; @@ -212,7 +212,7 @@ public: QAction *selectAction; QAction *cancelAction; #endif - static QBasicTimer menuDelayTimer; + QBasicTimer menuDelayTimer; enum SelectionReason { SelectedFromKeyboard, SelectedFromElsewhere @@ -272,7 +272,7 @@ public: mutable bool hasCheckableItems; //sloppy selection - static QBasicTimer sloppyDelayTimer; + static int sloppyDelayTimer; mutable QAction *sloppyAction; QRegion sloppyRegion; -- cgit v0.12 From e53480370409b96d24d3f53513e8b2019a398e70 Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Thu, 4 Mar 2010 11:12:44 +0100 Subject: Finish to resolve merge conflict. Move the change that were made in commit 9957e85e37345e946ecc67196d65fbca867a2001 from src/multimedia/qml/qml.pri to src/multimedia/effects/effects.pri --- src/multimedia/effects/effects.pri | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/src/multimedia/effects/effects.pri b/src/multimedia/effects/effects.pri index 5edd452..ff762e8 100644 --- a/src/multimedia/effects/effects.pri +++ b/src/multimedia/effects/effects.pri @@ -1,15 +1,16 @@ - -system(pkg-config --exists \'libpulse >= 0.9.10\') { - DEFINES += QT_MULTIMEDIA_PULSEAUDIO - HEADERS += $$PWD/qsoundeffect_pulse_p.h - SOURCES += $$PWD/qsoundeffect_pulse_p.cpp - LIBS += -lpulse -} else:x11 { - DEFINES += QT_MULTIMEDIA_QMEDIAPLAYER - HEADERS += $$PWD/qsoundeffect_qmedia_p.h - SOURCES += $$PWD/qsoundeffect_qmedia_p.cpp +unix { + unix:contains(QT_CONFIG, pulseaudio) { + DEFINES += QT_MULTIMEDIA_PULSEAUDIO + HEADERS += $$PWD/qsoundeffect_pulse_p.h + SOURCES += $$PWD/qsoundeffect_pulse_p.cpp + LIBS += -lpulse + } else { + DEFINES += QT_MULTIMEDIA_QMEDIAPLAYER + HEADERS += $$PWD/qsoundeffect_qmedia_p.h + SOURCES += $$PWD/qsoundeffect_qmedia_p.cpp + } } else { HEADERS += $$PWD/qsoundeffect_qsound_p.h SOURCES += $$PWD/qsoundeffect_qsound_p.cpp -- cgit v0.12 From 24c56ac5309150cf7ba42cd974df4e98d97ebb81 Mon Sep 17 00:00:00 2001 From: Thierry Bastian Date: Thu, 4 Mar 2010 11:21:37 +0100 Subject: Build fix for Sun Studio Task-number: QTBUG-8192 --- src/gui/widgets/qcombobox.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gui/widgets/qcombobox.h b/src/gui/widgets/qcombobox.h index 9b19a66..fb9af9f 100644 --- a/src/gui/widgets/qcombobox.h +++ b/src/gui/widgets/qcombobox.h @@ -111,10 +111,10 @@ public: bool hasFrame() const; inline int findText(const QString &text, - Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive) const + Qt::MatchFlags flags = static_cast(Qt::MatchExactly|Qt::MatchCaseSensitive)) const { return findData(text, Qt::DisplayRole, flags); } int findData(const QVariant &data, int role = Qt::UserRole, - Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive) const; + Qt::MatchFlags flags = static_cast(Qt::MatchExactly|Qt::MatchCaseSensitive)) const; enum InsertPolicy { NoInsert, -- cgit v0.12