Subject: Re: bug#18912: 24.4; mode-line corruption on graphical frames in dual-headed display

From: Bruno Félix Rezende Ribeiro <[email-masked]>
Date: Tue, 04 Nov 2014 18:14:47 -0200

Eli Zaretskii wrote:>> Date: Tue, 04 Nov 2014 04:05:17 -0200
> Good.  This seems to close the issue: the root cause is indeed some 
> problem with your card/driver.  It's not an Emacs bug.

It's *probably* not an Emacs bug.  But it's very weird to me the fact
that Emacs redraws its frames correctly when asked by the 'xrefresh'
command, but not when done so by its own 'redraw-display' command.

> Emacs uses standard Xlib calls to draw its windows and communicate
> to X the dimensions to be used to clip partially visible lines.  Any 
> program that does the same will bump into the same issues.

Right.  I haven't noticed glitches in other applications, though.

> It's not possible to solve it in Emacs, but not in general.

Actually I think it's possible to almost solve it in Emacs.  I just
need a way to tell Emacs to force the redraw of the mode-line after
any scrolling is done, and ensure that the mode-line gets redrawn
after the buffer's content, not before it.

> Your card probably has firmware, which could be updated, and a device
> driver, which could be upgraded.  I'd suggest to do that, if at all
> possible and practical.

I would do that, granted the firmware and drivers are free software.

> Or even replace the card with another one.

I can't replace the graphics card, it's a laptop.  Furthermore, I
don't need to, the card is very good for my practical needs, except
for that mode-line thing in Emacs.

> I'm not yet convinced that Emacs can do _anything_ to provide a 
> workaround for this problem.  See my other messages as to why.

Why do you think my proposed workaround wouldn't work?  My answers to
your other messages, and your commentaries, seem to suggest Emacs can
help to work around this.

-- 
 ,= ,-_-. =.  Bruno Félix Rezende Ribeiro (oitofelix) [0x28D618AF]
((_/)o o(\_)) There is no system but GNU;
 `-'(. .)`-'  GNU Linux-Libre is one of its official kernels;
     \_/      All software must be free as in freedom;