summaryrefslogtreecommitdiff
path: root/gdk/win32/gdkmain-win32.c
diff options
context:
space:
mode:
authorРуслан Ижбулатов <lrn1986@gmail.com>2014-04-10 08:48:13 +0000
committerРуслан Ижбулатов <lrn1986@gmail.com>2014-04-10 17:49:20 +0000
commit7ae5a56948e5124eabd558438ff29187f5721819 (patch)
tree588185629f8afd26e2d2f65967b036a8535c1cd3 /gdk/win32/gdkmain-win32.c
parent6e3e0dcd739bcf7ef549cecc0aa5061c794e14bb (diff)
downloadgtk+-7ae5a56948e5124eabd558438ff29187f5721819.tar.gz
W32: Implement composition check for GDK
Also move DWM function grabbing and make those functions available to all of GDK-Win32. https://bugzilla.gnome.org/show_bug.cgi?id=727316
Diffstat (limited to 'gdk/win32/gdkmain-win32.c')
-rw-r--r--gdk/win32/gdkmain-win32.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/gdk/win32/gdkmain-win32.c b/gdk/win32/gdkmain-win32.c
index 905c729fab..5011817f22 100644
--- a/gdk/win32/gdkmain-win32.c
+++ b/gdk/win32/gdkmain-win32.c
@@ -48,6 +48,12 @@ static gboolean gdk_synchronize = FALSE;
static gboolean dummy;
+#ifdef HAVE_W32_DWM
+static HMODULE dwmdll = NULL;
+PFN_DwmEnableBlurBehindWindow dwmEnableBlurBehindWindow = NULL;
+PFN_DwmIsCompositionEnabled dwmIsCompositionEnabled = NULL;
+#endif
+
const GOptionEntry _gdk_windowing_args[] = {
{ "sync", 0, 0, G_OPTION_ARG_NONE, &gdk_synchronize,
/* Description of --sync in --help output */ N_("Don't batch GDI requests"), NULL },
@@ -132,6 +138,29 @@ _gdk_win32_windowing_init (void)
_cf_text_html = RegisterClipboardFormat ("text/html");
_gdk_win32_selection_init ();
+
+/* HAVE_W32_DWM means that we have necessary declarations at compile-time,
+ * but we'd still like to be able to run on XP, so we'll load the functions
+ * we need at runtime.
+ */
+#ifdef HAVE_W32_DWM
+ if (dwmdll == NULL)
+ {
+ dwmdll = LoadLibraryA ("dwmapi.dll");
+ if (dwmdll == NULL)
+ {
+ /* This will make sure that we only try this once */
+ dwmdll = INVALID_HANDLE_VALUE;
+ }
+ else
+ {
+ dwmEnableBlurBehindWindow = (PFN_DwmEnableBlurBehindWindow)
+ GetProcAddress (dwmdll, "DwmEnableBlurBehindWindow");
+ dwmIsCompositionEnabled = (PFN_DwmIsCompositionEnabled)
+ GetProcAddress (dwmdll, "DwmIsCompositionEnabled");
+ }
+ }
+#endif
}
void