summaryrefslogtreecommitdiffstats
path: root/gobject/pygpointer.c
diff options
context:
space:
mode:
Diffstat (limited to 'gobject/pygpointer.c')
-rw-r--r--gobject/pygpointer.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/gobject/pygpointer.c b/gobject/pygpointer.c
index ee0a8da..449b80c 100644
--- a/gobject/pygpointer.c
+++ b/gobject/pygpointer.c
@@ -28,6 +28,9 @@
#include "pygobject-private.h"
#include "pygpointer.h"
+#include "pygi-external.h"
+
+
GQuark pygpointer_class_key;
PYGLIB_DEFINE_TYPE("gobject.GPointer", PyGPointer_Type, PyGPointer);
@@ -155,6 +158,14 @@ pyg_pointer_new(GType pointer_type, gpointer pointer)
}
tp = g_type_get_qdata(pointer_type, pygpointer_class_key);
+
+ if (tp == NULL) {
+ tp = (PyTypeObject *)pygi_type_import_by_g_type(pointer_type);
+ if (tp == NULL) {
+ PyErr_Clear();
+ }
+ }
+
if (!tp)
tp = (PyTypeObject *)&PyGPointer_Type; /* fallback */
self = PyObject_NEW(PyGPointer, tp);