emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to debug emacs repaint problems?


From: joakim
Subject: Re: How to debug emacs repaint problems?
Date: Sat, 14 Oct 2023 23:29:01 +0200
User-agent: Gnus/5.13 (Gnus v5.13)

joakim@verona.se writes:

> joakim@verona.se writes:
>
>
>> Eli Zaretskii <eliz@gnu.org> writes:
>>
>>>> From: joakim@verona.se
>>>> Date: Sat, 14 Oct 2023 20:09:31 +0200
>>>> 
>>>> Hello,
>>>> 
>>>> I have a long standing problem where it appears that my build of emacs
>>>> seems to invalidate a lot of regions on screen, which leads to flicker
>>>> in my setup of vnc. 
>>>> 
>>>> This flicker problem doesnt appear so much in the emacs that is
>>>> installed by my distro, which is fedora, emacs 28.
>>>> 
>>>> It would be easier to debug this if emacs could be persuaded to give
>>>> some visual hints of which regions its invalidating. Is this possible?
>>>
>>> Not AFAIU, since Emacs doesn't invalidate any regions.  It decides by
>>> itself which parts of the screen need to be redrawn, and then does
>>> that.
>>
>> If so, it appears to me that my build of emacs redraws a lot of regions
>> unecessarily. So the my question is if its possible to make Emacs show
>> some hints of which areas its redrawing. Then I would know if the
>> problem is in emacs, or elsewhere.
>>
>> The emacs 28 in my distro doesnt flicker, nor does apps such as gedit.
>>
>>>
>>>> I use these settings in turbovnc:
>>>> Tight+Low quality jpeg(WAN)
>>>> /opt/TurboVNC/bin/tvncconfig -set ALR=1
>>>> /opt/TurboVNC/bin/tvncconfig -set ALRAll=true
>>>> 
>>>> The idea is that a low quality codec should be used to refresh
>>>> invalidated rects, and then after a while be losslessly refreshed.
>>>> This works well in applications that dont invalidate the entire window,
>>>> when only small parts of the window needs to be changed.
>>>
>>> I don't know anything about turbovnc, but what you say is not how
>>> Emacs display works.
>>>
>>> Btw, does the flickering happen with text-mode frames or GUI frames?
>>> And which part(s) of the Emacs display flicker?
>
> I managed to make a screenshot that shows the problem. In the image I
> made an emacs window with some black text on red background.
>
> If I move the cursor just one line, you can see that 2 large regions
> become blurred. Since I just moved the cursor one line down, its rather
> confusing why these 2 seemingly unrelated regions should be redrawn.
>

For fun, I made the same test with emacs 29 from flatpak:
flatpak run org.gnu.emacs -Q

and I get the same problem, with the above testcase, black text against
red background. 

So the only emacs I have which avoids this issue, is an distro built
emacs 28.



>
>
>>
>> - If I access the same emacs instance in a tty, it does not flicker.
>>
>> - only gui frames flicker
>>
>> - the text flickers in a region around the cursor when moving it, it
>>   seems not consistent.
>>
>> To be a little bit more elaborate:
>>
>> - I open a file or an emacs application which has a lot of colors when
>>   font locked. The colors matter, because when using low quality jpeg
>>   encoding for vnc, red colors in text is more obviously "bleeding".
>>
>> - if i wait a little bit, a lossless refresh occurs, and all text is now
>>   crisp regardless of color. so far so good.
>>
>> - if I know move the cursor to a new line the line will need to be sent
>>   by vnc to the client, because there was a cursor drawn there. Therefore
>>   the line will flicker, and this is expected.
>>
>> - However, I dont expect other regions in the emacs frame to be needed
>>   to be sent again, because nothing happened there. But in my case 
>>   random parts of the emacs window seems to be redrawn, and thus
>>   flicker. And again, this doesnt seem to happen with the distro emacs.
-- 
Joakim Verona
joakim@verona.se



reply via email to

[Prev in Thread] Current Thread [Next in Thread]