unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Dmitrii Kuragin via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: "Gerd Möllmann" <gerd.moellmann@gmail.com>, 57434@debbugs.gnu.org
Subject: bug#57434: 28.1.91; Terminal Emacs Mac OS flickering.
Date: Wed, 31 Aug 2022 10:11:00 -0700	[thread overview]
Message-ID: <CALqSXk5B99F6k+Zs4YTDocC2GqE47nOfLkMXLEzRvxYGGdo9Mg@mail.gmail.com> (raw)
In-Reply-To: <83ler4s76z.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 4244 bytes --]

On Wed, Aug 31, 2022 at 9:34 AM Eli Zaretskii <eliz@gnu.org> wrote:

> > From: Dmitrii Kuragin <kuragin@google.com>
> > Date: Wed, 31 Aug 2022 09:21:00 -0700
> > Cc: Eli Zaretskii <eliz@gnu.org>, 57434@debbugs.gnu.org
> >
> > And here's one more video of default `baud-rate` vs 1000000
> https://youtu.be/51EbX6bNP0M
> > And here's a video how smooth vim works in the same setup:
> https://youtu.be/newP7XEA610
> >
> > So, it is definitely not the terminal or Mac OS problem.
>
> That's a wrong conclusion, AFAIU.  By "terminal or macOS problem" we
> mean that some terminal commands, like those that insert and delete
> lines in a region of a screen, cause flickering on those systems
> and/or those terminals.  That vim doesn't show this flickering tells
> us nothing: it might well be that vim doesn't use these terminal
> commands.  After all, if we disable the use of those terminal commands
> in Emacs, like you already tried, the flickering disappears.  So by
> the same logic we could conclude that there's no problem at all.
>
Exactly, but it basically works for me. Which is what I need :)


> > Additionally, I want to say that now I see the problem even when I
> connect to a remote linux machine using
> > SSH.
>
> Why did you expect the problem to disappear when you use Emacs via SSH
> on the same terminal?  It's the same Emacs using the same algorithms
> to decide which terminal commands to use in each case.
>
Probably, it is caused by slowness of SSH and/or and my misunderstanding of
the terminal capabilities, but I didn't see the problem when I was
connected to Linux using SSH.

>
> > Could it be that alacritty so fast that it gets into the state when the
> emacs pointing is in an unsynced state with
> > terminal frequency?
>
> I don't see how this can happen.  Emacs outputs commands basically one
> after the other, so their execution should be at the terminal's speed.
>
It also might be caused by my limited knowledge of TTY. But, I see that we
redraw linest not from top to bottom, but actually we try to redraw
different portions of the screen at different times. (I am looking into
`do_scrolling`).

And my assumption is that we cleared some portion of the screen and
prepared it for new contents, but due to unsynced frame rates, the terminal
redraws that partial state. And only then, we add some content in those
empty lines and then the terminal redraws it again and we see what we
needed to see.
Do we always draw frame as a single atomic operation or those things aren't
synchronized at all?


> However, there's one place where we accumulate bytes before flushing
> them: in update_frame_1:
>
>           if (FRAME_TERMCAP_P (f))
>             {
>               /* Flush out every so many lines.
>                  Also flush out if likely to have more than 1k buffered
>                  otherwise.   I'm told that some telnet connections get
>                  really screwed by more than 1k output at once.  */
>               FILE *display_output = FRAME_TTY (f)->output;
>               if (display_output)
>                 {
>                   ptrdiff_t outq = __fpending (display_output);
>                   if (outq > 900
>                       || (outq > 20 && ((i - 1) % preempt_count == 0)))
>                     fflush (display_output);
>                 }
>             }
>
> So maybe it's worthwhile to see if playing with the 900 figure here
> helps in any way.  Or maybe __fpending doesn't work well on macOS?

I tried bigger/smaller and delete the condition completely, it didn't
help....

>
>
Also, I want to point out that `baud-rate` works and reduces part of the
flickering and improves the situation overall. but `tty->line_ins_del_ok =
0;` fixes it completely.

I can try to add a new variable to configure/override the behavior.



-- 
*If you get an email from me outside of the 9-5 it is *not* because I'm
always on or expect an immediate response from you; it is because of work
flexibility
<http://www.inc.com/john-boitnott/how-flexible-hours-can-create-a-better-work-life-balance.html>
.  Evening and weekend emails are a sign I allocated some regular working
hours for other things (such as family, gym, friends,...).  And I encourage
you to feel free to do the same.

