drm: Branch 'master' - 2 commits

[email protected] (Adam Jackson) Thu, 4 May 2017 18:38:12 +0000 (UTC)
Newsgroups gmane.comp.video.dri.patches
Message-ID <[email protected]>
 configure.ac |    4 ++++
 xf86drm.c    |   18 +++++++++---------
 xf86drm.h    |    2 ++
 3 files changed, 15 insertions(+), 9 deletions(-)

New commits:
commit 7040fea0280bad527ed4b3d5eee7d7bfbf303efc
Author: Adam Jackson <[email protected]>
Date:   Thu May 4 12:25:01 2017 -0400

    configure: Fix the <sys/sysmacros.h> check
    
    AC_HEADER_MAJOR only defines MAJOR_IN_SYSMACROS if major() is _not_
    defined by <sys/types.h> alone. It is, but it warns, and that's ugly.
    To fix this, push -Werror into CFLAGS when invoking AC_HEADER_MAJOR so
    the warning makes the compilation test fail.
    
    Reviewed-by: Emil Velikov <[email protected]>
    Signed-off-by: Adam Jackson <[email protected]>

diff --git a/configure.ac b/configure.ac
index e5158b7d..43fcf68f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -54,7 +54,11 @@ AC_USE_SYSTEM_EXTENSIONS
 AC_SYS_LARGEFILE
 AC_FUNC_ALLOCA
 
+save_CFLAGS="$CFLAGS"
+export CFLAGS="$CFLAGS -Werror"
 AC_HEADER_MAJOR
+CFLAGS="$save_CFLAGS"
+
 AC_CHECK_HEADERS([sys/sysctl.h sys/select.h])
 
 # Initialize libtool
commit 7c27cd7c5da0b87cea0dacd454307e2613d3b415
Author: Adam Jackson <[email protected]>
Date:   Thu May 4 10:48:56 2017 -0400

    Export drmDevicesEqual
    
    drmCompareBusInfo was almost this already, but it wasn't exported, its
    name didn't match its functionality, and while it almost looks like it
    was usable for sorting due to memcmp it wouldn't work if you had
    multiple bus types. I don't really want to think about defining a
    sensible sort order for bus types, so let's at least make it less of a
    trap for the caller.
    
    Invert its boolean sense to be 'true if equal', rename it to describe
    the types it actually operates on, and export.
    
    Reviewed-by: Eric Anholt <[email protected]>
    Reviewed-by: Emil Velikov <[email protected]>
    Signed-off-by: Adam Jackson <[email protected]>

diff --git a/xf86drm.c b/xf86drm.c
index 685cf69d..29fea331 100644
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -3029,32 +3029,32 @@ static int drmParsePciBusInfo(int maj, int min, drmPciBusInfoPtr info)
 #endif
 }
 
-static int drmCompareBusInfo(drmDevicePtr a, drmDevicePtr b)
+int drmDevicesEqual(drmDevicePtr a, drmDevicePtr b)
 {
     if (a == NULL || b == NULL)
-        return -1;
+        return 0;
 
     if (a->bustype != b->bustype)
-        return -1;
+        return 0;
 
     switch (a->bustype) {
     case DRM_BUS_PCI:
-        return memcmp(a->businfo.pci, b->businfo.pci, sizeof(drmPciBusInfo));
+        return memcmp(a->businfo.pci, b->businfo.pci, sizeof(drmPciBusInfo)) == 0;
 
     case DRM_BUS_USB:
-        return memcmp(a->businfo.usb, b->businfo.usb, sizeof(drmUsbBusInfo));
+        return memcmp(a->businfo.usb, b->businfo.usb, sizeof(drmUsbBusInfo)) == 0;
 
     case DRM_BUS_PLATFORM:
-        return memcmp(a->businfo.platform, b->businfo.platform, sizeof(drmPlatformBusInfo));
+        return memcmp(a->businfo.platform, b->businfo.platform, sizeof(drmPlatformBusInfo)) == 0;
 
     case DRM_BUS_HOST1X:
-        return memcmp(a->businfo.host1x, b->businfo.host1x, sizeof(drmHost1xBusInfo));
+        return memcmp(a->businfo.host1x, b->businfo.host1x, sizeof(drmHost1xBusInfo)) == 0;
 
     default:
         break;
     }
 
-    return -1;
+    return 0;
 }
 
 static int drmGetNodeType(const char *name)
@@ -3669,7 +3669,7 @@ static void drmFoldDuplicatedDevices(drmDevicePtr local_devices[], int count)
 
     for (i = 0; i < count; i++) {
         for (j = i + 1; j < count; j++) {
-            if (drmCompareBusInfo(local_devices[i], local_devices[j]) == 0) {
+            if (drmCompareDevices(local_devices[i], local_devices[j])) {
                 local_devices[i]->available_nodes |= local_devices[j]->available_nodes;
                 node_type = log2(local_devices[j]->available_nodes);
                 memcpy(local_devices[i]->nodes[node_type],
diff --git a/xf86drm.h b/xf86drm.h
index d75ca8ce..74f54f17 100644
--- a/xf86drm.h
+++ b/xf86drm.h
@@ -851,6 +851,8 @@ extern void drmFreeDevices(drmDevicePtr devices[], int count);
 extern int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr *device);
 extern int drmGetDevices2(uint32_t flags, drmDevicePtr devices[], int max_devices);
 
+extern int drmDevicesEqual(drmDevicePtr a, drmDevicePtr b);
+
 #if defined(__cplusplus)
 }
 #endif

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
--