From 17eee2e4e2e98940efd131784576eeac505fc813 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Costa?= Date: Mon, 13 Apr 2026 11:19:53 +0200 Subject: [PATCH] feat(sdl/egl): detected driver at runtime --- src/drivers/sdl/lv_sdl_egl.c | 36 +++++++++++++++++++++++++-------- src/drivers/sdl/lv_sdl_window.c | 4 ---- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/drivers/sdl/lv_sdl_egl.c b/src/drivers/sdl/lv_sdl_egl.c index 4b4bc947bc..c8669b3a59 100644 --- a/src/drivers/sdl/lv_sdl_egl.c +++ b/src/drivers/sdl/lv_sdl_egl.c @@ -164,16 +164,36 @@ static void * create_window_cb(void * driver_data, const lv_egl_native_window_pr SDL_GetWindowWMInfo(lv_sdl_window_get_window(display), &wmInfo); EGLNativeWindowType native_window; -#if defined(SDL_VIDEO_DRIVER_WINDOWS) - native_window = wmInfo.info.win.window; -#elif defined(SDL_VIDEO_DRIVER_X11) - native_window = wmInfo.info.x11.window; -#elif defined(SDL_VIDEO_DRIVER_WAYLAND) - native_window = wmInfo.info.wl.surface; + const char * driver = SDL_GetCurrentVideoDriver(); + + if(driver && strcmp(driver, "wayland") == 0) { +#if defined(SDL_VIDEO_DRIVER_WAYLAND) + native_window = (EGLNativeWindowType)wmInfo.info.wl.egl_window; #else - LV_LOG_ERROR("Unsupported platform for EGL"); - return NULL; + LV_LOG_ERROR("SDL built without Wayland support"); + return NULL; #endif + } + else if(driver && strcmp(driver, "x11") == 0) { +#if defined(SDL_VIDEO_DRIVER_X11) + native_window = (EGLNativeWindowType)wmInfo.info.x11.window; +#else + LV_LOG_ERROR("SDL built without X11 support"); + return NULL; +#endif + } + else if(driver && strcmp(driver, "windows") == 0) { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + native_window = (EGLNativeWindowType)wmInfo.info.win.window; +#else + LV_LOG_ERROR("SDL built without Windows support"); + return NULL; +#endif + } + else { + LV_LOG_ERROR("Unsupported SDL video driver: (%s)", driver); + return NULL; + } return (void *)native_window; } diff --git a/src/drivers/sdl/lv_sdl_window.c b/src/drivers/sdl/lv_sdl_window.c index 15a87ab121..79f1ec6f82 100644 --- a/src/drivers/sdl/lv_sdl_window.c +++ b/src/drivers/sdl/lv_sdl_window.c @@ -60,10 +60,6 @@ static lv_timer_t * event_handler_timer; lv_display_t * lv_sdl_window_create(int32_t hor_res, int32_t ver_res) { if(!inited) { -#if LV_SDL_USE_EGL && defined(SDL_VIDEO_DRIVER_X11) - SDL_SetHintWithPriority("SDL_VIDEODRIVER", "x11", SDL_HINT_OVERRIDE); - SDL_SetHint(SDL_HINT_VIDEO_X11_FORCE_EGL, "1"); -#endif SDL_Init(SDL_INIT_VIDEO); SDL_StartTextInput(); event_handler_timer = lv_timer_create(sdl_event_handler, 5, NULL);