mirror of
https://gitlab.freedesktop.org/pkg-config/pkg-config.git
synced 2026-02-04 09:30:28 +01:00
glib: Fix static usage of glib on win32
When glib is built static, the threads and clock code are not initialized since DllMain is never run. Instead, initialize them from the glib constructor. https://bugzilla.gnome.org/show_bug.cgi?id=678387
This commit is contained in:
parent
f0e821fed2
commit
cf9089f5ec
3 changed files with 41 additions and 0 deletions
|
|
@ -6,3 +6,4 @@ no-pkg-config.patch
|
|||
no-gettext.patch
|
||||
cross-compiling.patch
|
||||
static-only.patch
|
||||
win32-static-init.patch
|
||||
|
|
|
|||
32
glib-patches/win32-static-init.patch
Normal file
32
glib-patches/win32-static-init.patch
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
When glib is built static, the threads and clock code are not
|
||||
initialized since DllMain is never run. Instead, initialize them from
|
||||
the glib constructor.
|
||||
|
||||
https://bugzilla.gnome.org/show_bug.cgi?id=678387
|
||||
|
||||
diff --git a/glib/glib/glib-init.c b/glib/glib/glib-init.c
|
||||
index f4edd5c..3ec89a0 100644
|
||||
--- a/glib/glib/glib-init.c
|
||||
+++ b/glib/glib/glib-init.c
|
||||
@@ -225,6 +225,10 @@ glib_init (void)
|
||||
|
||||
HMODULE glib_dll;
|
||||
|
||||
+#endif
|
||||
+
|
||||
+#if defined (G_OS_WIN32) && !defined (GLIB_STATIC_COMPILATION)
|
||||
+
|
||||
BOOL WINAPI
|
||||
DllMain (HINSTANCE hinstDLL,
|
||||
DWORD fdwReason,
|
||||
@@ -261,6 +265,10 @@ G_DEFINE_CONSTRUCTOR(glib_init_ctor)
|
||||
static void
|
||||
glib_init_ctor (void)
|
||||
{
|
||||
+#ifdef G_OS_WIN32
|
||||
+ g_clock_win32_init ();
|
||||
+ g_thread_win32_init ();
|
||||
+#endif
|
||||
glib_init ();
|
||||
}
|
||||
|
||||
|
|
@ -225,6 +225,10 @@ glib_init (void)
|
|||
|
||||
HMODULE glib_dll;
|
||||
|
||||
#endif
|
||||
|
||||
#if defined (G_OS_WIN32) && !defined (GLIB_STATIC_COMPILATION)
|
||||
|
||||
BOOL WINAPI
|
||||
DllMain (HINSTANCE hinstDLL,
|
||||
DWORD fdwReason,
|
||||
|
|
@ -261,6 +265,10 @@ G_DEFINE_CONSTRUCTOR(glib_init_ctor)
|
|||
static void
|
||||
glib_init_ctor (void)
|
||||
{
|
||||
#ifdef G_OS_WIN32
|
||||
g_clock_win32_init ();
|
||||
g_thread_win32_init ();
|
||||
#endif
|
||||
glib_init ();
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue