Added SDL_HINT_VIDEO_DUMMY_SAVE_FRAMES and SDL_HINT_VIDEO_OFFSCREEN_SAVE_FRAMES

This commit is contained in:
Sam Lantinga 2024-08-03 11:13:33 -07:00
parent f370e1a645
commit d9f9e9e764
3 changed files with 28 additions and 2 deletions

View File

@ -3037,6 +3037,18 @@ extern "C" {
*/ */
#define SDL_HINT_VIDEO_DRIVER "SDL_VIDEO_DRIVER" #define SDL_HINT_VIDEO_DRIVER "SDL_VIDEO_DRIVER"
/**
* A variable controlling whether the dummy video driver saves output frames.
*
* - "0": Video frames are not saved to disk. (default)
* - "1": Video frames are saved to files in the format "SDL_windowX-Y.bmp", where X is the window ID, and Y is the frame number.
*
* This hint can be set anytime.
*
* \since This hint is available since SDL 3.0.0.
*/
#define SDL_HINT_VIDEO_DUMMY_SAVE_FRAMES "SDL_VIDEO_DUMMY_SAVE_FRAMES"
/** /**
* If eglGetPlatformDisplay fails, fall back to calling eglGetDisplay. * If eglGetPlatformDisplay fails, fall back to calling eglGetDisplay.
* *
@ -3101,6 +3113,20 @@ extern "C" {
*/ */
#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" #define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS"
/**
* A variable controlling whether the offscreen video driver saves output frames.
*
* This only saves frames that are generated using software rendering, not accelerated OpenGL rendering.
*
* - "0": Video frames are not saved to disk. (default)
* - "1": Video frames are saved to files in the format "SDL_windowX-Y.bmp", where X is the window ID, and Y is the frame number.
*
* This hint can be set anytime.
*
* \since This hint is available since SDL 3.0.0.
*/
#define SDL_HINT_VIDEO_OFFSCREEN_SAVE_FRAMES "SDL_VIDEO_OFFSCREEN_SAVE_FRAMES"
/** /**
* A variable controlling whether all window operations will block until * A variable controlling whether all window operations will block until
* complete. * complete.

View File

@ -61,7 +61,7 @@ int SDL_DUMMY_UpdateWindowFramebuffer(SDL_VideoDevice *_this, SDL_Window *window
} }
/* Send the data to the display */ /* Send the data to the display */
if (SDL_getenv("SDL_VIDEO_DUMMY_SAVE_FRAMES")) { if (SDL_GetHintBoolean(SDL_HINT_VIDEO_DUMMY_SAVE_FRAMES, SDL_FALSE)) {
char file[128]; char file[128];
(void)SDL_snprintf(file, sizeof(file), "SDL_window%" SDL_PRIu32 "-%8.8d.bmp", (void)SDL_snprintf(file, sizeof(file), "SDL_window%" SDL_PRIu32 "-%8.8d.bmp",
SDL_GetWindowID(window), ++frame_number); SDL_GetWindowID(window), ++frame_number);

View File

@ -62,7 +62,7 @@ int SDL_OFFSCREEN_UpdateWindowFramebuffer(SDL_VideoDevice *_this, SDL_Window *wi
} }
/* Send the data to the display */ /* Send the data to the display */
if (SDL_getenv("SDL_VIDEO_OFFSCREEN_SAVE_FRAMES")) { if (SDL_GetHintBoolean(SDL_HINT_VIDEO_OFFSCREEN_SAVE_FRAMES, SDL_FALSE)) {
char file[128]; char file[128];
(void)SDL_snprintf(file, sizeof(file), "SDL_window%" SDL_PRIu32 "-%8.8d.bmp", (void)SDL_snprintf(file, sizeof(file), "SDL_window%" SDL_PRIu32 "-%8.8d.bmp",
SDL_GetWindowID(window), ++frame_number); SDL_GetWindowID(window), ++frame_number);