widget cleanup problem [message #51686] |
Tue, 28 November 2006 10:59  |
Paul Van Delst[1]
Messages: 1157 Registered: April 2002
|
Senior Member |
|
|
Hello,
I'm having a bit of issue with cleaning up after myself in a widget program.
I have a main GUI that, alongside "regular widgets" also contains a bunch of standalone
compound widgets. The main GUI info structure and loading looks something like:
Info = { Debug : Debug , $
cw1Id : cw1Id , $ ; compound widget 1 base id
cw2Id : cw2Id , $ ; compound widget 2 base id
cw3Id : cw3Id , $ ; compound widget 3 base id
.....etc....
cwNId : cwNId } ; compound widget N base id
InfoPtr = PTR_NEW( Info )
WIDGET_CONTROL, tlBaseId, SET_UVALUE = InfoPtr
To get a look at the compound widgets info structure I do the following:
WIDGET_CONTROL, Info.cw3Id, GET_UVALUE = cw3_InfoPtr
My problem is that when an exit event occurs and the cleanup routine is called, the child
compound widgets are cleared first so the reference to their top-level-based is gone and I
now have dangling pointers.
In my main "exit" event handler, all the various compound widget base ids are still valid.
However, by the time the "cleanup" routine is called, they are not -- and thus I can't
free the info pointers.
I wanted the main "cleanup" routine to handle all the child compound widget pointer
free'ing. Does it *have* to be done in the main "exit" event handler?
I hope my explanation above makes sense.
cheers,
paulv
--
Paul van Delst Ride lots.
CIMSS @ NOAA/NCEP/EMC Eddy Merckx
Ph: (301)763-8000 x7748
Fax:(301)763-8545
|
|
|