GNU bug report logs - #75056
31.0.50; tty-child-frames with server / multiple clients possible hangs

Previous Next

Package: emacs;

Reported by: Len Trigg <lenbok <at> gmail.com>

Date: Tue, 24 Dec 2024 05:44:02 UTC

Severity: normal

Found in version 31.0.50

Full log


View this message in rfc822 format

From: Gerd Möllmann <gerd.moellmann <at> gmail.com>
To: martin rudalics <rudalics <at> gmx.at>
Cc: Eli Zaretskii <eliz <at> gnu.org>, lenbok <at> gmail.com, 75056 <at> debbugs.gnu.org
Subject: bug#75056: 31.0.50; tty-child-frames with server / multiple clients possible hangs
Date: Tue, 28 Jan 2025 11:03:41 +0100
martin rudalics <rudalics <at> gmx.at> writes:

>>> (2) do_switch_frame now has this
>>>
>>> 	  if (FRAMEP (top_frame))
>>> 	    {
>>> 	      struct frame *top = XFRAME (top_frame);
>>> 	      struct frame *old_root = root_frame (top);
>>> 	      if (old_root != new_root)
>>> 		SET_FRAME_VISIBLE (old_root, false);
>>> 	    }
>>>
>>> This is wrong because it will set the visibility of the old top frame to
>>> nil.
>>
>> I don't understand that one. It doesn't, or shouldn't change, the
>> visibility of the top_frame, but the visibility of its root. Can you
>> please explain?
>
> The root_frame of the old top frame is the old top frame itself.  Or am
> I missing something?

Maybe. Make a child with M-l, then in the child 

  (frame-parent (tty-top-frame)
  => F1

It's 1:1 the display info's top_frame. IOW, I left the setting of
top_frame as is was before, only that there are now child frames to
which it gets set.

>
>> My idea is that root windows on ttys become invisible/invisible when
>> they are displayed on the terminal or not. Child windows on these roots
>> keep their visibility. They are automatically not displayed when the
>> root is not displayed, that's inherently the case when
>> combine_updates_for frame is not called for invisible root frames.
>
> I think we should use the metaphor of a top frame on a tty as that of a
> maximized frame on a GUI.  Such a frame hides all other normal frames on
> that workspace but does not render them invisible or iconified (I ignore
> z-order and groups here).  

That's not so in the current code. And why should it be so complicated?
Either I can see a frame or not.

> If you want to optimize redisplay, then the old concept of obscured
> frames will be better suited IMO.

It's much easier for me to think about if this second concept of being
obscured does not exist. And it's easier in redisplay: If it's visible
display it, otherwise don't.





This bug report was last modified 111 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.