Thread: [Tuxpaint-devel] extra magic_switchin event on application exit
An award-winning drawing program for children of all ages
Brought to you by:
wkendrick
From: Dan S. (Debian) <d4n...@gm...> - 2009-02-22 23:39:53
|
Developing with my own plugin recently, I noticed receiving a suspicious 'switchin' called immediately after shutdown on application exit. It was repeatable and completely testable. I found that whatever plugin that was active on program exit would receive one little extra call to its switchin method immediately after the shutdown. In most cases this is harmless, resulting only in allocation errors that are cleaned up on exit anyways, but if you happen to play an audio sample in the switchin LOOK OUT! It looks to me as if there is a magic_switchin( canvas) call (see src/tuxpaint.c line 2704 in latest CVS) that is simply missing a guard against the mainloop exit initiated by the TOOL_QUIT section (line 2693). Changing line 2704 to read if( !done) { magic_switchin( canvas); } The above rule seems sufficient to me to correct the problem, but I welcome all comments or criticisms of my approach. Thanks for a great application! Sincerely, Dan Shields |
From: Bill K. <nb...@so...> - 2009-02-23 00:13:18
|
On Sun, Feb 22, 2009 at 06:39:49PM -0500, Dan Shields (Debian) wrote: > It looks to me as if there is a magic_switchin( canvas) call (see > src/tuxpaint.c line 2704 in latest CVS) that is simply missing a guard > against the mainloop exit initiated by the TOOL_QUIT section (line > 2693). Changing line 2704 to read > if( !done) { > magic_switchin( canvas); > } Thanks! I'm not 100% sure that this is necessary (since all that's happening is a do_quit() prompt call). However, I guess in your example case, where the switchin function plays a sound (which happens in the background), the SDL cleanup we do upon quit could break things. So, since I guess this is a sufficient protection against that (no reason to switch in when we're about to quit), I'm committing to CVS, along with some other places where this test needs to be done (e.g., an SDL_QUIT event, Ctrl+Q keypress, ALT+F4 keypress, etc.) Let me know if it's working better for you! Thanks, -- -bill! "Tux Paint" - free children's drawing software for Windows / Mac OS X / Linux! Download it today! http://www.tuxpaint.org/ |