Subject: bug#75056: 31.0.50; tty-child-frames with server / multiple clients possible hangs

From: Eli Zaretskii <[email-masked]>
Date: Sun, 26 Jan 2025 08:08:39 +0200

> From: Gerd Möllmann <[email-masked]>
> Cc: Eli Zaretskii <[email-masked]>,  [email-masked]
> Date: Sat, 25 Jan 2025 21:08:48 +0100
> 
> Len Trigg <[email-masked]> writes:
> 
> > Thanks, so far I haven't been able to produce that segfault, so
> > hopefully fixed.
> 
> Good to know, thanks for testing!
> 
> > I noticed that the documentation for frame-visible-p says:
> >
> > "If FRAME is a text terminal frame, this always returns t.
> > Such frames are always considered visible, whether or not they are
> > currently being displayed on the terminal."
> >
> > I could see that prior to tty child frames that was necessarily true,
> > but now we have tty child frames shouldn't that documentation be
> > updated? (I'm assuming at the code level it's no longer true since
> > posframe hides it's frames by simply making them invisible).
> 
> Yes, that's right, The visibility thing on ttys is now more like on
> GUIs. We have to change the documentation.

I see you already changed the doc string, by deleting the
special-casing text about TTY frames.  But I'm not sure the situation
on TTY frames is identical to GUI frames, so maybe we still need some
special text about that.  Also, there are other functions related to
frame visibility.

First, there's no "iconified" frames on TTYs, right? so this function
can never return 'icon' in that case, correct?  And I presume
iconify-frame is a no-op for TTY frames?

More importantly, what frames could have this function return nil?
E.g., can a non-child frame return nil?

Also, what do make-frame-visible and raise-frame do with TTY frames
for which frame-visible-p returns nil, and what does
make-frame-invisible do for those TTY frames for which this function
returns non-nil?

Thanks.