From 9e4a8fa163817014a4a43e7175ece9ed7d4a444c Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 11 Jan 2023 14:07:20 +0100 Subject: [PATCH] QPermission: unexport classes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Non-polymorphic classes should not be exported wholesale, because MSVC exports inline API in such classes, too, which has caused numerous problems over the years. Only export individual functions. Change-Id: I8be55c1fcdb21d143a02bb62498caeea6ebca068 Reviewed-by: Tor Arne Vestbø Reviewed-by: Qt CI Bot (cherry picked from commit ceb4140b59428a805d11c036ef223f46d83653ef) Reviewed-by: Qt Cherry-pick Bot --- src/corelib/kernel/qpermissions.h | 36 +++++++++++++++---------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/corelib/kernel/qpermissions.h b/src/corelib/kernel/qpermissions.h index 469403587b6..4261efe50ae 100644 --- a/src/corelib/kernel/qpermissions.h +++ b/src/corelib/kernel/qpermissions.h @@ -83,62 +83,62 @@ private: }; #define QT_PERMISSION(ClassName) \ - Q_GADGET \ + Q_GADGET_EXPORT(Q_CORE_EXPORT) \ using QtPermissionHelper = void; \ friend class QPermission; \ public: \ - ClassName(); \ - ClassName(const ClassName &other) noexcept; \ - ClassName(ClassName &&other) noexcept; \ - ~ClassName() noexcept; \ - ClassName &operator=(const ClassName &other) noexcept; \ + Q_CORE_EXPORT ClassName(); \ + Q_CORE_EXPORT ClassName(const ClassName &other) noexcept; \ + Q_CORE_EXPORT ClassName(ClassName &&other) noexcept; \ + Q_CORE_EXPORT ~ClassName() noexcept; \ + Q_CORE_EXPORT ClassName &operator=(const ClassName &other) noexcept; \ QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(ClassName) \ void swap(ClassName &other) noexcept { d.swap(other.d); } \ private: \ QtPrivate::QExplicitlySharedDataPointerV2 d; class QLocationPermissionPrivate; -class Q_CORE_EXPORT QLocationPermission +class QLocationPermission { QT_PERMISSION(QLocationPermission) public: enum Accuracy { Approximate, Precise }; Q_ENUM(Accuracy) - void setAccuracy(Accuracy accuracy); - Accuracy accuracy() const; + Q_CORE_EXPORT void setAccuracy(Accuracy accuracy); + Q_CORE_EXPORT Accuracy accuracy() const; enum Availability { WhenInUse, Always }; Q_ENUM(Availability) - void setAvailability(Availability availability); - Availability availability() const; + Q_CORE_EXPORT void setAvailability(Availability availability); + Q_CORE_EXPORT Availability availability() const; }; Q_DECLARE_SHARED(QLocationPermission) class QCalendarPermissionPrivate; -class Q_CORE_EXPORT QCalendarPermission +class QCalendarPermission { QT_PERMISSION(QCalendarPermission) public: - void setReadOnly(bool enable); - bool isReadOnly() const; + Q_CORE_EXPORT void setReadOnly(bool enable); + Q_CORE_EXPORT bool isReadOnly() const; }; Q_DECLARE_SHARED(QCalendarPermission) class QContactsPermissionPrivate; -class Q_CORE_EXPORT QContactsPermission +class QContactsPermission { QT_PERMISSION(QContactsPermission) public: - void setReadOnly(bool enable); - bool isReadOnly() const; + Q_CORE_EXPORT void setReadOnly(bool enable); + Q_CORE_EXPORT bool isReadOnly() const; }; Q_DECLARE_SHARED(QContactsPermission) #define Q_DECLARE_MINIMAL_PERMISSION(ClassName) \ class ClassName##Private; \ - class Q_CORE_EXPORT ClassName \ + class ClassName \ { \ QT_PERMISSION(ClassName) \ }; \