From 78cbe31ee823b7eba4ada3a087de6a50cd1d4d25 Mon Sep 17 00:00:00 2001 From: Adrien Plazas Date: Sun, 1 Aug 2021 11:37:47 +0200 Subject: [PATCH 1/2] environment: Clear the HW renderer before setting it This avoids leaks if the core happens to set the hardware render interface multiple times. --- retro-runner/retro-environment.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/retro-runner/retro-environment.c b/retro-runner/retro-environment.c index a2bba0d..c6857c6 100644 --- a/retro-runner/retro-environment.c +++ b/retro-runner/retro-environment.c @@ -493,6 +493,8 @@ set_hw_render (RetroCore *self, g_assert (self); g_return_val_if_fail (callback, FALSE); + g_clear_object (&self->renderer); + switch (callback->context_type) { case RETRO_HW_CONTEXT_OPENGL: case RETRO_HW_CONTEXT_OPENGL_CORE: -- GitLab From 628797f61c4ab1f946260fe9f35fcd3ed17ea094 Mon Sep 17 00:00:00 2001 From: Adrien Plazas Date: Sun, 1 Aug 2021 11:39:08 +0200 Subject: [PATCH 2/2] environment: Support the 'none' HW rendering context This supports explicit software rendering requests. --- retro-runner/retro-environment.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/retro-runner/retro-environment.c b/retro-runner/retro-environment.c index c6857c6..9a78b76 100644 --- a/retro-runner/retro-environment.c +++ b/retro-runner/retro-environment.c @@ -496,6 +496,11 @@ set_hw_render (RetroCore *self, g_clear_object (&self->renderer); switch (callback->context_type) { + case RETRO_HW_CONTEXT_NONE: + retro_debug ("Set hardware render callback: none, use software rendering"); + + return TRUE; + case RETRO_HW_CONTEXT_OPENGL: case RETRO_HW_CONTEXT_OPENGL_CORE: case RETRO_HW_CONTEXT_OPENGLES2: -- GitLab