Subject: bug#1867: Resizing window causes text flickering when using antialiased font on X

From: "Jan D." <[email-masked]>
Date: Wed, 05 Oct 2011 09:01:28 +0200

Glenn Morris skrev 2011-10-05 03:13:
> Bo Lin wrote:
>
>> 1. Choose a font FONTNAME which supports antialiasing. Confirm
>> antialiasing is turned on for FONTNAME in fontconfig:
>>
>> $ fc-match -v FONTNAME |grep antialias
>> 	antialias: FcTrue(w)
>>
>> 2. emacs -q
>> 3. M-: (set-face-attribute 'default nil :font "FONTNAME")
>> 4. C-x 3 C-x 2
>>
>> Now there are three windows. We'll name the upper-left window 1,
>> lower-left window 2, and the right window 3.
>>
>> 5. C-x b *scratch* RET C-x o C-x b *Messages* RET C-x o C-h i
>> 6. Using mouse, quickly drag mode-line of window 1 up and down.
>>
>> Observe how text in window 1 and 3 flicker as windows 1 and 2 are
>> resized. The main point is that window 3, though totally unaffected by
>> the resizing of windows 1 and 2 and showing a different buffer, is still
>> been constantly redrawn. This quite annoying, as even when the
>> mini-buffer window resizes, which happens quite frequently, will cause
>> the whole frame to flicker.
>>
>> This flickering does *not* occur if using old X core fonts. To confirm,
>> start with `emacs -q -fn fixed' and repeat steps 4-6.
> [...]
>> In GNU Emacs 23.0.60.7 (i686-pc-linux-gnu, GTK+ Version 2.14.4)
>>   of 2009-01-12 on unicorn
>> Windowing system distributor `The X.Org Foundation', version 11.0.10502000
>
>
> I don't seem to be able to reproduce this. Do you still see this with
> the latest version of Emacs?
>
>

It is possible that this is not visible on faster systems.  Antialiased 
fonts requires erase of the old text then write of the new text from the 
client (i.e. Emacs).  This is slower than with core fonts where you call 
XDrawImageString and the X server then does both erasing and writing. 
The fact that unaffected windows get redrawn must have something to do 
with the display engine.  That may have been improved in later versions.

FWIW, I can't see any text flicker in the scenario above.  However, the 
hollow cursor in the non-selected windows do flicker which indicates 
that there is some redrawing going on.

	Jan D.