From de4ed222cd5d0e2d27cb5c196adacc4e4302b0ef Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Fri, 9 Jan 2015 18:23:00 -0500 Subject: [PATCH] Replace the old sublayer rather than adding the new one on top of the onscreen controls --- Limelight/Stream/VideoDecoderRenderer.m | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Limelight/Stream/VideoDecoderRenderer.m b/Limelight/Stream/VideoDecoderRenderer.m index 69971a9c..506ac2cb 100644 --- a/Limelight/Stream/VideoDecoderRenderer.m +++ b/Limelight/Stream/VideoDecoderRenderer.m @@ -22,9 +22,7 @@ - (void)reinitializeDisplayLayer { - if (displayLayer != nil) { - [displayLayer removeFromSuperlayer]; - } + CALayer *oldLayer = displayLayer; displayLayer = [[AVSampleBufferDisplayLayer alloc] init]; displayLayer.bounds = _view.bounds; @@ -32,7 +30,13 @@ displayLayer.position = CGPointMake(CGRectGetMidX(_view.bounds), CGRectGetMidY(_view.bounds)); displayLayer.videoGravity = AVLayerVideoGravityResizeAspect; - [_view.layer addSublayer:displayLayer]; + if (oldLayer != nil) { + // Switch out the old display layer with the new one + [_view.layer replaceSublayer:oldLayer with:displayLayer]; + } + else { + [_view.layer addSublayer:displayLayer]; + } // We need some parameter sets before we can properly start decoding frames waitingForSps = true;