[racket] how to stop canvas% from refreshing after on-event

From: Philipp Dikmann (philipp at dikmann.de)
Date: Tue Feb 12 13:59:01 EST 2013

The OS here is Mac OS 10.6.8, running Racket 5.3.1 -
so I guess its an issue with the OpenGL implementation.
Thanks for taking a look, though :)


On 12.02.13 19:37, Michael Wilber wrote:
> Your OpenGL example still doesn't flash for me when I move the mouse
> over it, on 64-bit linux.
>
> It does, however, flash when I change window focus... for some reason?
>
> What OS are you using?
>
> Philipp Dikmann <philipp at dikmann.de> writes:
>> I'm sorry, I should have been more specific – it happens when using a
>> gl-enabled canvas (example below).
>> I hope that does not turn it into a dragons' den? ;)
>>
>> Philipp
>>
>> #lang racket/gui
>>
>> (require sgl)
>>
>> (define c%
>>     (class canvas%
>>       (inherit with-gl-context swap-gl-buffers)
>>       (define/override (on-paint)
>>         (with-gl-context
>>          (lambda ()
>>            (gl-clear-color (random) (random) (random) 1)
>>            (gl-clear 'color-buffer-bit)
>>            (swap-gl-buffers)
>>            (gl-flush))))
>>       (super-new (style '(gl no-autoclear)))))
>>
>> (define f (new frame% [label ""] [width 100] [height 100]))
>> (define c (new c% [parent f]))
>> (send f show #t)
>>
>>
>> On 11.02.13 22:39, Robby Findler wrote:
>>> I don't think it does that. The program below, at least for me,
>>> doesn't do crazy colors when I move the mouse around (it does when
>>> resizing, tho).
>>>
>>> Robby
>>>
>>> #lang racket/gui
>>>
>>> (define c%
>>>    (class canvas%
>>>      (inherit get-client-size get-dc)
>>>      (define/override (on-paint)
>>>        (define-values (w h) (get-client-size))
>>>        (define dc (get-dc))
>>>        (define c (make-object color% (random 255) (random 255) (random
>>> 255)))
>>>        (send dc set-brush c 'solid)
>>>        (send dc set-pen "black" 1 'transparent)
>>>        (send dc draw-ellipse 0 0 w h))
>>>      (super-new)))
>>>
>>> (define f (new frame% [label ""] [width 100] [height 100]))
>>> (define c (new c% [parent f]))
>>> (send f show #t)
>>>
>>>
>>> On Mon, Feb 11, 2013 at 9:41 AM, Philipp Dikmann <philipp at dikmann.de
>>> <mailto:philipp at dikmann.de>> wrote:
>>>
>>>      It appears that the GUI canvas% refreshes itself whenever it
>>>      receives a mouse-event%.
>>>      I intend to refresh the canvas at a steady pace (using a timer%)
>>>      and independently of any mouse-events instead.
>>>      Is there a reasonable way to suppress the default behavior?
>>>
>>>      Thanks for your time,
>>>      Philipp
>>>      ____________________
>>>       Racket Users list:
>>>      http://lists.racket-lang.org/users
>>>
>>>
>> ____________________
>>    Racket Users list:
>>    http://lists.racket-lang.org/users


Posted on the users mailing list.