diff options
author | 2014-01-18 16:28:12 -0800 | |
---|---|---|
committer | 2014-01-18 16:28:12 -0800 | |
commit | 5b151becd1f950254ab9b7a5effd66210792247a (patch) | |
tree | 1e60a2ae2bd83adfa7ce3dd02dd199ae2a34406e /src/core | |
parent | 73de12e926af32038bb5c0b508289f9db51ebfc2 (diff) |
Implemented dispatchQueue property on MCOIMAPSession
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/basetypes/MCOperationQueue.cc | 23 | ||||
-rw-r--r-- | src/core/basetypes/MCOperationQueue.h | 8 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/core/basetypes/MCOperationQueue.cc b/src/core/basetypes/MCOperationQueue.cc index 50b2416c..76a76bc7 100644 --- a/src/core/basetypes/MCOperationQueue.cc +++ b/src/core/basetypes/MCOperationQueue.cc @@ -25,6 +25,9 @@ OperationQueue::OperationQueue() mWaitingFinishedSem = mailsem_new(); mQuitting = false; mCallback = NULL; +#if __APPLE__ + mDispatchQueue = dispatch_get_main_queue(); +#endif } OperationQueue::~OperationQueue() @@ -78,7 +81,11 @@ void OperationQueue::runOperations() mailsem_up(mStopSem); retain(); // (2) +#if __APPLE__ + performMethodOnDispatchQueue((Object::Method) &OperationQueue::stoppedOnMainThread, NULL, mDispatchQueue, true); +#else performMethodOnMainThread((Object::Method) &OperationQueue::stoppedOnMainThread, NULL, true); +#endif pool->release(); break; @@ -107,7 +114,11 @@ void OperationQueue::runOperations() if (needsCheckRunning) { retain(); // (1) MCLog("check running %p", this); +#if __APPLE__ + performMethodOnDispatchQueue((Object::Method) &OperationQueue::checkRunningOnMainThread, this, mDispatchQueue); +#else performMethodOnMainThread((Object::Method) &OperationQueue::checkRunningOnMainThread, this); +#endif } pool->release(); @@ -239,3 +250,15 @@ void OperationQueue::waitUntilAllOperationsAreFinished() mWaiting = false; } #endif + +#if __APPLE__ +void OperationQueue::setDispatchQueue(dispatch_queue_t dispatchQueue) +{ + mDispatchQueue = dispatchQueue; +} + +dispatch_queue_t OperationQueue::dispatchQueue() +{ + return mDispatchQueue; +} +#endif diff --git a/src/core/basetypes/MCOperationQueue.h b/src/core/basetypes/MCOperationQueue.h index cd61b249..f343c603 100644 --- a/src/core/basetypes/MCOperationQueue.h +++ b/src/core/basetypes/MCOperationQueue.h @@ -27,6 +27,11 @@ namespace mailcore { virtual void setCallback(OperationQueueCallback * callback); virtual OperationQueueCallback * callback(); +#ifdef __APPLE__ + virtual void setDispatchQueue(dispatch_queue_t dispatchQueue); + virtual dispatch_queue_t dispatchQueue(); +#endif + private: Array * mOperations; pthread_t mThreadID; @@ -39,6 +44,9 @@ namespace mailcore { struct mailsem * mWaitingFinishedSem; bool mQuitting; OperationQueueCallback * mCallback; +#if __APPLE__ + dispatch_queue_t mDispatchQueue; +#endif void startThread(); static void runOperationsOnThread(OperationQueue * queue); |