mirror of
https://bitbucket.org/smil3y/katie.git
synced 2025-02-24 10:52:56 +00:00
de-couple the global socket handlers mutex from the list
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
66208e48ba
commit
7e6a5d055b
1 changed files with 12 additions and 21 deletions
|
@ -28,28 +28,19 @@
|
|||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QSocketEngineHandlerList : public QList<QSocketEngineHandler*>
|
||||
{
|
||||
public:
|
||||
QMutex mutex;
|
||||
};
|
||||
|
||||
Q_GLOBAL_STATIC(QSocketEngineHandlerList, socketHandlers)
|
||||
Q_GLOBAL_STATIC(QMutex, qGlobalSocketMutex)
|
||||
Q_GLOBAL_STATIC(QList<QSocketEngineHandler*>, qGlobalSocketHandlers)
|
||||
|
||||
QSocketEngineHandler::QSocketEngineHandler()
|
||||
{
|
||||
if (!socketHandlers())
|
||||
return;
|
||||
QMutexLocker locker(&socketHandlers()->mutex);
|
||||
socketHandlers()->prepend(this);
|
||||
QMutexLocker locker(qGlobalSocketMutex());
|
||||
qGlobalSocketHandlers()->prepend(this);
|
||||
}
|
||||
|
||||
QSocketEngineHandler::~QSocketEngineHandler()
|
||||
{
|
||||
if (!socketHandlers())
|
||||
return;
|
||||
QMutexLocker locker(&socketHandlers()->mutex);
|
||||
socketHandlers()->removeAll(this);
|
||||
QMutexLocker locker(qGlobalSocketMutex());
|
||||
qGlobalSocketHandlers()->removeAll(this);
|
||||
}
|
||||
|
||||
QAbstractSocketEnginePrivate::QAbstractSocketEnginePrivate()
|
||||
|
@ -83,9 +74,9 @@ QAbstractSocketEngine *QAbstractSocketEngine::createSocketEngine(QAbstractSocket
|
|||
return 0;
|
||||
#endif
|
||||
|
||||
QMutexLocker locker(&socketHandlers()->mutex);
|
||||
for (int i = 0; i < socketHandlers()->size(); i++) {
|
||||
if (QAbstractSocketEngine *ret = socketHandlers()->at(i)->createSocketEngine(socketType, proxy, parent))
|
||||
QMutexLocker locker(qGlobalSocketMutex());
|
||||
for (int i = 0; i < qGlobalSocketHandlers()->size(); i++) {
|
||||
if (QAbstractSocketEngine *ret = qGlobalSocketHandlers()->at(i)->createSocketEngine(socketType, proxy, parent))
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -100,9 +91,9 @@ QAbstractSocketEngine *QAbstractSocketEngine::createSocketEngine(QAbstractSocket
|
|||
|
||||
QAbstractSocketEngine *QAbstractSocketEngine::createSocketEngine(int socketDescripter, QObject *parent)
|
||||
{
|
||||
QMutexLocker locker(&socketHandlers()->mutex);
|
||||
for (int i = 0; i < socketHandlers()->size(); i++) {
|
||||
if (QAbstractSocketEngine *ret = socketHandlers()->at(i)->createSocketEngine(socketDescripter, parent))
|
||||
QMutexLocker locker(qGlobalSocketMutex());
|
||||
for (int i = 0; i < qGlobalSocketHandlers()->size(); i++) {
|
||||
if (QAbstractSocketEngine *ret = qGlobalSocketHandlers()->at(i)->createSocketEngine(socketDescripter, parent))
|
||||
return ret;
|
||||
}
|
||||
return new QNativeSocketEngine(parent);
|
||||
|
|
Loading…
Add table
Reference in a new issue