Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- frameRenderingQueue = dispatch_queue_create("com.mycompany.crw", DISPATCH_QUEUE_SERIAL);
- frameRenderingSemaphore = dispatch_semaphore_create(1);
- CADisplayLink *dl = [[UIScreen mainScreen] displayLinkWithTarget:self selector:@selector(renderFrame)];
- [dl addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
- - (void)renderFrame {
- if (dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_NOW) != 0) {
- NSLog(@"return"); // Gets called ALWAYS!
- return;
- }
- dispatch_async(drawingQueue, ^{
- @autoreleasepool {
- // OpenGL ES drawing code
- dispatch_semaphore_signal(frameRenderingSemaphore);
- }
- });
- }
- - (void)renderFrame {
- dispatch_async(drawingQueue, ^{
- if (dispatch_semaphore_wait(frameRenderingSemaphore, DISPATCH_TIME_NOW) != 0) {
- return;
- }
- @autoreleasepool {
- // Drawing code...
- }
- dispatch_semaphore_signal(frameRenderingSemaphore);
- });
- }
Add Comment
Please, Sign In to add comment