Signal slot finalization fix
Sun May 24 13:42:39 CEST 2009 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Signal slot finalization fix
hunk ./src/signal-slot/translate.lisp 47
+(defun disown-object (object)
+ (tg:cancel-finalization object)
+ (unless (smoke::virtual-destructor-p (class-of object))
+ (smoke::remove-object (pointer object)))
+ object)
+
hunk ./src/signal-slot/translate.lisp 54
+ "Returns the lisp value or object at POINTER of type TYPE."
hunk ./src/signal-slot/translate.lisp 58
- (smoke::object-to-lisp pointer type))
+ ;; By value means that they are allocated by the C++ signal
+ ;; code and have dynamic extend in the slot. The C++ singal code
+ ;; frees the object when the slot returns.
+ (disown-object (smoke::object-to-lisp pointer type)))
hunk ./src/signal-slot/translate.lisp 86
+ "Returns ARGUMENTS for a slot invocation as lisp objects."
hunk ./src/signal-slot/translate.lisp 93
+ "Returns the QMetaType ID for SMOKE-TYPE."
hunk ./src/signal-slot/translate.lisp 109
+ "Returns a newly allocated array of QMetaType IDs of SMOKE-TYPES."
hunk ./src/variant.lisp 7
- (print-unreadable-object (variant stream :type t)
+ (print-unreadable-object (variant stream :type t :identity t)