Added args to INVOKE-SOURCE-CALLBACK
[clg] / glib / gcallback.lisp
index 1b2e54f..9e2c8fc 100644 (file)
@@ -20,7 +20,7 @@
 ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-;; $Id: gcallback.lisp,v 1.43 2007-06-15 12:03:26 espen Exp $
+;; $Id: gcallback.lisp,v 1.45 2007-06-25 13:49:05 espen Exp $
 
 (in-package "GLIB")
 
 (define-callback source-callback-marshal boolean ((callback-id unsigned-int))
   (invoke-source-callback callback-id))
 
-(defun invoke-source-callback (callback-id)
-  (restart-case (funcall (find-user-data callback-id))
+(defun invoke-source-callback (callback-id &rest args)
+  (restart-case (apply (find-user-data callback-id) args)
     (remove () :report "Exit and remove source callback"
       nil)
     (continue () :report "Return from source callback"
       t)
     (re-invoke nil :report "Re-invoke source callback"
-      (invoke-source-callback callback-id))))
+      (apply #'invoke-source-callback callback-id args))))
 
 
 (defbinding (timeout-add "g_timeout_add_full")
@@ -483,7 +483,7 @@ function."
           (params (allocate-memory (* n-params +gvalue-size+))))
       #'(lambda (detail object &rest args)
          (unless (= (length args) (1- n-params))
-           (error "Invalid number of arguments: ~A" (+ 2 (length args))))
+           (error "Invalid number of arguments in emmision of signal ~A: ~A" signal-id (length args)))
          (unwind-protect
              (loop
               for arg in (cons object args)