ronantakizawa/codereview-bench huggingface dataset:
Repository: libsdl-org/SDL
File: src/tray/SDL_tray_utils.c (C)

Code before:
        SDL_SendQuit();
    }
}

void SDL_CleanupTrays(void)
{
    if (active_trays == 0) {
        return;
    }

    void **trays = (void **)SDL_malloc(active_trays * sizeof(*trays));
    if (!trays) {
        return;
    }

    int count = SDL_GetObjects(SDL_OBJECT_TYPE_TRAY, trays, active_trays);
    SDL_assert(count == active_trays);
    for (int i = 0; i < count; ++i) {
        SDL_DestroyTray((SDL_Tray *)trays[i]);
    }
    SDL_free(trays);

    SDL_PropertiesID g = SDL_GetGlobalProperties();
    if (g) {
        SDL_ClearProperty(g, SDL_PROP_TRAY_CLEANUP);
    }
}

bool SDL_HasActiveTrays(void)
{
    return (active_trays > 0);
}


Review comment (suggestion):
```suggestion
    SDL_ClearProperty(SDL_GetGlobalProperties(), SDL_PROP_TRAY_CLEANUP);
```

Code after:
        SDL_SendQuit();
    }
}

void SDL_CleanupTrays(void)
{
    if (active_trays == 0) {
        return;
    }

    void **trays = (void **)SDL_malloc(active_trays * sizeof(*trays));
    if (!trays) {
        return;
    }

    int count = SDL_GetObjects(SDL_OBJECT_TYPE_TRAY, trays, active_trays);
    SDL_assert(count == active_trays);
    for (int i = 0; i < count; ++i) {
        SDL_DestroyTray((SDL_Tray *)trays[i]);
    }
    SDL_free(trays);

    SDL_ClearProperty(SDL_GetGlobalProperties(), SDL_PROP_TRAY_CLEANUP);
}

bool SDL_HasActiveTrays(void)
{
    return (active_trays > 0);
}
Repository: libsdl-org/SDL
File: src/tray/SDL_tray_utils.h (C/C++)

