diff options
author | Shane Kearns <shane.kearns@sosco.com> | 2009-10-08 09:46:05 (GMT) |
---|---|---|
committer | Shane Kearns <shane.kearns@sosco.com> | 2009-10-08 12:53:09 (GMT) |
commit | 00b198b1cdf48bd88d61bb256ec3ff455735e38c (patch) | |
tree | c8325deb0459dd1cff0a2bc0654fd8a654ee6af3 /src/3rdparty | |
parent | e1e323aae504dfa770b447b63754f374fe82e5e9 (diff) | |
download | Qt-00b198b1cdf48bd88d61bb256ec3ff455735e38c.zip Qt-00b198b1cdf48bd88d61bb256ec3ff455735e38c.tar.gz Qt-00b198b1cdf48bd88d61bb256ec3ff455735e38c.tar.bz2 |
Conservative fix for link error with ARM RVCT compiler on symbian sbsv2
Not exporting the whole class prevents the capabilities example from
linking, because the vtable is not exported.
However windows builds don't support export of templated class, and
export the vtable implicitly when there is an exported member function.
Task-number: QTBUG-4593
Reviewed-by: Thierry Bastian
Diffstat (limited to 'src/3rdparty')
-rw-r--r-- | src/3rdparty/phonon/phonon/objectdescriptionmodel.h | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/3rdparty/phonon/phonon/objectdescriptionmodel.h b/src/3rdparty/phonon/phonon/objectdescriptionmodel.h index ba3cb42..a3c72b2 100644 --- a/src/3rdparty/phonon/phonon/objectdescriptionmodel.h +++ b/src/3rdparty/phonon/phonon/objectdescriptionmodel.h @@ -139,6 +139,21 @@ namespace Phonon ObjectDescriptionModelDataPrivate *const d; }; +/* Required to ensure template class vtables are exported on both symbian +and existing builds. */ +#if defined(Q_OS_SYMBIAN) && defined(Q_CC_RVCT) +// RVCT compiler (2.2.686) requires the export declaration to be on the class to export vtables +// MWC compiler works both ways +// GCCE compiler is unknown (it can't compile QtCore yet) +#define PHONON_TEMPLATE_CLASS_EXPORT PHONON_EXPORT +#define PHONON_TEMPLATE_CLASS_MEMBER_EXPORT +#else +// Windows builds (at least) do not support export declaration on templated class +// But if you export a member function, the vtable is implicitly exported +#define PHONON_TEMPLATE_CLASS_EXPORT +#define PHONON_TEMPLATE_CLASS_MEMBER_EXPORT PHONON_EXPORT +#endif + /** \class ObjectDescriptionModel objectdescriptionmodel.h Phonon/ObjectDescriptionModel * \short The ObjectDescriptionModel class provides a model from * a list of ObjectDescription objects. @@ -175,7 +190,7 @@ namespace Phonon * \author Matthias Kretz <kretz@kde.org> */ template<ObjectDescriptionType type> - class ObjectDescriptionModel : public QAbstractListModel + class PHONON_TEMPLATE_CLASS_EXPORT ObjectDescriptionModel : public QAbstractListModel { public: Q_OBJECT_CHECK @@ -188,11 +203,11 @@ namespace Phonon */ #if !defined(Q_CC_MINGW) || __MINGW32_MAJOR_VERSION >= 4 /** \internal */ - static PHONON_EXPORT const QMetaObject staticMetaObject; + static PHONON_TEMPLATE_CLASS_MEMBER_EXPORT const QMetaObject staticMetaObject; /** \internal */ - PHONON_EXPORT const QMetaObject *metaObject() const; + PHONON_TEMPLATE_CLASS_MEMBER_EXPORT const QMetaObject *metaObject() const; /** \internal */ - PHONON_EXPORT void *qt_metacast(const char *_clname); + PHONON_TEMPLATE_CLASS_MEMBER_EXPORT void *qt_metacast(const char *_clname); //int qt_metacall(QMetaObject::Call _c, int _id, void **_a); #endif |