diff --git a/audio/coreaudio.c b/audio/coreaudio.c index 239a421218..b396e6a1e3 100644 --- a/audio/coreaudio.c +++ b/audio/coreaudio.c @@ -60,7 +60,7 @@ static void coreaudio_free(void *data) free(dev); } -static OSStatus audio_cb(void *userdata, AudioUnitRenderActionFlags *action_flags, +static OSStatus audio_write_cb(void *userdata, AudioUnitRenderActionFlags *action_flags, const AudioTimeStamp *time_stamp, UInt32 bus_number, UInt32 number_frames, AudioBufferList *io_data) { @@ -170,7 +170,7 @@ static void *coreaudio_init(const char *device, unsigned rate, unsigned latency) // Set callbacks and finish up AURenderCallbackStruct cb = {0}; - cb.inputProc = audio_cb; + cb.inputProc = audio_write_cb; cb.inputProcRefCon = dev; if (AudioUnitSetProperty(dev->dev, kAudioUnitProperty_SetRenderCallback, diff --git a/frontend/frontend_ios.c b/frontend/frontend_ios.c index 95e9ca8fd2..17c6e4e174 100644 --- a/frontend/frontend_ios.c +++ b/frontend/frontend_ios.c @@ -85,6 +85,7 @@ void* rarch_main_ios(void* args) if (init_ret) { + rarch_main_clear_state(); dispatch_async_f(dispatch_get_main_queue(), (void*)1, ios_rarch_exited); return 0; } diff --git a/ios/RetroArch/RAGameView.m b/ios/RetroArch/RAGameView.m index 540df108e5..9e3221d02c 100644 --- a/ios/RetroArch/RAGameView.m +++ b/ios/RetroArch/RAGameView.m @@ -132,6 +132,7 @@ bool ios_init_game_view() // Show pause button for a few seconds, so people know it's there g_pause_indicator_view.alpha = 1.0f; + [NSObject cancelPreviousPerformRequestsWithTarget:g_instance]; [g_instance performSelector:@selector(hidePauseButton) withObject:g_instance afterDelay:3.0f]; }); @@ -143,6 +144,12 @@ bool ios_init_game_view() void ios_destroy_game_view() { dispatch_sync(dispatch_get_main_queue(), ^{ + // Clear the view, otherwise the last frame form this game will be displayed + // briefly on the next game. + [g_view bindDrawable]; + glClear(GL_COLOR_BUFFER_BIT); + [g_view display]; + glFinish(); g_view.context = nil;