I created PR 95 <https://github.com/racket/gui/pull/95> to remove the call 
to gdk_window_process_all_updates. I am still unsure if there are legacy or 
compatibility reasons for having this call.

Evan

On Saturday, February 10, 2018 at 12:39:58 PM UTC-10, evdubs wrote:
>
> I made the following change to window.rkt 
> <https://github.com/racket/gui/blob/master/gui-lib/mred/private/wx/gtk/window.rkt>'s
>  
> flush-display
>
> (define (flush-display)
>   (try-to-sync-refresh)
>   ;; (gdk_window_process_all_updates)
>   (gdk_display_flush (gdk_display_get_default)))
>
>
> I made this change after finding the following note for the 
> gdk_window_process_all_updates 
> documentation 
> <https://developer.gnome.org/gdk3/stable/gdk3-Windows.html#gdk-window-process-all-updates>
>
> gdk_window_process_all_updates has been deprecated since version 3.22 and 
>> should not be used in newly-written code.
>
>
> Things run much better now in DrRacket (and in the little editor example), 
> but still the performance isn't great.
>
> I would create a pull request with the removal of 
> gdk_window_process_all_updates but I don't know if there are other Racket 
> instances out there relying on older GTK versions that need this call. Is 
> there a way to check for that?
>
> Evan
>
> On Saturday, February 10, 2018 at 11:08:16 AM UTC-10, evdubs wrote:
>>
>> I had to add a sampler to that code so what I really had was this:
>>
>> #lang racket/gui
>>
>> (require profile)
>> (require profile/analyzer)
>> (require profile/render-text)
>> (require profile/sampler)
>>
>> (define s (create-sampler (current-thread) 0.0))
>>
>> (s 'get-snapshots)
>>
>> (define ec%
>>   (class editor-canvas%
>>     (define/override (on-paint)
>>       (profile (super on-paint) #:threads #t #:order 'self))
>>     (define/override (on-char e)
>>       (profile (super on-char e) #:threads #t #:order 'self))
>>     (super-new)))
>> (define frame (new frame% [label "Simple Edit"]
>>                    [width 1800]
>>                    [height 1800]))
>>
>> (define canvas (new ec% [parent frame]))
>> (define text (new text%))
>> (send canvas set-editor text)
>> (send frame show #t)
>>
>> Then, I could use the following in the interactions window to get results 
>> after typing in some text to the text editor.
>>
>> (render (analyze-samples (s 'get-snapshots)))
>>
>> Here are my results for the rows that had significant values for "self"
>>
>>
>> ================================================================================================================
>>                                     Caller
>>  Idx     Total          Self      Name+src                               
>>                                  Local%
>>          ms(pct)        ms(pct)     Callee
>>
>> ================================================================================================================
>>                                     call-with-break-parameterization [2] 
>>                                  100.0%
>>  [5]  19000(10.6%)    6221(3.5%)  dispatch-on-char method in window% ...
>> ow.rkt:778:4
>>                                     ??? [45]                             
>>                                   29.3%
>>                                     flush-display [14]                   
>>                                   27.8%
>>                                     call-pre-on-char method in window% [
>> 15]                                10.2%
>>
>> ----------------------------------------------------------------------------------------------------------------
>>                                     call-with-break-parameterization [2] 
>>                                  100.0%
>>  [7]   2580(1.4%)     2580(1.4%)  ??? ...acket/collects/ffi/unsafe/atomic
>> .rkt:115:16
>>
>> ----------------------------------------------------------------------------------------------------------------
>>                                     dispatch-on-event method in window% [
>> 9]                                 3.1%
>>                                     dispatch-on-char method in window% [5
>> ]                                 96.9%
>> [14]   5442(3.0%)     5442(3.0%)  flush-display ...d/private/wx/gtk/
>> window.rkt:891:0
>>
>> ----------------------------------------------------------------------------------------------------------------
>>                                     ??? [13]                             
>>                                  100.0%
>> [22] 179456(100.0%) 158080(88.1%) loop .../drracket/drracket/private/rep.
>> rkt:1456:17
>>                                     ??? [3]                             
>>                                    11.3%
>>                                     wait-now [32]                       
>>                                     0.0%
>>
>> ----------------------------------------------------------------------------------------------------------------
>>                                     ??? [70]                             
>>                                  100.0%
>> [75]   5512(3.1%)     5512(3.1%)  channel-put ...lects/racket/private/
>> misc.rkt:169:2
>>
>> ----------------------------------------------------------------------------------------------------------------
>>
>> The culprit, to me, looks like flush-display. Do you perhaps have any 
>> thoughts on the flush-display usage within window.rkt? I will try to poke 
>> at this a bit more.
>>
>> Evan
>>
>> On Saturday, February 10, 2018 at 3:35:35 AM UTC-10, Robby Findler wrote:
>>>
>>> If you run this code, does the profiling information reveal anything 
>>> interesting? 
>>>
>>> #lang racket/gui 
>>> (require profile) 
>>> (define ec% 
>>>   (class editor-canvas% 
>>>     (define/override (on-paint) 
>>>       (profile (super on-paint))) 
>>>     (define/override (on-char e) 
>>>       (profile (super on-char e))) 
>>>     (super-new))) 
>>> (define frame (new frame% [label "Simple Edit"] 
>>>                    [width 1800] 
>>>                    [height 1800])) 
>>> (define canvas (new ec% [parent frame])) 
>>> (define text (new text%)) 
>>> (send canvas set-editor text) 
>>> (send frame show #t) 
>>>
>>>
>>> On Fri, Feb 9, 2018 at 11:05 PM, Evan Whitmer <[email protected]> wrote: 
>>> > I forgot to mention that I have a 4K display, and I think that's 
>>> important 
>>> > to note here. 
>>> > 
>>> > 
>>> > On Friday, February 9, 2018 at 7:00:18 PM UTC-10, Evan Whitmer wrote: 
>>> >> 
>>> >> I, too, am having typing latency issues in DrRacket in the 
>>> definitions 
>>> >> window. As Dave noted, the size of the window seems to be related to 
>>> the 
>>> >> issue, and, in my experience, it's not just an issue with the 
>>> Definitions 
>>> >> window. Both the Interactions window and even the following code 
>>> snippet 
>>> >> (taken from StackOverflow) will have this same lag: 
>>> >> 
>>> >> (define frame (new frame% [label "Simple Edit"] 
>>> >>                    [width 1800] 
>>> >>                    [height 1800])) 
>>> >> (define canvas (new editor-canvas% [parent frame])) 
>>> >> (define text (new text%)) 
>>> >> (send canvas set-editor text) 
>>> >> (send frame show #t) 
>>> >> 
>>> >> (define delta (make-object style-delta% 'change-size 14)) 
>>> >> (send delta set-face "Menlo") 
>>> >> (send text change-style delta) 
>>> >> 
>>> >> I am on Ubuntu 17.10 using Racket 6.11 with the proprietary nVidia 
>>> drivers 
>>> >> and X.org. My GTK version is 3. I don't have this issue with any of 
>>> the 
>>> >> other text editors that I've tried to use. 
>>> >> 
>>> >> I tried to profile the above text editor, but I am a novice Racketeer 
>>> and 
>>> >> could not figure out a way to profile a thread managed in racket/gui. 
>>> Does 
>>> >> anyone perhaps know of a way to hook the above into a profiler to see 
>>> what 
>>> >> might be the cause of this lag? 
>>> >> 
>>> >> Has anyone happened to stumble onto this issue recently and solved 
>>> it? 
>>> >> 
>>> >> Evan 
>>> >> 
>>> >> On Saturday, April 1, 2017 at 6:07:28 AM UTC-10, gneuner2 wrote: 
>>> >>> 
>>> >>> On Fri, 31 Mar 2017 13:34:38 -0700 (PDT), Dave Musicant 
>>> >>> <[email protected]> wrote: 
>>> >>> 
>>> >>> >I'm using DrRacket on a 64-bit Ubuntu 16.04 system with the 
>>> >>> >default Unity windowing system, and am finding that typing 
>>> >>> >in the definitions window is laggy. 
>>> >>> 
>>> >>> I've seen similar behavior on CentOS 6.5-6.8 under Gnome(2) - it has 
>>> >>> persisted across a number of OS and Racket versions. 
>>> >>> 
>>> >>> I have seen the lag in Dr Racket with 6.1, 6.5, 6.7 and 6.8.  I 
>>> >>> compiled 6.1 and 6.5 myself, so there might have been something 
>>> >>> strange in those cases, but 6.7 and 6.8 were stock Linux x86_64 
>>> >>> downloads. 
>>> >>> 
>>> >>> Turning off background expansion helps somewhat, but I have found 
>>> that 
>>> >>> limiting memory seems to help the most.  On Linux I run Dr Racket 
>>> with 
>>> >>> the limit set to 512MB.  That might be too low for some people, but 
>>> it 
>>> >>> works fine for my typical (webserver app) uses. 
>>> >>> 
>>> >>> George 
>>> >>> 
>>> > -- 
>>> > You received this message because you are subscribed to the Google 
>>> Groups 
>>> > "Racket Users" group. 
>>> > To unsubscribe from this group and stop receiving emails from it, send 
>>> an 
>>> > email to [email protected]. 
>>> > For more options, visit https://groups.google.com/d/optout. 
>>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to