24 #include <QWaitCondition>
25 #include <QMutexLocker>
91 mutable QMutex m_mutex;
92 QWaitCondition m_notEmptyCondition;
93 QWaitCondition m_notFullCondition;
101 , m_mutex(QMutex::NonRecursive)
102 , m_notEmptyCondition()
103 , m_notFullCondition()
116 if (m_queue.size() == m_maxSize) {
118 case OverflowModeDiscardOldest:
119 m_queue.removeFirst();
120 m_queue.append(item);
122 case OverflowModeDiscardNewest:
125 case OverflowModeWait:
126 m_notFullCondition.wait(&m_mutex);
127 m_queue.append(item);
131 m_queue.append(item);
132 if (m_queue.size() == 1) {
133 m_notEmptyCondition.wakeOne();
144 if (m_queue.size() == 0) {
145 m_notEmptyCondition.wait(&m_mutex);
147 retVal = m_queue.takeFirst();
148 if (m_mode == OverflowModeWait && m_queue.size() == m_maxSize - 1) {
149 m_notFullCondition.wakeOne();
158 QMutexLocker locker(&m_mutex);
159 return m_queue.size();
162 #endif // DATAQUEUE_H