On 03/04/2014 01:20 PM, Jonathan Wilkes
wrote:
On 03/04/2014 10:11 AM, i go bananas
wrote:
[...]
Remember that when you redraw an element of an array you actually
redraw the _entire_ array in Pd Vanilla. And depending on the
array style you may have a separate tk canvas item for each
element.
So when you use the [until] loop you are sending drawing
instructions to the GUI ($arraysize * $no_mouse_events) times. A
single array redraw instruction in tcl is about 4k, so to scroll a
single pixel for a 100-element array:
100 elements * 1 = 100 redraws * 4k = 400k
That's flowing from the core to the GUI for a _single_ mouse
event. If you trigger ten scrolls you're already at 4 megs of
data sent.
I'm pretty sure commercial editors avoid that type of design. In
editors like the upcoming Openshot Video that have several
discrete parts that sending messages, the GUI part almost
certainly sends nothing at all to the video core for
zooming/scrolling. For moving a chunk of audio/video, it almost
certainly sends a single message about a single object's delta.
I may have showed this already, but I think it's instructive here:
https://jwilkes.nfshost.com/pd-tiger.webm
I don't have sound on that clip, but I believe I tried it with the
"test audio" patch going and I wasn't getting dropouts. This is
because a) I'm sending a single transform message for every scroll
of the number box and b) the GUI toolkit-- not Pd core-- is doing
the math to transform and redisplay the drawing.
Socket traffic is bad because it require both the core (sending) and
GUI (receiving) to do work. If you generate megs and megs of
traffic you can end up with dropouts and choking display even if
there's very little being redrawn.
-Jonathan
-Jonathan
_______________________________________________
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list