[lambda-gtk-devel] passing lisp data to signal handlers

I am trying to port a minesweeper game from C to lisp, just to learn a little about lambda-gtk. The buttons for the game are kept in a two dimensional array of these structures: (defstruct minesweeper-button button-state widget bombs-nearby has-bomb row column) I want to connect the button "clicked" signal to a handler like this: (g:signal-connect button "clicked" mine-button-clicked (aref *mines* column row)) The problem is that at runtime I get an error complaining that the data I passed to the signal-handler, ie. the (aref *mines* column row) is not of type (OR NULL SYSTEM-AREA-POINTER (ALIEN (* T))) I looked through the examples.lisp and downloaded cm-2.6.0 and looked at all the signal-connect calls, but found no examples of passing lisp data to the signal handler. I looked through the sb-alien section in the sbcl manual, but it doens't seem that converting lisp to a C representation so it could be accessed by other lisp occurred to them. I wanted to avoid having to create a C structure just to pass a couple of intergers to a signal. I guess for this particular case I could multiply the column by the number of rows and then add the row to that and decode it in the callback, but that seems a little hackish. I wanted to eliminate most of the globals once I got the program to work. Can anyone suggest a better way of sending this data to the callback. I can send the complete code if you would like. It is less than 600 lines without the xpm files. thanks, Todd.
participants (1)
-
Todd Dukes