kmsdrm: Check for resources when validating KMSDRM device in check_modesetting.

Fixes Bugzilla #4403.
This commit is contained in:
Sergey Zhuravlevich 2018-12-01 16:31:56 -05:00
parent b3ac87d559
commit 583f61b202
1 changed files with 8 additions and 1 deletions

View File

@ -61,7 +61,13 @@ check_modestting(int devindex)
if (SDL_KMSDRM_LoadSymbols()) {
drmModeRes *resources = KMSDRM_drmModeGetResources(drm_fd);
if (resources != NULL) {
available = SDL_TRUE;
SDL_LogDebug(SDL_LOG_CATEGORY_VIDEO, "%scard%d connector, encoder and CRTC counts are: %d %d %d",
KMSDRM_DRI_PATH, devindex,
resources->count_connectors, resources->count_encoders, resources->count_crtcs);
if (resources->count_connectors > 0 && resources->count_encoders > 0 && resources->count_crtcs > 0) {
available = SDL_TRUE;
}
KMSDRM_drmModeFreeResources(resources);
}
SDL_KMSDRM_UnloadSymbols();
@ -358,6 +364,7 @@ KMSDRM_VideoInit(_THIS)
ret = SDL_OutOfMemory();
goto cleanup;
}
SDL_LogDebug(SDL_LOG_CATEGORY_VIDEO, "Opening device /dev/dri/card%d", vdata->devindex);
SDL_snprintf(devname, 16, "/dev/dri/card%d", vdata->devindex);
vdata->drm_fd = open(devname, O_RDWR | O_CLOEXEC);
SDL_free(devname);