[PD-dev] zombie connections lines in test6

Krzysztof Czaja czaja at chopin.edu.pl
Fri Jul 4 16:37:46 CEST 2003


hi Miller,

sorry to bother you yet again, it is my fault by sending these
patches too hastily... but you seem to have used the first (the
``common sense'') tcl/tk8.4 patch.  So, test6 leaves zombie
connection lines while being mapped-in back from another virtual
desktop, or from being minimized.

In former releases, the <Unmap> event binding was commented out.
Therefore, all subsequent <Map> events were simply ignored too --
cf. ``if (!glist_isvisible(x))'' condition in canvas_map().

The quick fix is to do just that -- comment out line 914 of pd.tk.
In case you think the proper fix would be really handling _all_
map/unmap events, here is the patch on g_canvas.c.

It is not tested, though (I rather rarely use a computer these
days).

Krzysztof

--- g_canvas.c~	2003-06-03 06:37:07.000000000 +0200
+++ g_canvas.c	2003-07-04 16:18:13.000000000 +0200
@@ -57,6 +57,7 @@
  static void canvas_start_dsp(void);
  static void canvas_stop_dsp(void);
  static void canvas_drawlines(t_canvas *x);
+static void canvas_deletelines(t_canvas *x);
  static void canvas_setbounds(t_canvas *x, int x1, int y1, int x2, int y2);
  static void canvas_reflecttitle(t_canvas *x);
  static void canvas_addtolist(t_canvas *x);
@@ -642,6 +643,7 @@
      	    for (y = x->gl_list; y; y = y->g_next)
  	    	gobj_vis(y, x, 0);
      	    x->gl_mapped = 0;
+    	    canvas_deletelines(x);
  	}
      }
  }
@@ -875,6 +877,15 @@
      }
  }

+static void canvas_deletelines(t_canvas *x)
+{
+    t_linetraverser t;
+    t_outconnect *oc;
+    linetraverser_start(&t, x);
+    while (oc = linetraverser_next(&t))
+ 
sys_vgui(".x%x.c delete l%x\n", glist_getcanvas(x), oc);
+}
+
  void canvas_fixlinesfor(t_canvas *x, t_text *text)





More information about the Pd-dev mailing list