From: Eli Zaretskii <eliz@gnu.org>
To: Thomas Dickey <dickey@his.com>, Glenn Morris <rgm@gnu.org>
Cc: 17497@debbugs.gnu.org
Subject: bug#17497: 24.4.50; TTY menu glitches
Date: Mon, 02 Jun 2014 18:17:08 +0300 [thread overview]
Message-ID: <83zjhv9w97.fsf@gnu.org> (raw)
In-Reply-To: <20140601194600.GA4565@aerie.jexium-island.net>
> Date: Sun, 01 Jun 2014 15:46:00 -0400
> From: Thomas Dickey <dickey@his.com>
> Cc: dickey@his.com, 17497@debbugs.gnu.org
>
> > So buffering output more aggressively could help, is that what you are
> > saying?
> >
> > We currently fflush the stream every 900 bytes and also every 10
> > screen lines or so. Does that sound reasonable?
>
> I don't think that will be enough: the output stream simply is not fast
> enough to keep up.
That'd be strange, since it evidently does succeed to keep up when we
redraw the display "normally", i.e. not due to dropping down or
updating a menu.
Anyway, I took another look at all the screenshots posted in this bug
report, and my conclusion is that all of the artifacts seem to be
caused by 2 root causes:
. Incorrect position of the cursor when a menu item is redrawn.
This explains why some menu items are "duplicated" elsewhere in
the menu, and also why items that needed to be redrawn with blue
background (i.e. in the "non-selected" face) are left with the red
background of the "selected" face.
In all of these cases, it looks like the cursor was positioned at
the EOB of the buffer (*scratch*) displayed beneath the menu.
This is the "normal" cursor position, as Emacs perceives it, and
that's where redisplay leaves the cursor after updating the frame
display. We override that in the menu-display code, by sending a
cursor motion command after the frame is completely displayed; it
looks like in at least some of the cases this cursor motion
command was not obeyed.
. The insert mode is not turned off before some string is written to
the display.
This explains why we see menu items to the right of the menu: they
were "pushed" by writing some other text to their left, while in
insert mode. There are similar problems in some of the
screenshots with the help-echo displayed in the echo area.
Alternatively, this type of artifacts can also be explained by
incorrect cursor position in the horizontal axis. To decide which
explanation is correct, I'd need to see the artifacts when the
underlying window is full of some buffer text, not almost empty as
in *scratch*. Glenn, could I persuade you to try that and show
the screenshots?
Does the above ring any bells?
Please also note that Emacs tries to be "clever" about cursor motion
on a TTY: it chooses out of several possible methods of moving the
cursor, comparing their "costs" (see cm.c:cmgoto for details). So
it's possible that different cursor movements emit different commands
to the terminal driver, and somehow trigger these strange effects.
Finally, one difference between the "normal" screen update and the one
we use to display and update TTY menus is that the latter seems to
cause significantly more cursor motion. One possible way to cut down
on that is to set show-help-function to nil. Glenn, can I ask you to
try that and see if it helps in any way?
TIA
next prev parent reply other threads:[~2014-06-02 15:17 UTC|newest]
Thread overview: 70+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <83vbslbuqr.fsf@gnu.org>
[not found] ` <20140531200947.GA779@aerie.jexium-island.net>
[not found] ` <83lhtgbrd6.fsf@gnu.org>
[not found] ` <20140601152657.GA15078@aerie.jexium-island.net>
2014-06-01 16:25 ` bug#17497: 24.4.50; TTY menu glitches Eli Zaretskii
2014-06-01 17:12 ` Thomas Dickey
2014-06-01 17:18 ` Thomas Dickey
2014-06-01 18:45 ` Eli Zaretskii
2014-06-01 19:46 ` Thomas Dickey
2014-06-02 15:17 ` Eli Zaretskii [this message]
2014-06-02 16:14 ` Glenn Morris
2014-06-02 16:43 ` Eli Zaretskii
2014-06-02 16:46 ` Glenn Morris
2014-06-02 16:56 ` Eli Zaretskii
2014-06-02 17:05 ` Glenn Morris
2014-06-03 13:43 ` Stefan Monnier
2014-06-03 18:47 ` Thomas Dickey
2014-06-03 21:07 ` Eli Zaretskii
2014-06-03 22:21 ` Thomas Dickey
2014-06-04 6:54 ` Eli Zaretskii
2014-06-04 3:03 ` Stefan Monnier
2014-06-04 8:31 ` Thomas Dickey
2014-06-04 9:10 ` Thomas Dickey
2014-06-04 9:38 ` Eli Zaretskii
2014-06-04 10:16 ` Eli Zaretskii
2014-06-04 16:08 ` Glenn Morris
2014-06-04 16:15 ` Eli Zaretskii
2014-06-04 16:09 ` Glenn Morris
2014-06-04 16:23 ` Eli Zaretskii
2014-06-04 17:10 ` Eli Zaretskii
2014-06-04 13:06 ` Stefan Monnier
2014-06-04 20:26 ` Thomas Dickey
2014-06-05 0:47 ` Stefan Monnier
2014-06-05 8:21 ` Thomas Dickey
2014-06-05 8:29 ` Andreas Schwab
2014-06-05 15:02 ` Eli Zaretskii
2014-06-05 13:44 ` Stefan Monnier
2014-06-05 13:47 ` Stefan Monnier
2014-06-05 15:00 ` Eli Zaretskii
2014-06-01 18:39 ` Eli Zaretskii
2014-05-15 12:26 Dmitry Antipov
2014-05-15 17:37 ` Eli Zaretskii
2014-05-16 6:36 ` Glenn Morris
2014-05-16 6:38 ` Glenn Morris
2014-05-16 6:53 ` Glenn Morris
2014-05-16 8:48 ` Eli Zaretskii
2014-05-16 15:47 ` Glenn Morris
2014-05-16 20:21 ` Eli Zaretskii
2014-05-17 9:56 ` Eli Zaretskii
2014-05-22 2:49 ` Eli Zaretskii
2014-05-22 5:44 ` Glenn Morris
2014-05-22 7:51 ` Andreas Schwab
2014-05-22 15:58 ` Glenn Morris
2014-05-22 17:19 ` Andreas Schwab
2014-05-22 17:29 ` Glenn Morris
2014-05-22 17:53 ` Eli Zaretskii
2014-05-22 16:19 ` Eli Zaretskii
2014-05-22 16:26 ` Glenn Morris
2014-05-22 16:46 ` Eli Zaretskii
2014-05-30 9:22 ` Eli Zaretskii
2014-05-31 2:22 ` Glenn Morris
2014-05-31 8:20 ` Eli Zaretskii
2014-05-31 17:35 ` Glenn Morris
2014-06-01 15:11 ` Eli Zaretskii
2014-06-03 4:51 ` Glenn Morris
2014-06-03 7:03 ` Eli Zaretskii
2014-05-22 16:43 ` Eli Zaretskii
2014-05-22 16:54 ` Glenn Morris
2014-05-22 17:07 ` Eli Zaretskii
2014-05-16 9:42 ` Dmitry Antipov
2014-05-16 10:26 ` Eli Zaretskii
2014-05-16 10:46 ` Eli Zaretskii
2014-05-16 14:59 ` Dmitry Antipov
2014-05-16 15:26 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83zjhv9w97.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=17497@debbugs.gnu.org \
--cc=dickey@his.com \
--cc=rgm@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.