all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
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





  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.