From 2ed6867084766a0a4766d78c63b4de9446228cd5 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Sun, 3 Nov 2024 03:46:53 +0100 Subject: [PATCH] win32: Define COBJMACROS via project argument We use it everywhere, so it makes sense to enable it everywhere. For anyone not in the know, defining COBJMACROS makes Micrsoft headers for COM objects provide C macros so that instead of having to call foo->lpVtbl->Release(); to unref a COM object, one can call IFoo_Release (foo); Note that thes macros are implemented with inheritance as Release() is defined on the IUnknown base interface (MS' equivalent to GObject) and would otherwise require IUnknown_Release ((IUnknown *) foo); That line works, too - but it is not necessary. --- gdk/win32/gdkclipdrop-win32.c | 3 --- gdk/win32/gdkdisplay-win32.h | 1 - gdk/win32/gdkdrag-win32.c | 3 --- gdk/win32/gdkdrop-win32.c | 3 --- gdk/win32/gdkinput-dmanipulation.c | 1 - gtk/gtkfilechoosernativewin32.c | 2 -- gtk/print/gtkprintoperation-win32.c | 2 +- meson.build | 1 + 8 files changed, 2 insertions(+), 14 deletions(-) diff --git a/gdk/win32/gdkclipdrop-win32.c b/gdk/win32/gdkclipdrop-win32.c index ba713f40ec..15e5855cc7 100644 --- a/gdk/win32/gdkclipdrop-win32.c +++ b/gdk/win32/gdkclipdrop-win32.c @@ -267,9 +267,6 @@ Otherwise it's similar to how the clipboard works. Only the DnD server #include #include -/* For C-style COM wrapper macros */ -#define COBJMACROS - /* for CIDA */ #include diff --git a/gdk/win32/gdkdisplay-win32.h b/gdk/win32/gdkdisplay-win32.h index a917e2e30f..de9c36a5a5 100644 --- a/gdk/win32/gdkdisplay-win32.h +++ b/gdk/win32/gdkdisplay-win32.h @@ -28,7 +28,6 @@ #include "gdkglversionprivate.h" /* Used for active language or text service change notifications */ -#define COBJMACROS #include #ifdef HAVE_EGL diff --git a/gdk/win32/gdkdrag-win32.c b/gdk/win32/gdkdrag-win32.c index 87fc0ae1c8..6a23ca6c47 100644 --- a/gdk/win32/gdkdrag-win32.c +++ b/gdk/win32/gdkdrag-win32.c @@ -192,9 +192,6 @@ #define INITGUID #endif -/* For C-style COM wrapper macros */ -#define COBJMACROS - #include "gdkdrag.h" #include "gdkprivate-win32.h" #include "gdkwin32.h" diff --git a/gdk/win32/gdkdrop-win32.c b/gdk/win32/gdkdrop-win32.c index 94ed2e89fb..7ca058aa14 100644 --- a/gdk/win32/gdkdrop-win32.c +++ b/gdk/win32/gdkdrop-win32.c @@ -36,9 +36,6 @@ #define INITGUID #endif -/* For C-style COM wrapper macros */ -#define COBJMACROS - #include "gdkdropprivate.h" #include "gdkdrag.h" diff --git a/gdk/win32/gdkinput-dmanipulation.c b/gdk/win32/gdkinput-dmanipulation.c index e257f656a5..6148e512eb 100644 --- a/gdk/win32/gdkinput-dmanipulation.c +++ b/gdk/win32/gdkinput-dmanipulation.c @@ -28,7 +28,6 @@ #endif #define WINVER 0x0603 #define _WIN32_WINNT 0x0603 -#define COBJMACROS #include "config.h" #include diff --git a/gtk/gtkfilechoosernativewin32.c b/gtk/gtkfilechoosernativewin32.c index 01164d357b..bdb4b8f70d 100644 --- a/gtk/gtkfilechoosernativewin32.c +++ b/gtk/gtkfilechoosernativewin32.c @@ -19,8 +19,6 @@ #include "config.h" -#define COBJMACROS - #include "gtkfilechoosernativeprivate.h" #include "gtknativedialogprivate.h" diff --git a/gtk/print/gtkprintoperation-win32.c b/gtk/print/gtkprintoperation-win32.c index 85c04ad2a1..eedd385192 100644 --- a/gtk/print/gtkprintoperation-win32.c +++ b/gtk/print/gtkprintoperation-win32.c @@ -16,8 +16,8 @@ * License along with this library. If not, see . */ -#define COBJMACROS #include "config.h" + #include #ifdef HAVE_UNISTD_H #include diff --git a/meson.build b/meson.build index 781f6b13af..a87d202421 100644 --- a/meson.build +++ b/meson.build @@ -63,6 +63,7 @@ add_project_arguments('-D_GNU_SOURCE', language: 'c') if host_machine.system() == 'windows' add_project_arguments(['-DUNICODE', '-D_UNICODE', + '-DCOBJMACROS', '-D_WIN32_WINNT=_WIN32_WINNT_WIN7'], language: 'c') endif