<div dir="ltr"><div><div>Probably a silly question: Are you drawing in a bitmap (buffer) so that each calls to the `paint-callback` that refreshes the canvas only does a copy of a section of the bitmap?<br></div><div></div>

<div><br></div>Also, just in case, `canvas%` can be initialized with `[style '(no-autoclear)]` to avoid being erased before each call to `paint-callback`.<br></div><div><br></div>Laurent<br></div><div class="gmail_extra">

<br><br><div class="gmail_quote">On Fri, Mar 21, 2014 at 7:16 PM, John Clements <span dir="ltr"><<a href="mailto:clements@brinckerhoff.org" target="_blank">clements@brinckerhoff.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

In my rsound package, I’ve enabled scroll bars for viewing sounds. Drawing a block takes a long time, though—about 60ms on my i7 mac.  That’s way too slow for interactive scrolling; a couple of hundred update messages will bog things down completely.<br>


<br>
To fix this, I’d like to limit the rate of calls to “draw”. I can see a couple of possibilities:<br>
<br>
1) Keep a timer, and only draw every so often. I implemented this, then realized that the canvas is erased before the call to draw, so I wind up with a blank screen most of the time, and it doesn’t get drawn eventually—it stays blank.<br>


<br>
2) upstream, inherit from canvas% and add code to limit the rate of calls to draw. I haven’t looked at the code yet, but this might be my best bet.<br>
<br>
3) one other thing occurs to me, though; it looks to me like calls to ‘draw’ are stacking up in an eventspace queue, and that seems like a mistake; if there’s a draw in progress, and calls to draw in the queue, it seems like another ‘draw’ should at a minimum squash the ones in the queue. Perhaps that’s painful to implement, or there’s a good reason for allowing all of the queued calls to complete?<br>


<br>
Thanks in advance for any suggestions!<br>
<br>
John<br>
<br>
<br>
____________________<br>
  Racket Users list:<br>
  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
</blockquote></div><br></div>