qeventdispatcher_unix.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/corelib/kernel/qeventdispatcher_unix.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6-
7-
8-
9-
10-
11-
12static const char *socketType(QSocketNotifier::Type type)-
13{-
14 switch (type) {-
15 case
never executed: case QSocketNotifier::Read:
QSocketNotifier::Read:
never executed: case QSocketNotifier::Read:
0
16 return
never executed: return "Read";
"Read";
never executed: return "Read";
0
17 case
never executed: case QSocketNotifier::Write:
QSocketNotifier::Write:
never executed: case QSocketNotifier::Write:
0
18 return
never executed: return "Write";
"Write";
never executed: return "Write";
0
19 case
never executed: case QSocketNotifier::Exception:
QSocketNotifier::Exception:
never executed: case QSocketNotifier::Exception:
0
20 return
never executed: return "Exception";
"Exception";
never executed: return "Exception";
0
21 }-
22-
23 do { ((!(false)) ? qt_assert_x("Q_UNREACHABLE()", "Q_UNREACHABLE was reached",__FILE__,89) : qt_noop()); __builtin_unreachable(); } while (0);-
24}
never executed: end of block
0
25-
26QThreadPipe::QThreadPipe()-
27{-
28 fds[0] = -1;-
29 fds[1] = -1;-
30-
31-
32-
33}
never executed: end of block
0
34-
35QThreadPipe::~QThreadPipe()-
36{-
37 if (fds[0] >= 0
fds[0] >= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
38 close(fds[0]);
never executed: close(fds[0]);
0
39-
40 if (fds[1] >= 0
fds[1] >= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
41 close(fds[1]);
never executed: close(fds[1]);
0
42-
43-
44-
45-
46}
never executed: end of block
0
47bool QThreadPipe::init()-
48{-
49 if ((
(fds[0] = even...CLOEXEC)) >= 0Description
TRUEnever evaluated
FALSEnever evaluated
fds[0] = eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC)) >= 0
(fds[0] = even...CLOEXEC)) >= 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
50 return
never executed: return true;
true;
never executed: return true;
0
51-
52 if (qt_safe_pipe(fds, 04000) == -1
qt_safe_pipe(fds, 04000) == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
53 perror("QThreadPipe: Unable to create pipe");-
54 return
never executed: return false;
false;
never executed: return false;
0
55 }-
56-
57-
58 return
never executed: return true;
true;
never executed: return true;
0
59}-
60-
61pollfd QThreadPipe::prepare() const-
62{-
63 return
never executed: return qt_make_pollfd(fds[0], 0x001);
qt_make_pollfd(fds[0], 0x001);
never executed: return qt_make_pollfd(fds[0], 0x001);
0
64}-
65-
66void QThreadPipe::wakeUp()-
67{-
68 if (wakeUps.testAndSetAcquire(0, 1)
wakeUps.testAn...tAcquire(0, 1)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
69-
70 if (fds[1] == -1
fds[1] == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
71-
72 eventfd_t value = 1;-
73 int ret;-
74 do { ret = eventfd_write(fds[0], value); }
never executed: end of block
while (ret == -1
ret == -1Description
TRUEnever evaluated
FALSEnever evaluated
&& (*
(*__errno_location ()) == 4Description
TRUEnever evaluated
FALSEnever evaluated
__errno_location ()) == 4
(*__errno_location ()) == 4Description
TRUEnever evaluated
FALSEnever evaluated
);
0
75 return;
never executed: return;
0
76 }-
77-
78 char c = 0;-
79 qt_safe_write(fds[1], &c, 1);-
80 }
never executed: end of block
0
81}
never executed: end of block
0
82-
83int QThreadPipe::check(const pollfd &pfd)-
84{-
85 ((!(pfd.fd == fds[0])) ? qt_assert("pfd.fd == fds[0]",__FILE__,192) : qt_noop());-
86-
87 char c[16];-
88 const int readyread = pfd.revents & 0x001;-
89-
90 if (readyread
readyreadDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
91-
92-
93-
94-
95-
96-
97-
98 if (fds[1] == -1
fds[1] == -1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
99-
100 eventfd_t value;-
101 eventfd_read(fds[0], &value);-
102 }
never executed: end of block
else
0
103-
104 {-
105 while (::
::read(fds[0],...sizeof(c)) > 0Description
TRUEnever evaluated
FALSEnever evaluated
read(fds[0], c, sizeof(c)) > 0
::read(fds[0],...sizeof(c)) > 0Description
TRUEnever evaluated
FALSEnever evaluated
) {}
never executed: end of block
0
106 }
never executed: end of block
0
107-
108-
109 if (!wakeUps.testAndSetRelease(1, 0)
!wakeUps.testA...tRelease(1, 0)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
110-
111 QMessageLogger(__FILE__, 218, __PRETTY_FUNCTION__).warning("QThreadPipe: internal error, wakeUps.testAndSetRelease(1, 0) failed!");-
112 }
never executed: end of block
0
113 }
never executed: end of block
0
114-
115 return
never executed: return readyread;
readyread;
never executed: return readyread;
0
116}-
117-
118QEventDispatcherUNIXPrivate::QEventDispatcherUNIXPrivate()-
119{-
120 if (__builtin_expect(!!(threadPipe.init() == false), false)
__builtin_expe...false), false)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
121 QMessageLogger(__FILE__, 228, __PRETTY_FUNCTION__).fatal("QEventDispatcherUNIXPrivate(): Can not continue without a thread pipe");
never executed: QMessageLogger(__FILE__, 228, __PRETTY_FUNCTION__).fatal("QEventDispatcherUNIXPrivate(): Can not continue without a thread pipe");
0
122}
never executed: end of block
0
123-
124QEventDispatcherUNIXPrivate::~QEventDispatcherUNIXPrivate()-
125{-
126-
127 qDeleteAll(timerList);-
128}
never executed: end of block
0
129-
130void QEventDispatcherUNIXPrivate::setSocketNotifierPending(QSocketNotifier *notifier)-
131{-
132 ((!(notifier)) ? qt_assert("notifier",__FILE__,239) : qt_noop());-
133-
134 if (pendingNotifiers.contains(notifier)
pendingNotifie...ains(notifier)Description
TRUEnever evaluated
FALSEnever evaluated
)
0
135 return;
never executed: return;
0
136-
137 pendingNotifiers << notifier;-
138}
never executed: end of block
0
139-
140int QEventDispatcherUNIXPrivate::activateTimers()-
141{-
142 return
never executed: return timerList.activateTimers();
timerList.activateTimers();
never executed: return timerList.activateTimers();
0
143}-
144-
145void QEventDispatcherUNIXPrivate::markPendingSocketNotifiers()-
146{-
147 for (const pollfd &pfd : qAsConst(pollfds)) {-
148 if (pfd.fd < 0
pfd.fd < 0Description
TRUEnever evaluated
FALSEnever evaluated
|| pfd.revents == 0
pfd.revents == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
149 continue;
never executed: continue;
0
150-
151 auto it = socketNotifiers.find(pfd.fd);-
152 ((!(it != socketNotifiers.end())) ? qt_assert("it != socketNotifiers.end()",__FILE__,259) : qt_noop());-
153-
154 const QSocketNotifierSetUNIX &sn_set = it.value();-
155-
156 static const struct {-
157 QSocketNotifier::Type type;-
158 short flags;-
159 } notifiers[] = {-
160 { QSocketNotifier::Read, 0x001 | 0x010 | 0x008 },-
161 { QSocketNotifier::Write, 0x004 | 0x010 | 0x008 },-
162 { QSocketNotifier::Exception, 0x002 | 0x010 | 0x008 }-
163 };-
164-
165 for (const auto &n : notifiers) {-
166 QSocketNotifier *notifier = sn_set.notifiers[n.type];-
167-
168 if (!notifier
!notifierDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
169 continue;
never executed: continue;
0
170-
171 if (pfd.revents & 0x020
pfd.revents & 0x020Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
172 QMessageLogger(__FILE__, 279, __PRETTY_FUNCTION__).warning("QSocketNotifier: Invalid socket %d with type %s, disabling...",-
173 it.key(), socketType(n.type));-
174 notifier->setEnabled(false);-
175 }
never executed: end of block
0
176-
177 if (pfd.revents & n.flags
pfd.revents & n.flagsDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
178 setSocketNotifierPending(notifier);
never executed: setSocketNotifierPending(notifier);
0
179 }
never executed: end of block
0
180 }
never executed: end of block
0
181-
182 pollfds.clear();-
183}
never executed: end of block
0
184-
185int QEventDispatcherUNIXPrivate::activateSocketNotifiers()-
186{-
187 markPendingSocketNotifiers();-
188-
189 if (pendingNotifiers.isEmpty()
pendingNotifiers.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
190 return
never executed: return 0;
0;
never executed: return 0;
0
191-
192 int n_activated = 0;-
193 QEvent event(QEvent::SockAct);-
194-
195 while (!pendingNotifiers.isEmpty()
!pendingNotifiers.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
196 QSocketNotifier *notifier = pendingNotifiers.takeFirst();-
197 QCoreApplication::sendEvent(notifier, &event);-
198 ++n_activated;-
199 }
never executed: end of block
0
200-
201 return
never executed: return n_activated;
n_activated;
never executed: return n_activated;
0
202}-
203-
204QEventDispatcherUNIX::QEventDispatcherUNIX(QObject *parent)-
205 : QAbstractEventDispatcher(*new QEventDispatcherUNIXPrivate, parent)-
206{ }
never executed: end of block
0
207-
208QEventDispatcherUNIX::QEventDispatcherUNIX(QEventDispatcherUNIXPrivate &dd, QObject *parent)-
209 : QAbstractEventDispatcher(dd, parent)-
210{ }
never executed: end of block
0
211-
212QEventDispatcherUNIX::~QEventDispatcherUNIX()-
213{ }-
214-
215-
216-
217-
218void QEventDispatcherUNIX::registerTimer(int timerId, int interval, Qt::TimerType timerType, QObject *obj)-
219{-
220-
221 if (timerId < 1
timerId < 1Description
TRUEnever evaluated
FALSEnever evaluated
|| interval < 0
interval < 0Description
TRUEnever evaluated
FALSEnever evaluated
|| !obj
!objDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
222 QMessageLogger(__FILE__, 329, __PRETTY_FUNCTION__).warning("QEventDispatcherUNIX::registerTimer: invalid arguments");-
223 return;
never executed: return;
0
224 } else if (obj->thread() != thread()
obj->thread() != thread()Description
TRUEnever evaluated
FALSEnever evaluated
|| thread() != QThread::currentThread()
thread() != QT...urrentThread()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
225 QMessageLogger(__FILE__, 332, __PRETTY_FUNCTION__).warning("QEventDispatcherUNIX::registerTimer: timers cannot be started from another thread");-
226 return;
never executed: return;
0
227 }-
228-
229-
230 QEventDispatcherUNIXPrivate * const d = d_func();-
231 d->timerList.registerTimer(timerId, interval, timerType, obj);-
232}
never executed: end of block
0
233-
234-
235-
236-
237bool QEventDispatcherUNIX::unregisterTimer(int timerId)-
238{-
239-
240 if (timerId < 1
timerId < 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
241 QMessageLogger(__FILE__, 348, __PRETTY_FUNCTION__).warning("QEventDispatcherUNIX::unregisterTimer: invalid argument");-
242 return
never executed: return false;
false;
never executed: return false;
0
243 } else if (thread() != QThread::currentThread()
thread() != QT...urrentThread()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
244 QMessageLogger(__FILE__, 351, __PRETTY_FUNCTION__).warning("QEventDispatcherUNIX::unregisterTimer: timers cannot be stopped from another thread");-
245 return
never executed: return false;
false;
never executed: return false;
0
246 }-
247-
248-
249 QEventDispatcherUNIXPrivate * const d = d_func();-
250 return
never executed: return d->timerList.unregisterTimer(timerId);
d->timerList.unregisterTimer(timerId);
never executed: return d->timerList.unregisterTimer(timerId);
0
251}-
252-
253-
254-
255-
256bool QEventDispatcherUNIX::unregisterTimers(QObject *object)-
257{-
258-
259 if (!object
!objectDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
260 QMessageLogger(__FILE__, 367, __PRETTY_FUNCTION__).warning("QEventDispatcherUNIX::unregisterTimers: invalid argument");-
261 return
never executed: return false;
false;
never executed: return false;
0
262 } else if (object->thread() != thread()
object->thread() != thread()Description
TRUEnever evaluated
FALSEnever evaluated
|| thread() != QThread::currentThread()
thread() != QT...urrentThread()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
263 QMessageLogger(__FILE__, 370, __PRETTY_FUNCTION__).warning("QEventDispatcherUNIX::unregisterTimers: timers cannot be stopped from another thread");-
264 return
never executed: return false;
false;
never executed: return false;
0
265 }-
266-
267-
268 QEventDispatcherUNIXPrivate * const d = d_func();-
269 return
never executed: return d->timerList.unregisterTimers(object);
d->timerList.unregisterTimers(object);
never executed: return d->timerList.unregisterTimers(object);
0
270}-
271-
272QList<QEventDispatcherUNIX::TimerInfo>-
273QEventDispatcherUNIX::registeredTimers(QObject *object) const-
274{-
275 if (!object
!objectDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
276 QMessageLogger(__FILE__, 383, __PRETTY_FUNCTION__).warning("QEventDispatcherUNIX:registeredTimers: invalid argument");-
277 return
never executed: return QList<TimerInfo>();
QList<TimerInfo>();
never executed: return QList<TimerInfo>();
0
278 }-
279-
280 const QEventDispatcherUNIXPrivate * const d = d_func();-
281 return
never executed: return d->timerList.registeredTimers(object);
d->timerList.registeredTimers(object);
never executed: return d->timerList.registeredTimers(object);
0
282}-
283-
284-
285-
286-
287-
288void QEventDispatcherUNIX::registerSocketNotifier(QSocketNotifier *notifier)-
289{-
290 ((!(notifier)) ? qt_assert("notifier",__FILE__,397) : qt_noop());-
291 int sockfd = notifier->socket();-
292 QSocketNotifier::Type type = notifier->type();-
293-
294 if (notifier->thread() != thread()
notifier->thread() != thread()Description
TRUEnever evaluated
FALSEnever evaluated
|| thread() != QThread::currentThread()
thread() != QT...urrentThread()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
295 QMessageLogger(__FILE__, 402, __PRETTY_FUNCTION__).warning("QSocketNotifier: socket notifiers cannot be enabled from another thread");-
296 return;
never executed: return;
0
297 }-
298-
299-
300 QEventDispatcherUNIXPrivate * const d = d_func();-
301 QSocketNotifierSetUNIX &sn_set = d->socketNotifiers[sockfd];-
302-
303 if (sn_set.notifiers[type]
sn_set.notifiers[type]Description
TRUEnever evaluated
FALSEnever evaluated
&& sn_set.notifiers[type] != notifier
sn_set.notifie...e] != notifierDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
304 QMessageLogger(__FILE__, 411, __PRETTY_FUNCTION__).warning("%s: Multiple socket notifiers for same socket %d and type %s",
never executed: QMessageLogger(__FILE__, 411, __PRETTY_FUNCTION__).warning("%s: Multiple socket notifiers for same socket %d and type %s", __PRETTY_FUNCTION__, sockfd, socketType(type));
0
305 __PRETTY_FUNCTION__, sockfd, socketType(type));
never executed: QMessageLogger(__FILE__, 411, __PRETTY_FUNCTION__).warning("%s: Multiple socket notifiers for same socket %d and type %s", __PRETTY_FUNCTION__, sockfd, socketType(type));
0
306-
307 sn_set.notifiers[type] = notifier;-
308}
never executed: end of block
0
309-
310void QEventDispatcherUNIX::unregisterSocketNotifier(QSocketNotifier *notifier)-
311{-
312 ((!(notifier)) ? qt_assert("notifier",__FILE__,419) : qt_noop());-
313 int sockfd = notifier->socket();-
314 QSocketNotifier::Type type = notifier->type();-
315-
316 if (notifier->thread() != thread()
notifier->thread() != thread()Description
TRUEnever evaluated
FALSEnever evaluated
|| thread() != QThread::currentThread()
thread() != QT...urrentThread()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
317 QMessageLogger(__FILE__, 424, __PRETTY_FUNCTION__).warning("QSocketNotifier: socket notifier (fd %d) cannot be disabled from another thread.\n"-
318 "(Notifier's thread is %s(%p), event dispatcher's thread is %s(%p), current thread is %s(%p))",-
319 sockfd,-
320 notifier->thread() ? notifier->thread()->metaObject()->className() : "QThread", notifier->thread(),-
321 thread() ? thread()->metaObject()->className() : "QThread", thread(),-
322 QThread::currentThread() ? QThread::currentThread()->metaObject()->className() : "QThread", QThread::currentThread());-
323 return;
never executed: return;
0
324 }-
325-
326-
327 QEventDispatcherUNIXPrivate * const d = d_func();-
328-
329 d->pendingNotifiers.removeOne(notifier);-
330-
331 auto i = d->socketNotifiers.find(sockfd);-
332 if (i == d->socketNotifiers.end()
i == d->socketNotifiers.end()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
333 return;
never executed: return;
0
334-
335 QSocketNotifierSetUNIX &sn_set = i.value();-
336-
337 if (sn_set.notifiers[type] == nullptr
sn_set.notifie...pe] == nullptrDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
338 return;
never executed: return;
0
339-
340 if (sn_set.notifiers[type] != notifier
sn_set.notifie...e] != notifierDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
341 QMessageLogger(__FILE__, 448, __PRETTY_FUNCTION__).warning("%s: Multiple socket notifiers for same socket %d and type %s",-
342 __PRETTY_FUNCTION__, sockfd, socketType(type));-
343 return;
never executed: return;
0
344 }-
345-
346 sn_set.notifiers[type] = nullptr;-
347-
348 if (sn_set.isEmpty()
sn_set.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
349 d->socketNotifiers.erase(i);
never executed: d->socketNotifiers.erase(i);
0
350}
never executed: end of block
0
351-
352bool QEventDispatcherUNIX::processEvents(QEventLoop::ProcessEventsFlags flags)-
353{-
354 QEventDispatcherUNIXPrivate * const d = d_func();-
355 d->interrupt.store(0);-
356-
357-
358 awake();-
359 QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData);-
360-
361 const bool include_timers = (flags & QEventLoop::X11ExcludeTimers) == 0;-
362 const bool include_notifiers = (flags & QEventLoop::ExcludeSocketNotifiers) == 0;-
363 const bool wait_for_events = flags & QEventLoop::WaitForMoreEvents;-
364-
365 const bool canWait = (d->threadData->canWaitLocked()
d->threadData->canWaitLocked()Description
TRUEnever evaluated
FALSEnever evaluated
0
366 && !d->interrupt.load()
!d->interrupt.load()Description
TRUEnever evaluated
FALSEnever evaluated
0
367 && wait_for_events
wait_for_eventsDescription
TRUEnever evaluated
FALSEnever evaluated
);
0
368-
369 if (canWait
canWaitDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
370 aboutToBlock();
never executed: aboutToBlock();
0
371-
372 if (d->interrupt.load()
d->interrupt.load()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
373 return
never executed: return false;
false;
never executed: return false;
0
374-
375 timespec *tm = nullptr;-
376 timespec wait_tm = { 0, 0 };-
377-
378 if (!canWait
!canWaitDescription
TRUEnever evaluated
FALSEnever evaluated
|| (include_timers
include_timersDescription
TRUEnever evaluated
FALSEnever evaluated
&& d->timerList.timerWait(wait_tm)
d->timerList.t...rWait(wait_tm)Description
TRUEnever evaluated
FALSEnever evaluated
))
0
379 tm = &wait_tm;
never executed: tm = &wait_tm;
0
380-
381 d->pollfds.clear();-
382 d->pollfds.reserve(1 + (include_notifiers ? d->socketNotifiers.size() : 0));-
383-
384 if (include_notifiers
include_notifiersDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
385 for (auto it = d->socketNotifiers.cbegin(); it != d->socketNotifiers.cend()
it != d->socke...tifiers.cend()Description
TRUEnever evaluated
FALSEnever evaluated
; ++it)
0
386 d->pollfds.append(qt_make_pollfd(it.key(), it.value().events()));
never executed: d->pollfds.append(qt_make_pollfd(it.key(), it.value().events()));
0
387-
388-
389 d->pollfds.append(d->threadPipe.prepare());-
390-
391 int nevents = 0;-
392-
393 switch (qt_safe_poll(d->pollfds.data(), d->pollfds.size(), tm)) {-
394 case
never executed: case -1:
-1:
never executed: case -1:
0
395 perror("qt_safe_poll");-
396 break;
never executed: break;
0
397 case
never executed: case 0:
0:
never executed: case 0:
0
398 break;
never executed: break;
0
399 default
never executed: default:
:
never executed: default:
0
400 nevents += d->threadPipe.check(d->pollfds.takeLast());-
401 if (include_notifiers
include_notifiersDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
402 nevents += d->activateSocketNotifiers();
never executed: nevents += d->activateSocketNotifiers();
0
403 break;
never executed: break;
0
404 }-
405-
406 if (include_timers
include_timersDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
407 nevents += d->activateTimers();
never executed: nevents += d->activateTimers();
0
408-
409-
410 return
never executed: return (nevents > 0);
(nevents > 0);
never executed: return (nevents > 0);
0
411}-
412-
413bool QEventDispatcherUNIX::hasPendingEvents()-
414{-
415 extern uint qGlobalPostedEventsCount();-
416 return
never executed: return qGlobalPostedEventsCount();
qGlobalPostedEventsCount();
never executed: return qGlobalPostedEventsCount();
0
417}-
418-
419int QEventDispatcherUNIX::remainingTime(int timerId)-
420{-
421-
422 if (timerId < 1
timerId < 1Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
423 QMessageLogger(__FILE__, 530, __PRETTY_FUNCTION__).warning("QEventDispatcherUNIX::remainingTime: invalid argument");-
424 return
never executed: return -1;
-1;
never executed: return -1;
0
425 }-
426-
427-
428 QEventDispatcherUNIXPrivate * const d = d_func();-
429 return
never executed: return d->timerList.timerRemainingTime(timerId);
d->timerList.timerRemainingTime(timerId);
never executed: return d->timerList.timerRemainingTime(timerId);
0
430}-
431-
432void QEventDispatcherUNIX::wakeUp()-
433{-
434 QEventDispatcherUNIXPrivate * const d = d_func();-
435 d->threadPipe.wakeUp();-
436}
never executed: end of block
0
437-
438void QEventDispatcherUNIX::interrupt()-
439{-
440 QEventDispatcherUNIXPrivate * const d = d_func();-
441 d->interrupt.store(1);-
442 wakeUp();-
443}
never executed: end of block
0
444-
445void QEventDispatcherUNIX::flush()-
446{ }-
447-
448-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9