[gtk/revert-9711c2ad] Revert "Merge branch 'remove-mingw-SetupDiGetDevicePropertyW-check-3-24' into 'gtk-3-24'"



commit 8a9ffef52bb825507643eac07446dbec1af5c153
Author: Christoph Reiter <reiter christoph gmail com>
Date:   Sun Sep 15 15:19:29 2019 +0000

    Revert "Merge branch 'remove-mingw-SetupDiGetDevicePropertyW-check-3-24' into 'gtk-3-24'"
    
    This reverts merge request !862

 config.h.meson               |  3 +++
 configure.ac                 | 26 ++++++++++++++++++++++++++
 gdk/win32/gdkmonitor-win32.c | 14 ++++++++++++++
 meson.build                  | 13 +++++++++++++
 4 files changed, 56 insertions(+)
---
diff --git a/config.h.meson b/config.h.meson
index 93495755d5..480f5689eb 100644
--- a/config.h.meson
+++ b/config.h.meson
@@ -116,6 +116,9 @@
 /* Define to 1 if you have the `round' function. */
 #mesondefine HAVE_ROUND
 
+/* Define to 1 if SetupDiGetDevicePropertyW() is available */
+#mesondefine HAVE_SETUP_DI_GET_DEVICE_PROPERTY_W
+
 /* Define to 1 if you have the `sincos' function. */
 #mesondefine HAVE_SINCOS
 
diff --git a/configure.ac b/configure.ac
index 230df57c6e..9736f846cc 100644
--- a/configure.ac
+++ b/configure.ac
@@ -726,6 +726,32 @@ AS_CASE([$host_os],
       [AC_MSG_ERROR([DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY is unavailable])],
       [AC_MSG_RESULT([DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY is not OK])]
     )
+    AC_MSG_CHECKING([for SetupDiGetDevicePropertyW])
+    gtk_save_LIBS="$LIBS"
+    LIBS="-lsetupapi $LIBS"
+    AC_TRY_LINK(
+      [
+#define _WIN32_WINNT 0x0600
+#include <windows.h>
+#include <devpropdef.h>
+#include <setupapi.h>
+      ],
+      [return SetupDiGetDevicePropertyW(NULL, NULL, NULL, NULL, NULL, 0, NULL, 0);],
+      [have_SetupDiGetDevicePropertyW=yes],
+      [have_SetupDiGetDevicePropertyW=no]
+    )
+    AS_IF(
+      [test x$have_SetupDiGetDevicePropertyW = xyes],
+      [
+       AC_DEFINE(
+         [HAVE_SETUP_DI_GET_DEVICE_PROPERTY_W],
+         [1],
+         [Define to 1 if SetupDiGetDevicePropertyW() is available]
+       )
+      ]
+    )
+    AC_MSG_RESULT([$have_SetupDiGetDevicePropertyW])
+    LIBS="$gtk_save_LIBS"
   ],
   []
 )
diff --git a/gdk/win32/gdkmonitor-win32.c b/gdk/win32/gdkmonitor-win32.c
index 43df44e095..2f7afd3a74 100644
--- a/gdk/win32/gdkmonitor-win32.c
+++ b/gdk/win32/gdkmonitor-win32.c
@@ -144,6 +144,20 @@ typedef LONG
 #define MONITORINFOF_PRIMARY 1
 #endif
 
+/* MinGW-w64 does not have a prototype for function in its headers
+ * at the moment of writing.
+ */
+#if !defined (HAVE_SETUP_DI_GET_DEVICE_PROPERTY_W)
+BOOL WINAPI SetupDiGetDevicePropertyW (HDEVINFO          DeviceInfoSet,
+                                       PSP_DEVINFO_DATA  DeviceInfoData,
+                                       const DEVPROPKEY *PropertyKey,
+                                       DEVPROPTYPE      *PropertyType,
+                                       PBYTE             PropertyBuffer,
+                                       DWORD             PropertyBufferSize,
+                                       PDWORD            RequiredSize,
+                                       DWORD             Flags);
+#endif
+
 #define G_GUID_FORMAT "%08lX-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X"
 #define g_format_guid(guid) (guid)->Data1, \
                             (guid)->Data2, \
diff --git a/meson.build b/meson.build
index 21d62a39c4..1127047d24 100644
--- a/meson.build
+++ b/meson.build
@@ -780,6 +780,19 @@ if os_win32
     #include <windows.h>
   ''')
   cdata.set('SIZEOF_DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY', dvot_size)
+
+  getdevprop_code = '''
+    #define _WIN32_WINNT 0x0600
+    #include <windows.h>
+    #include <devpropdef.h>
+    #include <setupapi.h>
+
+    int main(int argc, char *argv[]) {
+      return SetupDiGetDevicePropertyW(NULL, NULL, NULL, NULL, NULL, 0, NULL, 0);
+    }
+  '''
+  result = cc.links(getdevprop_code, args: ['-lsetupapi'], name: 'has SetupDiGetDevicePropertyW')
+  cdata.set('HAVE_SETUP_DI_GET_DEVICE_PROPERTY_W', result ? 1 : false)
 endif
 
 have_gio_unix = false


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]