diff options
Diffstat (limited to 'patches/SDL2-2.0.8/0002-sdl-2.0.8-KMSDRM-find-available-card-if-called-witho.patch')
-rw-r--r-- | patches/SDL2-2.0.8/0002-sdl-2.0.8-KMSDRM-find-available-card-if-called-witho.patch | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/patches/SDL2-2.0.8/0002-sdl-2.0.8-KMSDRM-find-available-card-if-called-witho.patch b/patches/SDL2-2.0.8/0002-sdl-2.0.8-KMSDRM-find-available-card-if-called-witho.patch deleted file mode 100644 index e889f87ae..000000000 --- a/patches/SDL2-2.0.8/0002-sdl-2.0.8-KMSDRM-find-available-card-if-called-witho.patch +++ /dev/null @@ -1,129 +0,0 @@ -From 212c7c68ec228a1058f39497d18c65e9312d00df Mon Sep 17 00:00:00 2001 -From: Michael Grzeschik <m.grzeschik@pengutronix.de> -Date: Thu, 12 Jul 2018 13:48:54 +0200 -Subject: [PATCH] sdl-2.0.8: KMSDRM: find available card if called without - index - -Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de> ---- - src/video/kmsdrm/SDL_kmsdrmvideo.c | 84 ++++++++++++++++++++++++++++-- - 1 file changed, 80 insertions(+), 4 deletions(-) - -diff --git a/src/video/kmsdrm/SDL_kmsdrmvideo.c b/src/video/kmsdrm/SDL_kmsdrmvideo.c -index 7855eeddb..f63c91b0a 100644 ---- a/src/video/kmsdrm/SDL_kmsdrmvideo.c -+++ b/src/video/kmsdrm/SDL_kmsdrmvideo.c -@@ -41,15 +41,22 @@ - #include "SDL_kmsdrmopengles.h" - #include "SDL_kmsdrmmouse.h" - #include "SDL_kmsdrmdyn.h" -+#include <sys/stat.h> -+#include <dirent.h> -+#include <errno.h> - --#define KMSDRM_DRI_CARD_0 "/dev/dri/card0" -+#define KMSDRM_DRI_PATH "/dev/dri/" - - static int --KMSDRM_Available(void) -+check_modestting(int devindex) - { - int available = 0; -+ char device[512]; -+ int drm_fd; -+ -+ sprintf(device, "%scard%d", KMSDRM_DRI_PATH, devindex); - -- int drm_fd = open(KMSDRM_DRI_CARD_0, O_RDWR | O_CLOEXEC); -+ drm_fd = open(device, O_RDWR | O_CLOEXEC); - if (drm_fd >= 0) { - if (SDL_KMSDRM_LoadSymbols()) { - drmModeRes *resources = KMSDRM_drmModeGetResources(drm_fd); -@@ -65,6 +72,72 @@ KMSDRM_Available(void) - return available; - } - -+static int get_dricount(void) -+{ -+ int devcount = 0; -+ struct dirent *res; -+ struct stat sb; -+ DIR *folder; -+ -+ if (!(stat(KMSDRM_DRI_PATH, &sb) == 0 -+ && S_ISDIR(sb.st_mode))) { -+ printf("The path %s cannot be opened or is not available\n", -+ KMSDRM_DRI_PATH); -+ return 0; -+ } -+ -+ if (access(KMSDRM_DRI_PATH, F_OK) == -1) { -+ printf("The path %s cannot be opened\n", -+ KMSDRM_DRI_PATH); -+ return 0; -+ } -+ -+ folder = opendir(KMSDRM_DRI_PATH); -+ if (!folder) -+ return 0; -+ -+ while ((res = readdir(folder))) { -+ if (res->d_type == DT_CHR) -+ devcount++; -+ } -+ -+ closedir(folder); -+ -+ return devcount; -+} -+ -+static int -+get_driindex(void) -+{ -+ int i = 0; -+ int available = 0; -+ int devcount = get_dricount(); -+ -+ for (i = 0; i < devcount; i++) { -+ if (check_modestting(i)) { -+ available = 1; -+ break; -+ } -+ } -+ -+ if (available) -+ return i; -+ -+ return -ENOENT; -+} -+ -+static int -+KMSDRM_Available(void) -+{ -+ int ret = -ENOENT; -+ -+ ret = get_driindex(); -+ if (ret >= 0) -+ return 1; -+ -+ return ret; -+} -+ - static void - KMSDRM_Destroy(SDL_VideoDevice * device) - { -@@ -83,7 +156,10 @@ KMSDRM_Create(int devindex) - SDL_VideoDevice *device; - SDL_VideoData *vdata; - -- if (devindex < 0 || devindex > 99) { -+ if (!devindex || devindex > 99) -+ devindex = get_driindex(); -+ -+ if (devindex < 0) { - SDL_SetError("devindex (%d) must be between 0 and 99.\n", devindex); - return NULL; - } --- -2.18.0 - |