diff --git a/src/video/kmsdrm/SDL_kmsdrmvideo.c b/src/video/kmsdrm/SDL_kmsdrmvideo.c --- a/src/video/kmsdrm/SDL_kmsdrmvideo.c +++ b/src/video/kmsdrm/SDL_kmsdrmvideo.c @@ -72,6 +72,7 @@ check_modesetting(int devindex) drm_fd = open(device, O_RDWR | O_CLOEXEC); if (drm_fd >= 0) { if (SDL_KMSDRM_LoadSymbols()) { + if (KMSDRM_drmSetClientCap(drm_fd, DRM_CLIENT_CAP_ATOMIC, 1) == 0) { drmModeRes *resources = KMSDRM_drmModeGetResources(drm_fd); if (resources) { SDL_LogDebug(SDL_LOG_CATEGORY_VIDEO, "%scard%d connector, encoder and CRTC counts are: %d %d %d", @@ -98,7 +99,8 @@ check_modesetting(int devindex) } KMSDRM_drmModeFreeResources(resources); } - SDL_KMSDRM_UnloadSymbols(); + } + SDL_KMSDRM_UnloadSymbols(); } close(drm_fd); }