;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-;; $Id: gobject.lisp,v 1.37 2006-02-02 19:51:33 espen Exp $
+;; $Id: gobject.lisp,v 1.39 2006-02-03 00:10:56 espen Exp $
(in-package "GLIB")
(cache-instance (find-cached-instance location) t)
(cache-instance (find-cached-instance location) nil)))
+#+gtk2.8
(defbinding %object-add-toggle-ref () pointer
(location pointer)
((callback toggle-ref-callback) pointer)
(nil null))
+#+gtk2.8
(defbinding %object-remove-toggle-ref () pointer
(location pointer)
((callback toggle-ref-callback) pointer)
(defmethod reference-foreign ((class gobject-class) location)
(declare (ignore class))
+ #+gtk2.8
(if (slot-value class 'instance-slots-p)
(%object-add-toggle-ref location)
- (%object-ref location)))
+ (%object-ref location))
+ #-gtk2.8
+ (%object-ref location))
(defmethod unreference-foreign ((class gobject-class) location)
(declare (ignore class))
(when (some #'(lambda (slotd)
(and
(eq (slot-definition-allocation slotd) :instance)
- (not (eq (slot-definition-name slotd) 'location))))
+ (not (typep slotd 'effective-special-slot-definition))))
(class-slots class))
(setf (slot-value class 'instance-slots-p) t)))
(defmethod instance-finalizer ((instance gobject))
(let ((location (proxy-location instance)))
+ #+gtk2.8
(if (slot-value (class-of instance) 'instance-slots-p)
#'(lambda ()
(remove-cached-instance location)
(%object-remove-toggle-ref location))
#'(lambda ()
(remove-cached-instance location)
- (%object-unref location)))))
+ (%object-unref location)))
+ #-gtk2.8
+ #'(lambda ()
+ (remove-cached-instance location)
+ (%object-unref location))))
(defbinding (%gobject-new "g_object_new") () pointer