MESSAGE
DATE | 2004-08-23 |
FROM | Ruben Safir Secretary NYLXS
|
SUBJECT | Subject: [hangout] Re: Data to Callback Functions
|
I think your right, and I was on IRC for a bit tonight fishing for answers.
I'm calling for an instance of the structure on the stack and forgetting that the entire stack vanishes when the program returns to gtk_main.
This makes the usefulness of gpointer data in the callback function a lot less usefull than I'd like. It seems that literal data like a string gets sent, and GtkWidget objects can be sent, but other kinds of data, such as my struct, doesn't get passed to the callback function because it doesn't get caputers by gtk_main and it falls off the stack.
I'm going to try to envelope the struct in g_new and see if that works. Otherwise, I'll declare the entire struct instance in main and make it globally available.
Thanks for taking the time to help a green horn.
Ruben
On Mon, Aug 23, 2004 at 10:39:18AM +0200, Sven Neumann wrote: > Hi, > > Ruben Safir Secretary NYLXS writes: > > > I'm trying to write a program for the clinical pharmacy department > > at the hospital. I hoped to create a top_level window with a vbox. > > The top of the vbox has some buttons and the bottom has a frame. > > Depending on which button is clicked, a different 'form' would > > desplay below. > > > > In order to do this I created several files, clinical.c clinical.h > > forms.c forms.h calculations.c calculations.h, so I could use the > > calculations for a future project. > > > > In order to retain access to everything, in fomrs.h I has a struct > > definition struc s1, which has membership of GtkWidgets which I > > hoped to assign to structure instances to pass to callback functions > > attacts as gpoint data, with is the last argument in > > g_signal_connect, such as follows > > > > g_signal_connect (G_OBJECT (button), "clicked", > > G_CALLBACK (lbw_screen), &handle); > > > > where handle is my structure with the GtkWidgets stored. > > It should work that way but unless you show us some more code we > cannot help you to find out why it doesn't work for you. My guess is > that the handle struct is stack-allocated memory at the time you > connect the callback and doesn't exist any longer when the signal is > run. But w/o seeing more code that's just a guess. > > > Sven
-- __________________________ Brooklyn Linux Solutions
So many immigrant groups have swept through our town that Brooklyn, like Atlantis, reaches mythological proportions in the mind of the world - RI Safir 1998
DRM is THEFT - We are the STAKEHOLDERS - RI Safir 2002 http://fairuse.nylxs.com
http://www.mrbrklyn.com - Consulting http://www.inns.net <-- Happy Clients http://www.nylxs.com - Leadership Development in Free Software http://www2.mrbrklyn.com/resources - Unpublished Archive or stories and articles from around the net http://www2.mrbrklyn.com/downtown.html - See the New Downtown Brooklyn....
1-718-382-0585 ____________________________ NYLXS: New Yorker Free Software Users Scene Fair Use - because it's either fair use or useless.... NYLXS is a trademark of NYLXS, Inc
|
|