diff --git a/src/gsi/gsi/gsiObject.cc b/src/gsi/gsi/gsiObject.cc index f8f31ed9b..360acd9e4 100644 --- a/src/gsi/gsi/gsiObject.cc +++ b/src/gsi/gsi/gsiObject.cc @@ -121,7 +121,7 @@ Proxy::release () // and then make us the owner const gsi::ClassBase *cls = m_cls_decl; if (cls && cls->is_managed ()) { - void *o = obj (); + void *o = obj_internal (); if (o) { cls->gsi_object (o)->keep (); } @@ -138,7 +138,7 @@ Proxy::keep () const gsi::ClassBase *cls = m_cls_decl; if (cls) { - void *o = obj (); + void *o = obj_internal (); if (o) { if (cls->is_managed ()) { cls->gsi_object (o)->keep (); @@ -172,7 +172,12 @@ void * Proxy::obj () { QMutexLocker locker (&m_lock); + return obj_internal (); +} +void * +Proxy::obj_internal () +{ if (! m_obj) { if (m_destroyed) { throw tl::Exception (tl::to_string (QObject::tr ("Object has been destroyed already"))); diff --git a/src/gsi/gsi/gsiObject.h b/src/gsi/gsi/gsiObject.h index fab69ba99..223c9f8d2 100644 --- a/src/gsi/gsi/gsiObject.h +++ b/src/gsi/gsi/gsiObject.h @@ -245,6 +245,7 @@ private: void *set_internal (void *obj, bool owned, bool const_ref, bool can_destroy); void object_status_changed (gsi::ObjectBase::StatusEventType type); void detach_internal (); + void *obj_internal (); }; }