summaryrefslogtreecommitdiffstats
path: root/src/gui/kernel/qeventdispatcher_mac.mm
diff options
context:
space:
mode:
authorBenjamin Poulain <benjamin.poulain@nokia.com>2009-09-21 17:07:00 (GMT)
committerBenjamin Poulain <benjamin.poulain@nokia.com>2009-09-21 17:10:19 (GMT)
commitea0c0dfa64f5c614bfd728f323d9b6731ee4898c (patch)
tree61fbc32d81aa482e74d9ecdfa7e1d174d756a18b /src/gui/kernel/qeventdispatcher_mac.mm
parent929538dde9f682b95e6f1c05e543e9d921af76e4 (diff)
downloadQt-ea0c0dfa64f5c614bfd728f323d9b6731ee4898c.zip
Qt-ea0c0dfa64f5c614bfd728f323d9b6731ee4898c.tar.gz
Qt-ea0c0dfa64f5c614bfd728f323d9b6731ee4898c.tar.bz2
The firstTimeObserver is not released if the event loop is never run
Previously, the firstTimeObserver was released by the event loop. This do not work if the event loop is never run. This commit amend b0016ea9a6b225757e3ee06b50e8f7d05463ddf7.
Diffstat (limited to 'src/gui/kernel/qeventdispatcher_mac.mm')
-rw-r--r--src/gui/kernel/qeventdispatcher_mac.mm18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/gui/kernel/qeventdispatcher_mac.mm b/src/gui/kernel/qeventdispatcher_mac.mm
index 7a3af86..7152705 100644
--- a/src/gui/kernel/qeventdispatcher_mac.mm
+++ b/src/gui/kernel/qeventdispatcher_mac.mm
@@ -917,14 +917,13 @@ QEventDispatcherMac::QEventDispatcherMac(QObject *parent)
CFRunLoopObserverContext firstTimeObserverContext;
bzero(&firstTimeObserverContext, sizeof(CFRunLoopObserverContext));
firstTimeObserverContext.info = d;
- CFRunLoopObserverRef firstTimeObserver = CFRunLoopObserverCreate(kCFAllocatorDefault,
- kCFRunLoopEntry,
- /* repeats = */ false,
- 0,
- QEventDispatcherMacPrivate::firstLoopEntry,
- &firstTimeObserverContext);
- CFRunLoopAddObserver(mainRunLoop(), firstTimeObserver, kCFRunLoopCommonModes);
- CFRelease(firstTimeObserver);
+ d->firstTimeObserver = CFRunLoopObserverCreate(kCFAllocatorDefault,
+ kCFRunLoopEntry,
+ /* repeats = */ false,
+ 0,
+ QEventDispatcherMacPrivate::firstLoopEntry,
+ &firstTimeObserverContext);
+ CFRunLoopAddObserver(mainRunLoop(), d->firstTimeObserver, kCFRunLoopCommonModes);
}
void QEventDispatcherMacPrivate::waitingObserverCallback(CFRunLoopObserverRef,
@@ -1025,6 +1024,9 @@ QEventDispatcherMac::~QEventDispatcherMac()
CFRunLoopObserverInvalidate(d->waitingObserver);
CFRelease(d->waitingObserver);
+
+ CFRunLoopObserverInvalidate(d->firstTimeObserver);
+ CFRelease(d->firstTimeObserver);
}
/////////////////////////////////////////////////////////////////////////////