mate-desktop / mate-terminal

The MATE Terminal Emulator
http://www.mate-desktop.org
GNU General Public License v3.0
135 stars 72 forks source link

Text in terminal appears rendered twice for some lines when redrawn #287

Closed ProMarbler14 closed 5 years ago

ProMarbler14 commented 5 years ago

Expected behaviour

Text output renders normally when the window is redrawn.

Actual behaviour

Interaction with popups created by marco and other window things obscuring a window will cause some of the text in the window to be drawn twice, resulting in visual boldening of antialiased fonts.

Steps to reproduce the behavior:

Compositor is disabled (may not be important). Open one or two terminal windows in a blank desktop workspace. Draw text on the screen e.g. a hexdump; grep a common pattern to see the issue for bold text too. Do anything that redraws the window and places a popup window over it e.g. alt-tab, ctrl-alt-arrow, others. Alt-escape notably is excluded from this. Observe the window being redrawn and note how the window has the lines drawn for the rows that are/were obscured. With alt-tab, cycle through the keypresses a few times to observe. Observe how moving the windows over the text will cause the covered text to be redrawn normally. Also observe that highlighting text in the terminal will cause those whole lines to be redrawn.

MATE general version

MATE Desktop Environment 1.22.0

Package version

mate-terminal/1.22.0-1

Linux Distribution

Arch Linux

Link to downstream report of your Distribution

none found

Screenshot-example1-alttab-single-window: https://user-images.githubusercontent.com/10007220/57002071-8dca1200-6b8a-11e9-89db-631e50e8d109.png Screenshot-alttab-pair-cycling-combined: https://user-images.githubusercontent.com/10007220/57002072-8e62a880-6b8a-11e9-9a29-49bfbe297a82.png

lukefromdc commented 5 years ago

I have never once seen this, but I use compiz. I tested putting a full terminal where my desktop notifications appear, then bringing up a test notification. My theme for that is transparent and thus I could see the unchanged mate-terminal window beneath it.

There is no reason to redraw any window because another window covers in when compositing is in use so this may indeed be a noncompositing-only bug. Can you test that with compositing turned on and then off to see for sure?

raveit65 commented 5 years ago

none found

It doesn't hurt to file out a downstream report to call you package maintainer to confirm that it isn't a downstream problem.

I never saw this in my fedora installation with

[rave@mother ~]$ rpm -qa vte291
vte291-0.56.1-1.fc30.x86_64

vte291 version?

ProMarbler14 commented 5 years ago

vte3 0.56.1-1 is my vte-2.91 version. There's a 0.56.2 release available that was available to try. I upgraded my system and restarted, but the issue persists.

The issue is not present with compositing enabled.

Would this issue be a problem in marco, mate-terminal, or both?

lukefromdc commented 5 years ago

Compositing is only mentioned in terminal-window.c , translations, and the schema for gsettings. It is used apparently to tell VTE whether to use true transparency for transparent terminal backgrounds and to tell GTK to set up with widget with an RGBA (transparency supported) visual. I really have no idea if GTK or VTE is doing something odd in the noncompositing case or there is an issue in Marco triggered only by the terminal.

I have never seen this-and I just tested Marco (1.23 git master) with compositing disabled and did not get this bug myself. As I can't duplicate it I can't test it. Can you try another VTE using terminal (such as gnome-terminal) and see if this still happens? Can you get any other application in marco to double/partial draw any window?

ProMarbler14 commented 5 years ago

I've tested some more and the issue seems to only occur with new terminal windows made after compositing is disabled, though there may be some nuance I'm missing. I'll try the git version later.

ProMarbler14 commented 5 years ago

It doesn't seem to be tied to marco; I tried 1.18, 1.20, 1.22, and 1.23-git, and replacing the running WM each time but the issue persists. mate-terminal with a background seems to not trigger this bug with any method. Solid color ones are affected. I tried the transparent setting, but the transparency seems broken; it behaves just like in the solid-color background case.

I tested a bunch of other VTE-based terminals: mate-terminal gnome-terminal sakura guake terminator tilda

If you move the window of each terminal and enlarge it such that the alt-tab window is contained inside the terminal window boundaries, you should be able to replicate the issue.

I downgraded vte3 to 0.54, killed all my terminals, and opened it anew, and the issue was gone. Upgraded to vte3 0.56, repeated the process, and the issue was back. So, it seems to be an issue with VTE, and not a bug inside of MATE software.

ProMarbler14 commented 5 years ago

I went ahead and bisected vte...

b8756bef93778aed0c6f3e3290a95c8773c30f0d is the first bad commit commit b8756bef93778aed0c6f3e3290a95c8773c30f0d Author: Egmont Koblinger egmont@gmail.com Date: Fri Oct 5 13:56:48 2018 +0200

widget: Always draw entire rows

https://gitlab.gnome.org/GNOME/vte/issues/26
lukefromdc commented 5 years ago

We can close this here since the issue is in VTE. You should open an issue there

ProMarbler14 commented 5 years ago

This is now being tracked at https://gitlab.gnome.org/GNOME/vte/issues/4 .