gst/gst.c: Add a warning about DllMain to prevent misuse
authorNirbheek Chauhan <nirbheek@centricular.com>
Wed, 27 May 2015 11:52:28 +0000 (17:22 +0530)
committerTim-Philipp Müller <tim@centricular.com>
Wed, 27 May 2015 12:21:03 +0000 (13:21 +0100)
DllMain should not be relied on for anything except storing the DLL handle.
It should also not be defined for static builds, but doing so is not
straightforward and is mostly harmless, so let's just add a comment about that
for now.

gst/gst.c

index cd91242..fcd966c 100644 (file)
--- a/gst/gst.c
+++ b/gst/gst.c
@@ -192,6 +192,17 @@ enum
  */
 
 #ifdef G_OS_WIN32
+/* Note: DllMain is only called when DLLs are loaded or unloaded, so this will
+ * never be called if libgstreamer-1.0 is linked statically. Do not add any code
+ * here to, say, initialize variables or set things up since that will only
+ * happen for dynamically-built GStreamer.
+ *
+ * Also, ideally this should not be defined when GStreamer is built statically.
+ * i.e., it should be conditional on #ifdef DLL_EXPORT. It will be ignored, but
+ * if other libraries make the same mistake of defining it when building
+ * statically, there will be a symbol collision during linking. Fixing this
+ * requires one to build two object files: one for static linking and another
+ * for dynamic linking. */
 BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved);
 BOOL WINAPI
 DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)