From 9b8a179f4a9f3d0e2382ba343fe1453bd0605090 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sat, 14 Nov 2020 16:42:17 -0600 Subject: [PATCH] Perform the initial updateLoop iteration immediately after attaching the view --- Limelight/UIAppView.m | 23 ++++++++++++++--------- Limelight/UIComputerView.m | 23 ++++++++++++++--------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/Limelight/UIAppView.m b/Limelight/UIAppView.m index 40ecc1a..4b78702 100644 --- a/Limelight/UIAppView.m +++ b/Limelight/UIAppView.m @@ -76,11 +76,17 @@ static UIImage* noImage; #endif [self updateAppImage]; - [self startUpdateLoop]; return self; } +- (void)didMoveToSuperview { + // Start our update loop when we are added to our cell + if (self.superview != nil) { + [self updateLoop]; + } +} + - (void) appClicked:(UIView *)view { [_callback appClicked:_app view:view]; } @@ -202,11 +208,12 @@ static UIImage* noImage; } } -- (void) startUpdateLoop { - [self performSelector:@selector(updateLoop) withObject:self afterDelay:REFRESH_CYCLE]; -} - - (void) updateLoop { + // Stop immediately if the view has been detached + if (self.superview == nil) { + return; + } + // Update the app image if neccessary if ((_appOverlay != nil && ![_app.id isEqualToString:_app.host.currentGame]) || (_appOverlay == nil && [_app.id isEqualToString:_app.host.currentGame])) { @@ -216,10 +223,8 @@ static UIImage* noImage; // Update opacity if neccessary [self setAlpha:_app.hidden ? 0.4 : 1.0]; - // Stop updating when we detach from our parent view - if (self.superview != nil) { - [self performSelector:@selector(updateLoop) withObject:self afterDelay:REFRESH_CYCLE]; - } + // Queue the next refresh cycle + [self performSelector:@selector(updateLoop) withObject:self afterDelay:REFRESH_CYCLE]; } @end diff --git a/Limelight/UIComputerView.m b/Limelight/UIComputerView.m index f9ff80d..ed1650a 100644 --- a/Limelight/UIComputerView.m +++ b/Limelight/UIComputerView.m @@ -132,11 +132,17 @@ static const int LABEL_DY = 20; [self addTarget:self action:@selector(hostClicked) forControlEvents:UIControlEventPrimaryActionTriggered]; [self updateContentsForHost:host]; - [self startUpdateLoop]; return self; } +- (void)didMoveToSuperview { + // Start our update loop when we are added to our cell + if (self.superview != nil && _host != nil) { + [self updateLoop]; + } +} + - (void) updateBounds { float x = FLT_MAX; float y = FLT_MAX; @@ -187,17 +193,16 @@ static const int LABEL_DY = 20; [self updateBounds]; } -- (void) startUpdateLoop { - [self performSelector:@selector(updateLoop) withObject:self afterDelay:REFRESH_CYCLE]; -} - - (void) updateLoop { + // Stop immediately if the view has been detached + if (self.superview == nil) { + return; + } + [self updateContentsForHost:_host]; - // Stop updating when we detach from our parent view - if (self.superview != nil) { - [self performSelector:@selector(updateLoop) withObject:self afterDelay:REFRESH_CYCLE]; - } + // Queue the next refresh cycle + [self performSelector:@selector(updateLoop) withObject:self afterDelay:REFRESH_CYCLE]; } - (void) hostLongClicked:(UILongPressGestureRecognizer*)gesture {