From 0b1b06ffc0a334263c01e32e5bfb50b4d96ba70d Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Mon, 25 Apr 2016 16:42:11 -0700 Subject: Add a QMutex::isRecursive() const noexcept This is source- and binary-compatible, including the marking of the existing function as noexcept. [ChangeLog][QtCore][QMutex] Made the isRecursive() method be a const function so that it can be called in const QMutex objects too. Change-Id: Ifea6e497f11a461db432ffff1448bead97c08f92 Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/corelib/thread/qmutex.cpp | 13 ++++++++----- src/corelib/thread/qmutex.h | 11 +++++++---- 2 files changed, 15 insertions(+), 9 deletions(-) (limited to 'src/corelib') diff --git a/src/corelib/thread/qmutex.cpp b/src/corelib/thread/qmutex.cpp index 8d9fa82a7a..0b14ec31c2 100644 --- a/src/corelib/thread/qmutex.cpp +++ b/src/corelib/thread/qmutex.cpp @@ -282,19 +282,22 @@ void QMutex::unlock() Q_DECL_NOTHROW unlockInternal(); } +bool QBasicMutex::isRecursive() Q_DECL_NOTHROW +{ + return QT_PREPEND_NAMESPACE(isRecursive)(d_ptr.loadAcquire()); +} + /*! - \fn void QMutex::isRecursive() - \since 5.0 + \overload + \since 5.7 Returns \c true if the mutex is recursive - */ -bool QBasicMutex::isRecursive() +bool QBasicMutex::isRecursive() const Q_DECL_NOTHROW { return QT_PREPEND_NAMESPACE(isRecursive)(d_ptr.loadAcquire()); } - /*! \class QMutexLocker \inmodule QtCore diff --git a/src/corelib/thread/qmutex.h b/src/corelib/thread/qmutex.h index 57f89aa439..a06bcd99ac 100644 --- a/src/corelib/thread/qmutex.h +++ b/src/corelib/thread/qmutex.h @@ -75,7 +75,8 @@ public: return fastTryLock(); } - bool isRecursive(); //### Qt6: mark const + bool isRecursive() Q_DECL_NOTHROW; //### Qt6: remove me + bool isRecursive() const Q_DECL_NOTHROW; private: inline bool fastTryLock() Q_DECL_NOTHROW { @@ -104,7 +105,8 @@ private: friend class QMutexData; }; -class Q_CORE_EXPORT QMutex : public QBasicMutex { +class Q_CORE_EXPORT QMutex : public QBasicMutex +{ public: enum RecursionMode { NonRecursive, Recursive }; explicit QMutex(RecursionMode mode = NonRecursive); @@ -114,7 +116,8 @@ public: bool tryLock(int timeout = 0) QT_MUTEX_LOCK_NOEXCEPT; void unlock() Q_DECL_NOTHROW; - using QBasicMutex::isRecursive; + bool isRecursive() const Q_DECL_NOTHROW + { return QBasicMutex::isRecursive(); } private: Q_DISABLE_COPY(QMutex) @@ -187,7 +190,7 @@ public: inline void lock() Q_DECL_NOTHROW {} inline bool tryLock(int timeout = 0) Q_DECL_NOTHROW { Q_UNUSED(timeout); return true; } inline void unlock() Q_DECL_NOTHROW {} - inline bool isRecursive() Q_DECL_NOTHROW { return true; } + inline bool isRecursive() const Q_DECL_NOTHROW { return true; } private: Q_DISABLE_COPY(QMutex) -- cgit v1.2.3