Deprecate QMutex in recursive mode
Use QRecursiveMutex instead. Pick-to: 5.15 Change-Id: I862fc2b3143deeb5c96dc8d445be5f9fa2535670 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
parent
10bc093d4f
commit
0e681064b5
@ -152,6 +152,7 @@ public:
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
\enum QMutex::RecursionMode
|
\enum QMutex::RecursionMode
|
||||||
|
\obsolete Use QRecursiveMutex to create a recursive mutex.
|
||||||
|
|
||||||
\value Recursive In this mode, a thread can lock the same mutex
|
\value Recursive In this mode, a thread can lock the same mutex
|
||||||
multiple times and the mutex won't be unlocked
|
multiple times and the mutex won't be unlocked
|
||||||
@ -173,6 +174,7 @@ public:
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Constructs a new mutex. The mutex is created in an unlocked state.
|
Constructs a new mutex. The mutex is created in an unlocked state.
|
||||||
|
\obsolete Use QRecursiveMutex to create a recursive mutex.
|
||||||
|
|
||||||
If \a mode is QMutex::Recursive, a thread can lock the same mutex
|
If \a mode is QMutex::Recursive, a thread can lock the same mutex
|
||||||
multiple times and the mutex won't be unlocked until a
|
multiple times and the mutex won't be unlocked until a
|
||||||
@ -197,7 +199,7 @@ QMutex::QMutex(RecursionMode mode)
|
|||||||
QMutex::~QMutex()
|
QMutex::~QMutex()
|
||||||
{
|
{
|
||||||
QMutexData *d = d_ptr.loadRelaxed();
|
QMutexData *d = d_ptr.loadRelaxed();
|
||||||
if (isRecursive()) {
|
if (QBasicMutex::isRecursive()) {
|
||||||
delete static_cast<QRecursiveMutexPrivate *>(d);
|
delete static_cast<QRecursiveMutexPrivate *>(d);
|
||||||
} else if (d) {
|
} else if (d) {
|
||||||
#ifndef QT_LINUX_FUTEX
|
#ifndef QT_LINUX_FUTEX
|
||||||
|
@ -132,8 +132,16 @@ public:
|
|||||||
#else
|
#else
|
||||||
QMutex() { d_ptr.storeRelaxed(nullptr); }
|
QMutex() { d_ptr.storeRelaxed(nullptr); }
|
||||||
#endif
|
#endif
|
||||||
|
#if QT_DEPRECATED_SINCE(5,15)
|
||||||
enum RecursionMode { NonRecursive, Recursive };
|
enum RecursionMode { NonRecursive, Recursive };
|
||||||
|
QT_DEPRECATED_VERSION_X(5, 15, "Use QRecursiveMutex instead of a recursive QMutex")
|
||||||
explicit QMutex(RecursionMode mode);
|
explicit QMutex(RecursionMode mode);
|
||||||
|
|
||||||
|
QT_DEPRECATED_VERSION_X(5, 15, "Use QRecursiveMutex instead of a recursive QMutex")
|
||||||
|
bool isRecursive() const noexcept
|
||||||
|
{ return QBasicMutex::isRecursive(); }
|
||||||
|
#endif
|
||||||
|
|
||||||
~QMutex();
|
~QMutex();
|
||||||
|
|
||||||
// BasicLockable concept
|
// BasicLockable concept
|
||||||
@ -164,9 +172,6 @@ public:
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool isRecursive() const noexcept
|
|
||||||
{ return QBasicMutex::isRecursive(); }
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Q_DISABLE_COPY(QMutex)
|
Q_DISABLE_COPY(QMutex)
|
||||||
friend class QMutexLocker;
|
friend class QMutexLocker;
|
||||||
|
@ -213,7 +213,7 @@ bool QWaitCondition::wait(QMutex *mutex, QDeadlineTimer deadline)
|
|||||||
{
|
{
|
||||||
if (! mutex)
|
if (! mutex)
|
||||||
return false;
|
return false;
|
||||||
if (mutex->isRecursive()) {
|
if (static_cast<QBasicMutex *>(mutex)->isRecursive()) {
|
||||||
qWarning("QWaitCondition: cannot wait on recursive mutexes");
|
qWarning("QWaitCondition: cannot wait on recursive mutexes");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user