+ // queueMutex must be locked whilst accessing queues
+ MessageQueueMutex::ScopedLock lock(mImpl->queueMutex);
+
+ mImpl->updateWorkingMessageQueue.PushBack(message);
+}
+
+void NotificationManager::UpdateCompleted()
+{
+ // queueMutex must be locked whilst accessing queues
+ MessageQueueMutex::ScopedLock lock(mImpl->queueMutex);
+ // Move messages from update working queue to completed queue
+ // note that in theory its possible for update completed to have last frames
+ // events as well still hanging around. we need to keep them as well
+ mImpl->updateCompletedMessageQueue.MoveFrom(mImpl->updateWorkingMessageQueue);
+ // move pointers from interface queue
+ MoveElements(mImpl->updateWorkingInterfaceQueue, mImpl->updateCompletedInterfaceQueue);
+ // finally the lock is released