[R] Double-buffering problem, this time with an example.
luke-tierney at uiowa.edu
luke-tierney at uiowa.edu
Tue Jun 5 00:11:44 CEST 2012
FOR what it's worth this dev.hold/dev/flush combination does not seem
to prevent flickering on the quartz device on Macs.
Best,
luke
On Sat, 2 Jun 2012, Duncan Murdoch wrote:
> On 12-06-02 4:02 PM, Daniel Carr wrote:
>> Most of my animations that used to work
>> on windows() version 2.11.1 and earlier now flash
>> as if the double buffering is turned off or buffer swapping
>> is triggered by other events than in the past.
>>
>> The simplified example below using symbols
>> should illustrate the problem in a windows environment.
>>
>> windows()
>>
>> radius<- 8
>> n<- 6
>> ang<- seq(0,2*pi,length=n+1)[-(n+1)]
>> ca<- cos(ang)
>> sa<- sin(ang)
>> size<- c(.1, .3, .5, .7, .9, 1)
>>
>> colors<- rainbow(length(size))
>>
>> for (i in 1:1000){
>> radius<- radius*.998
>> bnd<- (radius+1)* c(-1, 1)
>> cenX<- radius*ca
>> cenY<- radius*sa
>> symbols(cenX, cenY, circles = size,
>> xlim=bnd, ylim=bnd, bg=colors)
>> }
>>
>> I have not isolated the version when the flashing
>> started but it somewhere between
>> 2.11.1 and 2.14.1.
>>
>> I did some searching on double-buffering
>> problems in R but didn't find indications
>> of this particular problem.
>>
>> Slowing the animation down did not help.
>
> I don't think there was ever a guarantee that double buffering would be
> sufficient for what you were doing: you just got lucky.
>
> What you need to do (and this should work, at least on the windows() device
> and some others), is use dev.hold() to stop redrawing, and dev.flush() when
> you are ready to display the new stuff. Your loop becomes something like
> this:
>
> for (i in 1:1000){
> dev.hold()
> radius <- radius*.998
> bnd <- (radius+1)* c(-1, 1)
> cenX <- radius*ca
> cenY <- radius*sa
> symbols(cenX, cenY, circles = size,
> xlim=bnd, ylim=bnd, bg=colors)
> dev.flush()
> }
>
> The dev.hold() function was introduced in 2.14.0. I think dev.flush()
> existed earlier, but not for all systems.
>
> Duncan Murdoch
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>
--
Luke Tierney
Chair, Statistics and Actuarial Science
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa Phone: 319-335-3386
Department of Statistics and Fax: 319-335-3017
Actuarial Science
241 Schaeffer Hall email: luke-tierney at uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
More information about the R-help
mailing list