summaryrefslogtreecommitdiffstats
path: root/gobject/gobjectmodule.c
diff options
context:
space:
mode:
Diffstat (limited to 'gobject/gobjectmodule.c')
-rw-r--r--gobject/gobjectmodule.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c
index bea061e..5bf7242 100644
--- a/gobject/gobjectmodule.c
+++ b/gobject/gobjectmodule.c
@@ -27,6 +27,8 @@
#include "pygobject-private.h"
static PyObject *gerror_exc = NULL;
+static const gchar *pyginterface_type_id = "PyGInterface::type";
+GQuark pyginterface_type_key = 0;
static void pyg_flags_add_constants(PyObject *module, GType flags_type,
const gchar *strip_prefix);
@@ -234,7 +236,7 @@ pyg_interface_init(PyObject *self, PyObject *args, PyObject *kwargs)
return -1;
}
-static PyTypeObject PyGInterface_Type = {
+PyTypeObject PyGInterface_Type = {
PyObject_HEAD_INIT(NULL)
0, /* ob_size */
"gobject.GInterface", /* tp_name */
@@ -300,6 +302,9 @@ pyg_register_interface(PyObject *dict, const gchar *class_name,
type->ob_type = &PyType_Type;
type->tp_base = &PyGInterface_Type;
+ if (!pyginterface_type_key)
+ pyginterface_type_key = g_quark_from_static_string(pyginterface_type_id);
+
if (PyType_Ready(type) < 0) {
g_warning("could not ready `%s'", type->tp_name);
return;
@@ -311,7 +316,10 @@ pyg_register_interface(PyObject *dict, const gchar *class_name,
Py_DECREF(o);
}
+ g_type_set_qdata(gtype, pyginterface_type_key, type);
+
PyDict_SetItemString(dict, (char *)class_name, (PyObject *)type);
+
}
/* -------------- GMainContext objects ---------------------------- */