From: Alan Third <alan@idiocy.org>
To: Aaron Jensen <aaronjensen@gmail.com>
Cc: 32932@debbugs.gnu.org, boris@d12frosted.io
Subject: bug#32932: 27.0.50; render bugs on macOS Mojave
Date: Thu, 8 Nov 2018 15:21:17 +0000 [thread overview]
Message-ID: <20181108152117.GA98842@breton.holly.idiocy.org> (raw)
In-Reply-To: <CAHyO48zNu9VWTG+9TL70CXoMRRT6Ky=WHmGBq7cpp1AVtKf9QQ@mail.gmail.com>
I’ve finally worked out what’s happening.
We have an NSWindow, that is opaque, and drawn over that is the NSView
we use to display Emacs, which is not opaque.
When we ask for a display Cocoa/GNUstep back up to the first opaque
ancestor, in this case the NSWindow, and draws it, then moves up to
the NSView and draws it.
This means the first thing it does is draw the blank NSWindow
contents, which is why anything that is marked as dirty gets blanked
out.
Setting the NSView to be opaque solves the blanking issue, but
ns_clear_area and friends don’t do anything as they’re not called
during expose_frame.
We could work around that by queueing up the clear requests and
calling them in drawRect, however if the user set the background to be
transparent then I think we would immediately run into the exact same
issue as we have now where the first opaque ancestor (the WM root)
will overdraw when we’re not expecting it.
I think the root of this problem is that the NS toolkits expect
drawRect to ALWAYS be able to redraw the contents of the view at any
time so they have no issue with modifying it. Emacs seems to expect
the contents of the window to remain intact in many of these
circumstances.
We could try and force Emacs to bend to the NS way by forcing
expose_frame and friends to draw WHENEVER REQUESTED, but I don’t know
how practical that is, and it would mean making changes in xdisp.c
which may be unwelcome.
This leaves us with the solution Yamamoto Mitsuharu has used in the
Mac port of drawing to an offscreen buffer and leaving drawRect to
basically just copy that buffer to the screen.
It doesn’t feel like as neat a solution, but it should, more or less,
Just Work. Although I currently have no idea how to do it.
--
Alan Third
next prev parent reply other threads:[~2018-11-08 15:21 UTC|newest]
Thread overview: 144+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-04 13:05 bug#32932: 27.0.50; render bugs on macOS Mojave Aaron Jensen
2018-10-04 14:07 ` Alan Third
2018-10-04 17:33 ` Charles A. Roelli
2018-10-04 17:48 ` Aaron Jensen
2018-10-04 18:25 ` Alan Third
[not found] ` <CAHyO48xS6yOWVvw2Gu+Hjumahe5BC3-EA+Mwztz4831Ac2U6aA@mail.gmail.com>
2018-10-04 18:45 ` Alan Third
2018-10-04 21:51 ` Alan Third
2018-10-04 23:03 ` Aaron Jensen
[not found] ` <CAHyO48zMuX95RB7hRYxAxt6wH_XB6sF1kmnbWZWmjpPhnkqjdg@mail.gmail.com>
2018-10-09 7:15 ` Boris Buliga
2018-10-10 18:27 ` Alan Third
2018-10-11 3:40 ` Aaron Jensen
2018-10-14 8:19 ` Aaron Jensen
2018-10-14 9:04 ` Boris Buliga
2018-10-14 18:20 ` Alan Third
2018-10-14 20:17 ` Aaron Jensen
2018-10-16 4:53 ` Boris Buliga
2018-10-16 8:39 ` Boris Buliga
2018-10-16 19:04 ` Aaron Jensen
2018-10-19 16:26 ` Aaron Jensen
2018-10-19 18:48 ` Alan Third
2018-10-19 19:24 ` Aaron Jensen
2018-10-20 20:04 ` Alan Third
2018-10-23 2:15 ` Aaron Jensen
2018-10-24 10:42 ` Alan Third
2018-10-29 2:18 ` Aaron Jensen
2018-10-29 16:09 ` Alan Third
2018-10-29 17:41 ` Boris Buliga
2018-10-30 5:56 ` Aaron Jensen
2018-10-30 15:35 ` Boris Buliga
2018-10-31 21:59 ` Alan Third
2018-11-01 4:25 ` Aaron Jensen
2018-10-31 17:12 ` Alan Third
2018-11-01 4:51 ` Aaron Jensen
2018-11-01 4:58 ` Aaron Jensen
2018-11-01 5:11 ` Aaron Jensen
2018-11-01 6:13 ` Boris Buliga
2018-11-01 6:51 ` Aaron Jensen
2018-11-01 18:10 ` Eli Zaretskii
2018-11-01 19:52 ` Aaron Jensen
2018-11-01 20:12 ` Eli Zaretskii
2018-11-01 20:29 ` Aaron Jensen
2018-11-03 9:23 ` Eli Zaretskii
2018-11-01 22:55 ` Alan Third
2018-11-03 9:31 ` Eli Zaretskii
2018-11-03 20:36 ` Alan Third
2018-11-03 21:03 ` Eli Zaretskii
2018-11-04 13:24 ` Alan Third
2018-11-04 20:11 ` Alan Third
2018-11-05 16:11 ` Aaron Jensen
2018-11-05 18:55 ` Alan Third
2018-11-06 4:04 ` Aaron Jensen
2018-11-06 14:58 ` Aaron Jensen
2018-11-08 15:21 ` Alan Third [this message]
2018-11-08 15:35 ` Eli Zaretskii
2018-11-08 16:17 ` Alan Third
2018-11-08 16:28 ` Aaron Jensen
2018-11-08 23:21 ` Alan Third
2018-11-09 1:02 ` Aaron Jensen
2018-11-09 9:08 ` bug#32932: [PATCH v2] Fix more drawing bugs in NS port (bug#32932) Alan Third
2018-11-09 13:45 ` Aaron Jensen
2018-11-09 14:15 ` Aaron Jensen
2018-11-13 22:13 ` Alan Third
2018-11-14 17:08 ` Aaron Jensen
2018-11-14 18:19 ` Alan Third
2018-11-16 1:20 ` Aaron Jensen
2018-11-19 22:35 ` Alan Third
2018-11-20 2:30 ` Aaron Jensen
2018-11-23 18:17 ` Alan Third
2018-11-26 16:20 ` Aaron Jensen
2019-01-25 14:02 ` Aaron Jensen
2019-01-25 22:01 ` Alan Third
2018-11-09 8:02 ` bug#32932: 27.0.50; render bugs on macOS Mojave Eli Zaretskii
2018-11-08 16:51 ` Eli Zaretskii
2018-11-08 23:23 ` Alan Third
2018-11-03 17:57 ` Aaron Jensen
2018-11-03 19:09 ` Alan Third
2018-11-03 20:51 ` Alan Third
2018-11-03 23:56 ` Aaron Jensen
2018-11-04 13:24 ` Alan Third
2018-11-04 17:12 ` Aaron Jensen
2018-11-04 18:28 ` Eli Zaretskii
2018-10-04 19:43 ` Aaron Jensen
2018-11-03 17:56 ` Aaron Jensen
2018-11-03 18:17 ` Eli Zaretskii
2018-11-05 16:20 ` Aaron Jensen
2018-11-27 1:42 ` bug#32932: 26.2: Too many flickers with normal operations on macOS 10.13.6 Zhang Haijun
2019-11-11 18:16 ` bug#32932: 27.0.50; render bugs on macOS Mojave Alan Third
2019-11-12 13:27 ` Robert Pluim
2019-11-12 14:38 ` Alan Third
2020-01-25 12:44 ` Alan Third
2020-01-25 13:37 ` Eli Zaretskii
2020-01-27 11:06 ` Robert Pluim
2020-01-27 20:45 ` Alan Third
2020-01-28 3:21 ` Eli Zaretskii
2020-01-28 18:23 ` Alan Third
2020-01-28 19:35 ` Aaron Jensen
2020-01-28 20:07 ` Eli Zaretskii
2020-01-28 20:11 ` Aaron Jensen
2020-01-28 20:21 ` Eli Zaretskii
2020-01-28 20:24 ` Aaron Jensen
2020-01-29 10:08 ` Alan Third via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-01-29 16:32 ` Aaron Jensen
2020-01-29 20:04 ` Alan Third
2020-01-30 1:40 ` Aaron Jensen
2020-01-30 19:11 ` Alan Third
2020-01-30 20:07 ` Aaron Jensen
2020-01-31 14:57 ` Robert Pluim
2020-01-31 20:23 ` Alan Third
2020-01-31 20:26 ` Aaron Jensen
2020-02-01 1:26 ` Aaron Jensen
2020-02-01 14:22 ` Alan Third
2020-02-01 16:29 ` Aaron Jensen
2020-02-01 21:20 ` Alan Third
2020-02-01 23:05 ` Aaron Jensen
2020-02-02 13:42 ` Alan Third
2020-01-31 1:16 ` Stefan Kangas
2020-01-31 21:34 ` Mattias Engdegård
2020-02-02 12:31 ` Mattias Engdegård
2020-02-02 13:46 ` Alan Third
2020-02-02 16:49 ` Aaron Jensen
2020-02-02 22:30 ` Alan Third
2020-02-02 22:44 ` Mattias Engdegård
2020-02-03 0:14 ` Aaron Jensen
2020-02-03 7:39 ` Alan Third
2020-02-03 8:16 ` Aaron Jensen
2020-02-03 20:44 ` Alan Third
2020-02-03 20:46 ` Aaron Jensen
2020-02-03 21:30 ` Alan Third
2020-02-06 18:04 ` Aaron Jensen
2020-02-07 20:18 ` Alan Third
2020-02-08 1:26 ` Aaron Jensen
2020-02-08 14:13 ` Alan Third
2020-02-08 16:45 ` Aaron Jensen
2020-02-10 7:44 ` Alan Third
2020-02-10 15:21 ` Aaron Jensen
2020-02-10 17:14 ` Aaron Jensen
2020-02-10 21:33 ` Alan Third
2020-02-13 17:24 ` Aaron Jensen
2020-02-13 18:32 ` Alan Third
2020-02-03 16:04 ` Mattias Engdegård
2020-02-03 16:05 ` Aaron Jensen
2020-02-03 16:09 ` Mattias Engdegård
2020-02-03 21:28 ` Alan Third
2020-02-10 8:59 ` Robert Pluim
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=20181108152117.GA98842@breton.holly.idiocy.org \
--to=alan@idiocy.org \
--cc=32932@debbugs.gnu.org \
--cc=aaronjensen@gmail.com \
--cc=boris@d12frosted.io \
/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).