Index: gobject/gobjectmodule.c
===================================================================
--- gobject/gobjectmodule.c	(revision 949)
+++ gobject/gobjectmodule.c	(working copy)
@@ -1812,6 +1812,12 @@
     return 0;
 }
 
+static void
+pyg_note_threads_enabled(void)
+{
+    pygobject_api_functions.threads_enabled = TRUE;
+}
+
 static PyObject *
 pyg_signal_accumulator_true_handled(PyObject *unused, PyObject *args)
 {
@@ -2594,5 +2600,8 @@
       /* signal registration recognizes this special accumulator 'constant' */
     _pyg_signal_accumulator_true_handled_func = \
         PyDict_GetItemString(d, "signal_accumulator_true_handled");
+
+    pygobject_api_functions.threads_enabled = pyglib_threads_enabled();
+    pyglib_notify_on_enabling_threads(pyg_note_threads_enabled);
 }
 PYGLIB_MODULE_END
Index: glib/pyglib.c
===================================================================
--- glib/pyglib.c	(revision 949)
+++ glib/pyglib.c	(working copy)
@@ -135,13 +135,25 @@
 		    "pyglib threading disabled at compile time");
     return FALSE;
 }
+
+void
+pyglib_notify_on_enabling_threads(PyGLibThreadsEnabledFunc callback)
+{
+    /* Ignore, threads cannot be enabled. */
+}
+
 #else
+
+static GSList *thread_enabling_callbacks = NULL;
+
 /* Enable threading; note that the GIL must be held by the current
  * thread when this function is called
  */
 gboolean
 pyglib_enable_threads(void)
 {
+    GSList *callback;
+
     g_return_val_if_fail (_PyGLib_API != NULL, FALSE);
 
     if (_PyGLib_API->threads_enabled)
@@ -153,9 +165,20 @@
     
     _PyGLib_API->threads_enabled = TRUE;
     pyglib_thread_state_tls_key = PyThread_create_key();
-    
+
+    for (callback = thread_enabling_callbacks; callback; callback = callback->next)
+	((PyGLibThreadsEnabledFunc) callback->data) ();
+
+    g_slist_free(thread_enabling_callbacks);
     return TRUE;
 }
+
+void
+pyglib_notify_on_enabling_threads(PyGLibThreadsEnabledFunc callback)
+{
+    if (callback && !pyglib_threads_enabled())
+	thread_enabling_callbacks = g_slist_append(thread_enabling_callbacks, callback);
+}
 #endif
 
 int
Index: glib/pyglib.h
===================================================================
--- glib/pyglib.h	(revision 949)
+++ glib/pyglib.h	(working copy)
@@ -28,6 +28,7 @@
 
 G_BEGIN_DECLS
 
+typedef void (*PyGLibThreadsEnabledFunc) (void);
 typedef void (*PyGLibThreadBlockFunc) (void);
 
 void pyglib_init(void);
@@ -35,6 +36,7 @@
 PyGILState_STATE pyglib_gil_state_ensure(void);
 void pyglib_gil_state_release(PyGILState_STATE state);
 int pyglib_enable_threads(void);
+void pyglib_notify_on_enabling_threads(PyGLibThreadsEnabledFunc callback);
 gboolean pyglib_error_check(GError **error);
 gboolean pyglib_gerror_exception_check(GError **error);
 PyObject *pyglib_register_exception_for_domain(gchar *name,