Code before:
/*
  Simple DirectMedia Layer
  Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>

  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damages
  arising from the use of this software.

  Permission is granted to anyone to use this software for any purpose,
  including commercial applications, and to alter it and redistribute it
  freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not
     claim that you wrote the original software. If you use this software
     in a product, an acknowledgment in the product documentation would be
     appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be
     misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"

#define SDL_PROP_TRAY_CLEANUP "SDL.PROP.Tray.Cleanup"

extern void SDL_RegisterTray(SDL_Tray *tray);
extern void SDL_UnregisterTray(SDL_Tray *tray);
extern void SDL_CleanupTrays(void);
extern bool SDL_HasActiveTrays(void);


Review comment (suggestion):
```suggestion
#define SDL_PROP_TRAY_CLEANUP "SDL.internal.tray.cleanup"
```

Code after:
/*
  Simple DirectMedia Layer
  Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>

  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damages
  arising from the use of this software.

  Permission is granted to anyone to use this software for any purpose,
  including commercial applications, and to alter it and redistribute it
  freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not
     claim that you wrote the original software. If you use this software
     in a product, an acknowledgment in the product documentation would be
     appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be
     misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"

#define SDL_PROP_TRAY_CLEANUP "SDL.internal.tray.cleanup"

extern void SDL_RegisterTray(SDL_Tray *tray);
extern void SDL_UnregisterTray(SDL_Tray *tray);
extern void SDL_CleanupTrays(void);
extern bool SDL_HasActiveTrays(void);
Repository: libsdl-org/SDL
File: src/tray/windows/SDL_tray.c (C)

Code before:
        return false;
    }
    if (SDL_GetPointerProperty(props, SDL_PROP_TRAY_CLEANUP, NULL) != NULL) {
        return true;
    }

    WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.hCursor = NULL;
    wcex.hIcon = NULL;
    wcex.hIconSm = NULL;
    wcex.lpszMenuName = NULL;
    wcex.lpszClassName = className;
    wcex.style = 0;
    wcex.hbrBackground = NULL;
    wcex.lpfnWndProc = TrayWindowProc;
    wcex.hInstance = NULL;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;

    if (!RegisterClassEx(&wcex)) {
        return SDL_SetError("Couldn't register tray class");
    }

    SDL_SetPointerPropertyWithCleanup(props, SDL_PROP_TRAY_CLEANUP, (void*)wcex.lpszClassName, SDL_PropTrayCleanupCb, NULL);
    return true;
}

SDL_Tray *SDL_CreateTray(SDL_Surface *icon, const char *tooltip)
{
    if (!SDL_IsMainThread()) {
        SDL_SetError("This function should be called on the main thread");
        return NULL;
    }

    SDL_Tray *tray = (SDL_Tray *)SDL_calloc(1, sizeof(*tray));

    if (!tray) {
        return NULL;
    }

    tray->menu = NULL;
    if (!SDL_RegisterTrayClass(TEXT("SDL_TRAY"))) {
        SDL_SetError("Failed to register SDL_TRAY window class");
        return NULL;
    }
    tray->hwnd = CreateWindowEx(0, TEXT("SDL_TRAY"), NULL, WS_OVERLAPPEDWINDOW,
                                CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, NULL, NULL);

    WIN_UpdateDarkModeForHWND(tray->hwnd);

Review comment (suggestion):
```suggestion
    SDL_SetPointerPropertyWithCleanup(props, SDL_PROP_TRAY_CLEANUP, (void *)wcex.lpszClassName, SDL_PropTrayCleanupCb, NULL);
```

Code after:
        return false;
    }
    if (SDL_GetPointerProperty(props, SDL_PROP_TRAY_CLEANUP, NULL) != NULL) {
        return true;
    }

    WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);
    wcex.hCursor = NULL;
    wcex.hIcon = NULL;
    wcex.hIconSm = NULL;
    wcex.lpszMenuName = NULL;
    wcex.lpszClassName = className;
    wcex.style = 0;
    wcex.hbrBackground = NULL;
    wcex.lpfnWndProc = TrayWindowProc;
    wcex.hInstance = NULL;
    wcex.cbClsExtra = 0;
    wcex.cbWndExtra = 0;

    if (!RegisterClassEx(&wcex)) {
        return SDL_SetError("Couldn't register tray class");
    }

    SDL_SetPointerPropertyWithCleanup(props, SDL_PROP_TRAY_CLEANUP, (void *)wcex.lpszClassName, SDL_PropTrayCleanupCb, NULL);
    return true;
}

SDL_Tray *SDL_CreateTray(SDL_Surface *icon, const char *tooltip)
{
    if (!SDL_IsMainThread()) {
        SDL_SetError("This function should be called on the main thread");
        return NULL;
    }

    SDL_Tray *tray = (SDL_Tray *)SDL_calloc(1, sizeof(*tray));

    if (!tray) {
        return NULL;
    }

    tray->menu = NULL;
    if (!SDL_RegisterTrayClass(TEXT("SDL_TRAY"))) {
        SDL_SetError("Failed to register SDL_TRAY window class");
        return NULL;
    }
    tray->hwnd = CreateWindowEx(0, TEXT("SDL_TRAY"), NULL, WS_OVERLAPPEDWINDOW,
                                CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, NULL, NULL);

    WIN_UpdateDarkModeForHWND(tray->hwnd);
Repository: libsdl-org/SDL
File: src/joystick/linux/SDL_sysjoystick.c (C)

Code before:
        }

        // Wait a bit for the hidraw udev node to initialize
        SDL_Delay(10);

        MaybeAddDevice(devpath);
        break;

    case SDL_UDEV_DEVICEREMOVED:
        MaybeRemoveDevice(devpath);
        break;

    default:
        break;
    }
}
#endif // SDL_USE_LIBUDEV

static void FreeJoylistItem(SDL_joylist_item *item)
{
    SDL_free(item->mapping);
    SDL_free(item->path);
    SDL_free(item->name);
    if (item->driver) {
        SDL_free(item->driver);
    }
    SDL_free(item);
}

static void FreeSensorlistItem(SDL_sensorlist_item *item)
{
    SDL_free(item->path);
    SDL_free(item);
}

static void MaybeAddDevice(const char *path)
{
    struct stat sb;
    int fd = -1;
    char *name = NULL;
    char *driver = NULL;
    Uint16 vendor, product;
    SDL_GUID guid;
    SDL_joylist_item *item;
    SDL_sensorlist_item *item_sensor;

    if (!path) {
        return;
    }

    fd = open(path, O_RDONLY | O_CLOEXEC, 0);

Review comment (refactor):
```suggestion
    SDL_free(item->driver);
```
freeing NULL is valid behavior, so we can simplify this for code clarity.

Code after:
        }

        // Wait a bit for the hidraw udev node to initialize
        SDL_Delay(10);

        MaybeAddDevice(devpath);
        break;

    case SDL_UDEV_DEVICEREMOVED:
        MaybeRemoveDevice(devpath);
        break;

    default:
        break;
    }
}
#endif // SDL_USE_LIBUDEV

static void FreeJoylistItem(SDL_joylist_item *item)
{
    SDL_free(item->mapping);
    SDL_free(item->path);
    SDL_free(item->name);
    SDL_free(item->driver);
    SDL_free(item);
}

static void FreeSensorlistItem(SDL_sensorlist_item *item)
{
    SDL_free(item->path);
    SDL_free(item);
}

static void MaybeAddDevice(const char *path)
{
    struct stat sb;
    int fd = -1;
    char *name = NULL;
    char *driver = NULL;
    Uint16 vendor, product;
    SDL_GUID guid;
    SDL_joylist_item *item;
    SDL_sensorlist_item *item_sensor;

    if (!path) {
        return;
    }

    fd = open(path, O_RDONLY | O_CLOEXEC, 0);
    if (fd < 0) {
        return;
Repository: libsdl-org/SDL
File: src/video/android/SDL_androidtouch.h (C/C++)

Code before:
  Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>

  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damages
  arising from the use of this software.

  Permission is granted to anyone to use this software for any purpose,
  including commercial applications, and to alter it and redistribute it
  freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not
     claim that you wrote the original software. If you use this software
     in a product, an acknowledgment in the product documentation would be
     appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be
     misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"

#include "SDL_androidvideo.h"

extern void Android_InitTouch(void);
extern void Android_QuitTouch(void);
extern void Android_OnTouch(SDL_Window *window, int touch_device_id_in, int pointer_finger_id_in, int action, float x, float y, float p);
extern SDL_TouchID Android_ConvertTouchdId_Java_to_SDL(int touch_device_id_in);


Review comment (suggestion):
Naming suggestion:
```suggestion
extern SDL_TouchID Android_ConvertJavaTouchID(int touchID);
```

Code after:
  Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>

  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damages
  arising from the use of this software.

  Permission is granted to anyone to use this software for any purpose,
  including commercial applications, and to alter it and redistribute it
  freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not
     claim that you wrote the original software. If you use this software
     in a product, an acknowledgment in the product documentation would be
     appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be
     misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.
*/
#include "SDL_internal.h"

