changeset 4993:7e89d17a530c

Update glib to v2.50.2 (bug #55769). * src/glib.mk: Update version, checksum and build rules. * src/glib-1-fixes.patch: Add new file from mxe.cc * src/mingw-glib-1-fixes.patch, src/mingw-glib-2-fixes.patch: Remove files. * dist-files.mk: Update src file list.
author Markus Mützel <markus.muetzel@gmx.de>
date Sat, 23 Feb 2019 11:35:53 +0100
parents 5e93880ab76e
children 39f8e075e817
files dist-files.mk src/glib-1-fixes.patch src/glib.mk src/mingw-glib-1-fixes.patch src/mingw-glib-2-fixes.patch
diffstat 5 files changed, 673 insertions(+), 556 deletions(-) [+]
line wrap: on
line diff
--- a/dist-files.mk	Sat Mar 02 17:47:21 2019 +0100
+++ b/dist-files.mk	Sat Feb 23 11:35:53 2019 +0100
@@ -131,6 +131,7 @@
   gl2ps.mk \
   glew-test.c \
   glew.mk \
+  glib-1-fixes.patch \
   glib.mk \
   glibmm.mk \
   glpk-1-fixes.patch \
@@ -326,8 +327,6 @@
   mingw-cairo-1-ssize-t-defined.patch \
   mingw-cfitsio-1-fixes.patch \
   mingw-epstool-1-fixes.patch \
-  mingw-glib-1-fixes.patch \
-  mingw-glib-2-fixes.patch \
   mingw-glpk-1-fixes.patch \
   mingw-hdf5-1.patch \
   mingw-lapack-1-xerbla.patch \
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/glib-1-fixes.patch	Sat Feb 23 11:35:53 2019 +0100
@@ -0,0 +1,643 @@
+This file is part of MXE. See LICENSE.md for licensing information.
+
+Contains ad hoc patches for cross building.
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Mark Brand <mabrand@mabrand.nl>
+Date: Thu, 23 Sep 2010 21:42:46 +0200
+Subject: [PATCH 1/9] fix tool paths
+
+
+diff --git a/glib-2.0.pc.in b/glib-2.0.pc.in
+index 1111111..2222222 100644
+--- a/glib-2.0.pc.in
++++ b/glib-2.0.pc.in
+@@ -3,9 +3,9 @@ exec_prefix=@exec_prefix@
+ libdir=@libdir@
+ includedir=@includedir@
+ 
+-glib_genmarshal=glib-genmarshal
+-gobject_query=gobject-query
+-glib_mkenums=glib-mkenums
++glib_genmarshal=@bindir@/glib-genmarshal
++gobject_query=@bindir@/gobject-query
++glib_mkenums=@bindir@/glib-mkenums
+ 
+ Name: GLib
+ Description: C Utility Library
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Hans Petter Jansson <hpj@cl.no>
+Date: Fri, 15 Jun 2012 15:25:01 +0200
+Subject: [PATCH 2/9] Avoid DllMain symbol conflict when linking statically
+
+Adjusted by Boris Nagaev on 29-Jan-2017 to fix
+https://gist.github.com/starius/f4fc85939352cb50122ba29e0f5b140d
+when updating to glib-2.50.2.
+
+diff --git a/gio/giomodule.c b/gio/giomodule.c
+index 1111111..2222222 100644
+--- a/gio/giomodule.c
++++ b/gio/giomodule.c
+@@ -928,14 +928,12 @@ extern GType g_cocoa_notification_backend_get_type (void);
+ 
+ static HMODULE gio_dll = NULL;
+ 
+-#ifdef DLL_EXPORT
+-
+-BOOL WINAPI DllMain (HINSTANCE hinstDLL,
++BOOL WINAPI gio_DllMain (HINSTANCE hinstDLL,
+                      DWORD     fdwReason,
+                      LPVOID    lpvReserved);
+ 
+ BOOL WINAPI
+-DllMain (HINSTANCE hinstDLL,
++gio_DllMain (HINSTANCE hinstDLL,
+ 	 DWORD     fdwReason,
+ 	 LPVOID    lpvReserved)
+ {
+@@ -945,8 +943,6 @@ DllMain (HINSTANCE hinstDLL,
+   return TRUE;
+ }
+ 
+-#endif
+-
+ void *
+ _g_io_win32_get_module (void)
+ {
+diff --git a/glib/glib-init.c b/glib/glib-init.c
+index 1111111..2222222 100644
+--- a/glib/glib-init.c
++++ b/glib/glib-init.c
+@@ -245,14 +245,14 @@ glib_init (void)
+ 
+ #if defined (G_OS_WIN32)
+ 
+-BOOL WINAPI DllMain (HINSTANCE hinstDLL,
++BOOL WINAPI glib_DllMain (HINSTANCE hinstDLL,
+                      DWORD     fdwReason,
+                      LPVOID    lpvReserved);
+ 
+ HMODULE glib_dll;
+ 
+ BOOL WINAPI
+-DllMain (HINSTANCE hinstDLL,
++glib_DllMain (HINSTANCE hinstDLL,
+          DWORD     fdwReason,
+          LPVOID    lpvReserved)
+ {
+diff --git a/gobject/gtype.c b/gobject/gtype.c
+index 1111111..2222222 100644
+--- a/gobject/gtype.c
++++ b/gobject/gtype.c
+@@ -4450,7 +4450,7 @@ gobject_init (void)
+   _g_signal_init ();
+ }
+ 
+-#if defined (G_OS_WIN32)
++#if 0
+ 
+ BOOL WINAPI DllMain (HINSTANCE hinstDLL,
+                      DWORD     fdwReason,
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Hans Petter Jansson <hpj@cl.no>
+Date: Fri, 15 Jun 2012 15:27:22 +0200
+Subject: [PATCH 3/9] Allow building without inotify support
+
+
+diff --git a/configure.ac b/configure.ac
+index 1111111..2222222 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1599,10 +1599,16 @@ dnl *****************************
+ dnl ** Check for inotify (GIO) **
+ dnl *****************************
+ inotify_support=no
++ AC_ARG_ENABLE(inotify,
++               AC_HELP_STRING([--disable-inotify],
++                              [build without inotify support]))
++
++ if test "x$enable_inotify" != "xno"; then
+ AC_CHECK_HEADERS([sys/inotify.h],
+ [
+   AC_CHECK_FUNCS(inotify_init1, [inotify_support=yes], [inotify_support=no])
+ ])
++fi
+ 
+ AM_CONDITIONAL(HAVE_INOTIFY, [test "$inotify_support" = "yes"])
+ 
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Hans Petter Jansson <hpj@cl.no>
+Date: Fri, 15 Jun 2012 15:28:14 +0200
+Subject: [PATCH 4/9] Make sure STDC_HEADERS is set for AC_CHECK_ALIGNOF.
+ Backported from upstream
+
+
+diff --git a/configure.ac b/configure.ac
+index 1111111..2222222 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -511,6 +511,8 @@ LT_INIT([disable-static win32-dll])
+ dnl when using libtool 2.x create libtool early, because it's used in configure
+ m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
+ 
++# Make sure STDC_HEADERS is set for AC_CHECK_ALIGNOF
++AS_IF([false], [AC_CHECK_HEADER([stdint.h])])
+ 
+ AS_IF([test "$glib_native_win32" = "yes"], [
+   if test x$enable_static = xyes -a x$enable_shared = xyes; then
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Hans Petter Jansson <hpj@cl.no>
+Date: Fri, 15 Jun 2012 15:29:06 +0200
+Subject: [PATCH 5/9] Link with dnsapi
+
+
+diff --git a/gio-2.0.pc.in b/gio-2.0.pc.in
+index 1111111..2222222 100644
+--- a/gio-2.0.pc.in
++++ b/gio-2.0.pc.in
+@@ -13,6 +13,6 @@ Description: glib I/O library
+ Version: @VERSION@
+ Requires: glib-2.0 gobject-2.0
+ Requires.private: gmodule-no-export-2.0
+-Libs: -L${libdir} -lgio-2.0
++Libs: -L${libdir} -lgio-2.0 -ldnsapi -liphlpapi
+ Libs.private: @ZLIB_LIBS@ @NETWORK_LIBS@ @SELINUX_LIBS@ @COCOA_LIBS@ @CARBON_LIBS@
+ Cflags:
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Hans Petter Jansson <hpj@cl.no>
+Date: Fri, 15 Jun 2012 15:29:38 +0200
+Subject: [PATCH 6/9] Ensure globals are initialized even when DllMain is not
+ being run
+
+
+diff --git a/glib/gmain.c b/glib/gmain.c
+index 1111111..2222222 100644
+--- a/glib/gmain.c
++++ b/glib/gmain.c
+@@ -2657,12 +2657,15 @@ g_get_real_time (void)
+ #if defined (G_OS_WIN32)
+ static ULONGLONG (*g_GetTickCount64) (void) = NULL;
+ static guint32 g_win32_tick_epoch = 0;
++static gboolean g_win32_clock_is_initialized;
+ 
+ void
+ g_clock_win32_init (void)
+ {
+   HMODULE kernel32;
+ 
++  g_win32_clock_is_initialized = TRUE;
++
+   g_GetTickCount64 = NULL;
+   kernel32 = GetModuleHandle ("KERNEL32.DLL");
+   if (kernel32 != NULL)
+@@ -2721,6 +2724,9 @@ g_get_monotonic_time (void)
+    *    timeBeginPeriod() to increase it as much as they want
+    */
+ 
++  if (!g_win32_clock_is_initialized)
++    g_clock_win32_init ();
++
+   if (g_GetTickCount64 != NULL)
+     {
+       guint32 ticks_as_32bit;
+diff --git a/glib/gthread-win32.c b/glib/gthread-win32.c
+index 1111111..2222222 100644
+--- a/glib/gthread-win32.c
++++ b/glib/gthread-win32.c
+@@ -116,18 +116,28 @@ typedef struct
+   void     (__stdcall * WakeConditionVariable)       (gpointer cond);
+ } GThreadImplVtable;
+ 
++/* Needed for static builds where DllMain initializer doesn't get called */
++static gboolean g_threads_is_initialized;
++G_GNUC_INTERNAL void g_thread_win32_init (void);
++
+ static GThreadImplVtable g_thread_impl_vtable;
+ 
+ /* {{{1 GMutex */
+ void
+ g_mutex_init (GMutex *mutex)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   g_thread_impl_vtable.InitializeSRWLock (mutex);
+ }
+ 
+ void
+ g_mutex_clear (GMutex *mutex)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   if (g_thread_impl_vtable.DeleteSRWLock != NULL)
+     g_thread_impl_vtable.DeleteSRWLock (mutex);
+ }
+@@ -135,18 +145,27 @@ g_mutex_clear (GMutex *mutex)
+ void
+ g_mutex_lock (GMutex *mutex)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   g_thread_impl_vtable.AcquireSRWLockExclusive (mutex);
+ }
+ 
+ gboolean
+ g_mutex_trylock (GMutex *mutex)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   return g_thread_impl_vtable.TryAcquireSRWLockExclusive (mutex);
+ }
+ 
+ void
+ g_mutex_unlock (GMutex *mutex)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   g_thread_impl_vtable.ReleaseSRWLockExclusive (mutex);
+ }
+ 
+@@ -157,6 +176,9 @@ g_rec_mutex_impl_new (void)
+ {
+   CRITICAL_SECTION *cs;
+ 
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   cs = g_slice_new (CRITICAL_SECTION);
+   InitializeCriticalSection (cs);
+ 
+@@ -167,6 +189,10 @@ static void
+ g_rec_mutex_impl_free (CRITICAL_SECTION *cs)
+ {
+   DeleteCriticalSection (cs);
++
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   g_slice_free (CRITICAL_SECTION, cs);
+ }
+ 
+@@ -175,6 +201,9 @@ g_rec_mutex_get_impl (GRecMutex *mutex)
+ {
+   CRITICAL_SECTION *impl = mutex->p;
+ 
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   if G_UNLIKELY (mutex->p == NULL)
+     {
+       impl = g_rec_mutex_impl_new ();
+@@ -189,30 +218,45 @@ g_rec_mutex_get_impl (GRecMutex *mutex)
+ void
+ g_rec_mutex_init (GRecMutex *mutex)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   mutex->p = g_rec_mutex_impl_new ();
+ }
+ 
+ void
+ g_rec_mutex_clear (GRecMutex *mutex)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   g_rec_mutex_impl_free (mutex->p);
+ }
+ 
+ void
+ g_rec_mutex_lock (GRecMutex *mutex)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   EnterCriticalSection (g_rec_mutex_get_impl (mutex));
+ }
+ 
+ void
+ g_rec_mutex_unlock (GRecMutex *mutex)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   LeaveCriticalSection (mutex->p);
+ }
+ 
+ gboolean
+ g_rec_mutex_trylock (GRecMutex *mutex)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   return TryEnterCriticalSection (g_rec_mutex_get_impl (mutex));
+ }
+ 
+@@ -221,12 +265,18 @@ g_rec_mutex_trylock (GRecMutex *mutex)
+ void
+ g_rw_lock_init (GRWLock *lock)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   g_thread_impl_vtable.InitializeSRWLock (lock);
+ }
+ 
+ void
+ g_rw_lock_clear (GRWLock *lock)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   if (g_thread_impl_vtable.DeleteSRWLock != NULL)
+     g_thread_impl_vtable.DeleteSRWLock (lock);
+ }
+@@ -234,36 +284,54 @@ g_rw_lock_clear (GRWLock *lock)
+ void
+ g_rw_lock_writer_lock (GRWLock *lock)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   g_thread_impl_vtable.AcquireSRWLockExclusive (lock);
+ }
+ 
+ gboolean
+ g_rw_lock_writer_trylock (GRWLock *lock)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   return g_thread_impl_vtable.TryAcquireSRWLockExclusive (lock);
+ }
+ 
+ void
+ g_rw_lock_writer_unlock (GRWLock *lock)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   g_thread_impl_vtable.ReleaseSRWLockExclusive (lock);
+ }
+ 
+ void
+ g_rw_lock_reader_lock (GRWLock *lock)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   g_thread_impl_vtable.AcquireSRWLockShared (lock);
+ }
+ 
+ gboolean
+ g_rw_lock_reader_trylock (GRWLock *lock)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   return g_thread_impl_vtable.TryAcquireSRWLockShared (lock);
+ }
+ 
+ void
+ g_rw_lock_reader_unlock (GRWLock *lock)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   g_thread_impl_vtable.ReleaseSRWLockShared (lock);
+ }
+ 
+@@ -271,12 +339,18 @@ g_rw_lock_reader_unlock (GRWLock *lock)
+ void
+ g_cond_init (GCond *cond)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   g_thread_impl_vtable.InitializeConditionVariable (cond);
+ }
+ 
+ void
+ g_cond_clear (GCond *cond)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   if (g_thread_impl_vtable.DeleteConditionVariable)
+     g_thread_impl_vtable.DeleteConditionVariable (cond);
+ }
+@@ -284,12 +358,18 @@ g_cond_clear (GCond *cond)
+ void
+ g_cond_signal (GCond *cond)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   g_thread_impl_vtable.WakeConditionVariable (cond);
+ }
+ 
+ void
+ g_cond_broadcast (GCond *cond)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   g_thread_impl_vtable.WakeAllConditionVariable (cond);
+ }
+ 
+@@ -297,6 +377,9 @@ void
+ g_cond_wait (GCond  *cond,
+              GMutex *entered_mutex)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   g_thread_impl_vtable.SleepConditionVariableSRW (cond, entered_mutex, INFINITE, 0);
+ }
+ 
+@@ -307,6 +390,9 @@ g_cond_wait_until (GCond  *cond,
+ {
+   gint64 span;
+ 
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   span = end_time - g_get_monotonic_time ();
+ 
+   if G_UNLIKELY (span < 0)
+@@ -339,6 +425,9 @@ g_private_get_impl (GPrivate *key)
+ 
+   if G_UNLIKELY (impl == 0)
+     {
++      if (!g_threads_is_initialized)
++        g_thread_win32_init ();
++
+       EnterCriticalSection (&g_private_lock);
+       impl = (DWORD) key->p;
+       if (impl == 0)
+@@ -432,6 +521,9 @@ g_system_thread_free (GRealThread *thread)
+ {
+   GThreadWin32 *wt = (GThreadWin32 *) thread;
+ 
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   win32_check_for_error (CloseHandle (wt->handle));
+   g_slice_free (GThreadWin32, wt);
+ }
+@@ -439,6 +531,9 @@ g_system_thread_free (GRealThread *thread)
+ void
+ g_system_thread_exit (void)
+ {
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   _endthreadex (0);
+ }
+ 
+@@ -447,6 +542,9 @@ g_thread_win32_proxy (gpointer data)
+ {
+   GThreadWin32 *self = data;
+ 
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   self->proxy (self);
+ 
+   g_system_thread_exit ();
+@@ -464,6 +562,9 @@ g_system_thread_new (GThreadFunc   func,
+   GThreadWin32 *thread;
+   guint ignore;
+ 
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   thread = g_slice_new0 (GThreadWin32);
+   thread->proxy = func;
+ 
+@@ -493,6 +594,9 @@ g_system_thread_wait (GRealThread *thread)
+ {
+   GThreadWin32 *wt = (GThreadWin32 *) thread;
+ 
++  if (!g_threads_is_initialized)
++    g_thread_win32_init ();
++
+   win32_check_for_error (WAIT_FAILED != WaitForSingleObject (wt->handle, INFINITE));
+ }
+ 
+@@ -1041,6 +1145,8 @@ g_thread_lookup_native_funcs (void)
+ void
+ g_thread_win32_init (void)
+ {
++  g_threads_is_initialized = TRUE;
++
+   if (!g_thread_lookup_native_funcs ())
+     g_thread_xp_init ();
+ 
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Gerardo Ballabio <gerardo.ballabio@gmail.com>
+Date: Sun, 16 Aug 2015 13:18:24 +0200
+Subject: [PATCH 7/9] Remove an annoying runtime warning
+
+that pops up when using GtkApplication in Gtk+ 3 programs.
+
+diff --git a/gio/gdbusaddress.c b/gio/gdbusaddress.c
+index 1111111..2222222 100644
+--- a/gio/gdbusaddress.c
++++ b/gio/gdbusaddress.c
+@@ -1387,6 +1387,7 @@ __declspec(dllexport) void CALLBACK g_win32_run_session_bus (HWND hwnd, HINSTANC
+ __declspec(dllexport) void CALLBACK
+ g_win32_run_session_bus (HWND hwnd, HINSTANCE hinst, char *cmdline, int nCmdShow)
+ {
++  /*
+   GDBusDaemon *daemon;
+   GMainLoop *loop;
+   const char *address;
+@@ -1418,6 +1419,7 @@ g_win32_run_session_bus (HWND hwnd, HINSTANCE hinst, char *cmdline, int nCmdShow
+ 
+   g_main_loop_unref (loop);
+   g_object_unref (daemon);
++  */
+ }
+ 
+ static gchar *
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: aquiles2k <aj@elane2k.com>
+Date: Wed, 6 Apr 2016 22:39:53 +0300
+Subject: [PATCH 8/9] fix error "won't overwrite defined macro" on OSX
+
+See https://github.com/mxe/mxe/issues/1281
+
+diff --git a/m4macros/glib-gettext.m4 b/m4macros/glib-gettext.m4
+index 1111111..2222222 100644
+--- a/m4macros/glib-gettext.m4
++++ b/m4macros/glib-gettext.m4
+@@ -36,8 +36,8 @@ dnl We go to great lengths to make sure that aclocal won't
+ dnl try to pull in the installed version of these macros
+ dnl when running aclocal in the glib directory.
+ dnl
+-m4_copy([AC_DEFUN],[glib_DEFUN])
+-m4_copy([AC_REQUIRE],[glib_REQUIRE])
++m4_copy_force([AC_DEFUN],[glib_DEFUN])
++m4_copy_force([AC_REQUIRE],[glib_REQUIRE])
+ dnl
+ dnl At the end, if we're not within glib, we'll define the public
+ dnl definitions in terms of our private definitions.
+
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Tony Theodore <tonyt@logyst.com>
+Date: Mon, 26 Feb 2018 16:09:53 +1100
+Subject: [PATCH 9/9] darwin: disable g_cocoa_notification_backend
+
+
+diff --git a/gio/Makefile.am b/gio/Makefile.am
+index 1111111..2222222 100644
+--- a/gio/Makefile.am
++++ b/gio/Makefile.am
+@@ -279,10 +279,6 @@ unix_sources = \
+ 
+ appinfo_sources += $(unix_appinfo_sources)
+ 
+-if OS_COCOA
+-unix_sources += gcocoanotificationbackend.c
+-endif
+-
+ giounixincludedir=$(includedir)/gio-unix-2.0/gio
+ giounixinclude_HEADERS = \
+ 	gdesktopappinfo.h	\
+diff --git a/gio/giomodule.c b/gio/giomodule.c
+index 1111111..2222222 100644
+--- a/gio/giomodule.c
++++ b/gio/giomodule.c
+@@ -918,9 +918,6 @@ extern GType g_proxy_resolver_portal_get_type (void);
+ extern GType g_network_monitor_portal_get_type (void);
+ #endif
+ 
+-#ifdef HAVE_COCOA
+-extern GType g_cocoa_notification_backend_get_type (void);
+-#endif
+ 
+ #ifdef G_PLATFORM_WIN32
+ 
+@@ -1117,9 +1114,6 @@ _g_io_modules_ensure_loaded (void)
+       g_type_ensure (g_network_monitor_portal_get_type ());
+       g_type_ensure (g_proxy_resolver_portal_get_type ());
+ #endif
+-#ifdef HAVE_COCOA
+-      g_type_ensure (g_cocoa_notification_backend_get_type ());
+-#endif
+ #ifdef G_OS_WIN32
+       g_type_ensure (_g_winhttp_vfs_get_type ());
+#endif
--- a/src/glib.mk	Sat Mar 02 17:47:21 2019 +0100
+++ b/src/glib.mk	Sat Feb 23 11:35:53 2019 +0100
@@ -3,8 +3,8 @@
 
 PKG             := glib
 $(PKG)_IGNORE   :=
-$(PKG)_VERSION  := 2.48.1
-$(PKG)_CHECKSUM := d59b6daf51dff21c6327734a99f1fb6c5328bcf9
+$(PKG)_VERSION  := 2.50.2
+$(PKG)_CHECKSUM := 948a768931ca321a35e16556a1c8adcae04babf2
 $(PKG)_SUBDIR   := glib-$($(PKG)_VERSION)
 $(PKG)_FILE     := glib-$($(PKG)_VERSION).tar.xz
 $(PKG)_URL      := http://ftp.gnome.org/pub/gnome/sources/glib/$(call SHORT_PKG_VERSION,$(PKG))/$($(PKG)_FILE)
@@ -25,19 +25,34 @@
 
 ifeq ($(MXE_NATIVE_MINGW_BUILD),yes)
 define $(PKG)_BUILD
-    cd $(1) && ./autogen.sh
+    cd $(1) && NOCONFIGURE=true ./autogen.sh
     cd '$(1)' && PKG_CONFIG_PATH='$(HOST_LIBDIR)/pkgconfig' ./configure \
         $(HOST_AND_BUILD_CONFIGURE_OPTIONS) \
         $(ENABLE_SHARED_OR_STATIC) \
         --prefix='$(HOST_PREFIX)' \
         --with-threads=win32 \
-        --with-pcre=system \
+        --enable-regex \
+        --disable-threads \
+        --disable-selinux \
+        --disable-inotify \
+        --disable-fam \
+        --disable-xattr \
+        --disable-dtrace \
+        --disable-libmount \
         --with-libiconv=gnu \
-        --disable-modular-tests \
+        --with-pcre=internal \
 	&& $(CONFIGURE_POST_HOOK)
 
-    $(MAKE) -C '$(1)' -j '$(JOBS)'
-    $(MAKE) -C '$(1)' -j 1 install
+    $(SED) -i 's,#define G_ATOMIC.*,,' '$(1)/config.h'
+    $(MAKE) -C '$(1)/glib'    -j '$(JOBS)'
+    $(MAKE) -C '$(1)/gthread' -j '$(JOBS)'
+    $(MAKE) -C '$(1)/gmodule' -j '$(JOBS)'
+    $(MAKE) -C '$(1)/gobject' -j '$(JOBS)' lib_LTLIBRARIES= install-exec
+    $(MAKE) -C '$(1)/gio/xdgmime'     -j '$(JOBS)'
+    $(MAKE) -C '$(1)/gio'     -j '$(JOBS)' glib-compile-schemas
+    $(MAKE) -C '$(1)/gio'     -j '$(JOBS)' glib-compile-resources
+    $(INSTALL) -m755 '$(1)/gio/glib-compile-schemas' '$(HOST_BINDIR)/'
+    $(INSTALL) -m755 '$(1)/gio/glib-compile-resources' '$(HOST_BINDIR)/'
 endef
 else
 define $(PKG)_BUILD
@@ -53,12 +68,16 @@
         --with-pcre=system \
         --with-libiconv=gnu \
         --disable-inotify \
-        --disable-modular-tests \
         PKG_CONFIG='$(MXE_PKG_CONFIG)' \
         PKG_CONFIG_PATH='$(PKG_CONFIG_PATH)' 
 
-    $(MAKE) -C '$(1)'    -j '$(JOBS)' 
-    $(MAKE) -C '$(1)'    -j 1 install 
+    $(MAKE) -C '$(1)/glib'    -j '$(JOBS)' install sbin_PROGRAMS= noinst_PROGRAMS=
+    $(MAKE) -C '$(1)/gmodule' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS=
+    $(MAKE) -C '$(1)/gthread' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS=
+    $(MAKE) -C '$(1)/gobject' -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS=
+    $(MAKE) -C '$(1)/gio'     -j '$(JOBS)' install bin_PROGRAMS= sbin_PROGRAMS= noinst_PROGRAMS= MISC_STUFF=
+    $(MAKE) -C '$(1)'         -j '$(JOBS)' install-pkgconfigDATA
+    $(MAKE) -C '$(1)/m4macros' install
 endef
 
 endif
--- a/src/mingw-glib-1-fixes.patch	Sat Mar 02 17:47:21 2019 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,527 +0,0 @@
-diff -ur glib-2.48.1.orig/autogen.sh glib-2.48.1/autogen.sh
---- glib-2.48.1.orig/autogen.sh	2016-12-25 13:21:25.730080418 -0500
-+++ glib-2.48.1/autogen.sh	2016-12-25 13:22:17.474289395 -0500
-@@ -7,18 +7,6 @@
- olddir=`pwd`
- cd "$srcdir"
- 
--GTKDOCIZE=$(which gtkdocize 2>/dev/null)
--if test -z $GTKDOCIZE; then
--        echo "You don't have gtk-doc installed, and thus won't be able to generate the documentation."
--        rm -f gtk-doc.make
--        cat > gtk-doc.make <<EOF
--EXTRA_DIST =
--CLEANFILES =
--EOF
--else
--        gtkdocize || exit $?
--fi
--
- AUTORECONF=`which autoreconf`
- if test -z $AUTORECONF; then
-         echo "*** No autoreconf found, please install it ***"
-diff -ur glib-2.48.1.orig/configure.ac glib-2.48.1/configure.ac
---- glib-2.48.1.orig/configure.ac	2016-12-25 13:21:25.725080302 -0500
-+++ glib-2.48.1/configure.ac	2016-12-25 13:22:17.472289348 -0500
-@@ -465,8 +465,8 @@
- GLIB_GNU_GETTEXT
- 
- if test "$gt_cv_have_gettext" != "yes" ; then
--  AC_MSG_ERROR([
--*** You must have either have gettext support in your C library, or use the 
-+  AC_MSG_WARN([
-+*** You should have either have gettext support in your C library, or use the 
- *** GNU gettext library. (http://www.gnu.org/software/gettext/gettext.html
- ])
- fi
-@@ -509,6 +509,8 @@
- dnl when using libtool 2.x create libtool early, because it's used in configure
- m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
- 
-+# Make sure STDC_HEADERS is set for AC_CHECK_ALIGNOF
-+AS_IF([false], [AC_CHECK_HEADER([stdint.h])])
- 
- AS_IF([test "$glib_native_win32" = "yes"], [
-   if test x$enable_static = xyes -a x$enable_shared = xyes; then
-Only in glib-2.48.1: configure.ac.orig
-Only in glib-2.48.1: configure.ac.rej
-Only in glib-2.48.1/docs: Makefile.am.orig
-Only in glib-2.48.1/docs: Makefile.am.rej
-Only in glib-2.48.1/docs/reference/gio: gdbus-object-manager-example
-Only in glib-2.48.1/docs/reference/gio: Makefile.am.orig
-Only in glib-2.48.1/docs/reference/gio: Makefile.am.rej
-Only in glib-2.48.1/docs/reference/glib: Makefile.am.orig
-Only in glib-2.48.1/docs/reference/glib: Makefile.am.rej
-Only in glib-2.48.1/docs/reference/gobject: Makefile.am.orig
-Only in glib-2.48.1/docs/reference/gobject: Makefile.am.rej
-Only in glib-2.48.1/docs/reference: Makefile.am.orig
-Only in glib-2.48.1/docs/reference: Makefile.am.rej
-diff -ur glib-2.48.1.orig/gio/giomodule.c glib-2.48.1/gio/giomodule.c
---- glib-2.48.1.orig/gio/giomodule.c	2016-12-25 13:21:25.751080909 -0500
-+++ glib-2.48.1/gio/giomodule.c	2016-12-25 13:22:17.470289301 -0500
-@@ -921,14 +921,12 @@
- 
- static HMODULE gio_dll = NULL;
- 
--#ifdef DLL_EXPORT
--
--BOOL WINAPI DllMain (HINSTANCE hinstDLL,
-+BOOL WINAPI gio_DllMain (HINSTANCE hinstDLL,
-                      DWORD     fdwReason,
-                      LPVOID    lpvReserved);
- 
- BOOL WINAPI
--DllMain (HINSTANCE hinstDLL,
-+gio_DllMain (HINSTANCE hinstDLL,
- 	 DWORD     fdwReason,
- 	 LPVOID    lpvReserved)
- {
-@@ -938,8 +936,6 @@
-   return TRUE;
- }
- 
--#endif
--
- void *
- _g_io_win32_get_module (void)
- {
-Only in glib-2.48.1/gio: giomodule.c.orig
-Only in glib-2.48.1: gio-2.0.pc.in.orig
-Only in glib-2.48.1: gio-2.0.pc.in.rej
-diff -ur glib-2.48.1.orig/glib/gi18n.h glib-2.48.1/glib/gi18n.h
---- glib-2.48.1.orig/glib/gi18n.h	2016-12-25 13:21:25.775081470 -0500
-+++ glib-2.48.1/glib/gi18n.h	2016-12-25 13:22:17.469289278 -0500
-@@ -20,7 +20,12 @@
- 
- #include <glib.h>
- 
-+#ifdef ENABLE_NLS
- #include <libintl.h>
-+#else
-+#define gettext(String) (String)
-+#endif
-+
- #include <string.h>
- 
- #define  _(String) gettext (String)
-Only in glib-2.48.1/glib: gi18n.h.orig
-diff -ur glib-2.48.1.orig/glib/glib-init.c glib-2.48.1/glib/glib-init.c
---- glib-2.48.1.orig/glib/glib-init.c	2016-12-25 13:21:25.780081587 -0500
-+++ glib-2.48.1/glib/glib-init.c	2016-12-25 13:22:17.470289301 -0500
-@@ -245,14 +245,14 @@
- 
- #if defined (G_OS_WIN32)
- 
--BOOL WINAPI DllMain (HINSTANCE hinstDLL,
-+BOOL WINAPI glib_DllMain (HINSTANCE hinstDLL,
-                      DWORD     fdwReason,
-                      LPVOID    lpvReserved);
- 
- HMODULE glib_dll;
- 
- BOOL WINAPI
--DllMain (HINSTANCE hinstDLL,
-+glib_DllMain (HINSTANCE hinstDLL,
-          DWORD     fdwReason,
-          LPVOID    lpvReserved)
- {
-Only in glib-2.48.1/glib: glib-init.c.orig
-diff -ur glib-2.48.1.orig/glib/gmain.c glib-2.48.1/glib/gmain.c
---- glib-2.48.1.orig/glib/gmain.c	2016-12-25 13:21:25.793081890 -0500
-+++ glib-2.48.1/glib/gmain.c	2016-12-25 13:22:17.473289371 -0500
-@@ -2609,12 +2609,15 @@
- #if defined (G_OS_WIN32)
- static ULONGLONG (*g_GetTickCount64) (void) = NULL;
- static guint32 g_win32_tick_epoch = 0;
-+static gboolean g_win32_clock_is_initialized;
- 
- void
- g_clock_win32_init (void)
- {
-   HMODULE kernel32;
- 
-+  g_win32_clock_is_initialized = TRUE;
-+
-   g_GetTickCount64 = NULL;
-   kernel32 = GetModuleHandle ("KERNEL32.DLL");
-   if (kernel32 != NULL)
-@@ -2673,6 +2676,9 @@
-    *    timeBeginPeriod() to increase it as much as they want
-    */
- 
-+  if (!g_win32_clock_is_initialized)
-+    g_clock_win32_init ();
-+
-   if (g_GetTickCount64 != NULL)
-     {
-       guint32 ticks_as_32bit;
-Only in glib-2.48.1/glib: gmain.c.orig
-diff -ur glib-2.48.1.orig/glib/gstrfuncs.c glib-2.48.1/glib/gstrfuncs.c
---- glib-2.48.1.orig/glib/gstrfuncs.c	2016-12-25 13:21:25.797081984 -0500
-+++ glib-2.48.1/glib/gstrfuncs.c	2016-12-25 14:23:07.518480108 -0500
-@@ -1272,7 +1272,7 @@
-       gchar buf[1024];
-       GError *error = NULL;
- 
--#if defined(G_OS_WIN32)
-+#if defined(G_OS_WIN32) && !defined(__MINGW32__)
-       strerror_s (buf, sizeof (buf), errnum);
-       msg = buf;
- #elif defined(HAVE_STRERROR_R)
-diff -ur glib-2.48.1.orig/glib/gthread-win32.c glib-2.48.1/glib/gthread-win32.c
---- glib-2.48.1.orig/glib/gthread-win32.c	2016-12-25 13:21:25.780081587 -0500
-+++ glib-2.48.1/glib/gthread-win32.c	2016-12-25 13:22:17.474289395 -0500
-@@ -116,18 +116,28 @@
-   void     (__stdcall * WakeConditionVariable)       (gpointer cond);
- } GThreadImplVtable;
- 
-+/* Needed for static builds where DllMain initializer doesn't get called */
-+static gboolean g_threads_is_initialized;
-+G_GNUC_INTERNAL void g_thread_win32_init (void);
-+
- static GThreadImplVtable g_thread_impl_vtable;
- 
- /* {{{1 GMutex */
- void
- g_mutex_init (GMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_thread_impl_vtable.InitializeSRWLock (mutex);
- }
- 
- void
- g_mutex_clear (GMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   if (g_thread_impl_vtable.DeleteSRWLock != NULL)
-     g_thread_impl_vtable.DeleteSRWLock (mutex);
- }
-@@ -135,18 +145,27 @@
- void
- g_mutex_lock (GMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_thread_impl_vtable.AcquireSRWLockExclusive (mutex);
- }
- 
- gboolean
- g_mutex_trylock (GMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   return g_thread_impl_vtable.TryAcquireSRWLockExclusive (mutex);
- }
- 
- void
- g_mutex_unlock (GMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_thread_impl_vtable.ReleaseSRWLockExclusive (mutex);
- }
- 
-@@ -157,6 +176,9 @@
- {
-   CRITICAL_SECTION *cs;
- 
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   cs = g_slice_new (CRITICAL_SECTION);
-   InitializeCriticalSection (cs);
- 
-@@ -167,6 +189,10 @@
- g_rec_mutex_impl_free (CRITICAL_SECTION *cs)
- {
-   DeleteCriticalSection (cs);
-+
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_slice_free (CRITICAL_SECTION, cs);
- }
- 
-@@ -175,6 +201,9 @@
- {
-   CRITICAL_SECTION *impl = mutex->p;
- 
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   if G_UNLIKELY (mutex->p == NULL)
-     {
-       impl = g_rec_mutex_impl_new ();
-@@ -189,30 +218,45 @@
- void
- g_rec_mutex_init (GRecMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   mutex->p = g_rec_mutex_impl_new ();
- }
- 
- void
- g_rec_mutex_clear (GRecMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_rec_mutex_impl_free (mutex->p);
- }
- 
- void
- g_rec_mutex_lock (GRecMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   EnterCriticalSection (g_rec_mutex_get_impl (mutex));
- }
- 
- void
- g_rec_mutex_unlock (GRecMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   LeaveCriticalSection (mutex->p);
- }
- 
- gboolean
- g_rec_mutex_trylock (GRecMutex *mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   return TryEnterCriticalSection (g_rec_mutex_get_impl (mutex));
- }
- 
-@@ -221,12 +265,18 @@
- void
- g_rw_lock_init (GRWLock *lock)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_thread_impl_vtable.InitializeSRWLock (lock);
- }
- 
- void
- g_rw_lock_clear (GRWLock *lock)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   if (g_thread_impl_vtable.DeleteSRWLock != NULL)
-     g_thread_impl_vtable.DeleteSRWLock (lock);
- }
-@@ -234,36 +284,54 @@
- void
- g_rw_lock_writer_lock (GRWLock *lock)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_thread_impl_vtable.AcquireSRWLockExclusive (lock);
- }
- 
- gboolean
- g_rw_lock_writer_trylock (GRWLock *lock)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   return g_thread_impl_vtable.TryAcquireSRWLockExclusive (lock);
- }
- 
- void
- g_rw_lock_writer_unlock (GRWLock *lock)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_thread_impl_vtable.ReleaseSRWLockExclusive (lock);
- }
- 
- void
- g_rw_lock_reader_lock (GRWLock *lock)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_thread_impl_vtable.AcquireSRWLockShared (lock);
- }
- 
- gboolean
- g_rw_lock_reader_trylock (GRWLock *lock)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   return g_thread_impl_vtable.TryAcquireSRWLockShared (lock);
- }
- 
- void
- g_rw_lock_reader_unlock (GRWLock *lock)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_thread_impl_vtable.ReleaseSRWLockShared (lock);
- }
- 
-@@ -271,12 +339,18 @@
- void
- g_cond_init (GCond *cond)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_thread_impl_vtable.InitializeConditionVariable (cond);
- }
- 
- void
- g_cond_clear (GCond *cond)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   if (g_thread_impl_vtable.DeleteConditionVariable)
-     g_thread_impl_vtable.DeleteConditionVariable (cond);
- }
-@@ -284,12 +358,18 @@
- void
- g_cond_signal (GCond *cond)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_thread_impl_vtable.WakeConditionVariable (cond);
- }
- 
- void
- g_cond_broadcast (GCond *cond)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_thread_impl_vtable.WakeAllConditionVariable (cond);
- }
- 
-@@ -297,6 +377,9 @@
- g_cond_wait (GCond  *cond,
-              GMutex *entered_mutex)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   g_thread_impl_vtable.SleepConditionVariableSRW (cond, entered_mutex, INFINITE, 0);
- }
- 
-@@ -307,6 +390,9 @@
- {
-   gint64 span;
- 
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   span = end_time - g_get_monotonic_time ();
- 
-   if G_UNLIKELY (span < 0)
-@@ -339,6 +425,9 @@
- 
-   if G_UNLIKELY (impl == 0)
-     {
-+      if (!g_threads_is_initialized)
-+        g_thread_win32_init ();
-+
-       EnterCriticalSection (&g_private_lock);
-       impl = (DWORD) key->p;
-       if (impl == 0)
-@@ -432,6 +521,9 @@
- {
-   GThreadWin32 *wt = (GThreadWin32 *) thread;
- 
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   win32_check_for_error (CloseHandle (wt->handle));
-   g_slice_free (GThreadWin32, wt);
- }
-@@ -439,6 +531,9 @@
- void
- g_system_thread_exit (void)
- {
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   _endthreadex (0);
- }
- 
-@@ -447,6 +542,9 @@
- {
-   GThreadWin32 *self = data;
- 
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   self->proxy (self);
- 
-   g_system_thread_exit ();
-@@ -464,6 +562,9 @@
-   GThreadWin32 *thread;
-   guint ignore;
- 
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   thread = g_slice_new0 (GThreadWin32);
-   thread->proxy = func;
- 
-@@ -493,6 +594,9 @@
- {
-   GThreadWin32 *wt = (GThreadWin32 *) thread;
- 
-+  if (!g_threads_is_initialized)
-+    g_thread_win32_init ();
-+
-   win32_check_for_error (WAIT_FAILED != WaitForSingleObject (wt->handle, INFINITE));
- }
- 
-@@ -1041,6 +1145,8 @@
- void
- g_thread_win32_init (void)
- {
-+  g_threads_is_initialized = TRUE;
-+
-   if (!g_thread_lookup_native_funcs ())
-     g_thread_xp_init ();
- 
-Only in glib-2.48.1/glib: gthread-win32.c.orig
-diff -ur glib-2.48.1.orig/glib-2.0.pc.in glib-2.48.1/glib-2.0.pc.in
---- glib-2.48.1.orig/glib-2.0.pc.in	2016-12-25 13:21:25.734080512 -0500
-+++ glib-2.48.1/glib-2.0.pc.in	2016-12-25 13:22:17.469289278 -0500
-@@ -3,9 +3,9 @@
- libdir=@libdir@
- includedir=@includedir@
- 
--glib_genmarshal=glib-genmarshal
--gobject_query=gobject-query
--glib_mkenums=glib-mkenums
-+glib_genmarshal=@bindir@/glib-genmarshal
-+gobject_query=@bindir@/gobject-query
-+glib_mkenums=@bindir@/glib-mkenums
- 
- Name: GLib
- Description: C Utility Library
-Only in glib-2.48.1: Makefile.am.orig
-Only in glib-2.48.1: Makefile.am.rej
--- a/src/mingw-glib-2-fixes.patch	Sat Mar 02 17:47:21 2019 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
---- a/glib/gatomic.c.orig	2013-07-29 12:05:27 -0400
-+++ a/glib/gatomic.c	2013-07-29 12:07:46 -0400
-@@ -475,6 +475,14 @@
- 
- #if !defined (_MSC_VER) || _MSC_VER <= 1200
- #include "gmessages.h"
-+
-+#ifndef MemoryBarrier
-+static inline void MemoryBarrier (void) {
-+  long dummy = 0;
-+  InterlockedExchange (&dummy, 1);
-+}
-+#endif
-+
- /* Inlined versions for older compiler */
- static LONG
- _gInterlockedAnd (volatile guint *atomic,