[-- Attachment #2: Type: text/html, Size: 7936 bytes --]

  reply	other threads:[~2022-08-31 17:11 UTC|newest]

Thread overview: 97+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-26 16:54 bug#57434: 28.1.91; Terminal Emacs Mac OS flickering Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-27  5:34 ` Gerd Möllmann
2022-08-27  5:41   ` Gerd Möllmann
2022-08-27 15:03     ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-27 15:46       ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-27 15:58         ` Eli Zaretskii
2022-08-27 16:01           ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-27 16:14             ` Eli Zaretskii
2022-08-29 14:18               ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-29 14:38                 ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-29 16:04                   ` Eli Zaretskii
2022-08-29 16:05                     ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-29 16:07                       ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-29 16:27                         ` Eli Zaretskii
2022-08-29 15:15                 ` Gerd Möllmann
2022-08-29 16:22                   ` Eli Zaretskii
2022-08-29 17:14                     ` Gerd Möllmann
2022-08-29 18:24                       ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-29 18:57                         ` Eli Zaretskii
2022-08-29 19:04                           ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-29 19:17                             ` Eli Zaretskii
2022-08-29 19:26                               ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-29 19:37                                 ` Eli Zaretskii
2022-08-29 20:25                                   ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-29 20:44                                     ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-29 21:08                                       ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-30 11:28                                         ` Eli Zaretskii
2022-08-30  6:09                                     ` Gerd Möllmann
2022-08-30 11:10                                       ` Eli Zaretskii
2022-08-30 11:23                                         ` Gerd Möllmann
2022-08-30 13:48                                           ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-30 16:19                                         ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-30 16:34                                           ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-30 17:00                                             ` Eli Zaretskii
2022-08-30 17:22                                               ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-30 11:11                                     ` Eli Zaretskii
2022-08-30  6:04                                   ` Gerd Möllmann
2022-08-30 11:46                                     ` Eli Zaretskii
2022-08-30 11:53                                       ` Gerd Möllmann
2022-08-30 12:07                                         ` Eli Zaretskii
2022-08-30 12:15                                           ` Gerd Möllmann
2022-08-30 12:48                                             ` Eli Zaretskii
2022-08-30 13:25                                     ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-30 13:48                                     ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-31  6:14                                       ` Gerd Möllmann
2022-08-31  6:14                                       ` Gerd Möllmann
2022-08-31  7:02                                         ` Gerd Möllmann
2022-08-31 11:09                                           ` Eli Zaretskii
2022-08-31 11:54                                             ` Gerd Möllmann
2022-08-31 14:12                                               ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-31 14:38                                                 ` Gerd Möllmann
2022-08-31 16:00                                                   ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-31 16:21                                                     ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-31 16:34                                                       ` Eli Zaretskii
2022-08-31 17:11                                                         ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2022-08-31 16:25                                                     ` Eli Zaretskii
2022-09-01  5:44                                                       ` Gerd Möllmann
2022-09-01  6:11                                                         ` Eli Zaretskii
2022-09-01  6:45                                                           ` Gerd Möllmann
2022-09-01  8:18                                                             ` Gerd Möllmann
2022-09-01  8:25                                                               ` Eli Zaretskii
2022-09-01  8:56                                                                 ` Gerd Möllmann
2022-09-01 11:30                                                                   ` Eli Zaretskii
2022-09-01 12:27                                                                     ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-01 12:32                                                                       ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-01 12:36                                                                         ` Gerd Möllmann
2022-09-02  7:16                                                         ` Eli Zaretskii
2022-09-02  7:26                                                           ` Eli Zaretskii
2022-09-02  9:21                                                             ` Gerd Möllmann
2022-09-03  8:04                                                               ` Gerd Möllmann
2022-09-03  9:06                                                                 ` Eli Zaretskii
2022-09-03 16:35                                                                   ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-03 16:51                                                                     ` Eli Zaretskii
2022-09-03 17:14                                                                       ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-03 17:21                                                                         ` Eli Zaretskii
2022-09-04  4:55                                                                         ` Gerd Möllmann
2022-09-07  4:59                                                                           ` Gerd Möllmann
2022-09-07 16:11                                                                             ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-07 18:17                                                                               ` Eli Zaretskii
2022-09-08  5:31                                                                                 ` Gerd Möllmann
2022-09-08  6:25                                                                                   ` Eli Zaretskii
2022-09-08  6:43                                                                                     ` Gerd Möllmann
2022-09-08  8:20                                                                                       ` Eli Zaretskii
2022-09-08  8:43                                                                                         ` Gerd Möllmann
2022-09-08  9:16                                                                                           ` Eli Zaretskii
2022-09-08  9:35                                                                                             ` Gerd Möllmann
2022-09-08 15:59                                                                                               ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-09 15:48                                                                                                 ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-09 16:00                                                                                                   ` Eli Zaretskii
2022-09-20 16:35                                                                                                     ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-09-20 16:45                                                                                                       ` Eli Zaretskii
2022-09-21  6:10                                                                                                         ` Gerd Möllmann
2022-09-21 11:17                                                                                                           ` Eli Zaretskii
2022-09-02  9:20                                                           ` Gerd Möllmann
2022-08-29 16:01                 ` Eli Zaretskii
2022-08-29 16:03                   ` Dmitrii Kuragin via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-08-29 16:27                     ` 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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CALqSXk5B99F6k+Zs4YTDocC2GqE47nOfLkMXLEzRvxYGGdo9Mg@mail.gmail.com \
    --to=bug-gnu-emacs@gnu.org \
    --cc=57434@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=gerd.moellmann@gmail.com \
    --cc=kuragin@google.com \
    /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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).