aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/core/basetypes/MCObject.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/core/basetypes/MCObject.cpp b/src/core/basetypes/MCObject.cpp
index 28fa3544..43137f78 100644
--- a/src/core/basetypes/MCObject.cpp
+++ b/src/core/basetypes/MCObject.cpp
@@ -310,13 +310,17 @@ void Object::performMethodOnMainThread(Method method, void * context, bool waitU
void Object::performMethodOnDispatchQueue(Method method, void * context, void * targetDispatchQueue, bool waitUntilDone)
{
if (waitUntilDone) {
+ dispatch_retain((dispatch_queue_t) targetDispatchQueue);
dispatch_sync((dispatch_queue_t) targetDispatchQueue, ^{
(this->*method)(context);
+ dispatch_release((dispatch_queue_t) targetDispatchQueue);
});
}
else {
+ dispatch_retain((dispatch_queue_t) targetDispatchQueue);
dispatch_async((dispatch_queue_t) targetDispatchQueue, ^{
(this->*method)(context);
+ dispatch_release((dispatch_queue_t) targetDispatchQueue);
});
}
}