diff options
author | Marc Mutz <marc.mutz@qt.io> | 2022-01-31 17:19:06 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2022-03-26 17:15:02 +0100 |
commit | 80b6bcc385863a38d499685af9b8e857e46cbdba (patch) | |
tree | 252b745a2b8dd617224f49cf89139cd5baef317c /src/gui | |
parent | edb64351cd0896d27af15d54d5fa868c7567eced (diff) |
Short live Q_CONSTINIT!
It expands to the first available of
- constinit (C++20)
- [[clang::require_constant_initialization]] (Clang)
- __constinit (GCC >= 10)
Use it around the code (on and near static QBasicAtomic; this patch
makes no attempt to find all statics in qtbase).
[ChangeLog][QtCore][QtGlobal] Added macro Q_CONSTINIT.
Fixes: QTBUG-100484
Change-Id: I11e0363a7acb3464476859d12ec7f94319d82be7
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/image/qimagereader.cpp | 2 | ||||
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 78 | ||||
-rw-r--r-- | src/gui/kernel/qinputdevice.cpp | 2 | ||||
-rw-r--r-- | src/gui/painting/qcolorspace.cpp | 2 |
4 files changed, 42 insertions, 42 deletions
diff --git a/src/gui/image/qimagereader.cpp b/src/gui/image/qimagereader.cpp index 940f87af9a..fe0c01e54c 100644 --- a/src/gui/image/qimagereader.cpp +++ b/src/gui/image/qimagereader.cpp @@ -186,7 +186,7 @@ static QImageIOHandler *createReadHandlerHelper(QIODevice *device, QByteArray suffix; #ifndef QT_NO_IMAGEFORMATPLUGIN - static QBasicMutex mutex; + Q_CONSTINIT static QBasicMutex mutex; const auto locker = qt_scoped_lock(mutex); typedef QMultiMap<int, QString> PluginKeyMap; diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 0935f654eb..f45cf1fb78 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -145,79 +145,79 @@ QT_BEGIN_NAMESPACE Q_CORE_EXPORT void qt_call_post_routines(); Q_GUI_EXPORT bool qt_is_tty_app = false; -Qt::MouseButtons QGuiApplicationPrivate::mouse_buttons = Qt::NoButton; -Qt::KeyboardModifiers QGuiApplicationPrivate::modifier_buttons = Qt::NoModifier; +Q_CONSTINIT Qt::MouseButtons QGuiApplicationPrivate::mouse_buttons = Qt::NoButton; +Q_CONSTINIT Qt::KeyboardModifiers QGuiApplicationPrivate::modifier_buttons = Qt::NoModifier; -QGuiApplicationPrivate::QLastCursorPosition QGuiApplicationPrivate::lastCursorPosition; +Q_CONSTINIT QGuiApplicationPrivate::QLastCursorPosition QGuiApplicationPrivate::lastCursorPosition; -QWindow *QGuiApplicationPrivate::currentMouseWindow = nullptr; +Q_CONSTINIT QWindow *QGuiApplicationPrivate::currentMouseWindow = nullptr; -QString QGuiApplicationPrivate::styleOverride; +Q_CONSTINIT QString QGuiApplicationPrivate::styleOverride; -Qt::ApplicationState QGuiApplicationPrivate::applicationState = Qt::ApplicationInactive; +Q_CONSTINIT Qt::ApplicationState QGuiApplicationPrivate::applicationState = Qt::ApplicationInactive; -Qt::HighDpiScaleFactorRoundingPolicy QGuiApplicationPrivate::highDpiScaleFactorRoundingPolicy = +Q_CONSTINIT Qt::HighDpiScaleFactorRoundingPolicy QGuiApplicationPrivate::highDpiScaleFactorRoundingPolicy = Qt::HighDpiScaleFactorRoundingPolicy::PassThrough; -QPointer<QWindow> QGuiApplicationPrivate::currentDragWindow; +Q_CONSTINIT QPointer<QWindow> QGuiApplicationPrivate::currentDragWindow; -QList<QGuiApplicationPrivate::TabletPointData> QGuiApplicationPrivate::tabletDevicePoints; // TODO remove +Q_CONSTINIT QList<QGuiApplicationPrivate::TabletPointData> QGuiApplicationPrivate::tabletDevicePoints; // TODO remove -QPlatformIntegration *QGuiApplicationPrivate::platform_integration = nullptr; -QPlatformTheme *QGuiApplicationPrivate::platform_theme = nullptr; +Q_CONSTINIT QPlatformIntegration *QGuiApplicationPrivate::platform_integration = nullptr; +Q_CONSTINIT QPlatformTheme *QGuiApplicationPrivate::platform_theme = nullptr; -QList<QObject *> QGuiApplicationPrivate::generic_plugin_list; +Q_CONSTINIT QList<QObject *> QGuiApplicationPrivate::generic_plugin_list; enum ApplicationResourceFlags { ApplicationFontExplicitlySet = 0x2 }; -static unsigned applicationResourceFlags = 0; +Q_CONSTINIT static unsigned applicationResourceFlags = 0; -QIcon *QGuiApplicationPrivate::app_icon = nullptr; +Q_CONSTINIT QIcon *QGuiApplicationPrivate::app_icon = nullptr; -QString *QGuiApplicationPrivate::platform_name = nullptr; -QString *QGuiApplicationPrivate::displayName = nullptr; -QString *QGuiApplicationPrivate::desktopFileName = nullptr; +Q_CONSTINIT QString *QGuiApplicationPrivate::platform_name = nullptr; +Q_CONSTINIT QString *QGuiApplicationPrivate::displayName = nullptr; +Q_CONSTINIT QString *QGuiApplicationPrivate::desktopFileName = nullptr; -QPalette *QGuiApplicationPrivate::app_pal = nullptr; // default application palette +Q_CONSTINIT QPalette *QGuiApplicationPrivate::app_pal = nullptr; // default application palette -Qt::MouseButton QGuiApplicationPrivate::mousePressButton = Qt::NoButton; +Q_CONSTINIT Qt::MouseButton QGuiApplicationPrivate::mousePressButton = Qt::NoButton; -static int mouseDoubleClickDistance = 0; -static int touchDoubleTapDistance = 0; +Q_CONSTINIT static int mouseDoubleClickDistance = 0; +Q_CONSTINIT static int touchDoubleTapDistance = 0; -QWindow *QGuiApplicationPrivate::currentMousePressWindow = nullptr; +Q_CONSTINIT QWindow *QGuiApplicationPrivate::currentMousePressWindow = nullptr; -static Qt::LayoutDirection layout_direction = Qt::LayoutDirectionAuto; -static Qt::LayoutDirection effective_layout_direction = Qt::LeftToRight; -static bool force_reverse = false; +Q_CONSTINIT static Qt::LayoutDirection layout_direction = Qt::LayoutDirectionAuto; +Q_CONSTINIT static Qt::LayoutDirection effective_layout_direction = Qt::LeftToRight; +Q_CONSTINIT static bool force_reverse = false; -QGuiApplicationPrivate *QGuiApplicationPrivate::self = nullptr; -int QGuiApplicationPrivate::m_fakeMouseSourcePointId = -1; +Q_CONSTINIT QGuiApplicationPrivate *QGuiApplicationPrivate::self = nullptr; +Q_CONSTINIT int QGuiApplicationPrivate::m_fakeMouseSourcePointId = -1; #ifndef QT_NO_CLIPBOARD -QClipboard *QGuiApplicationPrivate::qt_clipboard = nullptr; +Q_CONSTINIT QClipboard *QGuiApplicationPrivate::qt_clipboard = nullptr; #endif -QList<QScreen *> QGuiApplicationPrivate::screen_list; +Q_CONSTINIT QList<QScreen *> QGuiApplicationPrivate::screen_list; -QWindowList QGuiApplicationPrivate::window_list; -QWindow *QGuiApplicationPrivate::focus_window = nullptr; +Q_CONSTINIT QWindowList QGuiApplicationPrivate::window_list; +Q_CONSTINIT QWindow *QGuiApplicationPrivate::focus_window = nullptr; -static QBasicMutex applicationFontMutex; -QFont *QGuiApplicationPrivate::app_font = nullptr; -QStyleHints *QGuiApplicationPrivate::styleHints = nullptr; -bool QGuiApplicationPrivate::obey_desktop_settings = true; +Q_CONSTINIT static QBasicMutex applicationFontMutex; +Q_CONSTINIT QFont *QGuiApplicationPrivate::app_font = nullptr; +Q_CONSTINIT QStyleHints *QGuiApplicationPrivate::styleHints = nullptr; +Q_CONSTINIT bool QGuiApplicationPrivate::obey_desktop_settings = true; -QInputDeviceManager *QGuiApplicationPrivate::m_inputDeviceManager = nullptr; +Q_CONSTINIT QInputDeviceManager *QGuiApplicationPrivate::m_inputDeviceManager = nullptr; -qreal QGuiApplicationPrivate::m_maxDevicePixelRatio = 0.0; +Q_CONSTINIT qreal QGuiApplicationPrivate::m_maxDevicePixelRatio = 0.0; -static qreal fontSmoothingGamma = 1.7; +Q_CONSTINIT static qreal fontSmoothingGamma = 1.7; -bool QGuiApplicationPrivate::quitOnLastWindowClosed = true; +Q_CONSTINIT bool QGuiApplicationPrivate::quitOnLastWindowClosed = true; extern void qRegisterGuiVariant(); #if QT_CONFIG(animation) diff --git a/src/gui/kernel/qinputdevice.cpp b/src/gui/kernel/qinputdevice.cpp index 8aea2f6e2e..841163608b 100644 --- a/src/gui/kernel/qinputdevice.cpp +++ b/src/gui/kernel/qinputdevice.cpp @@ -264,7 +264,7 @@ QString QInputDevice::seatName() const using InputDevicesList = QList<const QInputDevice *>; Q_GLOBAL_STATIC(InputDevicesList, deviceList) -static QBasicMutex devicesMutex; +Q_CONSTINIT static QBasicMutex devicesMutex; /*! Returns a list of all registered input devices (keyboards and pointing devices). diff --git a/src/gui/painting/qcolorspace.cpp b/src/gui/painting/qcolorspace.cpp index 4601746992..ca54f0155c 100644 --- a/src/gui/painting/qcolorspace.cpp +++ b/src/gui/painting/qcolorspace.cpp @@ -54,7 +54,7 @@ QT_BEGIN_NAMESPACE -QBasicMutex QColorSpacePrivate::s_lutWriteLock; +Q_CONSTINIT QBasicMutex QColorSpacePrivate::s_lutWriteLock; static QAtomicPointer<QColorSpacePrivate> s_predefinedColorspacePrivates[QColorSpace::ProPhotoRgb] = {}; static void cleanupPredefinedColorspaces() |