diff sms.c @ 1401:b56c8c51ca5d

Properly release and reacquire framebuffer pointer when switching contexts. Hopefully fixes the LOCKRECT issue some people are seeing with the SDL 2 fallback renderer
author Michael Pavone <pavone@retrodev.com>
date Thu, 15 Jun 2017 09:45:21 -0700
parents 1df16f5985f3
children c886c54d8cf1
line wrap: on
line diff
--- a/sms.c	Wed Jun 14 21:59:30 2017 -0700
+++ b/sms.c	Thu Jun 15 09:45:21 2017 -0700
@@ -226,10 +226,18 @@
 			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->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;