From ef6521aee762bd61e5a5d881eb1e972deeb9c5cd Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Sun, 4 Aug 2024 08:20:54 -0700
Subject: [PATCH] testnative: print events with --info event
---
include/SDL3/SDL_test_common.h | 11 +++++++++--
src/test/SDL_test_common.c | 18 +++++++++++++++++-
test/testnative.c | 8 ++++++++
3 files changed, 34 insertions(+), 3 deletions(-)
diff --git a/include/SDL3/SDL_test_common.h b/include/SDL3/SDL_test_common.h
index 76ea5e45c0090..a162a3de5573d 100644
--- a/include/SDL3/SDL_test_common.h
+++ b/include/SDL3/SDL_test_common.h
@@ -208,9 +208,16 @@ SDL_bool SDLTest_CommonInit(SDLTest_CommonState *state);
SDL_bool SDLTest_CommonDefaultArgs(SDLTest_CommonState *state, const int argc, char **argv);
/**
- * Common event handler for test windows if you use a standard SDL_main.
+ * Print the details of an event.
+ *
+ * This is automatically called by SDLTest_CommonEvent() as needed.
*
- * This will free data from the event, like the string in a drop event!
+ * \param event The event to print.
+ */
+void SDLTest_PrintEvent(const SDL_Event *event);
+
+/**
+ * Common event handler for test windows if you use a standard SDL_main.
*
* \param state The common state used to create test window.
* \param event The event to handle.
diff --git a/src/test/SDL_test_common.c b/src/test/SDL_test_common.c
index 05289d35eca6e..5f84b36495854 100644
--- a/src/test/SDL_test_common.c
+++ b/src/test/SDL_test_common.c
@@ -615,6 +615,22 @@ int SDLTest_CommonArg(SDLTest_CommonState *state, int index)
state->hide_cursor = SDL_TRUE;
return 1;
}
+ } else {
+ if (SDL_strcasecmp(argv[index], "--info") == 0) {
+ ++index;
+ if (!argv[index]) {
+ return -1;
+ }
+ if (SDL_strcasecmp(argv[index], "all") == 0) {
+ state->verbose |= VERBOSE_EVENT;
+ return 2;
+ }
+ if (SDL_strcasecmp(argv[index], "event") == 0) {
+ state->verbose |= VERBOSE_EVENT;
+ return 2;
+ }
+ return -1;
+ }
}
if (state->flags & SDL_INIT_AUDIO) {
@@ -1555,7 +1571,7 @@ static const char *GamepadButtonName(const SDL_GamepadButton button)
}
}
-static void SDLTest_PrintEvent(const SDL_Event *event)
+void SDLTest_PrintEvent(const SDL_Event *event)
{
switch (event->type) {
case SDL_EVENT_SYSTEM_THEME_CHANGED:
diff --git a/test/testnative.c b/test/testnative.c
index aee65b3eeec77..449bff3748d17 100644
--- a/test/testnative.c
+++ b/test/testnative.c
@@ -206,6 +206,14 @@ int main(int argc, char *argv[])
while (!done) {
/* Check for events */
while (SDL_PollEvent(&event)) {
+ if (state->verbose & VERBOSE_EVENT) {
+ if (((event.type != SDL_EVENT_MOUSE_MOTION) &&
+ (event.type != SDL_EVENT_FINGER_MOTION)) ||
+ (state->verbose & VERBOSE_MOTION)) {
+ SDLTest_PrintEvent(&event);
+ }
+ }
+
switch (event.type) {
case SDL_EVENT_WINDOW_EXPOSED:
SDL_SetRenderDrawColor(renderer, 0xA0, 0xA0, 0xA0, 0xFF);