diff --git a/gst/__init__.py b/gst/__init__.py index d843d430b3..f29ede2b65 100644 --- a/gst/__init__.py +++ b/gst/__init__.py @@ -190,11 +190,6 @@ try: except: pass -# disable registry update during initialization -import os -doupdate = os.getenv("GST_REGISTRY_UPDATE") != "no" -os.environ["GST_REGISTRY_UPDATE"] = "no" - from _gst import * import interfaces @@ -232,8 +227,3 @@ if gstlibtoolimporter is not None: gstlibtoolimporter.uninstall() import sys del sys.modules["gstlibtoolimporter"] - -if doupdate: - # update the registry now that we've loaded all symbols - os.unsetenv("GST_REGISTRY_UPDATE") - update_registry() diff --git a/plugin/gstpythonplugin.c b/plugin/gstpythonplugin.c index dc3f0e2012..a090e40a80 100644 --- a/plugin/gstpythonplugin.c +++ b/plugin/gstpythonplugin.c @@ -253,6 +253,8 @@ pygst_require (gchar * version) PyObject *pygst, *gst; PyObject *require; PyObject *modules; + gboolean doupdate = TRUE; + const gchar *regupd; modules = PySys_GetObject ("modules"); /* Try to see if 'gst' is already imported */ @@ -273,12 +275,25 @@ pygst_require (gchar * version) goto error; } } + + /* We don't want the registry to be loaded when we import gst */ + if ((regupd = g_getenv ("GST_REGISTRY_UPDATE")) + && (!g_strcmp0 (regupd, "no"))) + doupdate = FALSE; + g_setenv ("GST_REGISTRY_UPDATE", "no", TRUE); + if (!(gst = PyImport_ImportModule ("gst"))) { GST_ERROR ("couldn't import the gst module"); Py_DECREF (pygst); + if (doupdate) + g_unsetenv ("GST_REGISTRY_UPDATE"); goto error; } } + + if (doupdate) + g_unsetenv ("GST_REGISTRY_UPDATE"); + #define IMPORT(x, y) \ _PyGst##x##_Type = (PyTypeObject *)PyObject_GetAttrString(gst, y); \ if (_PyGst##x##_Type == NULL) { \