diff --git a/src/lib/ecore_drm2/ecore_drm2_device.c b/src/lib/ecore_drm2/ecore_drm2_device.c --- a/src/lib/ecore_drm2/ecore_drm2_device.c +++ b/src/lib/ecore_drm2/ecore_drm2_device.c @@ -95,9 +95,10 @@ _drm2_device_find(Elput_Manager *em, const char *seat) { Eina_List *devs, *l; - const char *dev, *ret = NULL; + const char *dev, *ret, *fdev = NULL; Eina_Bool found = EINA_FALSE; Eina_Bool platform = EINA_FALSE; + Eina_Bool fallback = EINA_FALSE; Eina_Bool modeset; int fd; @@ -144,6 +145,7 @@ id = eeze_udev_syspath_get_sysattr(dparent, "boot_vga"); if (id) { + fallback = EINA_FALSE; if (!strcmp(id, "1")) found = EINA_TRUE; eina_stringshare_del(id); } @@ -154,12 +156,21 @@ eina_stringshare_del(dparent); } + if (!found && !fdev) + { + fdev = dev; + fallback = EINA_TRUE; + } cont: eina_stringshare_del(dpath); eina_stringshare_del(dseat); if (found) break; } + if (fallback) dev = fdev; + + if (fdev) found = EINA_TRUE; + if (!found) goto out; ret = eeze_udev_syspath_get_devpath(dev);