From: Po Lu <luangruo@yahoo.com>
To: Lars Ingebrigtsen <larsi@gnus.org>
Cc: emacs-devel@gnu.org
Subject: Re: shr using `make-xwidget' incorrectly
Date: Thu, 11 Nov 2021 12:46:14 +0800 [thread overview]
Message-ID: <87tugjz4dl.fsf@yahoo.com> (raw)
In-Reply-To: <8735o3e4u9.fsf@gnus.org> (Lars Ingebrigtsen's message of "Thu, 11 Nov 2021 04:41:50 +0100")
Lars Ingebrigtsen <larsi@gnus.org> writes:
> I don't see the similarity -- killing the buffer will kill the xwidgets,
> while killing the buffer won't kill the process. On the other hand,
> deleting text in a buffer won't make the process become unavailable.
Sorry, I meant only processes with associated buffers. This is how it
would make sense for xwidgets to behave as well.
BTW, it's impossible to cause an xwidget to become unavailable by
deleting text in a buffer: it'll always be available via
get-buffer-xwidgets, and there could be references to the xwidget in
other places.
At present, the only way to kill an xwidget (and to make it potentially
unavailable) is to kill the buffer it's associated with.
So even if we were to introduce an "evaporable" xwidget type, I think it
would only make sense to have it done as part of garbage collection.
>> However, randomly killing xwidgets based on whether or not they are
>> displayed would be undesirable: xwidgets have a lot of state that cannot
>> be reconstituted through recreating them, and creating them takes a long
>> time and a lot of memory.
> There's nothing random about it. If the caller has marked the widgets
> as being evaporable, then the caller wants those xwidgets to go away if
> they're no longer displayed.
Making xwidgets "evaporable" would cause a lot of overhead, I think.
For example, WebKitGTK may elect to save or delete cached resources, if
the reference count of the context and settings reaches zero.
(Which will always happen if the widget did not have another widget
passed to it as the `related' parameter to make-xwidget, and may happen
regardless.)
Another solution (that doesn't involve attaching xwidgets to the buffer
currently being rendered in) would be have shr attach xwidgets to a
buffer used only for shr to manage xwidgets, and for shr to "recycle"
the xwidgets each time something is rendered.
Please tell me if I'm missing anything, or you have more comments to
make.
Thanks in advance!
next prev parent reply other threads:[~2021-11-11 4:46 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <87sfw31mok.fsf.ref@yahoo.com>
2021-11-11 1:54 ` shr using `make-xwidget' incorrectly Po Lu
2021-11-11 3:26 ` Lars Ingebrigtsen
2021-11-11 3:38 ` Po Lu
2021-11-11 3:41 ` Lars Ingebrigtsen
2021-11-11 3:43 ` Lars Ingebrigtsen
2021-11-11 4:46 ` Po Lu [this message]
2021-11-11 4:56 ` Lars Ingebrigtsen
2021-11-11 5:10 ` Po Lu
2021-11-11 12:33 ` Lars Ingebrigtsen
2021-11-11 12:37 ` Po Lu
2021-11-11 12:43 ` Lars Ingebrigtsen
2021-11-11 12:47 ` Po Lu
2021-11-11 6:37 ` Introduce "killed" state for xwidgets (Re: shr using `make-xwidget' incorrectly) Po Lu
2021-11-11 7:59 ` Eli Zaretskii
2021-11-11 9:28 ` Po Lu
2021-11-11 12:23 ` Lars Ingebrigtsen
2021-11-11 12:25 ` Po Lu
2021-11-11 15:10 ` Eli Zaretskii
2021-11-12 0:18 ` Po Lu
2021-11-11 6:58 ` shr using `make-xwidget' incorrectly Eli Zaretskii
2021-11-11 7:05 ` Po Lu
2021-11-11 8:01 ` Eli Zaretskii
2021-11-11 9:27 ` Po Lu
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=87tugjz4dl.fsf@yahoo.com \
--to=luangruo@yahoo.com \
--cc=emacs-devel@gnu.org \
--cc=larsi@gnus.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.