Re: Issue with Synchronization between Manipulate and functions
- To: mathgroup at smc.vnet.net
- Subject: [mg79015] Re: [mg78978] Issue with Synchronization between Manipulate and functions
- From: Murray Eisenberg <murray at math.umass.edu>
- Date: Sun, 15 Jul 2007 01:17:55 -0400 (EDT)
- Organization: Mathematics & Statistics, Univ. of Mass./Amherst
- References: <200707140643.CAA03713@smc.vnet.net>
- Reply-to: murray at math.umass.edu
On my Windows XP system with Mathematica 6.0.1, I'm seeing each integer,
from 1 through 10 inclusive, displayed. Nothing skipped.
I don't know whether the result should be so sensitive to the PC's
strength. After all, this Manipulate is being asked to do very little.
(My PC, about 3 years old, is a 3.2GHz Pentium XE, with 2 GB RAM.)
Nasser Abbasi wrote:
> (Mathematica 6.0, Windows XP, OLD PC)
>
> Manipulate[expr,{n,1,10}] is supposed to evaluate expr for each value
> of 'n'.
>
> There seems to be a synchronization problem between Manipulate[] and
> completing evaluation of expr, when there is a Graphics inside expr.
>
> I have a simple example below, where expr is a function, which
> displays 'n'.
>
> ---- CODE -----------------
>
> process[a_] := Graphics[ {Text[StringJoin["a=", ToString[a]]]},
> ImageSize -> {40} ]
>
> Manipulate[ process[a], {a, 1, 10, 1} ]
>
> ---- END CODE -----------------------
>
> If you run the above, and click on 'play' and look at the display
> inside the Graphics window, you will see that not every integer is
> being printed. i.e. NOT each 'n' is being displayed.
>
> Some values of 'n' are skipped. What is being displayed is something
> like 2,4,6... or 1,2,3,5,6,... instead of 1,2,3,4,5,.... i.e. some numbers
> do NOT get displayed, while Manipulate itself is of course is
> incrementing 'n' correctly. This ofcourse might depend on speed of
> the computer itself and other factors, but on my slow PC, I see this
> is clearly happening.
>
> I think this happens because Manipulate is calling expr before the
> previous Graphics[] which displays the text is fully flushed out to
> display within the function expr.
>
> Hence, expr returns back, and Manipulate now calls it with n+1 value,
> before the previous n value is yet displayed, and so n+1 overwrites
> earlier 'n' in some internal Graphics buffer, and what I see is n+1
> and 'n' is missing.
>
> I need a way to make sure Graphics[] is completed inside expr before
> I return back from the function, back to Manipulate, to prevent this
> problem.
>
> To confirm this, when I 'slow' down Manipulate using the 'slow'
> control, now I see that each number is being displayed ok. So this
> clearly is telling me there is a buffer overrun problem.
>
> I need to study the documentation more, I just started using
> Manipulate, but I noticed this problem.
>
> Do you think I am interpreting this ok, or am I doing something silly
> elsewhere?
>
> thank you
> Nasser
>
>
--
Murray Eisenberg murray at math.umass.edu
Mathematics & Statistics Dept.
Lederle Graduate Research Tower phone 413 549-1020 (H)
University of Massachusetts 413 545-2859 (W)
710 North Pleasant Street fax 413 545-1801
Amherst, MA 01003-9305
- References:
- Issue with Synchronization between Manipulate and functions called by Manipulate with Graphics[]
- From: Nasser Abbasi <nma@12000.org>
- Issue with Synchronization between Manipulate and functions called by Manipulate with Graphics[]