registry: Use a toolchain-specific registry file on Windows
authorNirbheek Chauhan <nirbheek@centricular.com>
Mon, 22 Jun 2020 22:13:53 +0000 (03:43 +0530)
committerTim-Philipp Müller <tim@centricular.com>
Tue, 23 Jun 2020 11:16:45 +0000 (12:16 +0100)
If we load a plugin registry for MinGW plugins when running with MSVC,
we will have to write out the whole cache again, and vice-versa. Just
use separate cache files so that the cache is actually useful.

Closes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/427

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/542>

gst/gstregistry.c

index 7ed85d7..3ef4d86 100644 (file)
 extern HMODULE _priv_gst_dll_handle;
 #endif
 
+/* Use a toolchain-dependent suffix on Windows */
+#ifdef G_OS_WIN32
+# ifdef _MSC_VER
+#  define GST_REGISTRY_FILE_SUFFIX TARGET_CPU "-msvc"
+# else
+#  define GST_REGISTRY_FILE_SUFFIX TARGET_CPU "-mingw"
+# endif
+#else
+# define GST_REGISTRY_FILE_SUFFIX TARGET_CPU
+#endif
+#define GST_REGISTRY_FILE_NAME "registry." GST_REGISTRY_FILE_SUFFIX ".bin"
+
+
 #define GST_CAT_DEFAULT GST_CAT_REGISTRY
 
 struct _GstRegistryPrivate
@@ -1735,7 +1748,7 @@ ensure_current_registry (GError ** error)
     registry_file = g_strdup (g_getenv ("GST_REGISTRY"));
   if (registry_file == NULL) {
     registry_file = g_build_filename (g_get_user_cache_dir (),
-        "gstreamer-" GST_API_VERSION, "registry." TARGET_CPU ".bin", NULL);
+        "gstreamer-" GST_API_VERSION, GST_REGISTRY_FILE_NAME, NULL);
   }
 
   if (!_gst_disable_registry_cache) {