#include "SDL_androidvideo.h"

extern void Android_InitTouch(void);
extern void Android_QuitTouch(void);
extern void Android_OnTouch(SDL_Window *window, int touch_device_id_in, int pointer_finger_id_in, int action, float x, float y, float p);
extern SDL_TouchID Android_ConvertJavaTouchID(int touchID);
Repository: libsdl-org/SDL
File: src/io/SDL_iostream.c (C)

Code before:
        #if defined(SDL_PLATFORM_3DS)
        FILE *fp = N3DS_FileOpen(file, mode);
        #else
        FILE *fp = fopen(file, mode);
        #endif

        if (!fp) {
            SDL_SetError("Couldn't open %s: %s", file, strerror(errno));
        } else if (!IsRegularFileOrPipe(fp)) {
            fclose(fp);
            SDL_SetError("%s is not a regular file or pipe", file);
        } else {
            iostr = SDL_IOFromFP(fp, true);
        }
    }

#else
    SDL_SetError("SDL not compiled with stdio support");
#endif // !HAVE_STDIO_H

    return iostr;
}

SDL_IOStream *SDL_IOFromMem(void *mem, size_t size)
{
    if (size && !mem) {
        SDL_InvalidParamError("mem");
        return NULL;
    }

    IOStreamMemData *iodata = (IOStreamMemData *) SDL_calloc(1, sizeof (*iodata));
    if (!iodata) {
        return NULL;
    }

    SDL_IOStreamInterface iface;
    SDL_INIT_INTERFACE(&iface);
    iface.size = mem_size;
    iface.seek = mem_seek;
    iface.read = mem_read;
    iface.write = mem_write;
    iface.close = mem_close;

    iodata->base = (Uint8 *)mem;
    iodata->here = iodata->base;
    iodata->stop = iodata->base + size;

    SDL_IOStream *iostr = SDL_OpenIO(&iface, iodata);
    if (!iostr) {
        SDL_free(iodata);
    } else {

Review comment (suggestion):
```suggestion
    CHECK_PARAM(size && !mem) {
```

Code after:
        #if defined(SDL_PLATFORM_3DS)
        FILE *fp = N3DS_FileOpen(file, mode);
        #else
        FILE *fp = fopen(file, mode);
        #endif

        if (!fp) {
            SDL_SetError("Couldn't open %s: %s", file, strerror(errno));
        } else if (!IsRegularFileOrPipe(fp)) {
            fclose(fp);
            SDL_SetError("%s is not a regular file or pipe", file);
        } else {
            iostr = SDL_IOFromFP(fp, true);
        }
    }

#else
    SDL_SetError("SDL not compiled with stdio support");
#endif // !HAVE_STDIO_H

    return iostr;
}

