Home | History | Annotate | Download | only in objc
      1 /*
      2  *  Copyright 2015 The WebRTC project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #import "RTCDispatcher.h"
     12 
     13 static dispatch_queue_t kCaptureSessionQueue = nil;
     14 
     15 @implementation RTCDispatcher {
     16   dispatch_queue_t _captureSessionQueue;
     17 }
     18 
     19 + (void)initialize {
     20   static dispatch_once_t onceToken;
     21   dispatch_once(&onceToken, ^{
     22     kCaptureSessionQueue = dispatch_queue_create(
     23         "org.webrtc.RTCDispatcherCaptureSession",
     24         DISPATCH_QUEUE_SERIAL);
     25   });
     26 }
     27 
     28 + (void)dispatchAsyncOnType:(RTCDispatcherQueueType)dispatchType
     29                       block:(dispatch_block_t)block {
     30   dispatch_queue_t queue = [self dispatchQueueForType:dispatchType];
     31   dispatch_async(queue, block);
     32 }
     33 
     34 #pragma mark - Private
     35 
     36 + (dispatch_queue_t)dispatchQueueForType:(RTCDispatcherQueueType)dispatchType {
     37   switch (dispatchType) {
     38     case RTCDispatcherTypeMain:
     39       return dispatch_get_main_queue();
     40     case RTCDispatcherTypeCaptureSession:
     41       return kCaptureSessionQueue;
     42   }
     43 }
     44 
     45 @end
     46 
     47