Patches item #1502860, was opened at 2006-06-08 05:33 Message generated for change (Comment added) made by zmoelnig You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=478072&aid=1502860...
Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: puredata-dev Group: bugfix Status: Open Resolution: None Priority: 7 Private: No Submitted By: IOhannes m zmölnig (zmoelnig) Assigned to: Miller Puckette (millerpuckette) Summary: class-destructor (free-method) not called when quitting pd
Initial Comment: when an object is destroyed (either directly deleted or by closing the patch containing it) the "free" method (a "destructor" in c++-speak) for this object is called.
however, when pd is "quit" (e.g. "Ctrl-Q"), this destructor does not get called, which potentially leaves the system in a bad state.
the attached patch fixes this by adding a "glob_closeall()" function to g_editor.c (which closes all root canvases) and calling it from within glob_quit() in s_inter.c
----------------------------------------------------------------------
Comment By: IOhannes m zmölnig (zmoelnig)
Date: 2012-02-16 10:57
Message: i can't think of any.
iirc, miller mentioned something along the lines, that calling all those destructors during an emergency shutdown might just take too long during a performance. (otoh, if a network port is blocked due to not properly cleaning up, this might take even longer)
hopefully, if the inclusion in Pd-extended can show that there is no problem (which i believe), we could get it into Pd-proper.
----------------------------------------------------------------------
Comment By: Hans-Christoph Steiner (eighthave) Date: 2012-02-16 10:45
Message: What are the risks or downsides to this patch? I am thinking it should be in Pd-extended
----------------------------------------------------------------------
Comment By: IOhannes m zmölnig (zmoelnig) Date: 2011-04-18 09:18
Message: updated the patch so it applies to Pd-0.43 (and incorporated thomas' suggestion)
----------------------------------------------------------------------
Comment By: Thomas Grill (xovo) Date: 2006-08-02 09:20
Message: Logged In: YES user_id=350252
I think there's a problem in this patch when traversing the canvas list with canvases vanishing meanwhile. It should be more like:
void glob_closeall(void*dummy, t_floatarg fforce) { t_canvas*x,*y; for (x = canvas_list; x; ) { y = x->gl_next; canvas_menuclose(x, fforce); /* forced closing of this root canvas */ x = y; } }
Still, this assumes that PD doesn't do more than removing that one entry from the canvas list, which is not very clean.
----------------------------------------------------------------------
Comment By: IOhannes m zmölnig (zmoelnig) Date: 2006-07-26 02:43
Message: Logged In: YES user_id=564396
actually i think this is rather important when objects interface with the system - so i raised the priority
----------------------------------------------------------------------
You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=478072&aid=1502860...