diff options
author | 2014-09-23 09:41:32 -0700 | |
---|---|---|
committer | 2014-09-23 09:41:32 -0700 | |
commit | d630534ea884caf3219d4048bc1f4eb40e1f9f83 (patch) | |
tree | 0d2708041f58b9de4f1638cf509005ab7d2e0100 /src | |
parent | 7a77d98f7ee0cbb6c8d526290097b52003ea3484 (diff) | |
parent | f42c7b9805d3c6f688cbe3d46088d2c67989b80f (diff) |
Merge pull request #883 from foxinushka/fix/operation-queue-thread-safety
Fixed thread safety in OperationQueue
Diffstat (limited to 'src')
-rw-r--r-- | src/core/basetypes/MCOperationQueue.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/core/basetypes/MCOperationQueue.cc b/src/core/basetypes/MCOperationQueue.cc index e45f04ee..a2554ab5 100644 --- a/src/core/basetypes/MCOperationQueue.cc +++ b/src/core/basetypes/MCOperationQueue.cc @@ -178,11 +178,21 @@ void OperationQueue::checkRunningOnMainThread(void * context) { retain(); // (4) if (_pendingCheckRunning) { +#if __APPLE__ + cancelDelayedPerformMethodOnDispatchQueue((Object::Method) &OperationQueue::checkRunningAfterDelay, NULL, mDispatchQueue); +#else cancelDelayedPerformMethod((Object::Method) &OperationQueue::checkRunningAfterDelay, NULL); +#endif release(); // (4) } _pendingCheckRunning = true; + +#if __APPLE__ + performMethodOnDispatchQueueAfterDelay((Object::Method) &OperationQueue::checkRunningAfterDelay, NULL, mDispatchQueue, 1); +#else performMethodAfterDelay((Object::Method) &OperationQueue::checkRunningAfterDelay, NULL, 1); +#endif + release(); // (1) } |