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

Bug#975687: xterm: loses text lines, even descenders from some lines



On Sun, Dec 20, 2020 at 07:47:15PM +0000, Thorsten Glaser wrote:
> Thomas Dickey dixit:
> 
> >I see that version in testing, but don't see a problem on the screen.
> >I made a short script to cat those lines to the terminal, sleeping 0.2
> >seconds between bursts, and the result looks ok, even with a magnifier.
> 
> Indeed, tricky. I experimented with this a bit.
> 
> I can reproduce this if I change your script from while true
> to for x in 1 2 3 (so it does that only three times) but, and
> this is important, move the xterm so that its bottom is below
> the bottom end of the X11 screen.

how far below?

Just the window-decoration, or a line or so?

From the screenshot in your followup, I'm guessing the latter.
 
> If I move the syslog terminal up by a few pixels, the problem
> does not happen.
> 
> If I use other terminal, font, etc. sizes, I also get display
> corruption effects which vary (see screenshot).
> 
> If I switch virtual workspaces (Ctrl-Alt-[1-8←→] in evilwm)
> the effects go away as well.

...repainting uses a different path.
 
> Maybe you can reproduce it with this info?

I'll try that.  (Of course if it depends on video hardware, etc., that
won't succeed).

Looking at the changes for #361, there's the changes for wrap-mark,
and copy-wait.  The latter was just this:
--------------------------------------------------------------------------------
REV:1.859               util.c              2020/10/14 00:45:31       tom
tags:            xterm-361a, xterm-361, xterm-360e

   replace a call to XWindowEvent (which will block if there's no exposure
   events) in CopyWait with a call to XCheckWindowEvent (which lets me bail
   out on no more exposure events).  That seems to fix a hang reported by
   Dave Kemper when iconifying/deiconifying while blasting lots of characters
   to an active icon.  The XWindowEvent call dates back to 1991.

--- util.c	2020/10/01 08:11:43	1.858
+++ util.c	2020/10/14 00:45:31	1.859
@@ -1,4 +1,4 @@
-/* $XTermId: util.c,v 1.857 2020/09/29 08:05:41 tom Exp $ */
+/* $XTermId: util.c,v 1.858 2020/10/01 08:11:43 tom Exp $ */
 
 /*
  * Copyright 1999-2019,2020 by Thomas E. Dickey
@@ -2082,8 +2082,10 @@
 	return;
 #endif
 
-    for (;;) {
-	XWindowEvent(screen->display, VWindow(screen), ExposureMask, &reply);
+    while (XCheckWindowEvent(screen->display,
+			     VWindow(screen),
+			     ExposureMask,
+			     &reply)) {
 	switch (reply.type) {
 	case Expose:
 	    HandleExposure(xw, &reply);
--------------------------------------------------------------------------------

as part of this:

https://github.com/ThomasDickey/xterm-snapshots/commit/d98fb8ac7854e9b7906e7d1e65cf446ba6c78432#diff-e21ac3db1fb1f4c2521d0911da5ca3414412766a9aecad6c4c0cfad5d67b5165R2085

-- 
Thomas E. Dickey <dickey@invisible-island.net>
https://invisible-island.net
ftp://ftp.invisible-island.net

Attachment: signature.asc
Description: PGP signature


Reply to: