Construct the gio module directory pathname at run-time on Windows
authorTor Lillqvist <tml@iki.fi>
Sun, 11 Oct 2009 21:18:48 +0000 (00:18 +0300)
committerTor Lillqvist <tml@iki.fi>
Sun, 11 Oct 2009 21:20:28 +0000 (00:20 +0300)
gio/giomodule.c

index ec5b650..93405e5 100644 (file)
@@ -297,6 +297,39 @@ extern GType _g_win32_volume_monitor_get_type (void);
 extern GType g_win32_directory_monitor_get_type (void);
 extern GType _g_winhttp_vfs_get_type (void);
 
+#ifdef G_PLATFORM_WIN32
+
+#include <windows.h>
+
+static HMODULE gio_dll = NULL;
+
+#ifdef DLL_EXPORT
+
+BOOL WINAPI
+DllMain (HINSTANCE hinstDLL,
+        DWORD     fdwReason,
+        LPVOID    lpvReserved)
+{
+  if (fdwReason == DLL_PROCESS_ATTACH)
+      gio_dll = hinstDLL;
+
+  return TRUE;
+}
+
+#endif
+
+#undef GIO_MODULE_DIR
+
+/* GIO_MODULE_DIR is used only in code called just once,
+ * so no problem leaking this
+ */
+#define GIO_MODULE_DIR \
+  g_build_filename (g_win32_get_package_installation_directory_of_module (gio_dll), \
+                   "lib/gio/modules", \
+                   NULL)
+
+#endif
+
 void
 _g_io_modules_ensure_extension_points_registered (void)
 {