summaryrefslogtreecommitdiff
path: root/sms.c
diff options
context:
space:
mode:
authorMichael Pavone <pavone@retrodev.com>2017-06-15 09:45:21 -0700
committerMichael Pavone <pavone@retrodev.com>2017-06-15 09:45:21 -0700
commitdee43c24fbd5f0ee0b81cc325164903c8b25ea1d (patch)
treead8562d7a5d411430122ac75b1e755e571907684 /sms.c
parentfd0dfe77e0c947e63026c944b94675018834351b (diff)
Properly release and reacquire framebuffer pointer when switching contexts. Hopefully fixes the LOCKRECT issue some people are seeing with the SDL 2 fallback renderer
Diffstat (limited to 'sms.c')
-rw-r--r--sms.c10
1 files changed, 9 insertions, 1 deletions
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;