diff --git a/ios/RetroArch/RAGameView.m b/ios/RetroArch/RAGameView.m index b882f49d15..baea3f75ea 100644 --- a/ios/RetroArch/RAGameView.m +++ b/ios/RetroArch/RAGameView.m @@ -14,7 +14,6 @@ * If not, see . */ -#import #include "general.h" #include "rarch_wrapper.h" @@ -28,7 +27,8 @@ static bool is_syncing = true; @implementation RAGameView { EAGLContext* _glContext; - CADisplayLink* _timer; + UIButton* _notifyButton; + UILabel* _notifyLabel; } - (id)init @@ -39,12 +39,48 @@ static bool is_syncing = true; _glContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; [EAGLContext setCurrentContext:_glContext]; - self.view = [[GLKView alloc] initWithFrame:CGRectMake(0, 0, 640, 480) context:_glContext]; + self.view = [GLKView new]; + ((GLKView*)self.view).context = _glContext; self.view.multipleTouchEnabled = YES; - + return self; } +- (void)viewDidAppear:(BOOL)animated +{ + CGSize size = self.view.bounds.size; + float tenpct = size.width / 10.0f; + + _notifyButton = [[UIButton alloc] initWithFrame:CGRectMake(tenpct * 4.0f, 0, tenpct * 2.0f, size.height / 10.0f)]; + _notifyButton.backgroundColor = [UIColor redColor]; + _notifyButton.opaque = NO; + + _notifyLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height / 10.0f)]; + _notifyLabel.backgroundColor = [UIColor colorWithRed:0.2f green:0.2f blue: 0.5f alpha:0.5f]; + _notifyLabel.text = @"Triple tap to exit."; + _notifyLabel.textAlignment = NSTextAlignmentCenter; + _notifyLabel.opaque = NO; + + [self.view addSubview:_notifyButton]; + [self.view addSubview:_notifyLabel]; + [self performSelector:@selector(hideNotify) withObject:nil afterDelay:3.0f]; +} + +- (void)hideNotify +{ + if (_notifyLabel && _notifyButton) + { + // TODO: Actually removing these views will cause an ugly flash in the game window... + [UIView animateWithDuration:0.2 + animations:^{_notifyButton.alpha = 0.0;} + completion:^(BOOL finished){ _notifyButton.hidden = YES; _notifyButton = nil; }]; + + [UIView animateWithDuration:0.2 + animations:^{_notifyLabel.alpha = 0.0;} + completion:^(BOOL finished){ _notifyLabel.hidden = YES; _notifyLabel = nil; }]; + } +} + - (void)iterate { while (_isRunning && !_isPaused) @@ -63,9 +99,6 @@ static bool is_syncing = true; - (void)needsToDie { - [_timer invalidate]; - _timer = nil; - glFinish(); GLKView* glview = (GLKView*)self.view;