diff options
Diffstat (limited to 'src/platformsupport')
-rw-r--r-- | src/platformsupport/eventdispatchers/qeventdispatcher_cf_p.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/src/platformsupport/eventdispatchers/qeventdispatcher_cf_p.h b/src/platformsupport/eventdispatchers/qeventdispatcher_cf_p.h index 0b9dda2b7f..1742a9b939 100644 --- a/src/platformsupport/eventdispatchers/qeventdispatcher_cf_p.h +++ b/src/platformsupport/eventdispatchers/qeventdispatcher_cf_p.h @@ -168,7 +168,17 @@ public: if (!runLoop) runLoop = CFRunLoopGetCurrent(); - CFRunLoopAddObserver(runLoop, m_observer, mode); + if (!CFRunLoopContainsObserver(runLoop, m_observer, mode)) + CFRunLoopAddObserver(runLoop, m_observer, mode); + } + + void removeFromMode(CFStringRef mode, CFRunLoopRef runLoop = 0) + { + if (!runLoop) + runLoop = CFRunLoopGetCurrent(); + + if (CFRunLoopContainsObserver(runLoop, m_observer, mode)) + CFRunLoopRemoveObserver(runLoop, m_observer, mode); } private: |