diff --git a/Limelight/Stream/VideoDecoderRenderer.m b/Limelight/Stream/VideoDecoderRenderer.m index ecd15d8..cead95b 100644 --- a/Limelight/Stream/VideoDecoderRenderer.m +++ b/Limelight/Stream/VideoDecoderRenderer.m @@ -311,13 +311,9 @@ int DrSubmitDecodeUnit(PDECODE_UNIT decodeUnit); if (displayLayer.status == AVQueuedSampleBufferRenderingStatusFailed) { Log(LOG_E, @"Display layer rendering failed: %@", displayLayer.error); - // Recreate the display layer on the main thread. - // We need to use dispatch_sync() or we may miss - // some parameter sets while the layer is being - // recreated. - dispatch_sync(dispatch_get_main_queue(), ^{ - [self reinitializeDisplayLayer]; - }); + // Recreate the display layer. We are already on the main thread, + // so this is safe to do right here. + [self reinitializeDisplayLayer]; // Request an IDR frame to initialize the new decoder free(data);