From dee43c24fbd5f0ee0b81cc325164903c8b25ea1d Mon Sep 17 00:00:00 2001 From: Michael Pavone Date: Thu, 15 Jun 2017 09:45:21 -0700 Subject: Properly release and reacquire framebuffer pointer when switching contexts. Hopefully fixes the LOCKRECT issue some people are seeing with the SDL 2 fallback renderer --- sms.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'sms.c') diff --git a/sms.c b/sms.c index 74df8b0..9d1ac49 100644 --- a/sms.c +++ b/sms.c @@ -226,10 +226,18 @@ static void run_sms(system_header *system) target_cycle -= adjust; } } + vdp_release_framebuffer(sms->vdp); sms->should_return = 0; render_enable_ym(); } +static void resume_sms(system_header *system) +{ + sms_context *sms = (sms_context *)system; + vdp_reacquire_framebuffer(sms->vdp); + run_sms(system); +} + static void start_sms(system_header *system, char *statefile) { sms_context *sms = (sms_context *)system; @@ -361,7 +369,7 @@ sms_context *alloc_configure_sms(system_media *media, uint32_t opts, uint8_t for sms->header.set_speed_percent = set_speed_percent; sms->header.start_context = start_sms; - sms->header.resume_context = run_sms; + sms->header.resume_context = resume_sms; sms->header.load_save = load_save; sms->header.persist_save = persist_save; sms->header.free_context = free_sms; -- cgit v1.2.3