]> git.pld-linux.org Git - packages/libdrm.git/blob - libdrm-wait-udev.patch
- obsolete
[packages/libdrm.git] / libdrm-wait-udev.patch
1 diff --git a/configure.ac b/configure.ac
2 index 1cf877d..0cf0974 100644
3 --- a/configure.ac
4 +++ b/configure.ac
5 @@ -34,6 +34,9 @@ AC_SYS_LARGEFILE
6  
7  pkgconfigdir=${libdir}/pkgconfig
8  AC_SUBST(pkgconfigdir)
9 +AC_ARG_ENABLE(udev,    AS_HELP_STRING([--enable-udev],
10 +                               [Enable support for using udev instead of mknod (default: disabled)]),
11 +                               [UDEV=$enableval], [UDEV=no])
12  
13  
14  dnl ===========================================================================
15 @@ -101,6 +104,10 @@ AC_CACHE_CHECK([for supported warning flags], libdrm_cv_warn_cflags, [
16         AC_MSG_CHECKING([which warning flags were supported])])
17  WARN_CFLAGS="$libdrm_cv_warn_cflags"
18  
19 +if test "x$UDEV" = xyes; then
20 +       AC_DEFINE(UDEV, 1, [Have UDEV support])
21 +fi
22 +
23  AC_SUBST(WARN_CFLAGS)
24  AC_OUTPUT([
25         Makefile
26 diff --git a/libdrm/xf86drm.c b/libdrm/xf86drm.c
27 index 150dd5f..5d8819a 100644
28 --- a/libdrm/xf86drm.c
29 +++ b/libdrm/xf86drm.c
30 @@ -297,6 +297,7 @@ static int drmOpenDevice(long dev, int minor)
31         group = (serv_group >= 0) ? serv_group : DRM_DEV_GID;
32      }
33  
34 +#if !defined(UDEV)
35      if (stat(DRM_DIR_NAME, &st)) {
36         if (!isroot)
37             return DRM_ERR_NOT_ROOT;
38 @@ -317,6 +318,30 @@ static int drmOpenDevice(long dev, int minor)
39         chown(buf, user, group);
40         chmod(buf, devmode);
41      }
42 +#else
43 +    /* if we modprobed then wait for udev */
44 +    {
45 +       int udev_count = 0;
46 +wait_for_udev:
47 +        if (stat(DRM_DIR_NAME, &st)) {
48 +               usleep(20);
49 +               udev_count++;
50 +
51 +               if (udev_count == 50)
52 +                       return -1;
53 +               goto wait_for_udev;
54 +       }
55 +
56 +       if (stat(buf, &st)) {
57 +               usleep(20);
58 +               udev_count++;
59 +
60 +               if (udev_count == 50)
61 +                       return -1;
62 +               goto wait_for_udev;
63 +       }
64 +    }
65 +#endif
66  
67      fd = open(buf, O_RDWR, 0);
68      drmMsg("drmOpenDevice: open result is %d, (%s)\n",
This page took 0.036682 seconds and 3 git commands to generate.