[Openmcl-devel] lambda-gtk question on OpenMCL

Rick Taube taube at uiuc.edu
Wed Jan 26 14:16:39 UTC 2005


Its not a bug but its not pretty either. However it does work:

? (setq bm (plotter-bitmap w))
#<A Mac Pointer #x151FD0>
? (gdk:drawable-get-size bm 0 0)
NIL
377
350
?
lambda-gtk sources are portable between OpenMCL, SBCL and CMUCL so its 
calling conventions have to be the same.  both sbcl and cmucl return 
pointer args as multiple values. so in the example above the NIL first 
return value is the value returef by the function the second and third 
values are the pointer arg values the function produces. so in the case 
of a function that only produces values the external args you pass are 
useless.  If there is a better way to handle situations like this 
please let me know, but only if it can determined from ffigen 
expressions and only if it works in all three lisps.

Rick Taube
Associate Professor, Composition/Theory
School of Music
University of Illinois
Urbana, IL 61821 USA
net: taube at uiuc.edu
fax: 217 244 8319
vox: 217 244 2684


> In the gtkffi-openmcl.lisp file, there is:
>
> (defun gdk::drawable-get-size (a b c)
>   (rlet ((r1 :int b) (r2 :int c))
>         (let ((z (#_gdk_drawable_get_size a r1 r2)))
>           (values z (%get-signed-long r1) (%get-signed-long r2)))))
>
> Please forgive my ignorance, but, to my eye, this looks like an
> autogen gone wrong.
>
> b and c seem to not be used (as the _gdk_drawable_get_size call just 
> writes
> over the initial values).
>
> In addition, why return the void from the _gdk_drawable_get_size call?
>
> Is this a bug in lambda-gtk that I should file a report on or am I
> missing something obvious?
>
> Thanks,
> -a
>
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel
> ½





More information about the Openmcl-devel mailing list