unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
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!



  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

  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=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 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).