pidgin/quail/quail-redux

Use atomic for the socket notifier id

2014-02-26, Phil Hannent
4b9959ebe8ea
Parents 5edf969099f1
Children 7f0bee37a580
Use atomic for the socket notifier id
--- a/src/QuailEventLoop.cpp Wed Feb 26 17:50:01 2014 +0000
+++ b/src/QuailEventLoop.cpp Wed Feb 26 18:14:19 2014 +0000
@@ -21,6 +21,7 @@
*/
#include "QuailEventLoop.h"
#include <QApplication>
+#include <QAtomicInt>
#include <QDebug>
#include <QMap>
#include <QMutexLocker>
@@ -131,16 +132,17 @@
if (!bWrite && !bRead)
qWarning() << "quail_event_loop::quail_input_add:Unknown QSocketNotifier type";
- notifier->setProperty("sourceId", nextSourceId);
- m_io.insert(nextSourceId, new QQuailInputNotifier(fd
- , cond
- , func
- , userData
- , notifier
- , nextSourceId
- ));
+ guint sourceId = (quint32)nextSourceId.fetchAndAddRelaxed(1);
+ notifier->setProperty("sourceId", sourceId);
+ m_io.insert(sourceId, new QQuailInputNotifier(fd
+ , cond
+ , func
+ , userData
+ , notifier
+ , sourceId
+ ));
//qDebug() << "quail_application::quail_input_add.end::" << m_io.size();
- return nextSourceId++;
+ return sourceId;
}
gboolean
--- a/src/QuailEventLoop.h Wed Feb 26 17:50:01 2014 +0000
+++ b/src/QuailEventLoop.h Wed Feb 26 18:14:19 2014 +0000
@@ -24,6 +24,7 @@
#include <libpurple/eventloop.h>
+#include <QAtomicInt>
#include <QObject>
#include <QMap>
#include <QMutex>
@@ -92,7 +93,7 @@
private:
QMap<int, QQuailTimer*> m_timers;
QMap<guint, QQuailInputNotifier*> m_io;
- guint nextSourceId;
+ QAtomicInt nextSourceId;
QMutex m_timer_mutex;
};