Subject: Re: bug#20677: tooltips generate garbage

From: Eli Zaretskii <[email-masked]>
Date: Tue, 02 Jun 2015 22:08:59 +0300

> From: Michael Heerdegen <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Tue, 02 Jun 2015 18:33:56 +0200
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > Does it even compile?  I think it shouldn't compile.  Or maybe I'm
> > missing something.
> 
> I tried "make" again, and it compiles.  I'm now trying bootstrapping
> again to see if I missed an error message.

The code is in non-GTK portion, so the compiler doesn't see it when
you build with GTK.  That's why it doesn't complain in that
configuration, and that's why reverting that change cannot have any
effect on the GTK build.

> > Can you see whether Emacs gets an expose event when the tip pops down?
> 
> Sorry, you've found my limit in understanding.  How can check that?

The function expose_frame (defined in xdisp.c) should be called when
such an event comes in.

If your Emacs was configured with --enable-checking='yes,glyphs', then
you can see the fact that the function is called announced on stderr
after invoking "M-x trace-redisplay RET".  (If you do that, I suggest
to turn off blink-cursor-mode first, to reduce clutter from redisplay
cycles induced by the blinking.)

Alternatively, put a breakpoint at entry to expose_frame, and see if
it's called when the tip pops down.

The call should come from handle_one_xevent in xterm.c, where you will
see that the call to x_clear_area is not done in the Cairo build --
this could be the culprit, perhaps at least when the GTK tooltip was
just popped down.

Caveat: please note that I have no idea what does using Cairo change
in how Emacs interacts with X, I'm just making stabs in the dark at
this point.

Thanks.