SDL_IOStream *SDL_IOFromMem(void *mem, size_t size)
{
    CHECK_PARAM(size && !mem) {
        SDL_InvalidParamError("mem");
        return NULL;
    }

    IOStreamMemData *iodata = (IOStreamMemData *) SDL_calloc(1, sizeof (*iodata));
    if (!iodata) {
        return NULL;
    }

    SDL_IOStreamInterface iface;
    SDL_INIT_INTERFACE(&iface);
    iface.size = mem_size;
    iface.seek = mem_seek;
    iface.read = mem_read;
    iface.write = mem_write;
    iface.close = mem_close;

    iodata->base = (Uint8 *)mem;
    iodata->here = iodata->base;
    iodata->stop = iodata->base + size;

    SDL_IOStream *iostr = SDL_OpenIO(&iface, iodata);
    if (!iostr) {
        SDL_free(iodata);
    } else {
Repository: libsdl-org/SDL
File: src/io/SDL_iostream.c (C)

Code before:
    iface.seek = mem_seek;
    iface.read = mem_read;
    iface.write = mem_write;
    iface.close = mem_close;

    iodata->base = (Uint8 *)mem;
    iodata->here = iodata->base;
    iodata->stop = iodata->base + size;

    SDL_IOStream *iostr = SDL_OpenIO(&iface, iodata);
    if (!iostr) {
        SDL_free(iodata);
    } else {
        const SDL_PropertiesID props = SDL_GetIOProperties(iostr);
        if (props) {
            iodata->props = props;
            SDL_SetPointerProperty(props, SDL_PROP_IOSTREAM_MEMORY_POINTER, mem);
            SDL_SetNumberProperty(props, SDL_PROP_IOSTREAM_MEMORY_SIZE_NUMBER, size);
        }
    }
    return iostr;
}

SDL_IOStream *SDL_IOFromConstMem(const void *mem, size_t size)
{
    if (size && !mem) {
        SDL_InvalidParamError("mem");
        return NULL;
    }

    IOStreamMemData *iodata = (IOStreamMemData *) SDL_calloc(1, sizeof (*iodata));
    if (!iodata) {
        return NULL;
    }

    SDL_IOStreamInterface iface;
    SDL_INIT_INTERFACE(&iface);
    iface.size = mem_size;
    iface.seek = mem_seek;
    iface.read = mem_read;
    // leave iface.write as NULL.
    iface.close = mem_close;

    iodata->base = (Uint8 *)mem;
    iodata->here = iodata->base;
    iodata->stop = iodata->base + size;

    SDL_IOStream *iostr = SDL_OpenIO(&iface, iodata);
    if (!iostr) {
        SDL_free(iodata);
    } else {

Review comment (suggestion):
```suggestion
    CHECK_PARAM(size && !mem) {
```

Code after:
    iface.seek = mem_seek;
    iface.read = mem_read;
    iface.write = mem_write;
    iface.close = mem_close;

    iodata->base = (Uint8 *)mem;
    iodata->here = iodata->base;
    iodata->stop = iodata->base + size;

    SDL_IOStream *iostr = SDL_OpenIO(&iface, iodata);
    if (!iostr) {
        SDL_free(iodata);
    } else {
        const SDL_PropertiesID props = SDL_GetIOProperties(iostr);
        if (props) {
            iodata->props = props;
            SDL_SetPointerProperty(props, SDL_PROP_IOSTREAM_MEMORY_POINTER, mem);
            SDL_SetNumberProperty(props, SDL_PROP_IOSTREAM_MEMORY_SIZE_NUMBER, size);
        }
    }
    return iostr;
}

SDL_IOStream *SDL_IOFromConstMem(const void *mem, size_t size)
{
    CHECK_PARAM(size && !mem) {
        SDL_InvalidParamError("mem");
        return NULL;
    }

    IOStreamMemData *iodata = (IOStreamMemData *) SDL_calloc(1, sizeof (*iodata));
    if (!iodata) {
        return NULL;
    }

    SDL_IOStreamInterface iface;
    SDL_INIT_INTERFACE(&iface);
    iface.size = mem_size;
    iface.seek = mem_seek;
    iface.read = mem_read;
    // leave iface.write as NULL.
    iface.close = mem_close;

    iodata->base = (Uint8 *)mem;
    iodata->here = iodata->base;
    iodata->stop = iodata->base + size;

    SDL_IOStream *iostr = SDL_OpenIO(&iface, iodata);
    if (!iostr) {
        SDL_free(iodata);
    } else {
Repository: libsdl-org/SDL
File: include/SDL3/SDL_hints.h (C/C++)

Code before:
 * file will be loaded and interpreted as the value of the variable.
 *
 * This hint should be set before SDL is initialized.
 *
 * \since This hint is available since SDL 3.2.0.
 */
#define SDL_HINT_ROG_GAMEPAD_MICE_EXCLUDED "SDL_ROG_GAMEPAD_MICE_EXCLUDED"

/**
 * Variable controlling the width of the PS2's framebuffer in pixels
 *
 * By default, this variable is "640"
 */
#define SDL_HINT_PS2_GS_WIDTH    "SDL_PS2_GS_WIDTH"

/**
 * Variable controlling the height of the PS2's framebuffer in pixels
 *
 * By default, this variable is "448"
 */
#define SDL_HINT_PS2_GS_HEIGHT    "SDL_PS2_GS_HEIGHT"

/**
 * Variable controlling whether the signal is interlaced or progressive
 *
 * - "0": Image is interlaced. Default
 * - "1": Image is progressive
 */
#define SDL_HINT_PS2_GS_PROGRESSIVE    "SDL_PS2_GS_PROGRESSIVE"

/**
 * Variable controlling the video mode of the console
 *
 * - "": Console-native. Default
 * - "NTSC": 60hz region
 * - "PAL": 50hz region
 */
#define SDL_HINT_PS2_GS_MODE    "SDL_PS2_GS_MODE"

/**
 * A variable controlling which Dispmanx layer to use on a Raspberry PI.
 *
 * Also known as Z-order. The variable can take a negative or positive value.
 * The default is 10000.
 *
 * This hint should be set before SDL is initialized.
 *
 * \since This hint is available since SDL 3.2.0.
 */
#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER"


Review comment (suggestion):
```suggestion
 * - "0": Image is interlaced. (default)
```

Code after:
 * file will be loaded and interpreted as the value of the variable.
 *
 * This hint should be set before SDL is initialized.
 *
 * \since This hint is available since SDL 3.2.0.
 */
#define SDL_HINT_ROG_GAMEPAD_MICE_EXCLUDED "SDL_ROG_GAMEPAD_MICE_EXCLUDED"

/**
 * Variable controlling the width of the PS2's framebuffer in pixels
 *
 * By default, this variable is "640"
 */
#define SDL_HINT_PS2_GS_WIDTH    "SDL_PS2_GS_WIDTH"

/**
 * Variable controlling the height of the PS2's framebuffer in pixels
 *
 * By default, this variable is "448"
 */
#define SDL_HINT_PS2_GS_HEIGHT    "SDL_PS2_GS_HEIGHT"

/**
 * Variable controlling whether the signal is interlaced or progressive
 *
 * - "0": Image is interlaced. (default)
 * - "1": Image is progressive
 */
#define SDL_HINT_PS2_GS_PROGRESSIVE    "SDL_PS2_GS_PROGRESSIVE"

/**
 * Variable controlling the video mode of the console
 *
 * - "": Console-native. (default)
 * - "NTSC": 60hz region
 * - "PAL": 50hz region
 */
#define SDL_HINT_PS2_GS_MODE    "SDL_PS2_GS_MODE"

/**
 * A variable controlling which Dispmanx layer to use on a Raspberry PI.
 *
 * Also known as Z-order. The variable can take a negative or positive value.
 * The default is 10000.
 *
 * This hint should be set before SDL is initialized.
 *
 * \since This hint is available since SDL 3.2.0.
 */
#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER"
Repository: libsdl-org/SDL
File: include/SDL3/SDL_hints.h (C/C++)

Code before:
/**
 * Variable controlling the width of the PS2's framebuffer in pixels
 *
 * By default, this variable is "640"
 */
#define SDL_HINT_PS2_GS_WIDTH    "SDL_PS2_GS_WIDTH"

/**
 * Variable controlling the height of the PS2's framebuffer in pixels
 *
 * By default, this variable is "448"
 */
#define SDL_HINT_PS2_GS_HEIGHT    "SDL_PS2_GS_HEIGHT"

/**
 * Variable controlling whether the signal is interlaced or progressive
 *
 * - "0": Image is interlaced. Default
 * - "1": Image is progressive
 */
#define SDL_HINT_PS2_GS_PROGRESSIVE    "SDL_PS2_GS_PROGRESSIVE"

/**
 * Variable controlling the video mode of the console
 *
 * - "": Console-native. Default
 * - "NTSC": 60hz region
 * - "PAL": 50hz region
 */
#define SDL_HINT_PS2_GS_MODE    "SDL_PS2_GS_MODE"

/**
 * A variable controlling which Dispmanx layer to use on a Raspberry PI.
 *
 * Also known as Z-order. The variable can take a negative or positive value.
 * The default is 10000.
 *
 * This hint should be set before SDL is initialized.
 *
 * \since This hint is available since SDL 3.2.0.
 */
#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER"

/**
 * Specify an "activity name" for screensaver inhibition.
 *
 * Some platforms, notably Linux desktops, list the applications which are
 * inhibiting the screensaver or other power-saving features.
 *
 * This hint lets you specify the "activity name" sent to the OS when
 * SDL_DisableScreenSaver() is used (or the screensaver is automatically

Review comment (suggestion):
```suggestion
 * - "": Console-native. (default)
```

Code after:
/**
 * Variable controlling the width of the PS2's framebuffer in pixels
 *
 * By default, this variable is "640"
 */
#define SDL_HINT_PS2_GS_WIDTH    "SDL_PS2_GS_WIDTH"

/**
 * Variable controlling the height of the PS2's framebuffer in pixels
 *
 * By default, this variable is "448"
 */
#define SDL_HINT_PS2_GS_HEIGHT    "SDL_PS2_GS_HEIGHT"

/**
 * Variable controlling whether the signal is interlaced or progressive
 *
 * - "0": Image is interlaced. (default)
 * - "1": Image is progressive
 */
#define SDL_HINT_PS2_GS_PROGRESSIVE    "SDL_PS2_GS_PROGRESSIVE"

/**
 * Variable controlling the video mode of the console
 *
 * - "": Console-native. (default)
 * - "NTSC": 60hz region
 * - "PAL": 50hz region
 */
#define SDL_HINT_PS2_GS_MODE    "SDL_PS2_GS_MODE"

/**
 * A variable controlling which Dispmanx layer to use on a Raspberry PI.
 *
 * Also known as Z-order. The variable can take a negative or positive value.
 * The default is 10000.
 *
 * This hint should be set before SDL is initialized.
 *
 * \since This hint is available since SDL 3.2.0.
 */
#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER"

/**
 * Specify an "activity name" for screensaver inhibition.
 *
 * Some platforms, notably Linux desktops, list the applications which are
 * inhibiting the screensaver or other power-saving features.
 *
 * This hint lets you specify the "activity name" sent to the OS when
 * SDL_DisableScreenSaver() is used (or the screensaver is automatically