[retro-gtk] environment: Log criticals on unimplemented commands



commit 01abd822f94afae9ec5dd9cbb36e83fd475afbc5
Author: Adrien Plazas <kekun plazas laposte net>
Date:   Thu Dec 17 19:39:58 2020 +0100

    environment: Log criticals on unimplemented commands

 retro-runner/retro-environment.c | 45 +++++++++++++++++++++++++---------------
 1 file changed, 28 insertions(+), 17 deletions(-)
---
diff --git a/retro-runner/retro-environment.c b/retro-runner/retro-environment.c
index 7217a17..35d8009 100644
--- a/retro-runner/retro-environment.c
+++ b/retro-runner/retro-environment.c
@@ -478,6 +478,16 @@ shutdown (RetroCore *self)
   return TRUE;
 }
 
+#define RETRO_UNIMPLEMENT_ENVIRONMENT(cmd) \
+  case cmd: \
+    G_STMT_START { \
+      if (cmd & RETRO_ENVIRONMENT_EXPERIMENTAL) \
+        g_critical ("Unimplemented experimental command %s", #cmd); \
+      else \
+        g_critical ("Unimplemented command %s", #cmd); \
+      return FALSE; \
+    } G_STMT_END
+
 static gboolean
 environment_core_command (RetroCore *self,
                           unsigned   cmd,
@@ -559,23 +569,24 @@ environment_core_command (RetroCore *self,
   case RETRO_ENVIRONMENT_SHUTDOWN:
     return shutdown (self);
 
-  case RETRO_ENVIRONMENT_GET_CAMERA_INTERFACE:
-  case RETRO_ENVIRONMENT_GET_CURRENT_SOFTWARE_FRAMEBUFFER:
-  case RETRO_ENVIRONMENT_GET_HW_RENDER_INTERFACE:
-  case RETRO_ENVIRONMENT_GET_LOCATION_INTERFACE:
-  case RETRO_ENVIRONMENT_GET_PERF_INTERFACE:
-  case RETRO_ENVIRONMENT_GET_SENSOR_INTERFACE:
-  case RETRO_ENVIRONMENT_GET_USERNAME:
-  case RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK:
-  case RETRO_ENVIRONMENT_SET_CONTROLLER_INFO:
-  case RETRO_ENVIRONMENT_SET_FRAME_TIME_CALLBACK:
-  case RETRO_ENVIRONMENT_SET_HW_RENDER_CONTEXT_NEGOTIATION_INTERFACE:
-  case RETRO_ENVIRONMENT_SET_MEMORY_MAPS:
-  case RETRO_ENVIRONMENT_SET_PERFORMANCE_LEVEL:
-  case RETRO_ENVIRONMENT_SET_PROC_ADDRESS_CALLBACK:
-  case RETRO_ENVIRONMENT_SET_SERIALIZATION_QUIRKS:
-  case RETRO_ENVIRONMENT_SET_SUBSYSTEM_INFO:
-  case RETRO_ENVIRONMENT_SET_SUPPORT_ACHIEVEMENTS:
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_GET_CAMERA_INTERFACE);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_GET_CURRENT_SOFTWARE_FRAMEBUFFER);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_GET_HW_RENDER_INTERFACE);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_GET_LOCATION_INTERFACE);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_GET_PERF_INTERFACE);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_GET_SENSOR_INTERFACE);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_GET_USERNAME);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_SET_AUDIO_CALLBACK);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_SET_CONTROLLER_INFO);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_SET_FRAME_TIME_CALLBACK);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_SET_HW_RENDER_CONTEXT_NEGOTIATION_INTERFACE);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_SET_MEMORY_MAPS);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_SET_PERFORMANCE_LEVEL);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_SET_PROC_ADDRESS_CALLBACK);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_SET_SERIALIZATION_QUIRKS);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_SET_SUBSYSTEM_INFO);
+  RETRO_UNIMPLEMENT_ENVIRONMENT (RETRO_ENVIRONMENT_SET_SUPPORT_ACHIEVEMENTS);
+
   default:
     if (cmd & RETRO_ENVIRONMENT_EXPERIMENTAL)
       g_critical ("Unknown experimental command %d", cmd ^ RETRO_ENVIRONMENT_EXPERIMENTAL);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]