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

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Len Trigg <lenbok@HIDDEN>; dated Tue, 24 Dec 2024 05:44:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Feb 2025 03:49:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 25 22:49:12 2025
Received: from localhost ([127.0.0.1]:50144 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tn8Q3-0004uT-La
	for submit <at> debbugs.gnu.org; Tue, 25 Feb 2025 22:49:11 -0500
Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]:42482)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tn8Pz-0004tx-Cv
 for 75056 <at> debbugs.gnu.org; Tue, 25 Feb 2025 22:49:09 -0500
Received: by mail-wr1-x42b.google.com with SMTP id
 ffacd0b85a97d-38f31f7732dso225640f8f.1
 for <75056 <at> debbugs.gnu.org>; Tue, 25 Feb 2025 19:49:07 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1740541741; x=1741146541; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=57Hs9E89Taoh+fI3RaFhviIbSvh22vK8PlDLXv5sbKY=;
 b=cu17MVN8iXVWgcvf23RWAKzpnDLr5eKRd34bldjA0SH7sBTtUJG4PnlI3YjseVaow1
 BIuPJKPL3xYgKin6XslCuz8WJRvq9eR/uErt3In8h1gESfoRjG1cafexLQzgFGRZFZHv
 OF2jn34s+Ab61SONT8CfD9Mi+qeGWZLNd1hcgzW15y5d6tylXnkjv42CmBIEObrq5zMU
 uPNmBRK0oFVII6WP8uCSK3CUhmUhyNDcV5L42iHXyR95isnxk78dceCIJ1aGIxtT852W
 uP73hGHHjyOrIZ04V3SL+0AJMDK/EjvSRidem7Jcggz2QJDD8LrUyJ7YxvZZ40DRmDx1
 FQ4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1740541741; x=1741146541;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=57Hs9E89Taoh+fI3RaFhviIbSvh22vK8PlDLXv5sbKY=;
 b=rSBjLoT/M7J/k/2AwyqjwTTTaRw+ypEbxQLv96hJgXda0KXAXuM+M2JvbOGBAwMQRe
 5PUWwDUb89MA1zjhCix67k7wuv7rg5SksshyJJyYddhyJvQu62b/scEPa/7ndB7x5fTx
 mPPLk9heR2vhxSxsl26Byt8jOusSWzOGoAnZzkYbgQCRNHjTqZYGpnnNfhFg62J2zIpF
 O5IKkl6DwNzo9rZJPjOdWwxni8HKxXPWzWJM84bdUs9jKntpgJ8GUVmR9Z7vB4RNdlnb
 nApvcEjXq7y/kjIbN4XHNWjtt/KrsYQ7NQrhnW3lAuCDsM7uSz3x6dtcSxlQy8uYxd68
 IB+g==
X-Forwarded-Encrypted: i=1;
 AJvYcCVoQkBTcd1Xs46fHATQACUIbx23K4PRUqRZ1m6d0FKZwYy5L1yjvx/BTxi6Ds0crA7NyAsajA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwvuwNoGsi/6rfmQqt0i2CamBf0i/TBP8bwWuTp8xyE+xmU8TE8
 Q/eoXqWFqvjr/0G/lfS01CZ9nVLTjE9dMv+ImCrSeUoaw+lhqooz+aUHWQ==
X-Gm-Gg: ASbGncvvRx/YwwCIdVWGO1ypYAZcC0hmMAL/qR9uWJd69OcxDWgF9yMicc6QnNn4Fyq
 UWmworXCkTnyzsfRIsoKDUMTly+KRGeKpEm+2W6c6YbyK4PUeLhoq066Hsy7LE3Fj18LDKw1i+r
 HEglZm2L5BFXDI97BL0J2w2uCH8q8J1bX3Uw4x6oG/gcgcOpp7ptAW+vUnS3fjJ7YRYfIV6w+C3
 1H0Z7gG/o2m0C9iSqko2NZQ2tSxtW6Yf+XoiU7oeqskZn3N26Ey1qN5Wfsj+88zlUo9Au1YnrcR
 mfaA7+PRozBDipqaiTVxJPUyfxgJ9MTMazzygPfYNaqsJ+ihfwphirR4BG6aY6iERbCm0IH7tkZ
 VXKzo4x8Vhaw6udLqsKxVJvG9VqV4krtmYHU=
X-Google-Smtp-Source: AGHT+IFK5UAZnlbwJ9FFErlX/IfwLUYp0jiT5Geydo/hBe5NScWkyCoHs9eXlq8FS5FcML37ANgtwg==
X-Received: by 2002:a05:6000:2a5:b0:38d:d533:d9a2 with SMTP id
 ffacd0b85a97d-38f615be1bamr18782152f8f.13.1740541740609; 
 Tue, 25 Feb 2025 19:49:00 -0800 (PST)
Received: from pro2 (p200300e0b73c5b0069bab02423ae8cad.dip0.t-ipconnect.de.
 [2003:e0:b73c:5b00:69ba:b024:23ae:8cad])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-390cd8fc1f9sm4051677f8f.88.2025.02.25.19.48.58
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 25 Feb 2025 19:48:59 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <CAOGVwe=s2OHZh5-bQs+wGkKEr3eqKuiv7bGzFD=WE0PdxDoKJw@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m28qqrlkyg.fsf@HIDDEN>
 <a886ab8d-516b-4158-aac4-5afac15a74b6@HIDDEN>
 <m21pwgyw4m.fsf@HIDDEN>
 <338e58ab-e2e1-46c4-9fdc-39214758b0d7@HIDDEN>
 <m2cyfpfup6.fsf@HIDDEN>
 <d541da16-0734-4488-b178-0feb4924be5b@HIDDEN>
 <871F7BC3-A6EB-485A-ABF7-30468945234A@HIDDEN>
 <CAOGVwe=s2OHZh5-bQs+wGkKEr3eqKuiv7bGzFD=WE0PdxDoKJw@HIDDEN>
Date: Wed, 26 Feb 2025 04:48:57 +0100
Message-ID: <m2h64h4b86.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Martin Rudalics <rudalics@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>,
 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Len Trigg <lenbok@HIDDEN> writes:

> I thought I would check in and see if there was any changed behaviour
> with respect to this bug, and things seem to be worse if anything.

Which commit id is that?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Feb 2025 02:29:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Feb 25 21:29:48 2025
Received: from localhost ([127.0.0.1]:49554 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tn7BE-0002kH-MY
	for submit <at> debbugs.gnu.org; Tue, 25 Feb 2025 21:29:48 -0500
Received: from mail-lf1-x12c.google.com ([2a00:1450:4864:20::12c]:56330)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1tn7BC-0002k1-Km
 for 75056 <at> debbugs.gnu.org; Tue, 25 Feb 2025 21:29:47 -0500
Received: by mail-lf1-x12c.google.com with SMTP id
 2adb3069b0e04-5454f00fc8dso5869617e87.0
 for <75056 <at> debbugs.gnu.org>; Tue, 25 Feb 2025 18:29:46 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1740536980; x=1741141780; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=73TLHLyJ9KJ/XOUNiIRaI+PqO/MUjxC6w/VzZtos2bY=;
 b=gEhVoLWfJ4UGSuG4yfBP42aEeVMCzq0hY0yEYX7B4KL9nvrRzQjdLJlvLVqrr9t9F3
 9j0LXJWbP1B8wnxxwQBZCXNyurHDZBpxr2pGqhn1ZAjLfJyLuR7KCUYqSv+nLniX0MiS
 TFghQH5qgex9beQynfGsh9PFQVbd7uu7SLetoV7ClOvjq3xZKQ+Fp0xjmcjksOZMvsPj
 90d3KlUXOYBGNS+3MwdoiggBTRoJP0c8X/xQb/ADvpEwIj9/tJytDBMXhzkowqkkmpS3
 855PKTyzcV94n/AT+sHkvn2BAlCR1Cs8V+73K4EuahTtNHlUkFdqPGAZ51vyOeqkM3Kb
 peJQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1740536980; x=1741141780;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=73TLHLyJ9KJ/XOUNiIRaI+PqO/MUjxC6w/VzZtos2bY=;
 b=fv/cMDHDKVHUrh9729wxZVPT1HZyxIZOZ/vz/KHfi1HtiMSQtsa8TVJTrjsZu23/E3
 vaPfCQ570/0Y/IEg/GDLQ8BnmSj4eqyUiFPxTTnwepAeLY/kR/0bqp0vTCENK6ZuLvEb
 p1aJynWB8UOKqSx7UzgqhtH1DvV1ydjXGf4rtntKj7sKneNFZNGSUWujO8ZPw6tAvC3A
 ISuYtaNPwU5MppL6cF5oFGCCU3+HEe7TPUvU3PtyBC7FJACSOD8/dXEwUgs/HRXhz20I
 kM1UQA66PnaBzZ+ICfobKYRlW7Xhw7VT5spZn/X94ntytSZSz2l3JaiHVyXx2VlNVCco
 nxnw==
X-Forwarded-Encrypted: i=1;
 AJvYcCX/KdCmiK8qWKbghYs3uYih3ggNDSKIIZYoxw7+B1yqvqMFFhNsfNyw858g1Ezy2hmtO2/ikQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzaFYf2yUyrGi4EtRK2TPAtxv/znhUES0CAxAGBtF72qx+L10e3
 aToS6hSIj55z++KumtICj+pUlUTzcwqffmcIVvByITfeHduW7FXpt3EOhYKzxWXSj9wS+8plcHB
 +gVVGTN6mfYG18FgQwWD8Nx0Z4M4=
X-Gm-Gg: ASbGncsvaAABco6zrvEQqoTTZ4RU5UahxAbkHfUhzh/Fvc2c/3uqfdMLZDdp8paQWEN
 kjZUe44KlzOqbFUh4dv4MapC0QFy+UOdlScnCgWUnpuwfqg+hBAQWXOqMilQkIK+lgSKQ1QQNAf
 PbdaOYnmc=
X-Google-Smtp-Source: AGHT+IH1jku6g/J2k5JoVDEontB2e8sZZs5M1ZPnL2JzbA4cUt4MTRBOFUe+RioYHQHDaBeXpdukcpcol8cizbAjcPM=
X-Received: by 2002:a05:6512:1194:b0:545:3031:40aa with SMTP id
 2adb3069b0e04-5493c570f6dmr1600365e87.9.1740536979540; Tue, 25 Feb 2025
 18:29:39 -0800 (PST)
MIME-Version: 1.0
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
 <a886ab8d-516b-4158-aac4-5afac15a74b6@HIDDEN> <m21pwgyw4m.fsf@HIDDEN>
 <338e58ab-e2e1-46c4-9fdc-39214758b0d7@HIDDEN> <m2cyfpfup6.fsf@HIDDEN>
 <d541da16-0734-4488-b178-0feb4924be5b@HIDDEN>
 <871F7BC3-A6EB-485A-ABF7-30468945234A@HIDDEN>
In-Reply-To: <871F7BC3-A6EB-485A-ABF7-30468945234A@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Wed, 26 Feb 2025 15:29:21 +1300
X-Gm-Features: AWEUYZmUA7MP_VmAtVdsUuOi1WMYhdeLruV3rvUsf8qBgiJzHDT6T3e5H3_shrE
Message-ID: <CAOGVwe=s2OHZh5-bQs+wGkKEr3eqKuiv7bGzFD=WE0PdxDoKJw@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Content-Type: multipart/related; boundary="000000000000629fdd062f025896"
X-Debbugs-Envelope-To: 75056
Cc: Martin Rudalics <rudalics@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>,
 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>

--000000000000629fdd062f025896
Content-Type: multipart/alternative; boundary="000000000000629fdc062f025895"

--000000000000629fdc062f025895
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

I thought I would check in and see if there was any changed behaviour with
respect to this bug, and things seem to be worse if anything.

First up, even just with a single tty emacs (i.e. no emacsclient), the
minibuffer behaviour has changed, so that now it seems the minibuffer
appears in both the tty child frame as well as the main tty frame. Steps to
reproduce (again, using my test init.el from OP):

emacs -nw --init-directory=3D~/emacs-test
M-x emacs-version RET
(Note that when typing emacs-version, there are two visible minibuffers).

Secondly, the two tty behaviour seems screwy, in that the first time a
child frame is invoked on the second client, it doesn't get
populated/drawn. Steps:

emacs -nw --init-directory=3D~/emacs-test
Switch to another terminal, side by side so you can see and switch between
both easily
emacsclient -nw
M-x emacs-version RET
(runs fine, other than the two-minibuffer issue mentioned above)
Switch focus back to the first terminal
M-x emacs-version
(note the child frame appears with just the outside border drawn, as shown
below)

[image: image.png]

Third, in a continuation of the two tty scenario, keyboard input (e.g.
moving point) in one client instead takes effect in the other client! Steps=
:

emacs -nw --init-directory=3D~/emacs-test
Switch to another terminal, side by side so you can see and switch between
both easily
emacsclient -nw
M-x emacs-version RET
(runs fine, other than the two-minibuffer issue mentioned above)
Switch focus back to the first terminal
M-x emacs-version RET
(as above, the child frame isn't drawn, but the command itself runs)
Switch focus back to the second client
C-n C-f C-f  (etc)
Note that the cursor is moving within the first client. Similarly, M-x
opens a tty child frame in the first client even though keyboard input is
coming from the second client.




On Sun, 16 Feb 2025 at 18:26, Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
wrote:

>
> On 15. Feb 2025, at 19:20, martin rudalics <rudalics@HIDDEN> wrote:
>
> > Works perfectly, thanks!
>
> There's a problem with moving nested child frames out of their child
> parents.  Load the attached tty-child-frames.el do first M-l and then
> C-M-l.  You should see a grey child frame embedded in an orange child
> frame.  Now do
>
> (set-frame-parameter tty-3 'left (- 30))
>
>
> Yep, I can reproduce it.
>
> Could be a problem with copying glyphs from the child to the root's
> desired matrix because the crash is from invalid glyph contents. When I
> reproduced it, the glyph in question was completely zeroed, for example.
>
> I've made bug#76321 for this. Can take me a bit to fix, I'm afraid.
>

--000000000000629fdc062f025895
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>I thought I would check in and see if there was any c=
hanged behaviour with respect to this bug, and things seem to be worse if a=
nything.</div><div><br></div><div>First up, even just with a single tty ema=
cs (i.e. no emacsclient), the minibuffer behaviour has changed, so that now=
 it seems the minibuffer appears in both the tty child frame as well as the=
 main tty frame. Steps to reproduce (again, using my test init.el from OP):=
</div><div><br></div><div>emacs -nw --init-directory=3D~/emacs-test</div><d=
iv>M-x emacs-version RET<br></div><div>(Note that when typing emacs-version=
, there are two visible minibuffers).</div><div><br></div><div>Secondly, th=
e two tty behaviour seems screwy, in that the first time a child frame is i=
nvoked on the second client, it doesn&#39;t get populated/drawn. Steps:<br>=
</div><div><br></div><div><div>emacs -nw --init-directory=3D~/emacs-test</d=
iv><div>Switch to another terminal, side by side so you can see and switch =
between both easily<br></div><div>emacsclient -nw<br></div><div>M-x emacs-v=
ersion RET<br></div><div>(runs fine, other than the two-minibuffer issue me=
ntioned above)</div><div>Switch focus back to the first terminal<br></div><=
/div><div>M-x emacs-version<br></div><div>(note the child frame appears wit=
h just the outside border drawn, as shown below)</div><div><br></div><div><=
img src=3D"cid:ii_m7ladv760" alt=3D"image.png" width=3D"570" height=3D"286"=
><br></div><div><br></div><div>Third, in a continuation of the two tty scen=
ario, keyboard input (e.g. moving point) in one client instead takes effect=
 in the other client! Steps:<br></div><div><br></div><div><div><div>emacs -=
nw --init-directory=3D~/emacs-test</div><div>Switch to another terminal, si=
de by side so you can see and switch between both easily</div><div>emacscli=
ent -nw<br></div><div>M-x emacs-version RET<br></div><div>(runs fine, other=
 than the two-minibuffer issue mentioned above)</div><div>Switch focus back=
 to the first terminal<br></div></div><div>M-x emacs-version RET</div><div>=
(as above, the child frame isn&#39;t drawn, but the command itself runs)</d=
iv><div>Switch focus back to the second client</div><div>C-n C-f C-f=C2=A0 =
(etc)</div><div>Note that the cursor is moving within the first client. Sim=
ilarly, M-x opens a tty child frame in the first client even though keyboar=
d input is coming from the second client.<br></div><div><br></div></div><di=
v><br></div><div><br></div></div><br><div class=3D"gmail_quote gmail_quote_=
container"><div dir=3D"ltr" class=3D"gmail_attr">On Sun, 16 Feb 2025 at 18:=
26, Gerd M=C3=B6llmann &lt;<a href=3D"mailto:gerd.moellmann@HIDDEN">gerd=
.moellmann@HIDDEN</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quo=
te" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204=
);padding-left:1ex"><div><br><div><blockquote type=3D"cite"><div>On 15. Feb=
 2025, at 19:20, martin rudalics &lt;<a href=3D"mailto:rudalics@HIDDEN" tar=
get=3D"_blank">rudalics@HIDDEN</a>&gt; wrote:</div><br><div><div>&gt; Works=
 perfectly, thanks!<br><br>There&#39;s a problem with moving nested child f=
rames out of their child<br>parents.=C2=A0 Load the attached tty-child-fram=
es.el do first M-l and then<br>C-M-l.=C2=A0 You should see a grey child fra=
me embedded in an orange child<br>frame.=C2=A0 Now do<br><br>(set-frame-par=
ameter tty-3 &#39;left (- 30))<br></div></div></blockquote></div><br><div>Y=
ep, I can reproduce it.=C2=A0</div><div><br></div><div>Could be a problem w=
ith copying glyphs from the child to the root&#39;s desired matrix because =
the crash is from invalid glyph contents. When I reproduced it, the glyph i=
n question was completely zeroed, for example.</div><div><br></div><div>I&#=
39;ve made=C2=A0<span style=3D"color:rgba(0,0,0,0.85);font-family:&quot;Hel=
vetica Neue&quot;">bug#76321 for this. Can take me a bit to fix, I&#39;m af=
raid.=C2=A0</span></div></div></blockquote></div>

--000000000000629fdc062f025895--

--000000000000629fdd062f025896
Content-Type: image/png; name="image.png"
Content-Disposition: inline; filename="image.png"
Content-Transfer-Encoding: base64
Content-ID: <ii_m7ladv760>
X-Attachment-Id: ii_m7ladv760

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
ABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAa
WhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGloc
AAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAA
GlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpa
HAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwA
ABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAa
WhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGloc
AAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAA
GlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpa
HAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwA
ABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAa
WhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGloc
AAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAA
GlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpaHAAAGlocAAAaWhwAABpa
HAAAGlocAAAaWhwAABpDPeA/mKZpvf44nk/3273eAgAwU7vP3WazrVfMixZ/gXEcr9e//df+sXjU
WwAAZmpYDZfLb71iXpbfh596AwAAvCN/cQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAA
aGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGho
cQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEA
AGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABo
aHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhx
AABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAA
aGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGho
cQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEA
AGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABoaHEAAGhocQAAaGhxAABo
aHEAAGhocQAAaDwBAivVU6t5SV0AAAAASUVORK5CYII=
--000000000000629fdd062f025896--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 16 Feb 2025 05:26:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 16 00:26:13 2025
Received: from localhost ([127.0.0.1]:59464 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tjXAT-00013c-3o
	for submit <at> debbugs.gnu.org; Sun, 16 Feb 2025 00:26:13 -0500
Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]:47341)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tjXAQ-00013C-El
 for 75056 <at> debbugs.gnu.org; Sun, 16 Feb 2025 00:26:11 -0500
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-4395dddb07dso34982965e9.2
 for <75056 <at> debbugs.gnu.org>; Sat, 15 Feb 2025 21:26:10 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1739683564; x=1740288364; darn=debbugs.gnu.org;
 h=references:to:cc:in-reply-to:date:subject:mime-version:message-id
 :from:from:to:cc:subject:date:message-id:reply-to;
 bh=zICRVGGJGehjy8XFF/k2bKqFwS/5o9MH7Ook8aWCmEA=;
 b=FbtTuC/+fnZYLj+Idq+WswFhphDv+8Ryv7ONjVolYnOk4D/za/MyCvqwCC2L+zqBLh
 KqXcEGe6ULN9C0QOOVezBeevBiIZE2uLWsnTMF5z5WruMTBAvOUptzSQNelTt2Mtitpf
 GsFPqkSJGmDFjplJ38wl3eAVzMBzOIAVw1vsQlsV2Fo77Y3H8b3WMAhRatliWqX4KPMI
 dtgoJvtT3yJLI356kykATJF5kysxr2NbojNpzaqOvqrsK8UYnVr/YczGjWsUGgkJkvvh
 jIP0VC8cSNDL6Q5GJXotX1RuGKqzv7mx5v4hX1vk16/tFUNsjFAVIFCWNfmnM8fa5xqN
 bl3Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1739683564; x=1740288364;
 h=references:to:cc:in-reply-to:date:subject:mime-version:message-id
 :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=zICRVGGJGehjy8XFF/k2bKqFwS/5o9MH7Ook8aWCmEA=;
 b=h8Z8TUKDgYdbXZHIBdbpQA51IJ70QZ3YOxePFqO6FOEUvSi12sGWLUuDt8GkG2cm0U
 IAw90W8YxvhE9yjiwWAsE/wKbpkcc2HZGLrxbvc3T9iLl2MkGPFSRS4lepmsicRkMa+X
 Hv+b8BO5sSk9ekGpUcboY8YCNmDFs6jVgeG9dO6G5piNukInHPQ0AwFGFKBlOr+soki5
 T5ssmQqPJy9tD8fArk59llaBIzmZHbElXtUw/yz7kXrw3+9Nq3N70LxsfKC82bLJB3m2
 3K0Zf4CfRaQOh/2u4QE8nk+4gCUJfhGIGKnhcbB6ibfOVLWYxacVBpLm5EofPv5gbtxP
 PTWA==
X-Forwarded-Encrypted: i=1;
 AJvYcCXV6nqst6fVVaIWmwDrEcieHg3E7QW5JwYwlHuTnMZF/vUdHxV0UJa7by1feoGTRyKJA79U6g==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxnzY+E/X4vlCHysapxPwRR5XBZE1kP4JuLm/7Tkv+ESU/AfE5X
 BA4PcAvB/LSpJQ/y0Bg3GxDriO1LNDedKVMFg+nBQvKmeNYrZak3
X-Gm-Gg: ASbGncsi3fSTmXeBmk95pdr8a88nghe3YT6Z/4KgwHdmWKS6QCL4BHoXULNeZrcIqc8
 bMwtDx8ltuquQzAhtQX7MBs15PZ9wWwEhH/t6fbHWANXJ2Bvb+A3bh/jMYLxIAV1KZbPZOcm8RD
 ztdOgLMsb63M24vS5AS0PeX7j6t93GXiEdaLzWTtcyirbKa5rYRa+zFCiFDBQqDeyzoO9acngZd
 03cIdOEl8cLWVoOXyADqhikez6lwSGF7Cs3cEanQ2tT5rkE3xwH+FYXnoZvKsMXYa70ky8Mw+Xf
 HRd0KXG63TjsqihCMd56ngVkzhXA+rTX+T2RIUSvPwasWKiWmsGlJmFTKT/yroENSNjNguVXuos
 +xcgTG/dTBwesaAyVzyP2Rffvi+vm56flKqkn1Y7K
X-Google-Smtp-Source: AGHT+IEfsN1jyELzBLepv9/uqpto3FYwImNn7o8e+978YqEajShedjOj3stodAzE/VkrJfPM9hkxYg==
X-Received: by 2002:a5d:65c2:0:b0:38d:eb33:79c2 with SMTP id
 ffacd0b85a97d-38f33f51162mr4039185f8f.32.1739683564038; 
 Sat, 15 Feb 2025 21:26:04 -0800 (PST)
Received: from smtpclient.apple
 (p200300e0b71f65007071482f4a57a4f8.dip0.t-ipconnect.de.
 [2003:e0:b71f:6500:7071:482f:4a57:a4f8])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4396b0aa4e9sm48192075e9.16.2025.02.15.21.26.02
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 15 Feb 2025 21:26:02 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Message-Id: <871F7BC3-A6EB-485A-ABF7-30468945234A@HIDDEN>
Content-Type: multipart/alternative;
 boundary="Apple-Mail=_73CBC9C2-6BA6-4D17-9F01-1799C1B2D99E"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.400.131.1.6\))
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
Date: Sun, 16 Feb 2025 06:25:52 +0100
In-Reply-To: <d541da16-0734-4488-b178-0feb4924be5b@HIDDEN>
To: Martin Rudalics <rudalics@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
 <a886ab8d-516b-4158-aac4-5afac15a74b6@HIDDEN> <m21pwgyw4m.fsf@HIDDEN>
 <338e58ab-e2e1-46c4-9fdc-39214758b0d7@HIDDEN> <m2cyfpfup6.fsf@HIDDEN>
 <d541da16-0734-4488-b178-0feb4924be5b@HIDDEN>
X-Mailer: Apple Mail (2.3826.400.131.1.6)
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)


--Apple-Mail=_73CBC9C2-6BA6-4D17-9F01-1799C1B2D99E
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii


> On 15. Feb 2025, at 19:20, martin rudalics <rudalics@HIDDEN> wrote:
>=20
> > Works perfectly, thanks!
>=20
> There's a problem with moving nested child frames out of their child
> parents.  Load the attached tty-child-frames.el do first M-l and then
> C-M-l.  You should see a grey child frame embedded in an orange child
> frame.  Now do
>=20
> (set-frame-parameter tty-3 'left (- 30))

Yep, I can reproduce it.=20

Could be a problem with copying glyphs from the child to the root's =
desired matrix because the crash is from invalid glyph contents. When I =
reproduced it, the glyph in question was completely zeroed, for example.

I've made bug#76321 for this. Can take me a bit to fix, I'm afraid.=20=

--Apple-Mail=_73CBC9C2-6BA6-4D17-9F01-1799C1B2D99E
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"content-type" content=3D"text/html; =
charset=3Dus-ascii"></head><body style=3D"overflow-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: =
after-white-space;"><br><div><blockquote type=3D"cite"><div>On 15. Feb =
2025, at 19:20, martin rudalics &lt;rudalics@HIDDEN&gt; wrote:</div><br =
class=3D"Apple-interchange-newline"><div><div>&gt; Works perfectly, =
thanks!<br><br>There's a problem with moving nested child frames out of =
their child<br>parents. &nbsp;Load the attached tty-child-frames.el do =
first M-l and then<br>C-M-l. &nbsp;You should see a grey child frame =
embedded in an orange child<br>frame. &nbsp;Now =
do<br><br>(set-frame-parameter tty-3 'left (- =
30))<br></div></div></blockquote></div><br><div>Yep, I can reproduce =
it.&nbsp;</div><div><br></div><div>Could be a problem with copying =
glyphs from the child to the root's desired matrix because the crash is =
from invalid glyph contents. When I reproduced it, the glyph in question =
was completely zeroed, for example.</div><div><br></div><div>I've =
made&nbsp;<span style=3D"color: rgba(0, 0, 0, 0.85); font-family: =
&quot;Helvetica Neue&quot;;">bug#76321 for this. Can take me a bit to =
fix, I'm afraid.&nbsp;</span></div></body></html>=

--Apple-Mail=_73CBC9C2-6BA6-4D17-9F01-1799C1B2D99E--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 15 Feb 2025 18:20:50 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 15 13:20:50 2025
Received: from localhost ([127.0.0.1]:57834 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tjMmY-000244-66
	for submit <at> debbugs.gnu.org; Sat, 15 Feb 2025 13:20:50 -0500
Received: from mout.gmx.net ([212.227.15.19]:49757)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tjMmU-00023h-KH
 for 75056 <at> debbugs.gnu.org; Sat, 15 Feb 2025 13:20:48 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1739643639; x=1740248439; i=rudalics@HIDDEN;
 bh=p93sHm/sy05LJj+yltiQQpP8Jm1xpa6LgpH8ufK3F2s=;
 h=X-UI-Sender-Class:Content-Type:Message-ID:Date:MIME-Version:
 Subject:To:Cc:References:From:In-Reply-To:cc:
 content-transfer-encoding:content-type:date:from:message-id:
 mime-version:reply-to:subject:to;
 b=pMoPzqXC1m3XENyPOwGhbnfkTA29QaXkjPJ2rTS+a9+jundI/FuLOFDrUC+vyxv+
 1gwxvw7f/1U5i5hOVYa7Fj8ugtFnJ7To50vb/j/D8Zmn2Anqd0S/fOXD4t9GlW3Ap
 T6dztDxogMVE1kmfpIYS3mw/fGQKdSZPfpXLiJFic850hD9nj+QMEnrzR+6WbJ497
 +N+jf/biwl2/Aom+r2DsEpB8v/X1XCSmF/Bu+P7oukqLMFHK+K/JXO6F0gSbcnpHI
 VUfEo13dQA7RxofZcwrmn/iS1RQmPm8UmiAiYdworTN3VslRSrvv17JC1TtO4N2ji
 oc0VhzwAlYB+OBgYLw==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.97.148]) by mail.gmx.net (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MhlGk-1t5c6p1qNs-00apu8; Sat, 15
 Feb 2025 19:20:39 +0100
Content-Type: multipart/mixed; boundary="------------Q9wiigK2mheiPO49mq60dAzb"
Message-ID: <d541da16-0734-4488-b178-0feb4924be5b@HIDDEN>
Date: Sat, 15 Feb 2025 19:20:38 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
 <a886ab8d-516b-4158-aac4-5afac15a74b6@HIDDEN> <m21pwgyw4m.fsf@HIDDEN>
 <338e58ab-e2e1-46c4-9fdc-39214758b0d7@HIDDEN> <m2cyfpfup6.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2cyfpfup6.fsf@HIDDEN>
X-Provags-ID: V03:K1:ZXxkYUeBUF8cJv16FC5aFRAJe9wjbAWBf9oCMof680jchDc60Ic
 Ycznx0bwjleNKQlbQjiaHm9J21fmN0oTP5qCzIAeqctKICa8v5nieB/tYSshqbG/lxZRsjh
 QDwtEs1X+6VJuqJXBeBJmr4/gfLmEysD2TcPeUt1UG0nbapyWn2BjhWdKMpV8GXNMpQV6ps
 /2h4kLDsLM2wBsTVFZcxg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:hGOBY5L6py4=;TjhMj2iKYamHoSc/nZKPVadqlKQ
 uqvbXoEKRTFzAZaMzn8XrSUSL4e82SWKfzm6Kw+djLpqgoZYAaOp//u4HBNNfEvOrGzgB+LNq
 cy6qYQCNoZOJJF9Jnf96PD0LnKAFZTaJmzD7xmdair8KsFjd7uHfXgFdmCORchRDyuyX3AvP3
 cTEbwfOfn67mUILmY8P3ftFjs8ols7JHHDk2fkZ+zNRW8cL0MfCrJ6bEn84lporlgPegQt3yh
 bruJuFvHvPS2gMN9Z9/Y49CIRqMfPBObQO1zbeB0V5eKUlKRy8ggMJdORwoXwXCYhriu5N/LF
 kZQDht2uD+Yj606MyfKgfXCwNOkBkiQ4iQvl+TZhAJCdWD95uWBa12/s8PYPuNJi20iMUmhQ1
 4+DF5xek/4sRhdGs4kP69q59pV703mSZXvixPHy+a1EjRyNB/OVdn00QSswpm8JGpXsYmc5s7
 g7DZk1ZX5rsvXy28Z6f7IyDGKM75dxR/1rXE8oBG33q5wa1uP92bqlDNIexqfNQOkKmfx79wv
 RXknEuAVbe/27rGWoxDl9WTlC08YiOI/6F8MjIw/8kkt6vnigP4JGIUtbPSqVd3QG3rpe71HA
 vdIAni1FHUzfg4f7qN4fLEko03gFOhbn8w92gGT0XTQfV+dKbHJdbJPo2Xc92tABVD30t7M3r
 Wr79DMTYGyGE3prrn4JJ6b6CgF/O6IjYkukUN0GzEgeHswJxJGX1Tl4SvQyGkUY/UuWYu3fHu
 sQwgqmlRGaugBgouMy4Xfab/2YtQ/y5eauJz634tjHrvorCDig57pXIAJ+92n16JpPI2itIJK
 ehQ9zyHkS6DJA5s2Y0mnRRsO3RGzUcw9r5mQTe70rsweeeHkV0flrOFbTCvyeddeaiLl8btPl
 wMACxlP6JX3bL/INqQJlZhAx3NB2/twi/AT7QnOdM/BSTYihMYOYGJXo7w2oytP2vsODR+Ezs
 yynVidsMVJCtWiokUzd0qvk/FmNRtiObIPdZuUdBIvbHssTS+1l/y1VIrvAEEwINRT23xK140
 UQtgyWZ0EddD2UDfkVT8jvYvBCp+S03LvtyoXqcbFTT3Y/qiRDxDmpdEy1hMnryIGTqGkJiMD
 w3NNFEgbJy5qD2A5rxwdOBQjRcmsC5jflIzezzKH9boA9cEcLhuNiGLsHH1Ch6A/LD6eh3GI7
 1dYMoYLAuD8TMtVVElphHeRz7R8a2E5E/eRPNK3dMaTiIxe0yrZ3if7JHrv/5vrIngvT9hOdB
 0KlHh0pagTo6Ddhu3zPhw+lzPwrhJ4atFHzPwlj09WGa8HN5MJBDd2gCEFO1LGbMKzOjpXw+p
 JhdgIlOwnSvLgulGhB3Y3Z1teXimunXZOpIMFxh+G8dnJDbALsuOxfnoEKGOKK7BqUV6enxMa
 X0YC3rKuosRMylk6D2XlRcgPXjJejzo8rqSYzhZrT438X8zoYOtw67am03aFGGlAZGuY4ajiS
 wxztkoA==
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

This is a multi-part message in MIME format.
--------------Q9wiigK2mheiPO49mq60dAzb
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

 > Works perfectly, thanks!

There's a problem with moving nested child frames out of their child
parents.  Load the attached tty-child-frames.el do first M-l and then
C-M-l.  You should see a grey child frame embedded in an orange child
frame.  Now do

(set-frame-parameter tty-3 'left (- 30))

This gets me

Program received signal SIGSEGV, Segmentation fault.
0x00000000005497d2 in FACE_FROM_ID (f=0xc383e60, id=0) at ../../src/frame.h:1631
1631	  eassert (0 <= id && id < FRAME_FACE_CACHE (f)->used);
(gdb) bt
#0  0x00000000005497d2 in FACE_FROM_ID (f=0xc383e60, id=0) at ../../src/frame.h:1631
#1  0x000000000054bc11 in tty_write_glyphs (f=0xc2c9d30, string=0x7fb8f65f86e0, len=71) at ../../src/term.c:793
#2  0x00000000005571c2 in write_glyphs (f=0xc2c9d30, string=0x7fb8f65f84b0, len=71) at ../../src/terminal.c:182
#3  0x000000000042c80b in write_row (f=0xc2c9d30, vpos=12, updating_menu_p=false) at ../../src/dispnew.c:5917
#4  0x000000000042bd05 in write_matrix (f=0xc2c9d30, inhibit_id_p=false, updating_menu_p=false) at ../../src/dispnew.c:5698
#5  0x0000000000427544 in combine_updates_for_frame (f=0xc2c9d30, inhibit_scrolling=false) at ../../src/dispnew.c:4001
#6  0x0000000000427880 in combine_updates (roots=XIL(0x7fb8f3a6a0d3)) at ../../src/dispnew.c:4050
#7  0x0000000000483026 in redisplay_internal () at ../../src/xdisp.c:17613
#8  0x00000000004808db in redisplay () at ../../src/xdisp.c:16670
#9  0x00000000005f6708 in read_char (commandflag=1, map=XIL(0x7fb8f3a6ab83), prev_event=XIL(0), used_mouse_menu=0x7ffd6018477f, end_time=0x0) at ../../src/keyboard.c:2672
#10 0x000000000060a767 in read_key_sequence (keybuf=0x7ffd60184930, prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false, disable_text_conversion_p=false) at ../../src/keyboard.c:10757
#11 0x00000000005f2a89 in command_loop_1 () at ../../src/keyboard.c:1424
#12 0x00000000006d02d5 in internal_condition_case (bfun=0x5f265a <command_loop_1>, handlers=XIL(0x90), hfun=0x5f1adc <cmd_error>) at ../../src/eval.c:1602
#13 0x00000000005f2221 in command_loop_2 (handlers=XIL(0x90)) at ../../src/keyboard.c:1163
#14 0x00000000006cf73f in internal_catch (tag=XIL(0x12390), func=0x5f21f7 <command_loop_2>, arg=XIL(0x90)) at ../../src/eval.c:1282
#15 0x00000000005f21b3 in command_loop () at ../../src/keyboard.c:1141
#16 0x00000000005f157e in recursive_edit_1 () at ../../src/keyboard.c:749
#17 0x00000000005f17aa in Frecursive_edit () at ../../src/keyboard.c:832
#18 0x00000000005ecf8c in main (argc=5, argv=0x7ffd60184f68) at ../../src/emacs.c:2558

Lisp Backtrace:
"redisplay_internal (C function)" (0x0)

If you see no simple way to fix this, we can disallow moving child
frames outside their non-root parents.  It's a bit inconsistent because
the scenario works on GUIs and it works for tty child frames with a root
parent.

martin
--------------Q9wiigK2mheiPO49mq60dAzb
Content-Type: text/x-emacs-lisp; charset=UTF-8; name="tty-child-frames.el"
Content-Disposition: attachment; filename="tty-child-frames.el"
Content-Transfer-Encoding: base64

Ozs7ICAtKi0gbGV4aWNhbC1iaW5kaW5nOnQgLSotCihzdGFuZGFyZC1kaXNwbGF5LXVuaWNv
ZGUtc3BlY2lhbC1nbHlwaHMpCjs7IChzZXRxICB0dHktbWVudS1vcGVuLXVzZS10bW0gdCkK
KHVubGVzcyB3aW5kb3ctc3lzdGVtICh4dGVybS1tb3VzZS1tb2RlIDEpKQoKOzsgKHRhYi1i
YXItbW9kZSAxKQo7OyAoc2V0cSBkaXNwbGF5LWxpbmUtbnVtYmVycyB0KQo7OyAoc2V0cSB0
cnVuY2F0ZS1saW5lcyB0KQo7OyAoc2V0cSBhdXRvLWhzY3JvbGwtbW9kZSB0KQo7OyAoc2V0
cSBhdXRvLWhzY3JvbGwtbW9kZSAnY3VycmVudC1saW5lKQoKKGRlZnZhciByb290LWZyYW1l
IChzZWxlY3RlZC1mcmFtZSkpCihkZWZ2YXIgdHR5LTEgbmlsKQooZGVmdmFyIHR0eS0yIG5p
bCkKKGRlZnZhciB0dHktMyBuaWwpCgooZGVmdW4gdHR5LTEgKCkKICAoaW50ZXJhY3RpdmUp
CiAgKHNldHEgdHR5LTEKCShtYWtlLWZyYW1lCgkgYCgocGFyZW50LWZyYW1lIC4gLHJvb3Qt
ZnJhbWUpCgkgICAobGVmdCAuIDYwKSAodG9wIC4gMTApCgkgICAod2lkdGggLiAxNSkgKGhl
aWdodCAuIDEwKQoJICAgKHRvb2wtYmFyLWxpbmVzIC4gMCkKCSAgIChtZW51LWJhci1saW5l
cyAuIDApCgkgICAobWluaWJ1ZmZlciAuIG5pbCkKCSAgIChkcmFnLWludGVybmFsLWJvcmRl
ciAuIHQpCgkgICAoZHJhZy13aXRoLWhlYWRlci1saW5lIC4gdCkKCSAgIChkcmFnLXdpdGgt
bW9kZS1saW5lIC4gdCkKCSAgIChpbnRlcm5hbC1ib3JkZXItd2lkdGggLiAyKQoJICAgKGJv
cmRlci13aWR0aCAuIDApCgkgICAoYmFja2dyb3VuZC1jb2xvciAuICJ5ZWxsb3ciKSkpKQog
IChsZXQgKCh3aW5kb3cgKGZyYW1lLXJvb3Qtd2luZG93IHR0eS0xKSkpCiAgICAoc2V0LXdp
bmRvdy1wYXJhbWV0ZXIKICAgICB3aW5kb3cgJ2hlYWRlci1saW5lLWZvcm1hdCAnKCIgIiAo
OmV2YWwgKGJ1ZmZlci1uYW1lKSkpKSkKICAoc2VsZWN0LWZyYW1lLXNldC1pbnB1dC1mb2N1
cyB0dHktMSkpCgooZGVmdW4gdHR5LTIgKCkKICAoaW50ZXJhY3RpdmUpCiAgKHNldHEgdHR5
LTIKCShtYWtlLWZyYW1lCgkgYCgocGFyZW50LWZyYW1lIC4gLHJvb3QtZnJhbWUpCgkgICAo
bGVmdCAuIDQwKSAodG9wIC4gNSkKCSAgICh3aWR0aCAuIDMwKSAoaGVpZ2h0IC4gMjApCgkg
ICAodG9vbC1iYXItbGluZXMgLiAwKQoJICAgKG1lbnUtYmFyLWxpbmVzIC4gMCkKCSAgICht
aW5pYnVmZmVyIC4gbmlsKQoJICAgKGRyYWctaW50ZXJuYWwtYm9yZGVyIC4gdCkKCSAgIChk
cmFnLXdpdGgtaGVhZGVyLWxpbmUgLiB0KQoJICAgKGRyYWctd2l0aC1tb2RlLWxpbmUgLiB0
KQoJICAgKGludGVybmFsLWJvcmRlci13aWR0aCAuIDIpCgkgICAoYm9yZGVyLXdpZHRoIC4g
MCkKCSAgIChiYWNrZ3JvdW5kLWNvbG9yIC4gIm9yYW5nZSIpKSkpCiAgKGxldCAoKHdpbmRv
dyAoZnJhbWUtcm9vdC13aW5kb3cgdHR5LTIpKSkKICAgIChzZXQtd2luZG93LXBhcmFtZXRl
cgogICAgIHdpbmRvdyAnaGVhZGVyLWxpbmUtZm9ybWF0ICcoIiAiICg6ZXZhbCAoYnVmZmVy
LW5hbWUpKSkpKQogIChzZWxlY3QtZnJhbWUtc2V0LWlucHV0LWZvY3VzIHR0eS0yKSkKCihk
ZWZ1biB0dHktMyAoKQogIChpbnRlcmFjdGl2ZSkKICAoc2V0cSB0dHktMwoJKG1ha2UtZnJh
bWUKCSBgKChwYXJlbnQtZnJhbWUgLiAsdHR5LTIpCgkgICAobGVmdCAuIDEwKSAodG9wIC4g
NSkKCSAgICh3aWR0aCAuIDEwKSAoaGVpZ2h0IC4gNSkKCSAgICh0b29sLWJhci1saW5lcyAu
IDApCgkgICAobWVudS1iYXItbGluZXMgLiAwKQoJICAgKG1pbmlidWZmZXIgLiBuaWwpCgkg
ICAoZHJhZy1pbnRlcm5hbC1ib3JkZXIgLiB0KQoJICAgKGRyYWctd2l0aC1oZWFkZXItbGlu
ZSAuIHQpCgkgICAoZHJhZy13aXRoLW1vZGUtbGluZSAuIHQpCgkgICAoaW50ZXJuYWwtYm9y
ZGVyLXdpZHRoIC4gMikKCSAgIChib3JkZXItd2lkdGggLiAwKQoJICAgKGJhY2tncm91bmQt
Y29sb3IgLiAid2hpdGUiKSkpKQogIChsZXQgKCh3aW5kb3cgKGZyYW1lLXJvb3Qtd2luZG93
IHR0eS0zKSkpCiAgICAoc2V0LXdpbmRvdy1wYXJhbWV0ZXIKICAgICB3aW5kb3cgJ2hlYWRl
ci1saW5lLWZvcm1hdCAnKCIgIiAoOmV2YWwgKGJ1ZmZlci1uYW1lKSkpKSkKICAoc2VsZWN0
LWZyYW1lLXNldC1pbnB1dC1mb2N1cyB0dHktMykpCgooZGVmdW4gdHR5LXRvZ2dsZS0xICgp
CiAgKGludGVyYWN0aXZlKQogIChpZiAoZnJhbWUtbGl2ZS1wIHR0eS0xKQogICAgICAoaWYg
KGZyYW1lLXZpc2libGUtcCB0dHktMSkKCSAgKG1ha2UtZnJhbWUtaW52aXNpYmxlIHR0eS0x
KQoJKG1ha2UtZnJhbWUtdmlzaWJsZSB0dHktMSkpCiAgICAodHR5LTEpKSkKCihkZWZ1biB0
dHktdG9nZ2xlLTIgKCkKICAoaW50ZXJhY3RpdmUpCiAgKGlmIChmcmFtZS1saXZlLXAgdHR5
LTIpCiAgICAgIChpZiAoZnJhbWUtdmlzaWJsZS1wIHR0eS0yKQoJICAobWFrZS1mcmFtZS1p
bnZpc2libGUgdHR5LTIpCgkobWFrZS1mcmFtZS12aXNpYmxlIHR0eS0yKSkKICAgICh0dHkt
MikpKQoKKGRlZnVuIHR0eS10b2dnbGUtMyAoKQogIChpbnRlcmFjdGl2ZSkKICAoaWYgKGZy
YW1lLWxpdmUtcCB0dHktMykKICAgICAgKGlmIChmcmFtZS12aXNpYmxlLXAgdHR5LTMpCgkg
IChtYWtlLWZyYW1lLWludmlzaWJsZSB0dHktMykKCShtYWtlLWZyYW1lLXZpc2libGUgdHR5
LTMpKQogICAgKHR0eS0zKSkpCgooZ2xvYmFsLXNldC1rZXkgWyhjb250cm9sIGwpXSAndHR5
LXRvZ2dsZS0xKQooZ2xvYmFsLXNldC1rZXkgWyhtZXRhIGwpXSAndHR5LXRvZ2dsZS0yKQoo
Z2xvYmFsLXNldC1rZXkgWyhjb250cm9sIG1ldGEgbCldICd0dHktdG9nZ2xlLTMpCgo7OyAo
bG9hZCAiL2hvbWUvbWFydGluL3RlbXAvdHR5LW1lbnUuZWwiKQo7OyAodHR5LW1lbnUtbW9k
ZSkKKHNldHEgZGVidWctb24tZXJyb3IgdCkKOzsgKG1lbnUtYmFyLW9wZW4pCgo7OyAoZ2V0
LWJ1ZmZlci1jcmVhdGUgIipmb28qIikKCjs7IChkZWZ1biBmb28taXQgKCZyZXN0IHJlc3Qp
Cjs7ICAgKHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIqZm9vKiIp
Cjs7ICAgICAoZ290by1jaGFyIChwb2ludC1tYXgpKQo7OyAgICAgKHdoZW4gcmVzdAo7OyAg
ICAgICAoaW5zZXJ0IChmb3JtYXQgIiVzIiAoY2FyIHJlc3QpKSkKOzsgICAgICAgKHNldHEg
cmVzdCAoY2RyIHJlc3QpKQo7OyAgICAgICAod2hpbGUgcmVzdAo7OyAJKGluc2VydCAoZm9y
bWF0ICIgLi4gJXMiIChjYXIgcmVzdCkpKQo7OyAJKHNldHEgcmVzdCAoY2RyIHJlc3QpKSkK
OzsgICAgICAgKGluc2VydCAiXG4iKSkpKQoKOzsgKGRlZnVuIGZvby1pdC1lcmFzZSAoJnJl
c3QgcmVzdCkKOzsgICAod2l0aC1jdXJyZW50LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUg
Iipmb28qIikKOzsgICAgIChlcmFzZS1idWZmZXIpCjs7ICAgICAoZ290by1jaGFyIChwb2lu
dC1tYXgpKQo7OyAgICAgKHdoZW4gcmVzdAo7OyAgICAgICAoaW5zZXJ0IChmb3JtYXQgIiVz
IiAoY2FyIHJlc3QpKSkKOzsgICAgICAgKHNldHEgcmVzdCAoY2RyIHJlc3QpKQo7OyAgICAg
ICAod2hpbGUgcmVzdAo7OyAJKGluc2VydCAoZm9ybWF0ICIgLi4gJXMiIChjYXIgcmVzdCkp
KQo7OyAJKHNldHEgcmVzdCAoY2RyIHJlc3QpKSkKOzsgICAgICAgKGluc2VydCAiXG4iKSkp
KQo=

--------------Q9wiigK2mheiPO49mq60dAzb--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 10 Feb 2025 20:08:47 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 10 15:08:47 2025
Received: from localhost ([127.0.0.1]:52637 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tha5H-0000b3-Dv
	for submit <at> debbugs.gnu.org; Mon, 10 Feb 2025 15:08:47 -0500
Received: from mout.gmx.net ([212.227.17.21]:43475)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tha5E-0000am-0D
 for 75056 <at> debbugs.gnu.org; Mon, 10 Feb 2025 15:08:45 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1739218109; x=1739822909; i=rudalics@HIDDEN;
 bh=Ie3Jy9Y3KqDuC5XnosibvkHm5cfyXD+C27KOG1l2DH0=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=k16xQeV9DPAj2mzOw7s93olOWeO0Cx99fw5r+TOBh9s+k7ayr32GdBF/ptMGuSGs
 WdkFC7MxBE45JNHDUavs4jR0qbFbUbFc5ScHPWBCIyWDKOxfGxmPzVp7Y/UgJhRTg
 DvZEL58iBhkGwBJrvRtnsFHu+iyneRyMtJO/28HZKl1zH4EQeYebcUWkUVP+YYMRg
 HdMiceci8iPYGsjowgXFlca9niRTlLdB6aZDgfPQU4MBOyVgPxZlD/N+yLJc9JCTd
 3WXsuVJhShFzVxT61NUUPHtzvgw7mfdrwjsq6lrQxLcSVWKvLWwM5z6uBf7aeD/zk
 GNsmKJAJq3kORjLX4w==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.219]) by mail.gmx.net (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M4s51-1tiP9v3SRb-009QOD; Mon, 10
 Feb 2025 21:08:28 +0100
Message-ID: <5765dc6c-7802-4481-bbf1-6827533c13c3@HIDDEN>
Date: Mon, 10 Feb 2025 21:08:25 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: Eli Zaretskii <eliz@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
 <a886ab8d-516b-4158-aac4-5afac15a74b6@HIDDEN> <m21pwgyw4m.fsf@HIDDEN>
 <338e58ab-e2e1-46c4-9fdc-39214758b0d7@HIDDEN> <86ldudy50g.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <86ldudy50g.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:1mZsi5IIRlmuSD8HGUOW792mrXEH01p+PStFyozgEnlxWUJWT0p
 /fl9SKQjP6/cFGPek4c2WB/OqHP46ZIiDTA8YSHPB5D/g1Qe5oOUnjPf19ywGx5zmXTjbBf
 o9qU6EVN/WdFam4HORapcGOzQHRwbw8UuWoTO7lpWgq8os8Ep1SAUr8xq/VypqWxUlxirUd
 1vf5wSKnTnFdahaoPgLRQ==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:aWwmWcSzNRc=;o7Fd2OPRFCiCzloGWeMGcJAofk1
 M0KB0VgpB/gr3TTJrqoF5gSZ2Jqr2m4Lo1nEOYBJXMTpfCeRx5tszOEN2aITaZsCN6phAmpvF
 oYb9PNADZ5OdmXWS3PXxhozc+kS3vPV+WXWGVx3alP40qg0RRyBvD3fgzzYZHvIxUtY4qvydF
 kroB3U0sf0qkBw1y1ZZd9zTFQw1qOYZqCK4WAHDqhRH2xF9Cg3wmzkY6XqxN+VUivjcNkQ0fT
 atRDMBRdhm0zkfcupwwjXvScJgZ1m8/UprjLQ05a0cWlaa9rm51a/38fymY/vDleqSU4l81vn
 r0LmPc5SwAm348v9IdtPqj6InsiGzwSKGgI3GWy6ktGaLafNVt0uixZd3KLz/QF99bPmOIxWg
 5e8yIrIPEvZGuK4LLa+DOxa1/HIPaoIC+XY/uGS0uGoHJlxHjvQCmPP0wwz3v+oREdMwvCTQg
 vdzUXf7LKDYMqVcVLJiZWZsgpsqS4oLS4QeVMKFc+AIkkq7N670yp6rJqreSpIcNnKQpTIcEX
 HTJlAYh9OMVjA+cei/2d5m2GcnihBFePEAQkpU2eAVFOCQkC7IxFRpn6sR72zEUu3KKZiN2F6
 rSio2vfME0APQJvJGxC5ndIj7+75l3zV60MbdD/ZLg5Hz6lhjB7/uQGxbJiRAnxwAJt23PKHy
 liNgcGZrcP7V2ov9sl+0oiaUK+qtTwHNnPwFu3U3+dVNMAuvy/D83z0rPxmmuLJpMTTqDtTwG
 1qu0HbGyfp6xw1sCOT3xNFSR4Ge8N+DJJFiL53Y1jnGx75EfvZyx/UvTyeV/t5PAj2t4RaW0S
 vl5HKwvysuUd0RDGdGv67HiONEsBwEeyOYMa9XWHN3hk7ODFLu/du8hU4oKdAmObCPlqaPSOJ
 MvwwphRRI3A7YYSY1o1HKXZYO0LjEp5FL39SOkML+Ax0uqf9wgjyTB99BTfeJLG1YCyMIfC5X
 HToFu4fnj9CRg7wlTfBnJ0pDLKgOvYX1mUZZ4DMxToEnBiiaNZlOdNXe5xtK01IiVdaOfpFci
 T8tky4vqWt/gD9LpcLeSmmndkamlzLUir8cAC7ssX/5+0vEtg60StbSlCB3yLKuuTrWBJNgyI
 oy2+sSqmBdJffyE7vbRl3Swpdx3XXyjFzsZ4kbbCCT2dt354SDmNrimm+15wjBiH0H2RksING
 KPhSoYxo+MVBWLmysZattH6GBgiabJVstVBgSatKt5AFttr2TC+TzTCsMet6GWZES9+BzxXnU
 xWCJSjK/5MzjM0iACH1Ksobrlfp3sEK7NsGFbLvUx5gNTnbEZ3PtXajLOMTnvcPqV+WE97BoF
 4uJ4rJQD4BMu2YgkDAX+bdp89JIvRhI6IAJour7cPU4/fsPQZu/43AbNALgsRQ0vXA4lt7UpF
 FiBabeCkwdxJDsRzdMvEWwsJxKPcEHHb4PqiOy5rRmguslNBN2gO2+t8tgM9+9t1qjUsXJNd3
 IRavSOA==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

 >> I think I fixed that now - having coordinates start at 0 and lines and
 >> columns at 1 is a bit hard to grasp.  Please have a look.
 >
 > Columns do start at zero.

Right.  My problem was that the right outer border of a frame which is
80 columns width and whose left outer border is at column -1 and whose
left edge is at column 0 is at column 79 and not at column 80 as I
thought.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 10 Feb 2025 19:47:47 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 10 14:47:46 2025
Received: from localhost ([127.0.0.1]:52597 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1thZkw-00084N-Ic
	for submit <at> debbugs.gnu.org; Mon, 10 Feb 2025 14:47:46 -0500
Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]:47416)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1thZks-000845-2T
 for 75056 <at> debbugs.gnu.org; Mon, 10 Feb 2025 14:47:44 -0500
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-aaf900cc7fbso805142866b.3
 for <75056 <at> debbugs.gnu.org>; Mon, 10 Feb 2025 11:47:42 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1739216855; x=1739821655; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=gFz7q2gicgweO4xWfEEYO+vgvsHKFHQa8whd1/Y/m0c=;
 b=FkgXdTaLk12ZSSTJZ877bNr6rZ4y8E06XpQxmkFTQB4GfTZK9y8qsis1uqX7anf/MS
 Q8dehKv5hbL9SC49Ui0358dz1SJLaQqa+OIwHMPrtv14RdZu2o2ucNlVSXHgX++v51TO
 00VvRmH/u8rfULHdmzCBCuCfmHsKJaIiBTHQ5t/eEeSsiwkfuJinRAL+gH8yYC96G4ju
 CiiDpbH57os3uoQkyLYhOz9EqSA7qY4FT8W5CRkv/uP1/V7854hKsDoiDy8YsSDfyAU1
 smrqOyhxyRzCqva5yx7eAmTEWBTzcEAElHEkWKJl7DO2MUqe4FzN6RhsLEe/GVjA8N30
 Dibw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1739216855; x=1739821655;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=gFz7q2gicgweO4xWfEEYO+vgvsHKFHQa8whd1/Y/m0c=;
 b=jKnO8BhU9eEr3+mbbMrfjEEQofrukHf0/NS/1mS0287/KoHLx/7MJqOxNp0bF4dzjl
 xugI4Aq6Yc/rN4OZ5Th9A+C8Ed9/5GaSVaGaOtTL4J6l38P58Xcny0aUAnzDnysE6Dwy
 jOdxxAHCKof4nLLpI1EB4qahbBD2Gtua7nAqwbYKDodfDN3y2c4GfV9P8aWPWMPerjys
 DYU2RPGmhA0y9/1H7huTsjuHxrp7NJin2ddltw/nBeAcQo3EqYXz7vZI5IqfBG8eYRSE
 QSy1bTdYlxtn6WK3lcF5Pn4TZKe+fJVDOHRO9Cp7kdRlzIS+j9zoVM3u69gERcSN6ufw
 0DnQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCU3wDDc+q0IVirQGnz9vXIz84IJCLgCVaGjy6ngHUANoK9Gh+kDlpwO5MLh2iAeYad8aj6b3Q==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Ywpkhgg+mItFz4r6VqZWOP0xlGIKyDnhJFGKbt5TX5JQikE5az2
 RPfJO7wTHFPd1y1PUpeFrLSj4fUZUJ3woRLpUGxM3JpgIN2gWK7mDakl1g==
X-Gm-Gg: ASbGncvKwrWjSOhXSMpKzgnCfgcEGzeaBbOKMvPY4kqcUpL28nF8L+sG6iMGQQuSlsB
 my0VqVPL7bDO5xxg0LA5MG9RgdCuhxMphQIJyUWBiQlGUFLHvVmGYZTwbjLmrp7cgA3plzAw36f
 R+40bZtP84wN/2S/ND9pb3TzvMh6ErK8BMVOII67aPjsCTeu+K3QcJj2eK6oTdtIY0D1ToCR5mG
 iA971FqBiWMt/r6VXSrXaD35H6QP7TzyktzZdgLXEfZPlzUGODbgHPH+HThabzqOd3Djt9hWD3z
 Zu0MqYzW8VSux3itQUyvAZF3uCo/S6izfnJOnqlIdHcAVvszXgJPYeH7eHPuXUWB+YXP9SmWwdm
 kHoWPuKlxyeCHg/kga6UcPkf/
X-Google-Smtp-Source: AGHT+IHoJcGJBmBIxFGSShGlPANIKe5xSo3lRg9YQbWedh/OBTlLUVwrSfNitW1Z1NXkLoTwmEOQUg==
X-Received: by 2002:a17:907:c285:b0:ab6:32d2:16d4 with SMTP id
 a640c23a62f3a-ab789c35448mr1568553466b.56.1739216855069; 
 Mon, 10 Feb 2025 11:47:35 -0800 (PST)
Received: from pro2 (p200300e0b72ded006d97dc68cf4df393.dip0.t-ipconnect.de.
 [2003:e0:b72d:ed00:6d97:dc68:cf4d:f393])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab7dd77c151sm7370566b.57.2025.02.10.11.47.34
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 10 Feb 2025 11:47:34 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <338e58ab-e2e1-46c4-9fdc-39214758b0d7@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m28qqrlkyg.fsf@HIDDEN>
 <a886ab8d-516b-4158-aac4-5afac15a74b6@HIDDEN>
 <m21pwgyw4m.fsf@HIDDEN>
 <338e58ab-e2e1-46c4-9fdc-39214758b0d7@HIDDEN>
Date: Mon, 10 Feb 2025 20:47:33 +0100
Message-ID: <m2cyfpfup6.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

> Please have a look.

Works perfectly, thanks!




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 10 Feb 2025 19:27:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 10 14:27:41 2025
Received: from localhost ([127.0.0.1]:52569 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1thZRU-00077l-QG
	for submit <at> debbugs.gnu.org; Mon, 10 Feb 2025 14:27:41 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:56434)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1thZRR-00077W-P5
 for 75056 <at> debbugs.gnu.org; Mon, 10 Feb 2025 14:27:39 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1thZRM-0007cS-9U; Mon, 10 Feb 2025 14:27:32 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=HYC6HCNt7E5qZrNmPqSorRQZod6BWxi4t1b9O77yXFo=; b=MXKgSz20iU29
 cEx3URG+J6g8zKb5SeKBlPbOiyLJejWzgEyokXcInrF0NY+lQUnKQiLq3/cQlkSRB05fPlx0IrPkZ
 jpo3Yk1tSqeLlJikVm3YzyKKImyHqM79RGxQrP1+G646hdk7AZxfwZs9weNv2UCaX67nbZYZT0Pnr
 QTWxL42+O8bRtnt4iVX3s8eLWRRAG3p20YkEz6hRe9x2gu03/iRjouDBdriCfw/AccnbqnnPNKZSK
 o5xf9cVPOzRkkPMyEm27c9gpYG8CYaexQ67GJzr1HLRNs3UHHX+P7/+6zfudE61nMnPMNKCKKvCSU
 xJqN20PWjyEAWCAZqeM+tA==;
Date: Mon, 10 Feb 2025 21:27:27 +0200
Message-Id: <86ldudy50g.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <338e58ab-e2e1-46c4-9fdc-39214758b0d7@HIDDEN> (message from
 martin rudalics on Mon, 10 Feb 2025 18:51:09 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
 <a886ab8d-516b-4158-aac4-5afac15a74b6@HIDDEN> <m21pwgyw4m.fsf@HIDDEN>
 <338e58ab-e2e1-46c4-9fdc-39214758b0d7@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Date: Mon, 10 Feb 2025 18:51:09 +0100
> Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
> From: martin rudalics <rudalics@HIDDEN>
> 
> I think I fixed that now - having coordinates start at 0 and lines and
> columns at 1 is a bit hard to grasp.  Please have a look.

Columns do start at zero.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 10 Feb 2025 17:51:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 10 12:51:33 2025
Received: from localhost ([127.0.0.1]:52341 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1thXwR-0007q0-Gp
	for submit <at> debbugs.gnu.org; Mon, 10 Feb 2025 12:51:33 -0500
Received: from mout.gmx.net ([212.227.17.22]:56703)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1thXwN-0007pg-86
 for 75056 <at> debbugs.gnu.org; Mon, 10 Feb 2025 12:51:29 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1739209872; x=1739814672; i=rudalics@HIDDEN;
 bh=QPhm0rOOmTJNTf37QXsmKS9WxJIFCCwwi7C1FrnoXu4=;
 h=X-UI-Sender-Class:Content-Type:Message-ID:Date:MIME-Version:
 Subject:To:Cc:References:From:In-Reply-To:cc:
 content-transfer-encoding:content-type:date:from:message-id:
 mime-version:reply-to:subject:to;
 b=aQ9uyWeWjJw+QNLCSxCEW4RPnCooznEdMG3wcyf1a5rkDWEfh2WH9SZiEwBeChbb
 mPXA372W+84qluN7TGr17J+V1n+3P/sRmbWS6mJzC4PgfEzZe7Gf4umPMH4c1/pIi
 ip02oGlgmVPcBQutsPFblzBRHoVFERFy5J5kNH1COBb5F1wiCGPeSNVTzTWyWvqEb
 zRifa2mV3P6zeGVdQnjv7nKyBMPwsbgAhnVC3hpEmWGJMSASr3yUmlZzEaus+StuH
 vA6cfBSLJk8CYFAZdNQG1hRgKyXjUaUo6hLR5B0S1J2vM7knaLga2xPlbmilMvDzw
 Q7ECKjZHqAg5DQTa+w==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.219]) by mail.gmx.net (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MHXBp-1tdN5K3JSr-000Ppq; Mon, 10
 Feb 2025 18:51:12 +0100
Content-Type: multipart/mixed; boundary="------------g10vPUGCcPR3uoc6XZn708Q0"
Message-ID: <338e58ab-e2e1-46c4-9fdc-39214758b0d7@HIDDEN>
Date: Mon, 10 Feb 2025 18:51:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
 <a886ab8d-516b-4158-aac4-5afac15a74b6@HIDDEN> <m21pwgyw4m.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m21pwgyw4m.fsf@HIDDEN>
X-Provags-ID: V03:K1:dZucfOKXVoEAUaUd603ebkGkdpuZQjUW4vrfGiRoRDt/ObDn6Mw
 29+0LQDGMZeWDP0Aixqhoq1fKEzhKxjvRb342vHcRasMQawZO5yCqdYvslsxN92XF+bSOrD
 r4yNgKOs+N4XxelBp2XJjsb666PPZyYPP8PpB3R6v3XbHUxNaGjqaaE8MJ9Vaqxqt1S0dpb
 m3ENOJRygJMKTVItuooeQ==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:MgrQtBIGyZg=;PcG493WFwlhKq96+2gHT7b9U4am
 w5ubVn17ePXop9kBiEFwmyehpBufOWZ5U81gIw+8pMfpHGvG+ufdQkpIGgZ30BHi7FBDV6Oeg
 FZefEuwgQB/e0k3QjMXNwZ6yyb6Dn0trunudU3WE8zGOfQ05PGSkjEtvyaEMj4cS94B8XCUCw
 WpE2e3x9SpC5H8SU9mjJtphB4MTRyta8ffmXR8ujCs13FLArKvLVumR59oGpCpxV2a42nj5EM
 XQotj9NGAxRDYq2AeJy6wruULZCpbAQqq7/JuX1k1VaJTCgPR0TUhJA4K9UW0wo9ykf23Z9Od
 o9Trwh/II5XFOhbQTh5u5/xzgDz8NYZxw+tCe9gcqNzpzpip39yci2T+PpT+jhiYvocalXlIM
 LLsqKLAygOXV2u5zv0AXZBZHmII9wjuhLehHn+bspQ8g/0iW22ypIazIqBDk5TY6eGfOxy4iG
 FKFsIFlsILVBJvCg1k6UNbOf5HhtFj12TXsLujCeeBcVKsSHUXix6fcO4+Y1dXxs95B7rzcKo
 u+6KLgjjNvtQhZYDqNJpTklEfDdOGIHt1pna6VHmH0b1a6cFrIUYIPVDtV0QxWX3pQ7p+RzRg
 kIo7PJhDLUgjX5/IjPZCe6I3NUwj8xZone3oP/p+v3cZKetxd8NZbCxp2gU3G4JlEOPkem7CG
 Kbzb+aX/K0m2ioZWCeN9OGhR3DjWUhP1hN20t1g8A793O2buZue22qzLUHe2T6MsDEIn7kOXJ
 o24//iWDvhTpkWxDJgqM+qYKvbrEBXvtZTj4EpcTu76cIfjV8RFbxR2uaTrBFW1Md1b3eUZdw
 Vjzn+NGttRv4KrMAvDwJJ5d5nMtQd5iSquVZXQmbPPBq6VeH6W6FSVum8rGSLV7rfkMQ8kHF5
 IxInfDfiz7yn4rfRJ3bSNJQ2FpKP3RWhMd6g34cQbYOc630YFIKO2uquhIY43kPSVL0UNwMH4
 /J8FmTHYP2UL7LVhUK7dn39LXf1ka3P8HFLoRTlmJp2jvp8Dry4pfBwOiwWCi6CeM6AcRMcwH
 w66RxVOkMe1Z8s1zZO1qYfzNEDBV2sNTXceL4cWd8vPndvM4oK346hZPAe14FPw2UV8bY5tUl
 gtYU8aSkfy/7/D0qKWRdX3PkMXXByBpCv57lhnYXCDkGHB0ywP5ebSF0Dv0CV5917zPvtboqF
 UDWY8sWj+nwqWoKCaagZIbpyNzMh+pg62Mc0mkMIGo8SMH1AEv2ghXp8hXMCMbcr5e1EYTYtD
 hvwAD1xT7ZzfYiFhTek9rBkPkH65IGQhmWHLl7pxHQvUAlmyDmVDmw/eADWm6gkqmtaQiGloY
 OztZ1GZXcJgPVzlBhI9V6ttjM7KoVeLMM4/5+8JBgKeACmVINbxKnU49Udj88kLA4Rcras+aC
 iCRyBg+kScev4IQvGbmTTNjcwQ0aNiA0xZemux7dkM2OLmtPEguDEAPHeQ6exqVSdke6PlhV2
 /9NgJxA==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

This is a multi-part message in MIME format.
--------------g10vPUGCcPR3uoc6XZn708Q0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

 > Works well for me. Only dragging the edges of a child frame doesn't seem
 > to work like in a GUI.

I think I fixed that now - having coordinates start at 0 and lines and
columns at 1 is a bit hard to grasp.  Please have a look.

martin
--------------g10vPUGCcPR3uoc6XZn708Q0
Content-Type: text/x-patch; charset=UTF-8;
 name="child-frame-menubar-drag-resize.diff"
Content-Disposition: attachment;
 filename="child-frame-menubar-drag-resize.diff"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL2xpc3AvbWVudS1iYXIuZWwgYi9saXNwL21lbnUtYmFyLmVsCmluZGV4
IDEzOTExMTA5ZmQ3Li4xNDY5ZGY2MzE2ZiAxMDA2NDQKLS0tIGEvbGlzcC9tZW51LWJhci5l
bAorKysgYi9saXNwL21lbnUtYmFyLmVsCkBAIC0yNjkxLDUzICsyNjkxLDc0IEBAIHBvcHVw
LW1lbnUKIAkJCSAoZmlsdGVyICh3aGVuIChzeW1ib2xwIG1hcCkKIAkJCQkgICAocGxpc3Qt
Z2V0IChnZXQgbWFwICdtZW51LXByb3ApIDpmaWx0ZXIpKSkpCiAJCSAgICAoaWYgZmlsdGVy
IChmdW5jYWxsIGZpbHRlciAoc3ltYm9sLWZ1bmN0aW9uIG1hcCkpIG1hcCkpKSkpCi0JIChm
cmFtZSAoc2VsZWN0ZWQtZnJhbWUpKQorCSAoc2VsZWN0ZWQtZnJhbWUgKHNlbGVjdGVkLWZy
YW1lKSkKKwkgKGZyYW1lIChpZiAoYW5kIChlcSAoZnJhbWVwIHNlbGVjdGVkLWZyYW1lKSB0
KSAoZnJhbWUtcGFyZW50KQorCQkJIGZyb20tbWVudS1iYXIKKwkJCSAoemVyb3AgKG9yIChm
cmFtZS1wYXJhbWV0ZXIgbmlsICdtZW51LWJhci1saW5lcykgMCkpKQorCQkgICAgOzsgSWYg
dGhlIHNlbGVjdGVkIGZyYW1lIGlzIGEgdHR5IGNoaWxkIGZyYW1lCisJCSAgICA7OyB3aXRo
b3V0IGl0cyBvd24gbWVudSBiYXIgYW5kIHdlIGFyZSBjYWxsZWQgZnJvbQorCQkgICAgOzsg
dGhlIG1lbnUgYmFyLCB0aGUgbWVudSBiYXIgbXVzdCBiZSBvbiB0aGUgcm9vdAorCQkgICAg
OzsgZnJhbWUgb2YgdGhlIHNlbGVjdGVkIGZyYW1lLgorCQkgICAgKGZyYW1lLXJvb3QtZnJh
bWUpCisJCSAgKHNlbGVjdGVkLWZyYW1lKSkpCiAJIGV2ZW50IGNtZCkKLSAgICAoaWYgZnJv
bS1tZW51LWJhcgotCShsZXQqICgoeHkgKHBvc24teC15IHBvc2l0aW9uKSkKLQkgICAgICAg
KG1lbnUtc3ltYm9sIChtZW51LWJhci1tZW51LWF0LXgteSAoY2FyIHh5KSAoY2RyIHh5KSkp
KQotCSAgKHNldHEgcG9zaXRpb24gKGxpc3QgbWVudS1zeW1ib2wgKGxpc3QgZnJhbWUgJyht
ZW51LWJhcikKLQkJCQkJCSB4eSAwKSkpKQotICAgICAgKHNldHEgcG9zaXRpb24gKHBvcHVw
LW1lbnUtbm9ybWFsaXplLXBvc2l0aW9uIHBvc2l0aW9uKSkpCi0gICAgOzsgVGhlIGxvb3Bp
bmcgYmVoYXZpb3Igd2FzIHRha2VuIGZyb20gbG1lbnUncyBwb3B1cC1tZW51LXBvcHVwCi0g
ICAgKHdoaWxlIChhbmQgbWFwIChzZXRxIGV2ZW50Ci0JCQkgIDs7IG1hcCBjb3VsZCBiZSBh
IHByZWZpeCBrZXksIGluIHdoaWNoIGNhc2UKLQkJCSAgOzsgd2UgbmVlZCB0byBnZXQgaXRz
IGZ1bmN0aW9uIGNlbGwKLQkJCSAgOzsgZGVmaW5pdGlvbi4KLQkJCSAgKHgtcG9wdXAtbWVu
dSBwb3NpdGlvbiAoaW5kaXJlY3QtZnVuY3Rpb24gbWFwKSkpKQotICAgICAgOzsgU3RyYW5n
ZWx5IHgtcG9wdXAtbWVudSByZXR1cm5zIGEgbGlzdC4KLSAgICAgIDs7IG1vdXNlLW1ham9y
LW1vZGUtbWVudSB3YXMgdXNpbmcgYSB3ZWlyZDoKLSAgICAgIDs7IChrZXktYmluZGluZyAo
YXBwbHkgJ3ZlY3RvciAoYXBwZW5kICcobWVudS1iYXIpIG1lbnUtcHJlZml4IGV2ZW50cykp
KQotICAgICAgKHNldHEgY21kCi0JICAgIChjb25kCi0JICAgICAoKGFuZCBmcm9tLW1lbnUt
YmFyCi0JCSAgIChjb25zcCBldmVudCkKLQkJICAgKG51bWJlcnAgKGNhciBldmVudCkpCi0J
CSAgIChudW1iZXJwIChjZHIgZXZlbnQpKSkKLQkgICAgICAobGV0ICgoeCAoY2FyIGV2ZW50
KSkKLQkJICAgICh5IChjZHIgZXZlbnQpKQotCQkgICAgbWVudS1zeW1ib2wpCi0JCShzZXRx
IG1lbnUtc3ltYm9sIChtZW51LWJhci1tZW51LWF0LXgteSB4IHkpKQotCQkoc2V0cSBwb3Np
dGlvbiAobGlzdCBtZW51LXN5bWJvbCAobGlzdCBmcmFtZSAnKG1lbnUtYmFyKQotCQkJCQkJ
IGV2ZW50IDApKSkKLQkJKHNldHEgbWFwCi0JCSAgICAgIChrZXktYmluZGluZyAodmVjdG9y
ICdtZW51LWJhciBtZW51LXN5bWJvbCkpKSkpCi0JICAgICAoKGFuZCAobm90IChrZXltYXBw
IG1hcCkpIChsaXN0cCBtYXApKQotCSAgICAgIDs7IFdlIHdlcmUgZ2l2ZW4gYSBsaXN0IG9m
IGtleW1hcHMuICBTZWFyY2ggdGhlbSBhbGwKLQkgICAgICA7OyBpbiBzZXF1ZW5jZSB1bnRp
bCBhIGZpcnN0IGJpbmRpbmcgaXMgZm91bmQuCi0JICAgICAgKGxldCAoKG1vdXNlLWNsaWNr
IChhcHBseSAndmVjdG9yIGV2ZW50KSkKLQkJICAgIGJpbmRpbmcpCi0JCSh3aGlsZSAoYW5k
IG1hcCAobnVsbCBiaW5kaW5nKSkKLQkJICAoc2V0cSBiaW5kaW5nIChsb29rdXAta2V5LWln
bm9yZS10b28tbG9uZyAoY2FyIG1hcCkgbW91c2UtY2xpY2spKQotCQkgIChzZXRxIG1hcCAo
Y2RyIG1hcCkpKQotICAgICAgICAgICAgICAgIGJpbmRpbmcpKQotCSAgICAgKHQKLQkgICAg
ICA7OyBXZSB3ZXJlIGdpdmVuIGEgc2luZ2xlIGtleW1hcC4KLQkgICAgICAobG9va3VwLWtl
eSBtYXAgKGFwcGx5ICd2ZWN0b3IgZXZlbnQpKSkpKQotICAgICAgOzsgQ2xlYXIgb3V0IGVj
aG9pbmcsIHdoaWNoIHBlcmhhcHMgc2hvd3MgYSBwcmVmaXggYXJnLgotICAgICAgKG1lc3Nh
Z2UgIiIpCi0gICAgICA7OyBNYXliZSB0cnkgYWdhaW4gYnV0IHdpdGggdGhlIHN1Ym1hcC4K
LSAgICAgIChzZXRxIG1hcCAoaWYgKGtleW1hcHAgY21kKSBjbWQpKSkKKyAgICAod2l0aC1z
ZWxlY3RlZC1mcmFtZSBmcmFtZQorICAgICAgKGlmIGZyb20tbWVudS1iYXIKKwkgIChsZXQq
ICgoeHkgKHBvc24teC15IHBvc2l0aW9uKSkKKwkJIChtZW51LXN5bWJvbCAobWVudS1iYXIt
bWVudS1hdC14LXkgKGNhciB4eSkgKGNkciB4eSkpKSkKKwkgICAgKHNldHEgcG9zaXRpb24g
KGxpc3QgbWVudS1zeW1ib2wgKGxpc3QgZnJhbWUgJyhtZW51LWJhcikKKwkJCQkJCSAgIHh5
IDApKSkpCisJKHNldHEgcG9zaXRpb24gKHBvcHVwLW1lbnUtbm9ybWFsaXplLXBvc2l0aW9u
IHBvc2l0aW9uKSkpCisKKyAgICAgIDs7IFRoZSBsb29waW5nIGJlaGF2aW9yIHdhcyB0YWtl
biBmcm9tIGxtZW51J3MgcG9wdXAtbWVudS1wb3B1cAorICAgICAgKHdoaWxlIChhbmQgbWFw
IChzZXRxIGV2ZW50CisJCQkgICAgOzsgbWFwIGNvdWxkIGJlIGEgcHJlZml4IGtleSwgaW4g
d2hpY2ggY2FzZQorCQkJICAgIDs7IHdlIG5lZWQgdG8gZ2V0IGl0cyBmdW5jdGlvbiBjZWxs
CisJCQkgICAgOzsgZGVmaW5pdGlvbi4KKwkJCSAgICAoeC1wb3B1cC1tZW51IHBvc2l0aW9u
IChpbmRpcmVjdC1mdW5jdGlvbiBtYXApKSkpCisJOzsgU3RyYW5nZWx5IHgtcG9wdXAtbWVu
dSByZXR1cm5zIGEgbGlzdC4KKwk7OyBtb3VzZS1tYWpvci1tb2RlLW1lbnUgd2FzIHVzaW5n
IGEgd2VpcmQ6CisJOzsgKGtleS1iaW5kaW5nIChhcHBseSAndmVjdG9yIChhcHBlbmQgJyht
ZW51LWJhcikgbWVudS1wcmVmaXggZXZlbnRzKSkpCisJKHNldHEgY21kCisJICAgICAgKGNv
bmQKKwkgICAgICAgKChhbmQgZnJvbS1tZW51LWJhcgorCQkgICAgIChjb25zcCBldmVudCkK
KwkJICAgICAobnVtYmVycCAoY2FyIGV2ZW50KSkKKwkJICAgICAobnVtYmVycCAoY2RyIGV2
ZW50KSkpCisJCShsZXQgKCh4IChjYXIgZXZlbnQpKQorCQkgICAgICAoeSAoY2RyIGV2ZW50
KSkKKwkJICAgICAgbWVudS1zeW1ib2wpCisJCSAgKHNldHEgbWVudS1zeW1ib2wgKG1lbnUt
YmFyLW1lbnUtYXQteC15IHggeSkpCisJCSAgKHNldHEgcG9zaXRpb24gKGxpc3QgbWVudS1z
eW1ib2wgKGxpc3QgZnJhbWUgJyhtZW51LWJhcikKKwkJCQkJCQkgZXZlbnQgMCkpKQorCQkg
IChpZiAobm90IChlcSBmcmFtZSBzZWxlY3RlZC1mcmFtZSkpCisJCSAgICAgIDs7IElmIHdl
IGFyZSB1c2luZyB0aGUgbWVudSBiYXIgZnJvbSB0aGUgcm9vdAorCQkgICAgICA7OyBmcmFt
ZSwgbG9vayB1cCB0aGUga2V5IGJpbmRpbmcgaW4gdGhlIGtleW1hcHMKKwkJICAgICAgOzsg
b2YgdGhlIGluaXRpYWxseSBzZWxlY3RlZCB3aW5kb3cncyBidWZmZXIgdG8KKwkJICAgICAg
OzsgbWFrZSBzdXJlIHRoYXQgbmF2aWdhdGluZyB0aGUgbWVudSBiYXIgd2l0aCB0aGUKKwkJ
ICAgICAgOzsga2V5Ym9hcmQgd29ya3MgYXMgaW50ZW5kZWQuCisJCSAgICAgIChzZXRxIG1h
cAorCQkJICAgIChrZXktYmluZGluZyAodmVjdG9yICdtZW51LWJhciBtZW51LXN5bWJvbCkg
bmlsIG5pbAorCQkJCQkgKGZyYW1lLXNlbGVjdGVkLXdpbmRvdyBzZWxlY3RlZC1mcmFtZSkp
KQorCQkgICAgKHNldHEgbWFwCisJCQkgIChrZXktYmluZGluZyAodmVjdG9yICdtZW51LWJh
ciBtZW51LXN5bWJvbCkpKSkpKQorCSAgICAgICAoKGFuZCAobm90IChrZXltYXBwIG1hcCkp
IChsaXN0cCBtYXApKQorCQk7OyBXZSB3ZXJlIGdpdmVuIGEgbGlzdCBvZiBrZXltYXBzLiAg
U2VhcmNoIHRoZW0gYWxsCisJCTs7IGluIHNlcXVlbmNlIHVudGlsIGEgZmlyc3QgYmluZGlu
ZyBpcyBmb3VuZC4KKwkJKGxldCAoKG1vdXNlLWNsaWNrIChhcHBseSAndmVjdG9yIGV2ZW50
KSkKKwkJICAgICAgYmluZGluZykKKwkJICAod2hpbGUgKGFuZCBtYXAgKG51bGwgYmluZGlu
ZykpCisJCSAgICAoc2V0cSBiaW5kaW5nIChsb29rdXAta2V5LWlnbm9yZS10b28tbG9uZyAo
Y2FyIG1hcCkgbW91c2UtY2xpY2spKQorCQkgICAgKHNldHEgbWFwIChjZHIgbWFwKSkpCisJ
CSAgYmluZGluZykpCisJICAgICAgICh0CisJCTs7IFdlIHdlcmUgZ2l2ZW4gYSBzaW5nbGUg
a2V5bWFwLgorCQkobG9va3VwLWtleSBtYXAgKGFwcGx5ICd2ZWN0b3IgZXZlbnQpKSkpKQor
CTs7IENsZWFyIG91dCBlY2hvaW5nLCB3aGljaCBwZXJoYXBzIHNob3dzIGEgcHJlZml4IGFy
Zy4KKwkobWVzc2FnZSAiIikKKwk7OyBNYXliZSB0cnkgYWdhaW4gYnV0IHdpdGggdGhlIHN1
Ym1hcC4KKwkoc2V0cSBtYXAgKGlmIChrZXltYXBwIGNtZCkgY21kKSkpKQorCiAgICAgOzsg
SWYgdGhlIHVzZXIgZGlkIG5vdCBjYW5jZWwgYnkgcmVmdXNpbmcgdG8gc2VsZWN0LAogICAg
IDs7IGFuZCBpZiB0aGUgcmVzdWx0IGlzIGEgY29tbWFuZCwgcnVuIGl0LgogICAgICh3aGVu
IChhbmQgKG51bGwgbWFwKSAoY29tbWFuZHAgY21kKSkKQEAgLTI4MDgsMTQgKzI4MjksMjcg
QEAgbWVudS1iYXItb3BlbgogSWYgRlJBTUUgaXMgbmlsIG9yIG5vdCBnaXZlbiwgdXNlIHRo
ZSBzZWxlY3RlZCBmcmFtZS4iCiAgIChpbnRlcmFjdGl2ZQogICAgKGxpc3QgbmlsIChwcmVm
aXgtbnVtZXJpYy12YWx1ZSBjdXJyZW50LXByZWZpeC1hcmcpKSkKLSAgKGxldCAoKHR5cGUg
KGZyYW1lcCAob3IgZnJhbWUgKHNlbGVjdGVkLWZyYW1lKSkpKSkKKyAgKGxldCogKCh0eXBl
IChmcmFtZXAgKG9yIGZyYW1lIChzZWxlY3RlZC1mcmFtZSkpKSkKKwkgcm9vdAorCSAoZnJh
bWUgKGlmIChhbmQgKGVxIHR5cGUgdCkgKGZyYW1lLXBhcmVudCBmcmFtZSkKKwkJCSAobnVs
bCB0dHktbWVudS1vcGVuLXVzZS10bW0pCisJCQkgKHplcm9wIChvciAoZnJhbWUtcGFyYW1l
dGVyIGZyYW1lICdtZW51LWJhci1saW5lcykgMCkpCisJCQkgKHNldHEgcm9vdCAoZnJhbWUt
cm9vdC1mcmFtZSkpCisJCQkgKG5vdCAoemVyb3AKKwkJCSAgICAgICAob3IgKGZyYW1lLXBh
cmFtZXRlciByb290ICdtZW51LWJhci1saW5lcykgMCkpKSkKKwkJICAgIDs7IElmIEZSQU1F
IGlzIGEgdHR5IGNoaWxkIGZyYW1lIHdpdGhvdXQgaXRzIG93bgorCQkgICAgOzsgbWVudSBi
YXIsICd0dHktbWVudS1vcGVuLXVzZS10bW0nIGlzIGZhbHNlIGFuZAorCQkgICAgOzsgRlJB
TUUncyByb290IGZyYW1lIGhhcyBhIG1lbnUgYmFyLCB1c2UgdGhhdCByb290CisJCSAgICA7
OyBmcmFtZSdzIG1lbnUgYmFyLgorCQkgICAgcm9vdAorCQkgIGZyYW1lKSkpCiAgICAgKGNv
bmQKICAgICAgKChlcSB0eXBlICd4KSAoeC1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAg
KChlcSB0eXBlICd3MzIpICh3MzItbWVudS1iYXItb3BlbiBmcmFtZSkpCiAgICAgICgoZXEg
dHlwZSAnaGFpa3UpIChoYWlrdS1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAgKChlcSB0
eXBlICdwZ3RrKSAocGd0ay1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAgKChhbmQgKG51
bGwgdHR5LW1lbnUtb3Blbi11c2UtdG1tKQotCSAgIChub3QgKHplcm9wIChvciAoZnJhbWUt
cGFyYW1ldGVyIG5pbCAnbWVudS1iYXItbGluZXMpIDApKSkpCisJICAgKG5vdCAoemVyb3Ag
KG9yIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ21lbnUtYmFyLWxpbmVzKSAwKSkpKQogICAg
ICAgOzsgTWFrZSBzdXJlIHRoZSBtZW51IGJhciBpcyB1cCB0byBkYXRlLiAgT25lIHNpdHVh
dGlvbiB3aGVyZQogICAgICAgOzsgdGhpcyBpcyBpbXBvcnRhbnQgaXMgd2hlbiB0aGlzIGZ1
bmN0aW9uIGlzIGludm9rZWQgYnkgbmFtZQogICAgICAgOzsgdmlhIE0teCwgaW4gd2hpY2gg
Y2FzZSB0aGUgbWVudSBiYXIgaW5jbHVkZXMgdGhlICJNaW5pYnVmIgpAQCAtMjgzMSw3ICsy
ODY1LDcgQEAgbWVudS1iYXItb3BlbgogICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50
LWxvY2FsLW1hcCkgKHZlY3RvciAnbWVudS1iYXIgbWVudSkpCiAJCSAgICAgKGNkYXIgKG1p
bm9yLW1vZGUta2V5LWJpbmRpbmcgKHZlY3RvciAnbWVudS1iYXIgbWVudSkpKQogICAgICAg
ICAgICAgICAgICAgICAgKG1vdXNlLW1lbnUtYmFyLW1hcCkpCi0JCSAgICAocG9zbi1hdC14
LXkgeCAwIG5pbCB0KSBuaWwgdCkpKQorCQkgICAgKHBvc24tYXQteC15IHggMCBmcmFtZSB0
KSBuaWwgdCkpKQogICAgICAodCAod2l0aC1zZWxlY3RlZC1mcmFtZSAob3IgZnJhbWUgKHNl
bGVjdGVkLWZyYW1lKSkKICAgICAgICAgICAodG1tLW1lbnViYXIpKSkpKSkKIApkaWZmIC0t
Z2l0IGEvbGlzcC9tb3VzZS5lbCBiL2xpc3AvbW91c2UuZWwKaW5kZXggMWYwY2E2YTUxYjYu
LmUzZTEzZjAzZDliIDEwMDY0NAotLS0gYS9saXNwL21vdXNlLmVsCisrKyBiL2xpc3AvbW91
c2UuZWwKQEAgLTExMTEsNyArMTExMSwxMCBAQCBtb3VzZS1kcmFnLWZyYW1lLXJlc2l6ZQog
CSAoZHJhZy1ib3R0b20gKG1lbXEgcGFydCAnKGJvdHRvbS1yaWdodCBib3R0b20gYm90dG9t
LWxlZnQpKSkKIAkgOzsgSW5pdGlhbCAiZmlyc3QiIG1vdXNlIHBvc2l0aW9uLiAgV2hpbGUg
ZHJhZ2dpbmcgd2UgYmFzZSBhbGwKIAkgOzsgY2FsY3VsYXRpb25zIGFnYWluc3QgdGhhdCBw
b3NpdGlvbi4KLQkgKGZpcnN0LXgteSAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24p
KQorCSAodHR5ICh0dHktdHlwZSBmcmFtZSkpCisJIChmaXJzdC14LXkgKGlmIHR0eQorCQkJ
KG1vdXNlLXBvc2l0aW9uLWluLXJvb3QtZnJhbWUpCisJCSAgICAgIChtb3VzZS1hYnNvbHV0
ZS1waXhlbC1wb3NpdGlvbikpKQogICAgICAgICAgKGZpcnN0LXggKGNhciBmaXJzdC14LXkp
KQogICAgICAgICAgKGZpcnN0LXkgKGNkciBmaXJzdC14LXkpKQogICAgICAgICAgKGV4aXRm
dW4gbmlsKQpAQCAtMTExOSw3ICsxMTIyLDkgQEAgbW91c2UtZHJhZy1mcmFtZS1yZXNpemUK
ICAgICAgICAgICAobGFtYmRhIChldmVudCkKICAgICAgICAgICAgIChpbnRlcmFjdGl2ZSAi
ZSIpCiAgICAgICAgICAgICAod2hlbiAoY29uc3AgZXZlbnQpCi0gICAgICAgICAgICAgIChs
ZXQqICgobGFzdC14LXkgKG1vdXNlLWFic29sdXRlLXBpeGVsLXBvc2l0aW9uKSkKKyAgICAg
ICAgICAgICAgKGxldCogKChsYXN0LXgteSAoaWYgdHR5CisJCQkJICAgKG1vdXNlLXBvc2l0
aW9uLWluLXJvb3QtZnJhbWUpCisJCQkJIChtb3VzZS1hYnNvbHV0ZS1waXhlbC1wb3NpdGlv
bikpKQogCQkgICAgIChsYXN0LXggKGNhciBsYXN0LXgteSkpCiAJCSAgICAgKGxhc3QteSAo
Y2RyIGxhc3QteC15KSkKIAkJICAgICAobGVmdCAoLSBsYXN0LXggZmlyc3QteCkpCkBAIC0x
MjI4LDEwICsxMjMzLDEzIEBAIG1vdXNlLWRyYWctZnJhbWUtbW92ZQogICAgICAgICAgKHBh
cmVudC1ib3R0b20gKGFuZCBwYXJlbnQtZWRnZXMgKG50aCAzIHBhcmVudC1lZGdlcykpKQog
CSA7OyBJbml0aWFsICJmaXJzdCIgbW91c2UgcG9zaXRpb24uICBXaGlsZSBkcmFnZ2luZyB3
ZSBiYXNlIGFsbAogCSA7OyBjYWxjdWxhdGlvbnMgYWdhaW5zdCB0aGF0IHBvc2l0aW9uLgot
CSAoZmlyc3QteC15IChtb3VzZS1hYnNvbHV0ZS1waXhlbC1wb3NpdGlvbikpCi0gICAgICAg
ICAoZmlyc3QteCAoY2FyIGZpcnN0LXgteSkpCi0gICAgICAgICAoZmlyc3QteSAoY2RyIGZp
cnN0LXgteSkpCi0gICAgICAgICA7OyBgc25hcC13aWR0aCcgKG1heWJlIGFsc28gYSB5ZXQg
dG8gYmUgcHJvdmlkZWQgYHNuYXAtaGVpZ2h0JykKKwkgKHR0eSAodHR5LXR5cGUgZnJhbWUp
KQorCSAoZmlyc3QteC15IChpZiB0dHkKKwkJCShtb3VzZS1wb3NpdGlvbi1pbi1yb290LWZy
YW1lKQorCQkgICAgICAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24pKSkKKwkgKGZp
cnN0LXggKGNhciBmaXJzdC14LXkpKQorCSAoZmlyc3QteSAoY2RyIGZpcnN0LXgteSkpCisJ
IDs7IGBzbmFwLXdpZHRoJyAobWF5YmUgYWxzbyBhIHlldCB0byBiZSBwcm92aWRlZCBgc25h
cC1oZWlnaHQnKQogICAgICAgICAgOzsgY291bGQgYmVjb21lIGZsb2F0cyB0byBoYW5kbGUg
cHJvcG9ydGlvbmFsaXR5IHdydCBQQVJFTlQuCiAgICAgICAgICA7OyBXZSBkb24ndCBkbyBh
bnkgY2hlY2tzIG9uIHRoaXMgcGFyYW1ldGVyIHNvIGZhci4KICAgICAgICAgIChzbmFwLXdp
ZHRoIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ3NuYXAtd2lkdGgpKQpAQCAtMTI0Nyw3ICsx
MjU1LDkgQEAgbW91c2UtZHJhZy1mcmFtZS1tb3ZlCiAgICAgICAgICAgKGxhbWJkYSAoZXZl
bnQpCiAgICAgICAgICAgICAoaW50ZXJhY3RpdmUgImUiKQogICAgICAgICAgICAgKHdoZW4g
KGNvbnNwIGV2ZW50KQotICAgICAgICAgICAgICAobGV0KiAoKGxhc3QteC15IChtb3VzZS1h
YnNvbHV0ZS1waXhlbC1wb3NpdGlvbikpCisgICAgICAgICAgICAgIChsZXQqICgobGFzdC14
LXkgKGlmIHR0eQorCQkJCSAgIChtb3VzZS1wb3NpdGlvbi1pbi1yb290LWZyYW1lKQorCQkJ
CSAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24pKSkKIAkJICAgICAobGFzdC14IChj
YXIgbGFzdC14LXkpKQogCQkgICAgIChsYXN0LXkgKGNkciBsYXN0LXgteSkpCiAJCSAgICAg
KGxlZnQgKC0gbGFzdC14IGZpcnN0LXgpKQpkaWZmIC0tZ2l0IGEvbGlzcC94dC1tb3VzZS5l
bCBiL2xpc3AveHQtbW91c2UuZWwKaW5kZXggMjUwZjRlZmViYjQuLjZmMzNjNjVmZjJhIDEw
MDY0NAotLS0gYS9saXNwL3h0LW1vdXNlLmVsCisrKyBiL2xpc3AveHQtbW91c2UuZWwKQEAg
LTMwNCwxOSArMzA0LDM2IEBAIHh0ZXJtLW1vdXNlLWV2ZW50CiAgICAgICAgICAgICAgKHgg
KG9yIChudGggMSBmcmFtZS1hbmQteHkpIHgpKQogICAgICAgICAgICAgICh5IChvciAobnRo
IDIgZnJhbWUtYW5kLXh5KSB5KSkKICAgICAgICAgICAgICAodyAod2luZG93LWF0IHggeSBm
cmFtZSkpCi0gICAgICAgICAgICAgKGx0cmIgKHdpbmRvdy1lZGdlcyB3KSkKLSAgICAgICAg
ICAgICAobGVmdCAobnRoIDAgbHRyYikpCi0gICAgICAgICAgICAgKHRvcCAobnRoIDEgbHRy
YikpCi0gICAgICAgICAgICAgKHBvc24gKGlmIHcKLQkJICAgICAgIChwb3NuLWF0LXgteSAo
LSB4IGxlZnQpICgtIHkgdG9wKSB3IHQpCi0JCSAgICAgKGFwcGVuZCAobGlzdCBuaWwgKGlm
IChhbmQgdGFiLWJhci1tb2RlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAob3IgKG5vdCBtZW51LWJhci1tb2RlKQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IFRoZSB0YWItYmFyIGlz
IG9uIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIDs7IHNlY29uZCByb3cgYmVsb3cgbWVudS1iYXIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXEgeSAxKSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RhYi1iYXIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21lbnUtYmFyKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKG50aGNkciAyIChwb3NuLWF0LXgteSB4IHkgKHNlbGVj
dGVkLWZyYW1lKSkpKSkpCisgICAgICAgICAgICAgKHBvc24KKwkgICAgICAoaWYgdworCQkg
IChsZXQqICgobHRyYiAod2luZG93LWVkZ2VzIHcpKQorCQkJIChsZWZ0IChudGggMCBsdHJi
KSkKKwkJCSAodG9wIChudGggMSBsdHJiKSkpCisJCSAgICAocG9zbi1hdC14LXkgKC0geCBs
ZWZ0KSAoLSB5IHRvcCkgdyB0KSkKKwkJKGxldCAoKGl0ZW0gKGNvbmQKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKChhbmQgbWVudS1iYXItbW9kZSAoZXEgeSAwKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdtZW51LWJhcikKKwkJCSAgICAgKChhbmQgdGFi
LWJhci1tb2RlCisJCQkJICAgKG9yIChhbmQgbWVudS1iYXItbW9kZQorCQkJCQkgICAgKGVx
IHkgMSkpCisJCQkJICAgICAgIChlcSB5IDApKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICd0YWItYmFyKQorCQkJICAgICAoKGVxIHggLTEpCisJCQkgICAgICAoY29uZAor
CQkJICAgICAgICgoZXEgeSAtMSkgJ3RvcC1sZWZ0LWNvcm5lcikKKwkJCSAgICAgICAoKGVx
IHkgKGZyYW1lLWhlaWdodCBmcmFtZSkpICdib3R0b20tbGVmdC1jb3JuZXIpCisJCQkgICAg
ICAgKHQgJ2xlZnQtZWRnZSkpKQorCQkJICAgICAoKGVxIHggKGZyYW1lLXdpZHRoIGZyYW1l
KSkKKwkJCSAgICAgIChjb25kCisJCQkgICAgICAgKChlcSB5IC0xKSAndG9wLXJpZ2h0LWNv
cm5lcikKKwkJCSAgICAgICAoKGVxIHkgKGZyYW1lLWhlaWdodCBmcmFtZSkpICdib3R0b20t
cmlnaHQtY29ybmVyKQorCQkJICAgICAgICh0ICdyaWdodC1lZGdlKSkpCisJCQkgICAgICgo
ZXEgeSAtMSkgJ3RvcC1lZGdlKQorCQkJICAgICAodCAnYm90dG9tLWVkZ2UpKSkpCisJCSAg
KGFwcGVuZCAobGlzdCAodW5sZXNzIChtZW1xIGl0ZW0gJyhtZW51LWJhciB0YWItYmFyKSkK
KwkJCQkgIGZyYW1lKQorCQkJCWl0ZW0pCisJCQkgIChudGhjZHIgMiAocG9zbi1hdC14LXkg
eCB5IChzZWxlY3RlZC1mcmFtZSkpKSkpKSkKICAgICAgICAgICAgICAoZXZlbnQgKGxpc3Qg
dHlwZSBwb3NuKSkpCiAgICAgICAgIChzZXRjYXIgKG50aGNkciAzIHBvc24pIHRpbWVzdGFt
cCkKIApkaWZmIC0tZ2l0IGEvc3JjL2ZyYW1lLmMgYi9zcmMvZnJhbWUuYwppbmRleCAyY2Nk
ZWM2ZmM0MS4uYzFhYTA3OWZkYzAgMTAwNjQ0Ci0tLSBhL3NyYy9mcmFtZS5jCisrKyBiL3Ny
Yy9mcmFtZS5jCkBAIC0xNDgyLDE3ICsxNDgyLDM4IEBAIGdldF9mdXR1cmVfZnJhbWVfcGFy
YW0gKExpc3BfT2JqZWN0IHBhcmFtZXRlciwKICNlbmRpZgogCiBpbnQKLXR0eV9jaGlsZF9w
b3NfcGFyYW0gKHN0cnVjdCBmcmFtZSAqY2hpbGQsIExpc3BfT2JqZWN0IGtleSwKLQkJICAg
ICBMaXNwX09iamVjdCBwYXJhbXMsIGludCBkZmx0KQordHR5X2NoaWxkX3Bvc19wYXJhbSAo
c3RydWN0IGZyYW1lICpmLCBMaXNwX09iamVjdCBrZXksCisJCSAgICAgTGlzcF9PYmplY3Qg
cGFyYW1zLCBpbnQgcG9zKQogeworICBzdHJ1Y3QgZnJhbWUgKnAgPSBYRlJBTUUgKGYtPnBh
cmVudF9mcmFtZSk7CiAgIExpc3BfT2JqZWN0IHZhbCA9IEZhc3NxIChrZXksIHBhcmFtcyk7
CisKICAgaWYgKENPTlNQICh2YWwpKQogICAgIHsKICAgICAgIHZhbCA9IFhDRFIgKHZhbCk7
Ci0gICAgICBpZiAoRklYTlVNUCAodmFsKSkKLQlyZXR1cm4gWEZJWE5VTSAodmFsKTsKKwor
ICAgICAgaWYgKFRZUEVfUkFOR0VEX0ZJWE5VTVAgKGludCwgdmFsKSkKKwl7CisJICBwb3Mg
PSBYRklYTlVNICh2YWwpOworCisJICBpZiAocG9zIDwgMCkKKwkgICAgLyogSGFuZGxlIG5l
Z2F0aXZlIHZhbHVlLiAqLworCSAgICBwb3MgPSBtYXggKEVRIChrZXksIFF0b3ApCisJCSAg
ICAgICA/IHAtPnBpeGVsX2hlaWdodCAtIGYtPnBpeGVsX2hlaWdodCAtIHBvcworCQkgICAg
ICAgOiBwLT5waXhlbF93aWR0aCAtIGYtPnBpeGVsX3dpZHRoIC0gcG9zLAorCQkgICAgICAg
MCk7CisJfQorICAgICAgZWxzZSBpZiAoQ09OU1AgKHZhbCkgJiYgRVEgKFhDQVIgKHZhbCks
IFFwbHVzKQorCSAgICAgICAmJiBDT05TUCAoWENEUiAodmFsKSkKKwkgICAgICAgJiYgVFlQ
RV9SQU5HRURfRklYTlVNUCAoaW50LCBYQ0FSIChYQ0RSICh2YWwpKSkpCisJcG9zID0gWEZJ
WE5VTSAoWENBUiAoWENEUiAodmFsKSkpOworICAgICAgZWxzZSBpZiAoQ09OU1AgKHZhbCkg
JiYgRVEgKFhDQVIgKHZhbCksIFFtaW51cykKKwkgICAgICAgJiYgQ09OU1AgKFhDRFIgKHZh
bCkpCisJICAgICAgICYmIFJBTkdFRF9GSVhOVU1QICgtSU5UX01BWCwgWENBUiAoWENEUiAo
dmFsKSksIElOVF9NQVgpKQorCXBvcyA9IC0gWEZJWE5VTSAoWENBUiAoWENEUiAodmFsKSkp
OwogICAgIH0KLSAgcmV0dXJuIGRmbHQ7CisKKyAgcmV0dXJuIHBvczsKIH0KIAogaW50CkBA
IC0yODY2LDcgKzI4ODcsNyBAQCBERUZVTiAoImRlbGV0ZS1mcmFtZSIsIEZkZWxldGVfZnJh
bWUsIFNkZWxldGVfZnJhbWUsIDAsIDIsICIiLAogICByZXR1cm4gZGVsZXRlX2ZyYW1lIChm
cmFtZSwgIU5JTFAgKGZvcmNlKSA/IFF0IDogUW5pbCk7CiB9CiAMCi0jaWZkZWYgSEFWRV9X
SU5ET1dfU1lTVEVNCisKIC8qKgogICogZnJhbWVfaW50ZXJuYWxfYm9yZGVyX3BhcnQ6CiAg
KgpAQCAtMjg4OSw3ICsyOTEwLDExIEBAIERFRlVOICgiZGVsZXRlLWZyYW1lIiwgRmRlbGV0
ZV9mcmFtZSwgU2RlbGV0ZV9mcmFtZSwgMCwgMiwgIiIsCiBlbnVtIGludGVybmFsX2JvcmRl
cl9wYXJ0CiBmcmFtZV9pbnRlcm5hbF9ib3JkZXJfcGFydCAoc3RydWN0IGZyYW1lICpmLCBp
bnQgeCwgaW50IHkpCiB7Ci0gIGludCBib3JkZXIgPSBGUkFNRV9JTlRFUk5BTF9CT1JERVJf
V0lEVEggKGYpOworICBpbnQgYm9yZGVyID0gKEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURU
SCAoZikKKwkJPyBGUkFNRV9JTlRFUk5BTF9CT1JERVJfV0lEVEggKGYpCisJCTogKGlzX3R0
eV9jaGlsZF9mcmFtZSAoZikgJiYgIUZSQU1FX1VOREVDT1JBVEVEIChmKSkKKwkJPyAxCisJ
CTogMCk7CiAgIGludCBvZmZzZXQgPSBGUkFNRV9MSU5FX0hFSUdIVCAoZik7CiAgIGludCB3
aWR0aCA9IEZSQU1FX1BJWEVMX1dJRFRIIChmKTsKICAgaW50IGhlaWdodCA9IEZSQU1FX1BJ
WEVMX0hFSUdIVCAoZik7CkBAIC0yOTU4LDcgKzI5ODMsNyBAQCBmcmFtZV9pbnRlcm5hbF9i
b3JkZXJfcGFydCAoc3RydWN0IGZyYW1lICpmLCBpbnQgeCwgaW50IHkpCiAKICAgcmV0dXJu
IHBhcnQ7CiB9Ci0jZW5kaWYKKwogCiAvKiBSZXR1cm4gbW91c2UgcG9zaXRpb24gaW4gY2hh
cmFjdGVyIGNlbGwgdW5pdHMuICAqLwogCkBAIC02NTEzLDYgKzY1MzgsMzYgQEAgREVGVU4g
KCJmcmFtZS1wb2ludGVyLXZpc2libGUtcCIsIEZmcmFtZV9wb2ludGVyX3Zpc2libGVfcCwK
ICAgcmV0dXJuIGRlY29kZV9hbnlfZnJhbWUgKGZyYW1lKS0+cG9pbnRlcl9pbnZpc2libGUg
PyBRbmlsIDogUXQ7CiB9CiAKK0RFRlVOICgibW91c2UtcG9zaXRpb24taW4tcm9vdC1mcmFt
ZSIsIEZtb3VzZV9wb3NpdGlvbl9pbl9yb290X2ZyYW1lLAorICAgICAgIFNtb3VzZV9wb3Np
dGlvbl9pbl9yb290X2ZyYW1lLCAwLCAwLCAwLAorICAgICAgIGRvYzogLyogUmV0dXJuIG1v
dXNlIHBvc2l0aW9uIGluIHNlbGVjdGVkIGZyYW1lJ3Mgcm9vdCBmcmFtZS4KK1JldHVybiB0
aGUgcG9zaXRpb24gb2YgYG1vdXNlLXBvc2l0aW9uJyBpbiBjb29yZGluYXRlcyBvZiB0aGUg
cm9vdCBmcmFtZQorb2YgdGhlIGZyYW1lIHJldHVybmVkIGJ5ICdtb3VzZS1wb3NpdGlvbicu
ICAqLykKKyAgKHZvaWQpCit7CisgIExpc3BfT2JqZWN0IHBvcyA9IG1vdXNlX3Bvc2l0aW9u
ICh0cnVlKTsKKyAgTGlzcF9PYmplY3QgZnJhbWUgPSBYQ0FSIChwb3MpOworICBzdHJ1Y3Qg
ZnJhbWUgKmYgPSBYRlJBTUUgKGZyYW1lKTsKKyAgaW50IHggPSBYRklYTlVNIChYQ0FSIChY
Q0RSIChwb3MpKSkgKyBmLT5sZWZ0X3BvczsKKyAgaW50IHkgPSBYRklYTlVNIChYQ0RSIChY
Q0RSIChwb3MpKSkgKyBmLT50b3BfcG9zOworCisgIGlmICghRlJBTUVQIChmcmFtZSkpCisg
ICAgcmV0dXJuIFFuaWw7CisgIGVsc2UKKyAgICB7CisgICAgICBmID0gRlJBTUVfUEFSRU5U
X0ZSQU1FIChmKTsKKworICAgICAgd2hpbGUgKGYpCisJeworCSAgeCA9IHggKyBmLT5sZWZ0
X3BvczsKKwkgIHkgPSB5ICsgZi0+dG9wX3BvczsKKwkgIGYgPSBGUkFNRV9QQVJFTlRfRlJB
TUUgKGYpOworCX0KKworICAgICAgcmV0dXJuIEZjb25zIChtYWtlX2ZpeG51bSAoeCksIG1h
a2VfZml4bnVtICh5KSk7CisgICAgfQorfQorCiBERUZVTiAoImZyYW1lLS1zZXQtd2FzLWlu
dmlzaWJsZSIsIEZmcmFtZV9fc2V0X3dhc19pbnZpc2libGUsCiAgICAgICAgU2ZyYW1lX19z
ZXRfd2FzX2ludmlzaWJsZSwgMiwgMiwgMCwKICAgICAgICBkb2M6IC8qIFNldCBGUkFNRSdz
IHdhcy1pbnZpc2libGUgZmxhZyBpZiBXQVMtSU5WSVNJQkxFIGlzIG5vbi1uaWwuCkBAIC03
Mjg1LDYgKzczNDAsNyBAQCBmb2N1cyAod2hlcmUgYSBmcmFtZSBpbW1lZGlhdGVseSBsb3Nl
cyBmb2N1cyB3aGVuIGl0J3MgbGVmdCBieSB0aGUgbW91c2UKICAgZGVmc3ViciAoJlNmcmFt
ZV9wb3NpdGlvbik7CiAgIGRlZnN1YnIgKCZTc2V0X2ZyYW1lX3Bvc2l0aW9uKTsKICAgZGVm
c3ViciAoJlNmcmFtZV9wb2ludGVyX3Zpc2libGVfcCk7CisgIGRlZnN1YnIgKCZTbW91c2Vf
cG9zaXRpb25faW5fcm9vdF9mcmFtZSk7CiAgIGRlZnN1YnIgKCZTZnJhbWVfX3NldF93YXNf
aW52aXNpYmxlKTsKICAgZGVmc3ViciAoJlNmcmFtZV93aW5kb3dfc3RhdGVfY2hhbmdlKTsK
ICAgZGVmc3ViciAoJlNzZXRfZnJhbWVfd2luZG93X3N0YXRlX2NoYW5nZSk7CmRpZmYgLS1n
aXQgYS9zcmMvZnJhbWUuaCBiL3NyYy9mcmFtZS5oCmluZGV4IGM5Y2M2NWU1OTdkLi5lMjcw
MjFmYTI4MyAxMDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmgKKysrIGIvc3JjL2ZyYW1lLmgKQEAg
LTMxLDYgKzMxLDE5IEBAICNkZWZpbmUgRU1BQ1NfRlJBTUVfSAogICB2ZXJ0aWNhbF9zY3Jv
bGxfYmFyX3JpZ2h0CiB9OwogCitlbnVtIGludGVybmFsX2JvcmRlcl9wYXJ0CisgIHsKKyAg
IElOVEVSTkFMX0JPUkRFUl9OT05FLAorICAgSU5URVJOQUxfQk9SREVSX0xFRlRfRURHRSwK
KyAgIElOVEVSTkFMX0JPUkRFUl9UT1BfTEVGVF9DT1JORVIsCisgICBJTlRFUk5BTF9CT1JE
RVJfVE9QX0VER0UsCisgICBJTlRFUk5BTF9CT1JERVJfVE9QX1JJR0hUX0NPUk5FUiwKKyAg
IElOVEVSTkFMX0JPUkRFUl9SSUdIVF9FREdFLAorICAgSU5URVJOQUxfQk9SREVSX0JPVFRP
TV9SSUdIVF9DT1JORVIsCisgICBJTlRFUk5BTF9CT1JERVJfQk9UVE9NX0VER0UsCisgICBJ
TlRFUk5BTF9CT1JERVJfQk9UVE9NX0xFRlRfQ09STkVSLAorICB9OworCiAjaWZkZWYgSEFW
RV9XSU5ET1dfU1lTVEVNCiAKIGVudW0gZnVsbHNjcmVlbl90eXBlCkBAIC01MywxOSArNjYs
NiBAQCAjZGVmaW5lIEVNQUNTX0ZSQU1FX0gKICAgel9ncm91cF9hYm92ZV9zdXNwZW5kZWQs
CiB9OwogCi1lbnVtIGludGVybmFsX2JvcmRlcl9wYXJ0Ci0gIHsKLSAgIElOVEVSTkFMX0JP
UkRFUl9OT05FLAotICAgSU5URVJOQUxfQk9SREVSX0xFRlRfRURHRSwKLSAgIElOVEVSTkFM
X0JPUkRFUl9UT1BfTEVGVF9DT1JORVIsCi0gICBJTlRFUk5BTF9CT1JERVJfVE9QX0VER0Us
Ci0gICBJTlRFUk5BTF9CT1JERVJfVE9QX1JJR0hUX0NPUk5FUiwKLSAgIElOVEVSTkFMX0JP
UkRFUl9SSUdIVF9FREdFLAotICAgSU5URVJOQUxfQk9SREVSX0JPVFRPTV9SSUdIVF9DT1JO
RVIsCi0gICBJTlRFUk5BTF9CT1JERVJfQk9UVE9NX0VER0UsCi0gICBJTlRFUk5BTF9CT1JE
RVJfQk9UVE9NX0xFRlRfQ09STkVSLAotICB9OwotCiAjaWZkZWYgTlNfSU1QTF9DT0NPQQog
ZW51bSBuc19hcHBlYXJhbmNlX3R5cGUKICAgewpAQCAtMTg2Miw3ICsxODYyLDYgQEAgI2Rl
ZmluZSBFTUFDU19DTEFTUyAiRW1hY3MiCiBleHRlcm4gdm9pZCBzZXRfZnJhbWVfbWVudWJh
ciAoc3RydWN0IGZyYW1lICpmLCBib29sIGRlZXBfcCk7CiBleHRlcm4gdm9pZCBmcmFtZV9z
ZXRfbW91c2VfcGl4ZWxfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgaW50IHBpeF94LCBp
bnQgcGl4X3kpOwogZXh0ZXJuIHZvaWQgZnJlZV9mcmFtZV9tZW51YmFyIChzdHJ1Y3QgZnJh
bWUgKik7Ci1leHRlcm4gZW51bSBpbnRlcm5hbF9ib3JkZXJfcGFydCBmcmFtZV9pbnRlcm5h
bF9ib3JkZXJfcGFydCAoc3RydWN0IGZyYW1lICpmLCBpbnQgeCwgaW50IHkpOwogCiAjaWYg
ZGVmaW5lZCBIQVZFX1hfV0lORE9XUwogZXh0ZXJuIHZvaWQgeF93bV9zZXRfaWNvbl9wb3Np
dGlvbiAoc3RydWN0IGZyYW1lICosIGludCwgaW50KTsKQEAgLTE4ODgsNiArMTg4Nyw4IEBA
IGd1aV9zZXRfYml0bWFwX2ljb24gKHN0cnVjdCBmcmFtZSAqZikKICNlbmRpZiAvKiAhSEFW
RV9OUyAqLwogI2VuZGlmIC8qIEhBVkVfV0lORE9XX1NZU1RFTSAqLwogCitleHRlcm4gZW51
bSBpbnRlcm5hbF9ib3JkZXJfcGFydCBmcmFtZV9pbnRlcm5hbF9ib3JkZXJfcGFydCAoc3Ry
dWN0IGZyYW1lICpmLAorCQkJCQkJCSAgICAgaW50IHgsIGludCB5KTsKIGV4dGVybiBib29s
IGZyYW1lX2FuY2VzdG9yX3AgKHN0cnVjdCBmcmFtZSAqYWYsIHN0cnVjdCBmcmFtZSAqZGYp
OwogCiBJTkxJTkUgdm9pZApkaWZmIC0tZ2l0IGEvc3JjL2tleWJvYXJkLmMgYi9zcmMva2V5
Ym9hcmQuYwppbmRleCBiMjI4MTRkNzAyZC4uNTE2N2IzY2U1YWQgMTAwNjQ0Ci0tLSBhL3Ny
Yy9rZXlib2FyZC5jCisrKyBiL3NyYy9rZXlib2FyZC5jCkBAIC01NTUzLDcgKzU1NTMsNiBA
QCAjZGVmaW5lIElTT19GVU5DVElPTl9LRVlfT0ZGU0VUIDB4ZmUwMAogICBTWU1CT0xfSU5E
RVggKFFyaWdodG1vc3QpLCBTWU1CT0xfSU5ERVggKFFlbmRfc2Nyb2xsKSwgU1lNQk9MX0lO
REVYIChRcmF0aW8pCiB9OwogCi0jaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCiAvKiBBbiBh
cnJheSBvZiBzeW1ib2wgaW5kZXhlcyBvZiBpbnRlcm5hbCBib3JkZXIgcGFydHMsIGluZGV4
ZWQgYnkgYW4gZW51bQogICAgaW50ZXJuYWxfYm9yZGVyX3BhcnQgdmFsdWUuICBOb3RlIHRo
YXQgUW5pbCBjb3JyZXNwb25kcyB0bwogICAgaW50ZXJuYWxfYm9yZGVyX3BhcnRfbm9uZSBh
bmQgc2hvdWxkIG5vdCBhcHBlYXIgaW4gTGlzcCBldmVudHMuICAqLwpAQCAtNTU2NCw3ICs1
NTYzLDYgQEAgI2RlZmluZSBJU09fRlVOQ1RJT05fS0VZX09GRlNFVCAweGZlMDAKICAgU1lN
Qk9MX0lOREVYIChRYm90dG9tX3JpZ2h0X2Nvcm5lciksIFNZTUJPTF9JTkRFWCAoUWJvdHRv
bV9lZGdlKSwKICAgU1lNQk9MX0lOREVYIChRYm90dG9tX2xlZnRfY29ybmVyKQogfTsKLSNl
bmRpZgogCiAvKiBBIHZlY3RvciwgaW5kZXhlZCBieSBidXR0b24gbnVtYmVyLCBnaXZpbmcg
dGhlIGRvd24tZ29pbmcgbG9jYXRpb24KICAgIG9mIGN1cnJlbnRseSBkZXByZXNzZWQgYnV0
dG9ucywgYm90aCBzY3JvbGwgYmFyIGFuZCBub24tc2Nyb2xsIGJhci4KQEAgLTU1OTksNiAr
NTU5Nyw5MCBAQCAjZGVmaW5lIElTT19GVU5DVElPTl9LRVlfT0ZGU0VUIDB4ZmUwMAogCiBz
dGF0aWMgaW50IGRvdWJsZV9jbGlja19jb3VudDsKIAorZW51bSBmcmFtZV9ib3JkZXJfc2lk
ZQoreworICBPTl9MRUZULAorICBPTl9UT1AsCisgIE9OX1JJR0hULAorICBPTl9CT1RUT00s
CisgIE9OX05PTkUKK307CisKKy8qIEhhbmRsZSBtYWtlX2xpc3B5X2V2ZW50IHdoZW4gYSB0
dHkgY2hpbGQgZnJhbWUncyBkZWNvcmF0aW9ucyBzaGFsbCBiZQorICAgdXNlZCBpbiBsaWV1
IG9mIGludGVybmFsIGJvcmRlcnMuICBSIGRlbm90ZXMgdGhlIHJvb3QgZnJhbWUgdW5kZXIK
KyAgIGludmVzdGlnYXRpb24sIE1YIGFuZCBNWSBhcmUgdGhlIHBvc2l0aW9ucyBvZiB0aGUg
bW91c2UgcmVsYXRpdmUgdG8KKyAgIFIuICBXSU5ET1dfT1JfRlJBTUUgZGVub3RlcyB0aGUg
ZnJhbWUgcHJldmlvdXNseSByZXBvcnRlZCBhcyB0aGUKKyAgIGZyYW1lIHVuZGVyIChNWCwg
TVkpLiAgTm90ZTogVGhlIGRlY29yYXRpb25zIG9mIGEgY2hpbGQgZnJhbWUgYXJlCisgICBh
bHdheXMgZHJhd24gb3V0c2lkZSB0aGUgY2hpbGQgZnJhbWUsIHNvIFdJTkRPV19PUl9GUkFN
RSBpcyBjZXJ0YWlubHkKKyAgIG5vdCB0aGUgZnJhbWUgd2UgYXJlIGxvb2tpbmcgZm9yLiAg
TmVpdGhlciBpcyBSLiAgQSBjYW5kaWRhdGUgZnJhbWUKKyAgIGlzIGFueSBmcmFtZSBidXQg
V0lORE9XX09SX0ZSQU1FIGFuZCBSIHdob3NlIHJvb3QgaXMgUiwgd2hpY2ggaXMgbm90Cisg
ICBkZWNvcmF0ZWQgYW5kIGhhcyBhICdkcmFnLWludGVybmFsLWJvcmRlcicgcGFyYW1ldGVy
LiAgSWYgd2UgZmluZCBhCisgICBzdWl0YWJsZSBmcmFtZSwgc2V0IFdJTkRPV19PUl9GUkFN
RSB0byBpdCBhbmQgUE9TTiB0byB0aGUgcGFydCBvZiB0aGUKKyAgIGludGVybmFsIGJvcmRl
ciBjb3JyZXNwb25kaW5nIHRvIChNWCwgTVkpIG9uIHRoZSBmcmFtZSBmb3VuZC4gICovCisK
K3N0YXRpYyB2b2lkCittYWtlX2xpc3B5X3R0eV9wb3NpdGlvbiAoc3RydWN0IGZyYW1lICpy
LCBpbnQgbXgsIGludCBteSwKKwkJCSBMaXNwX09iamVjdCAqd2luZG93X29yX2ZyYW1lLCBM
aXNwX09iamVjdCAqcG9zbikKK3sKKyAgZW51bSBmcmFtZV9ib3JkZXJfc2lkZSBzaWRlID0g
T05fTk9ORTsKKyAgc3RydWN0IGZyYW1lICpmID0gTlVMTDsKKyAgTGlzcF9PYmplY3QgdGFp
bCwgZnJhbWU7CisgIGludCBpeCwgaXkgPSAwOworCisgIEZPUl9FQUNIX0ZSQU1FICh0YWls
LCBmcmFtZSkKKyAgICB7CisgICAgICBmID0gWEZSQU1FIChmcmFtZSk7CisKKyAgICAgIGlu
dCBsZWZ0ID0gZi0+bGVmdF9wb3M7CisgICAgICBpbnQgdG9wID0gZi0+dG9wX3BvczsKKyAg
ICAgIGludCByaWdodCA9IGxlZnQgKyBmLT5waXhlbF93aWR0aDsKKyAgICAgIGludCBib3R0
b20gPSB0b3AgKyBmLT5waXhlbF9oZWlnaHQ7CisKKyAgICAgIGlmIChyb290X2ZyYW1lIChm
KSA9PSByICYmIGYgIT0gcgorCSAgJiYgIUZSQU1FX1VOREVDT1JBVEVEIChmKQorCSAgJiYg
IU5JTFAgKGdldF9mcmFtZV9wYXJhbSAoZiwgUWRyYWdfaW50ZXJuYWxfYm9yZGVyKSkpCisJ
eworCSAgaWYgKGxlZnQgPT0gbXggKyAxICYmIG15ID49IHRvcCAmJiBteSA8PSBib3R0b20p
CisJICAgIHsKKwkgICAgICBzaWRlID0gT05fTEVGVDsKKwkgICAgICBpeCA9IC0xOworCSAg
ICAgIGl5ID0gbXkgLSB0b3AgKyAxOworCSAgICAgIGJyZWFrOworCSAgICB9CisJICBlbHNl
IGlmIChyaWdodCA9PSBteCAmJiBteSA+PSB0b3AgJiYgbXkgPD0gYm90dG9tKQorCSAgICB7
CisJICAgICAgc2lkZSA9IE9OX1JJR0hUOworCSAgICAgIGl4ID0gZi0+cGl4ZWxfd2lkdGg7
CisJICAgICAgaXkgPSBteSAtIHRvcCArIDE7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwkg
IGVsc2UgaWYgKHRvcCA9PSBteSArIDEgJiYgbXggPj0gbGVmdCAmJiBteCA8PSByaWdodCkK
KwkgICAgeworCSAgICAgIHNpZGUgPSBPTl9UT1A7CisJICAgICAgaXggPSBteCAtIGxlZnQg
KyAxOworCSAgICAgIGl5ID0gLTE7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwkgIGVsc2Ug
aWYgKGJvdHRvbSA9PSBteSAmJiBteCA+PSBsZWZ0ICYmIG14IDw9IHJpZ2h0KQorCSAgICB7
CisJICAgICAgc2lkZSA9IE9OX0JPVFRPTTsKKwkgICAgICBpeCA9IG14IC0gbGVmdCArIDE7
CisJICAgICAgaXkgPSBmLT5waXhlbF9oZWlnaHQ7CisJICAgICAgYnJlYWs7CisJICAgIH0K
Kwl9CisgICAgfQorCisgIGlmIChzaWRlICE9IE9OX05PTkUpCisgICAgeworICAgICAgZW51
bSBpbnRlcm5hbF9ib3JkZXJfcGFydCBwYXJ0CisJPSBmcmFtZV9pbnRlcm5hbF9ib3JkZXJf
cGFydCAoZiwgaXgsIGl5KTsKKworICAgICAgWFNFVEZSQU1FICgqd2luZG93X29yX2ZyYW1l
LCBmKTsKKyAgICAgICpwb3NuID0gYnVpbHRpbl9saXNwX3N5bWJvbCAoaW50ZXJuYWxfYm9y
ZGVyX3BhcnRzW3BhcnRdKTsKKyAgICB9Cit9CisKIC8qIFggYW5kIFkgYXJlIGZyYW1lLXJl
bGF0aXZlIGNvb3JkaW5hdGVzIGZvciBhIGNsaWNrIG9yIHdoZWVsIGV2ZW50LgogICAgUmV0
dXJuIGEgTGlzcC1zdHlsZSBldmVudCBsaXN0LiAgKi8KIApAQCAtNTY3Nyw3ICs1NzU5LDE0
IEBAIG1ha2VfbGlzcHlfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmplY3Qg
eCwgTGlzcF9PYmplY3QgeSwKICAgICAgIHdpbmRvd19vcl9mcmFtZSA9IFFuaWw7CS8qIHNl
ZSBhYm92ZSAqLwogICAgIH0KIAotICBpZiAoV0lORE9XUCAod2luZG93X29yX2ZyYW1lKSkK
KyAgaWYgKFdJTkRPV1AgKHdpbmRvd19vcl9mcmFtZSkgJiYgaXNfdHR5X2ZyYW1lIChmKQor
ICAgICAgJiYgKGlzX3R0eV9yb290X2ZyYW1lX3dpdGhfdmlzaWJsZV9jaGlsZCAoZikKKwkg
IHx8IGlzX3R0eV9jaGlsZF9mcmFtZSAoZikpKQorICAgIG1ha2VfbGlzcHlfdHR5X3Bvc2l0
aW9uIChyb290X2ZyYW1lIChmKSwgbXgsIG15LCAmd2luZG93X29yX2ZyYW1lLCAmcG9zbik7
CisKKyAgaWYgKCFOSUxQIChwb3NuKSkKKyAgICA7CisgIGVsc2UgaWYgKFdJTkRPV1AgKHdp
bmRvd19vcl9mcmFtZSkpCiAgICAgewogICAgICAgLyogSXQncyBhIGNsaWNrIGluIHdpbmRv
dyBXSU5ET1cgYXQgZnJhbWUgY29vcmRpbmF0ZXMgKFgsWSkgICovCiAgICAgICBzdHJ1Y3Qg
d2luZG93ICp3ID0gWFdJTkRPVyAod2luZG93X29yX2ZyYW1lKTsKQEAgLTU4ODAsOSArNTk2
OSw3IEBAIG1ha2VfbGlzcHlfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmpl
Y3QgeCwgTGlzcF9PYmplY3QgeSwKICAgICAgIHhyZXQgPSBteDsKICAgICAgIHlyZXQgPSBt
eTsKIAotI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQotICAgICAgaWYgKEZSQU1FX1dJTkRP
V19QIChmKQotCSAgJiYgRlJBTUVfTElWRV9QIChmKQorICAgICAgaWYgKEZSQU1FX0xJVkVf
UCAoZikKIAkgICYmIE5JTFAgKHBvc24pCiAJICAmJiBGUkFNRV9JTlRFUk5BTF9CT1JERVJf
V0lEVEggKGYpID4gMAogCSAgJiYgIU5JTFAgKGdldF9mcmFtZV9wYXJhbSAoZiwgUWRyYWdf
aW50ZXJuYWxfYm9yZGVyKSkpCkBAIC01ODkyLDcgKzU5NzksNiBAQCBtYWtlX2xpc3B5X3Bv
c2l0aW9uIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IHgsIExpc3BfT2JqZWN0IHks
CiAKIAkgIHBvc24gPSBidWlsdGluX2xpc3Bfc3ltYm9sIChpbnRlcm5hbF9ib3JkZXJfcGFy
dHNbcGFydF0pOwogCX0KLSNlbmRpZgogICAgIH0KICAgZWxzZQogICAgIHsKQEAgLTEyNTcy
LDcgKzEyNjU4LDkgQEAgREVGVU4gKCJwb3NuLWF0LXgteSIsIEZwb3NuX2F0X3hfeSwgU3Bv
c25fYXRfeF95LCAyLCA0LCAwLAogICAgICBpbnRvIHRoZSBsZWZ0IGZyaW5nZS4gICovCiAg
IGlmIChYRklYTlVNICh4KSAhPSAtMSkKICAgICBDSEVDS19GSVhOQVQgKHgpOwotICBDSEVD
S19GSVhOQVQgKHkpOworICBDSEVDS19GSVhOVU0gKHkpOworICBpZiAoWEZJWE5VTSAoeSkg
IT0gLTEpCisgICAgQ0hFQ0tfRklYTkFUICh5KTsKIAogICBpZiAoTklMUCAoZnJhbWVfb3Jf
d2luZG93KSkKICAgICBmcmFtZV9vcl93aW5kb3cgPSBzZWxlY3RlZF93aW5kb3c7CmRpZmYg
LS1naXQgYS9zcmMva2V5bWFwLmMgYi9zcmMva2V5bWFwLmMKaW5kZXggNTY5MWIzNGM0MGQu
LmM5OGI4M2RiNjhkIDEwMDY0NAotLS0gYS9zcmMva2V5bWFwLmMKKysrIGIvc3JjL2tleW1h
cC5jCkBAIC0xNjUyLDcgKzE2NTIsOCBAQCBERUZVTiAoImN1cnJlbnQtYWN0aXZlLW1hcHMi
LCBGY3VycmVudF9hY3RpdmVfbWFwcywgU2N1cnJlbnRfYWN0aXZlX21hcHMsCiAgICAgICAg
ZG9jOiAvKiBSZXR1cm4gYSBsaXN0IG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIGtleW1hcHMu
CiBPTFAgaWYgbm9uLW5pbCBpbmRpY2F0ZXMgdGhhdCB3ZSBzaG91bGQgb2JleSBgb3ZlcnJp
ZGluZy1sb2NhbC1tYXAnIGFuZAogYG92ZXJyaWRpbmctdGVybWluYWwtbG9jYWwtbWFwJy4g
IFBPU0lUSU9OIGNhbiBzcGVjaWZ5IGEgY2xpY2sgcG9zaXRpb24KLWxpa2UgaW4gdGhlIHJl
c3BlY3RpdmUgYXJndW1lbnQgb2YgYGtleS1iaW5kaW5nJy4gICovKQorbGlrZSBpbiB0aGUg
cmVzcGVjdGl2ZSBhcmd1bWVudCBvZiBga2V5LWJpbmRpbmcnIG9yIGEgbGl2ZSB3aW5kb3cg
d2hpY2gKK21lYW5zIHRvIHJldHVybiB0aGUgYWN0aXZlIG1hcHMgZm9yIHRoYXQgd2luZG93
J3MgYnVmZmVyLiAgKi8pCiAgIChMaXNwX09iamVjdCBvbHAsIExpc3BfT2JqZWN0IHBvc2l0
aW9uKQogewogICBzcGVjcGRsX3JlZiBjb3VudCA9IFNQRUNQRExfSU5ERVggKCk7CkBAIC0x
NjgyLDYgKzE2ODMsMTYgQEAgREVGVU4gKCJjdXJyZW50LWFjdGl2ZS1tYXBzIiwgRmN1cnJl
bnRfYWN0aXZlX21hcHMsIFNjdXJyZW50X2FjdGl2ZV9tYXBzLAogCSAgc2V0X2J1ZmZlcl9p
bnRlcm5hbCAoWEJVRkZFUiAoWFdJTkRPVyAod2luZG93KS0+Y29udGVudHMpKTsKIAl9CiAg
ICAgfQorICBlbHNlIGlmIChXSU5ET1dfTElWRV9QIChwb3NpdGlvbikpCisgICAgeworICAg
ICAgaWYgKEJVRkZFUlAgKFhXSU5ET1cgKHBvc2l0aW9uKS0+Y29udGVudHMpCisJICAmJiBY
QlVGRkVSIChYV0lORE9XIChwb3NpdGlvbiktPmNvbnRlbnRzKSAhPSBjdXJyZW50X2J1ZmZl
cikKKwl7CisJICAvKiBTZWUgY29tbWVudCBhYm92ZS4gICovCisJICByZWNvcmRfdW53aW5k
X2N1cnJlbnRfYnVmZmVyICgpOworCSAgc2V0X2J1ZmZlcl9pbnRlcm5hbCAoWEJVRkZFUiAo
WFdJTkRPVyAocG9zaXRpb24pLT5jb250ZW50cykpOworCX0KKyAgICB9CiAKICAgaWYgKCFO
SUxQIChvbHApCiAgICAgICAvKiBUaGUgZG9jIHNhaWQgdGhhdCBvdmVycmlkaW5nLXRlcm1p
bmFsLWxvY2FsLW1hcCBzaG91bGQKZGlmZiAtLWdpdCBhL3NyYy90ZXJtLmMgYi9zcmMvdGVy
bS5jCmluZGV4IGZkOTVlNzVhMDA3Li4yZWY3NjNkMGZmYyAxMDA2NDQKLS0tIGEvc3JjL3Rl
cm0uYworKysgYi9zcmMvdGVybS5jCkBAIC0yNjU4LDEyICsyNjU4LDY4IEBAIHR0eV9mcmFt
ZV9hdCAoaW50IHgsIGludCB5LCBpbnQgKmN4LCBpbnQgKmN5KQogICAgICAgTGlzcF9PYmpl
Y3QgZnJhbWUgPSBGY2FyIChmcmFtZXMpOwogICAgICAgc3RydWN0IGZyYW1lICpmID0gWEZS
QU1FIChmcmFtZSk7CiAgICAgICBpbnQgZngsIGZ5OworICAgICAgYm9vbCBvbl9ib3JkZXIg
PSBmYWxzZTsKKwogICAgICAgcm9vdF94eSAoZiwgMCwgMCwgJmZ4LCAmZnkpOwogCi0gICAg
ICBpZiAoKGZ4IDw9IHggJiYgeCA8IGZ4ICsgZi0+cGl4ZWxfd2lkdGgpCi0JICAmJiAoZnkg
PD0geSAmJiB5IDwgZnkgKyBmLT5waXhlbF9oZWlnaHQpKQorICAgICAgaWYgKCFGUkFNRV9V
TkRFQ09SQVRFRCAoZikgJiYgRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSkKKwl7CisJICBpZiAo
ZnkgLSAxIDw9IHkgJiYgeSA8PSBmeSArIGYtPnBpeGVsX2hlaWdodCArIDEpCisJICAgIHsK
KwkgICAgICBpZiAoZnggPT0geCArIDEpCisJCXsKKwkJICAqY3ggPSAtMTsKKwkJICBvbl9i
b3JkZXIgPSB0cnVlOworCQl9CisJICAgICAgZWxzZSBpZiAoZnggKyBmLT5waXhlbF93aWR0
aCA9PSB4KQorCQl7CisJCSAgKmN4ID0gZi0+cGl4ZWxfd2lkdGg7CisJCSAgb25fYm9yZGVy
ID0gdHJ1ZTsKKwkJfQorCisJICAgICAgaWYgKG9uX2JvcmRlcikKKwkJeworCQkgICpjeSA9
IHkgLSBmeTsKKworCQkgIHJldHVybiBmcmFtZTsKKwkJfQorCSAgICB9CisKKwkgIGlmIChm
eCAtIDEgPD0geCAmJiB4IDw9IGZ4ICsgZi0+cGl4ZWxfd2lkdGggKyAxKQorCSAgICB7CisJ
ICAgICAgaWYgKGZ5ID09IHkgKyAxKQorCQl7CisJCSAgKmN5ID0gLTE7CisJCSAgb25fYm9y
ZGVyID0gdHJ1ZTsKKwkJfQorCSAgICAgIGVsc2UgaWYgKGZ5ICsgZi0+cGl4ZWxfaGVpZ2h0
ID09IHkpCisJCXsKKwkJICAqY3kgPSBmLT5waXhlbF9oZWlnaHQ7CisJCSAgb25fYm9yZGVy
ID0gdHJ1ZTsKKwkJfQorCisJICAgICAgaWYgKG9uX2JvcmRlcikKKwkJeworCQkgICpjeCA9
IHggLSBmeDsKKworCQkgIHJldHVybiBmcmFtZTsKKwkJfQorCSAgICB9CisKKworCSAgaWYg
KChmeCA8PSB4ICYmIHggPD0gZnggKyBmLT5waXhlbF93aWR0aCkKKwkgICAgICAmJiAoZnkg
PD0geSAmJiB5IDw9IGZ5ICsgZi0+cGl4ZWxfaGVpZ2h0KSkKKwkgICAgeworCSAgICAgIGNo
aWxkX3h5IChYRlJBTUUgKGZyYW1lKSwgeCwgeSwgY3gsIGN5KTsKKworCSAgICAgIHJldHVy
biBmcmFtZTsKKwkgICAgfQorCX0KKyAgICAgIGVsc2UgaWYgKChmeCA8PSB4ICYmIHggPD0g
ZnggKyBmLT5waXhlbF93aWR0aCkKKwkgICAgICAgJiYgKGZ5IDw9IHkgJiYgeSA8PSBmeSAr
IGYtPnBpeGVsX2hlaWdodCkpCiAJewogCSAgY2hpbGRfeHkgKFhGUkFNRSAoZnJhbWUpLCB4
LCB5LCBjeCwgY3kpOworCiAJICByZXR1cm4gZnJhbWU7CiAJfQogICAgIH0KQEAgLTI2NzMs
NyArMjcyOSw3IEBAIHR0eV9mcmFtZV9hdCAoaW50IHgsIGludCB5LCBpbnQgKmN4LCBpbnQg
KmN5KQogfQogCiBERUZVTiAoInR0eS1mcmFtZS1hdCIsIEZ0dHlfZnJhbWVfYXQsIFN0dHlf
ZnJhbWVfYXQsIDIsIDIsIDAsCi0gICAgICAgZG9jIDogLyogUmV0dXJuIHR0eSBmcmFtZSBj
b250YWluaW5nIGFic29sdXRlIHBpeGVsIHBvc2l0aW9uIChYLCBZKS4KKyAgICAgICBkb2M6
IC8qIFJldHVybiB0dHkgZnJhbWUgY29udGFpbmluZyBhYnNvbHV0ZSBwaXhlbCBwb3NpdGlv
biAoWCwgWSkuCiBWYWx1ZSBpcyBuaWwgaWYgbm8gZnJhbWUgZm91bmQuICBPdGhlcndpc2Ug
aXQgaXMgYSBsaXN0IChGUkFNRSBDWCBDWSksCiB3aGVyZSBGUkFNRSBpcyB0aGUgZnJhbWUg
Y29udGFpbmluZyAoWCwgWSkgYW5kIENYIGFuZCBDWSBhcmUgWCBhbmQgWQogcmVsYXRpdmUg
dG8gRlJBTUUuICAqLykKQEAgLTI2ODcsNiArMjc0Myw3IEBAIERFRlVOICgidHR5LWZyYW1l
LWF0IiwgRnR0eV9mcmFtZV9hdCwgU3R0eV9mcmFtZV9hdCwgMiwgMiwgMCwKICAgTGlzcF9P
YmplY3QgZnJhbWUgPSB0dHlfZnJhbWVfYXQgKFhGSVhOVU0gKHgpLCBYRklYTlVNICh5KSwg
JmN4LCAmY3kpOwogICBpZiAoTklMUCAoZnJhbWUpKQogICAgIHJldHVybiBRbmlsOworCiAg
IHJldHVybiBsaXN0MyAoZnJhbWUsIG1ha2VfZml4bnVtIChjeCksIG1ha2VfZml4bnVtIChj
eSkpOwogfQogCmRpZmYgLS1naXQgYS9zcmMvd2luZG93LmMgYi9zcmMvd2luZG93LmMKaW5k
ZXggMzMwYTk1YTcxNmYuLjFhYzAwNGFmNWUwIDEwMDY0NAotLS0gYS9zcmMvd2luZG93LmMK
KysrIGIvc3JjL3dpbmRvdy5jCkBAIC0xNzU4LDYgKzE3NTgsMTMgQEAgREVGVU4gKCJ3aW5k
b3ctYXQiLCBGd2luZG93X2F0LCBTd2luZG93X2F0LCAyLCAzLCAwLAogewogICBzdHJ1Y3Qg
ZnJhbWUgKmYgPSBkZWNvZGVfbGl2ZV9mcmFtZSAoZnJhbWUpOwogCisgIENIRUNLX0lOVEVH
RVIgKHgpOworICBDSEVDS19JTlRFR0VSICh5KTsKKworICBpZiAoWEZJWE5VTSAoeCkgPCAw
IHx8IFhGSVhOVU0gKHgpID4gRlJBTUVfUElYRUxfV0lEVEggKGYpCisgICAgICB8fCBYRklY
TlVNICh5KSA8IDAgfHwgWEZJWE5VTSAoeSkgPiBGUkFNRV9QSVhFTF9IRUlHSFQgKGYpKQor
ICAgIHJldHVybiBRbmlsOworCiAgIENIRUNLX05VTUJFUiAoeCk7CiAgIENIRUNLX05VTUJF
UiAoeSk7CiAKZGlmZiAtLWdpdCBhL3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMKaW5kZXgg
YzliY2FmZTU3ZmQuLmM0NWFhOGExYmIwIDEwMDY0NAotLS0gYS9zcmMveGRpc3AuYworKysg
Yi9zcmMveGRpc3AuYwpAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAgI2RlZmluZSBUSElOX1NQQUNF
X1dJRFRIIDEKIAkJCQkgc3RydWN0IGdseXBoX21hdHJpeCAqLCBwdHJkaWZmX3QsIHB0cmRp
ZmZfdCwKIAkJCQkgaW50LCBpbnQpOwogc3RhdGljIGJvb2wgY3Vyc29yX3Jvd19mdWxseV92
aXNpYmxlX3AgKHN0cnVjdCB3aW5kb3cgKiwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1zdGF0aWMg
Ym9vbCB1cGRhdGVfbWVudV9iYXIgKHN0cnVjdCBmcmFtZSAqLCBib29sLCBib29sKTsKK3N0
YXRpYyBib29sIHVwZGF0ZV9tZW51X2JhciAoc3RydWN0IGZyYW1lICosIGJvb2wsIGJvb2ws
IHN0cnVjdCB3aW5kb3cgKik7CiBzdGF0aWMgYm9vbCB0cnlfd2luZG93X3JldXNpbmdfY3Vy
cmVudF9tYXRyaXggKHN0cnVjdCB3aW5kb3cgKik7CiBzdGF0aWMgaW50IHRyeV93aW5kb3df
aWQgKHN0cnVjdCB3aW5kb3cgKik7CiBzdGF0aWMgdm9pZCBtYXliZV9wcm9kdWNlX2xpbmVf
bnVtYmVyIChzdHJ1Y3QgaXQgKik7CkBAIC0xNDA2NCwxMyArMTQwNjQsMzIgQEAgcHJlcGFy
ZV9tZW51X2JhcnMgKHZvaWQpCiAgICAgICAvKiBUcnVlIG1lYW5zIHRoYXQgdXBkYXRlX21l
bnVfYmFyIGhhcyBydW4gaXRzIGhvb2tzCiAJIHNvIGFueSBmdXJ0aGVyIGNhbGxzIHRvIHVw
ZGF0ZV9tZW51X2JhciBzaG91bGRuJ3QgZG8gc28gYWdhaW4uICAqLwogICAgICAgYm9vbCBt
ZW51X2Jhcl9ob29rc19ydW4gPSBmYWxzZTsKKyAgICAgIHN0cnVjdCB3aW5kb3cgKnN3ID0g
WFdJTkRPVyAoc2VsZWN0ZWRfd2luZG93KTsKKyAgICAgIHN0cnVjdCBmcmFtZSAqc2YgPSBX
SU5ET1dfWEZSQU1FIChzdyk7CisgICAgICBzdHJ1Y3QgZnJhbWUgKnJmID0gTlVMTDsKKwor
ICAgICAgaWYgKEZSQU1FX1BBUkVOVF9GUkFNRSAoc2YpICYmICFGUkFNRV9XSU5ET1dfUCAo
c2YpCisJICAmJiBGUkFNRV9NRU5VX0JBUl9MSU5FUyAoc2YpID09IDAKKwkgICYmIEZSQU1F
X01FTlVfQkFSX0xJTkVTIChyZiA9IHJvb3RfZnJhbWUgKHNmKSkgIT0gMAorCSAgJiYgTklM
UCAoRmRlZmF1bHRfdmFsdWUgKFF0dHlfbWVudV9vcGVuX3VzZV90bW0pKSkKKwkvKiBJZiB0
aGUgc2VsZWN0ZWQgd2luZG93J3MgZnJhbWUgaXMgYSB0dHkgY2hpbGQgZnJhbWUgd2l0aG91
dAorCSAgIG1lbnUgYmFyLCB0aGF0IGZyYW1lJ3Mgcm9vdCBmcmFtZSBoYXMgYSBtZW51IGJh
ciBhbmQKKwkgICAndHR5LW1lbnUtb3Blbi11c2UtdG1tJyBpcyBuaWwsIHVwZGF0ZSB0aGUg
bWVudSBiYXIgb2YgdGhlCisJICAgcm9vdCBmcmFtZSBmcm9tIHRoZSBzZWxlY3RlZCB3aW5k
b3cuICAqLworCXNmID0gcmY7CisgICAgICBlbHNlCisJeworCSAgc2YgPSBOVUxMOworCSAg
c3cgPSBOVUxMOworCX0KIAogICAgICAgcmVjb3JkX3Vud2luZF9zYXZlX21hdGNoX2RhdGEg
KCk7CiAKICAgICAgIEZPUl9FQUNIX0ZSQU1FICh0YWlsLCBmcmFtZSkKIAl7CiAJICBzdHJ1
Y3QgZnJhbWUgKmYgPSBYRlJBTUUgKGZyYW1lKTsKLQkgIHN0cnVjdCB3aW5kb3cgKncgPSBY
V0lORE9XIChGUkFNRV9TRUxFQ1RFRF9XSU5ET1cgKGYpKTsKKwkgIHN0cnVjdCB3aW5kb3cg
KncKKwkgICAgPSBzZiA9PSBmID8gc3cgOiBYV0lORE9XIChGUkFNRV9TRUxFQ1RFRF9XSU5E
T1cgKGYpKTsKIAogCSAgLyogSWdub3JlIHRvb2x0aXAgZnJhbWUuICAqLwogCSAgaWYgKEZS
QU1FX1RPT0xUSVBfUCAoZikpCkBAIC0xNDA4Miw4ICsxNDEwMSw4IEBAIHByZXBhcmVfbWVu
dV9iYXJzICh2b2lkKQogCSAgICAgICYmICFYQlVGRkVSICh3LT5jb250ZW50cyktPnRleHQt
PnJlZGlzcGxheSkKIAkgICAgY29udGludWU7CiAKLQkgIGlmICghRlJBTUVfUEFSRU5UX0ZS
QU1FIChmKSkKLQkgICAgbWVudV9iYXJfaG9va3NfcnVuID0gdXBkYXRlX21lbnVfYmFyIChm
LCBmYWxzZSwgbWVudV9iYXJfaG9va3NfcnVuKTsKKwkgIG1lbnVfYmFyX2hvb2tzX3J1bgor
CSAgICA9IHVwZGF0ZV9tZW51X2JhciAoZiwgZmFsc2UsIG1lbnVfYmFyX2hvb2tzX3J1biwg
dyk7CiAKIAkgIHVwZGF0ZV90YWJfYmFyIChmLCBmYWxzZSk7CiAjaWZkZWYgSEFWRV9XSU5E
T1dfU1lTVEVNCkBAIC0xNDA5NSwxMCArMTQxMTQsMjEgQEAgcHJlcGFyZV9tZW51X2JhcnMg
KHZvaWQpCiAgICAgfQogICBlbHNlCiAgICAgewotICAgICAgc3RydWN0IGZyYW1lICpzZiA9
IFNFTEVDVEVEX0ZSQU1FICgpOworICAgICAgc3RydWN0IHdpbmRvdyAqc3cgPSBYV0lORE9X
IChzZWxlY3RlZF93aW5kb3cpOworICAgICAgc3RydWN0IGZyYW1lICpzZiA9IFdJTkRPV19Y
RlJBTUUgKHN3KTsKKyAgICAgIHN0cnVjdCBmcmFtZSAqcmYgPSBOVUxMOwogCi0gICAgICBp
ZiAoIUZSQU1FX1BBUkVOVF9GUkFNRSAoc2YpKQotCXVwZGF0ZV9tZW51X2JhciAoc2YsIHRy
dWUsIGZhbHNlKTsKKyAgICAgIGlmIChGUkFNRV9QQVJFTlRfRlJBTUUgKHNmKSAmJiAhRlJB
TUVfV0lORE9XX1AgKHNmKQorCSAgJiYgRlJBTUVfTUVOVV9CQVJfTElORVMgKHNmKSA9PSAw
CisJICAmJiBGUkFNRV9NRU5VX0JBUl9MSU5FUyAocmYgPSByb290X2ZyYW1lIChzZikpICE9
IDAKKwkgICYmIE5JTFAgKEZkZWZhdWx0X3ZhbHVlIChRdHR5X21lbnVfb3Blbl91c2VfdG1t
KSkpCisJLyogSWYgdGhlIHNlbGVjdGVkIHdpbmRvdydzIGZyYW1lIGlzIGEgdHR5IGNoaWxk
IGZyYW1lIHdpdGhvdXQKKwkgICBtZW51IGJhciwgdGhhdCBmcmFtZSdzIHJvb3QgZnJhbWUg
aGFzIGEgbWVudSBiYXIgYW5kCisJICAgJ3R0eS1tZW51LW9wZW4tdXNlLXRtbScgaXMgbmls
LCB1cGRhdGUgdGhlIG1lbnUgYmFyIG9mIHRoZQorCSAgIHJvb3QgZnJhbWUgZnJvbSB0aGUg
c2VsZWN0ZWQgd2luZG93LiAgKi8KKwlzZiA9IHJmOworCisgICAgICB1cGRhdGVfbWVudV9i
YXIgKHNmLCB0cnVlLCBmYWxzZSwgc3cpOwogCiAgICAgICB1cGRhdGVfdGFiX2JhciAoc2Ys
IHRydWUpOwogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQpAQCAtMTQxMjAsMjAgKzE0MTUw
LDE0IEBAIHByZXBhcmVfbWVudV9iYXJzICh2b2lkKQogICAgdXBkYXRlZCB2YWx1ZSBvZiB0
aGlzIGZsYWcsIHRvIHBhc3MgdG8gdGhlIG5leHQgY2FsbC4gICovCiAKIHN0YXRpYyBib29s
Ci11cGRhdGVfbWVudV9iYXIgKHN0cnVjdCBmcmFtZSAqZiwgYm9vbCBzYXZlX21hdGNoX2Rh
dGEsIGJvb2wgaG9va3NfcnVuKQordXBkYXRlX21lbnVfYmFyIChzdHJ1Y3QgZnJhbWUgKmYs
IGJvb2wgc2F2ZV9tYXRjaF9kYXRhLCBib29sIGhvb2tzX3J1biwgc3RydWN0IHdpbmRvdyAq
dykKIHsKLSAgTGlzcF9PYmplY3Qgd2luZG93OwotICBzdHJ1Y3Qgd2luZG93ICp3OwotCiAg
IC8qIElmIGNhbGxlZCByZWN1cnNpdmVseSBkdXJpbmcgYSBtZW51IHVwZGF0ZSwgZG8gbm90
aGluZy4gIFRoaXMgY2FuCiAgICAgIGhhcHBlbiB3aGVuLCBmb3IgaW5zdGFuY2UsIGFuIGFj
dGl2YXRlLW1lbnViYXItaG9vayBjYXVzZXMgYQogICAgICByZWRpc3BsYXkuICAqLwogICBp
ZiAoaW5oaWJpdF9tZW51YmFyX3VwZGF0ZSkKICAgICByZXR1cm4gaG9va3NfcnVuOwogCi0g
IHdpbmRvdyA9IEZSQU1FX1NFTEVDVEVEX1dJTkRPVyAoZik7Ci0gIHcgPSBYV0lORE9XICh3
aW5kb3cpOwotCiAgIGlmIChGUkFNRV9XSU5ET1dfUCAoZikKICAgICAgID8KICNpZmRlZiBI
QVZFX0VYVF9NRU5VX0JBUgpAQCAtMjEwOTAsMjQgKzIxMTE0LDMzIEBAIHJlZGlzcGxheV93
aW5kb3cgKExpc3BfT2JqZWN0IHdpbmRvdywgYm9vbCBqdXN0X3RoaXNfb25lX3ApCiAKICAg
LyogV2hlbiB3ZSByZWFjaCBhIGZyYW1lJ3Mgc2VsZWN0ZWQgd2luZG93LCByZWRvIHRoZSBm
cmFtZSdzIG1lbnUKICAgICAgYmFyLCB0b29sIGJhciwgdGFiLWJhciwgYW5kIHRoZSBmcmFt
ZSdzIHRpdGxlLiAgKi8KLSAgaWYgKHVwZGF0ZV9tb2RlX2xpbmUKLSAgICAgICYmIEVRIChG
UkFNRV9TRUxFQ1RFRF9XSU5ET1cgKGYpLCB3aW5kb3cpKQorICBpZiAodXBkYXRlX21vZGVf
bGluZSAmJiBFUSAoRlJBTUVfU0VMRUNURURfV0lORE9XIChmKSwgd2luZG93KSkKICAgICB7
Ci0gICAgICBib29sIHJlZGlzcGxheV9tZW51X3A7Ci0KICAgICAgIGlmIChGUkFNRV9XSU5E
T1dfUCAoZikpCiAJewogI2lmZGVmIEhBVkVfRVhUX01FTlVfQkFSCi0JICByZWRpc3BsYXlf
bWVudV9wID0gRlJBTUVfRVhURVJOQUxfTUVOVV9CQVIgKGYpOworCSAgaWYgKEZSQU1FX0VY
VEVSTkFMX01FTlVfQkFSIChmKSkKKwkgICAgZGlzcGxheV9tZW51X2JhciAodyk7CiAjZWxz
ZQotCSAgcmVkaXNwbGF5X21lbnVfcCA9IEZSQU1FX01FTlVfQkFSX0xJTkVTIChmKSA+IDA7
CisJICBpZiAoRlJBTUVfTUVOVV9CQVJfTElORVMgKGYpID4gMCkKKwkgICAgZGlzcGxheV9t
ZW51X2JhciAodyk7CiAjZW5kaWYKIAl9CiAgICAgICBlbHNlCi0gICAgICAgIHJlZGlzcGxh
eV9tZW51X3AgPSBGUkFNRV9NRU5VX0JBUl9MSU5FUyAoZikgPiAwOworCXsKKwkgIHN0cnVj
dCBmcmFtZSAqcmYgPSBOVUxMOwogCi0gICAgICBpZiAocmVkaXNwbGF5X21lbnVfcCkKLSAg
ICAgICAgZGlzcGxheV9tZW51X2JhciAodyk7CisJICBpZiAoRlJBTUVfUEFSRU5UX0ZSQU1F
IChmKQorCSAgICAgICYmIEZSQU1FX01FTlVfQkFSX0xJTkVTIChmKSA9PSAwCisJICAgICAg
JiYgRlJBTUVfTUVOVV9CQVJfTElORVMgKHJmID0gcm9vdF9mcmFtZSAoZikpICE9IDAKKwkg
ICAgICAmJiBOSUxQIChGZGVmYXVsdF92YWx1ZSAoUXR0eV9tZW51X29wZW5fdXNlX3RtbSkp
KQorCSAgICAvKiBJZiBGIGlzIGEgdHR5IGNoaWxkIGZyYW1lIHdpdGhvdXQgbWVudSBiYXIs
IHRoYXQgZnJhbWUncyByb290CisJICAgICAgIGZyYW1lIGhhcyBhIG1lbnUgYmFyIGFuZCAn
dHR5LW1lbnUtb3Blbi11c2UtdG1tJyBpcyBuaWwsCisJICAgICAgIGRpc3BsYXkgdGhlIG1l
bnUgYmFyIG9mIHRoZSByb290IGZyYW1lJ3Mgc2VsZWN0ZWQgd2luZG93LiAgKi8KKwkgICAg
ZGlzcGxheV9tZW51X2JhciAoWFdJTkRPVyAoRlJBTUVfU0VMRUNURURfV0lORE9XIChyZikp
KTsKKwkgIGVsc2UgaWYgKEZSQU1FX01FTlVfQkFSX0xJTkVTIChmKSA+IDApCisJICAgIGRp
c3BsYXlfbWVudV9iYXIgKHcpOworCX0KIAogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQog
ICAgICAgaWYgKEZSQU1FX1dJTkRPV19QIChmKSkKQEAgLTI3MzQ5LDEwICsyNzM4MiwxOSBA
QCBkaXNwbGF5X3R0eV9tZW51X2l0ZW0gKGNvbnN0IGNoYXIgKml0ZW1fdGV4dCwgaW50IHdp
ZHRoLCBpbnQgZmFjZV9pZCwKIHsKICAgc3RydWN0IGl0IGl0OwogICBzdHJ1Y3QgZnJhbWUg
KmYgPSBTRUxFQ1RFRF9GUkFNRSAoKTsKLSAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cg
KGYtPnNlbGVjdGVkX3dpbmRvdyk7CiAgIHN0cnVjdCBnbHlwaF9yb3cgKnJvdzsKICAgc2l6
ZV90IGl0ZW1fbGVuID0gc3RybGVuIChpdGVtX3RleHQpOwogCisgIHN0cnVjdCBmcmFtZSAq
cmYgPSBOVUxMOworCisgIGlmIChGUkFNRV9QQVJFTlRfRlJBTUUgKGYpICYmICFGUkFNRV9X
SU5ET1dfUCAoZikKKyAgICAgICYmIEZSQU1FX01FTlVfQkFSX0xJTkVTIChmKSA9PSAwCisg
ICAgICAmJiBGUkFNRV9NRU5VX0JBUl9MSU5FUyAocmYgPSByb290X2ZyYW1lIChmKSkgIT0g
MAorICAgICAgJiYgTklMUCAoRmRlZmF1bHRfdmFsdWUgKFF0dHlfbWVudV9vcGVuX3VzZV90
bW0pKSkKKyAgICBmID0gcmY7CisKKyAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cgKGYt
PnNlbGVjdGVkX3dpbmRvdyk7CisKICAgZWFzc2VydCAoRlJBTUVfVEVSTUNBUF9QIChmKSk7
CiAKICAgLyogRG9uJ3Qgd3JpdGUgYmV5b25kIHRoZSBtYXRyaXgncyBsYXN0IHJvdy4gIFRo
aXMgY2FuIGhhcHBlbiBmb3IKQEAgLTM4NDY4LDYgKzM4NTEwLDcgQEAgc3ltc19vZl94ZGlz
cCAodm9pZCkKICAgREVGU1lNIChRbmhkcmFnLCAibmhkcmFnIik7CiAgIERFRlNZTSAoUXZk
cmFnLCAidmRyYWciKTsKICAgREVGU1lNIChRaG91cmdsYXNzLCAiaG91cmdsYXNzIik7Cisg
IERFRlNZTSAoUXR0eV9tZW51X29wZW5fdXNlX3RtbSwgInR0eS1tZW51LW9wZW4tdXNlLXRt
bSIpOwogfQogCiAK

--------------g10vPUGCcPR3uoc6XZn708Q0--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 10 Feb 2025 15:51:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 10 10:51:36 2025
Received: from localhost ([127.0.0.1]:52064 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1thW4O-0007Lt-2a
	for submit <at> debbugs.gnu.org; Mon, 10 Feb 2025 10:51:36 -0500
Received: from mout.gmx.net ([212.227.17.20]:39107)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1thW4J-0007La-Rm
 for 75056 <at> debbugs.gnu.org; Mon, 10 Feb 2025 10:51:34 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1739202677; x=1739807477; i=rudalics@HIDDEN;
 bh=Ofvj1YU+avt7500OAMyJL2Rgdz1bT0NnT26VaBrWDwk=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=aR3QRel3PVpXsKDMg+2ASpM840rXUs3Ux42qWBLKK/NusShg2L1ra2HJF/mGfiEP
 qpWwCZfRZgO2yRxgJsaS1u3d6i07wSqVDwmZuB1C07hWKmBdqKv4X9sI9fbIAYaeh
 WzT6OFqQ7s7X4Ym1/ayiuuSAk0dfVORCfHuN3i80gbOXtlXi6pHW+cnRnai7XiE/I
 y4Orky2ViDHAWWzY7Pe/Ry6800vT5mn2xUe2VH/ZsP3jD+m6nNrGBu5XqK3A+pOyQ
 E/49eP7qmlJbT6/fzDDcoqc9hiWE15dya4+TLjqLTThjTITEiU6D927pQeJ7bBEML
 zCQBJoEW6Mw5Cz5ZIA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.219]) by mail.gmx.net (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MLiCu-1tzBRN2gZk-00V3Ru; Mon, 10
 Feb 2025 16:51:17 +0100
Message-ID: <c213226e-ef3c-4688-b0a7-8dcc6a5f9105@HIDDEN>
Date: Mon, 10 Feb 2025 16:51:16 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
 <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN> <m2seozjo3c.fsf@HIDDEN>
 <m2msf6ezfq.fsf@HIDDEN> <m2jz9zmlfg.fsf@HIDDEN>
 <m2frknml43.fsf@HIDDEN> <e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
 <m234gnmjvi.fsf@HIDDEN> <31bd2acb-9523-4def-80c1-235807c4abc9@HIDDEN>
 <m2y0yfks1p.fsf@HIDDEN> <m2seonf0qr.fsf@HIDDEN>
 <9edd64ba-3e0d-4448-8384-3fd42d8279bb@HIDDEN> <m2v7tikk53.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2v7tikk53.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:q6+8aQqrLsEAHcC+Pt8tdjeBMjZbYMzHsjiHVPRxq+cZOdWGUFf
 GlcRYIwCly8Ruig46hSKmMCWmUDv3NSOWHPNZvchK365nicFHbNApUnkn9um06EGEYtXQJH
 LpRrB/ymchKRa/8eViW8DnuKHuKgVt/Gj7kuWAR+m6dnHJCV+IHGyDfCoOovzd7Q14Jb3K/
 9MG2BbW4pasCOtuG/pbQQ==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:mMtgaM7THrM=;5PS/qjTz+I2J8Nd9Hn09hySc5/h
 bdG89MqWwx1Xj87Wrmk36KkffRxPIDYu2PK3+aTh1WN19D/ZI160ML6GWkGK0dOhhOxkCR1u3
 y4c83MaHtSaDFoWR6Wlp8nLdydlnRQdlpwNC29+rG/XBNiOLxlaNtVUHQUU/c5pTaWXYU+6PS
 M+z6oQ/wsHWly2LuY1d2/ptJB6+FnYQ5BjVrfDxfwQVkKUbIvlS3vB1rzZZp36EAJcceWN97c
 q3qXPGaBwqJIy9HUccvfmZMCrGqsEgv6JIUZV74kFDHYIrg66pY0eCStZ9Pw/bKUS+Zg4Y7wg
 R2sxe7XVwdV8OO6iZsZfTeQMFE/O8YXWlcO//Xl2e63Ei3Y1w8bJIcDvZda39rFQpy9RrStZg
 q8Cyl/MrFgUiRp6cxaVFp24rdBnV7btCYSlKEjc+xNQAalpXvqOvFOjB4QgI8nAyoOtVhhwlt
 Yxsg4HZvvmYqXsL8WLzmy5HIcVkr7kYVnouK4c82vXHXI6jXiG/FzNx0bqLGZ0QlPnf+q097t
 8sJFWpr1g4a0OByQX5QD86MVPw1PEYAP9zrn1muik+xid9elsNF/aaU75yOn+2dpoPIIM6tEb
 JTtFMoSlV+T1dCUdzIiMMIAdNyGXdR3PIWP7v7ZXcJmS37sNrQesOgyKiE9JpkhOY3BrNo6mQ
 +JHDt6uA8oOuyqpP4GvHPu+8CtMytjQFvW/YAVELt+ytSBlkM5iZM7QGOaHj7pFVmkYTumibz
 NkW+9KTwTVLxNA8iYqJWkSgqdtAVBfVUXXd/UOsYrCpshD+HSASLR7872YlzFL8rW07bzzG/k
 XtHxuWDG54HM9/TD3vi4doOCPo0qJfeASiPOZAT0sQJ09HhWeE2VlJMMPjZ8N6bacbqbyy5qs
 o/Ophduhq+g51R5q9wUD0UgGzv/7sffzXo678BGInUivY2iadJVHJUR1RTQ63tzT4k+BKyZUz
 lk77IOadG3syCtnXY0GeoAD9f4diYo/MdPKtf2nu1MF1MagS/H8VbehX2PbD0zywxzr40Z2Oy
 +VdE3eWjOGoBDfWz2LNHvVcnLp1DHmMUVjB7/KzDQyc+ZAIONUYX2rBAhU9RkTFIC8MGSZnpI
 kpFnG/vcZB86abf0HuleQvg26j0Z0lEtVJ8JW0pSiMx05fHcAYZZlOjO2XBsNj9mvrGWfcMrV
 1RLuTam/GlW7pvdMMC4ZAzS07RWwrp6/oaZQks6x+3dmoBfULdHwL/DMwg0G/nfeTl3iuPB+b
 9vLV8dGqg3s93YQ9HRQagHwH/CjeZcsePE86WGSdcYpbmcbiLI+vVEEVk6Um3xQg7vtL+bJRB
 bAHbLzYmd5dr9DeAsLc1xKx14h9jY1K7Ya5qxY9e38p0U8be9B/GclqSD5/7u0UBWCkyjAlqG
 f3YMS7qFzPrHL4G9xPSluE1lpZiA2pPw30uZhiwB5WqQ8h9ODB5WWGLOLM0xCr2C508pKSAR0
 tlVDREA==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

 From what I tried so far I can't enter submenus.  But the fonts are>> Debugger entered--Lisp error: (void-function cond*)
 >
 > Is that an Emacs <= 30? In master, cond* is fboundp and autoloaded.

Probably.  It doesn't happen any more.

 > BTW, I made a branch here on my side today because things won't work
 > without a small addition to the C core, a hook that I called
 > x-popup-menu-function. Reason being that C calls x_popup_menu_1 which is
 > not exposed to Lisp.
 >
 > It's still a bit early, I'll holler when I think I have something
 > more or less usable.

Thanks, martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 10 Feb 2025 13:24:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 10 08:24:35 2025
Received: from localhost ([127.0.0.1]:49580 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1thTm7-0007vo-0B
	for submit <at> debbugs.gnu.org; Mon, 10 Feb 2025 08:24:35 -0500
Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]:45436)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1thTm4-0007vW-Q6
 for 75056 <at> debbugs.gnu.org; Mon, 10 Feb 2025 08:24:33 -0500
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-ab7d3bcf1ceso51329366b.3
 for <75056 <at> debbugs.gnu.org>; Mon, 10 Feb 2025 05:24:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1739193866; x=1739798666; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=MeANa9IhX+7wHq07vJcXT9cRRTMvkA97a0K001D0eEE=;
 b=ekgU+etK+79vlJXjhuoFDrBPH9LxMS3fr3kcdb9LFkUKD4tIZqTFafkoTSLTHuWwo5
 SZxVMGtF4vGyvs1JGD9Ys4oio3F6JDQ52o6A+68dBWAfBamFhWozKlLMh0bUcxJa3sqw
 hY4tLm+uZp1pT/O6b3ggTlYfo8VYVqPHLMcX6It7Jrh9VqWcXArXafnQpvdMVz/QnI5j
 OW+kYTo2oztE/8/8Ez9Ue56t43R/JqJGc3KwdQwU9EBcIn0iLMfLDbhAh6KKbptV0kOM
 jmficTu5AoWTNuTZhkReH/LYzg2isuY6BBJQqXoQHgZgFfz/NUs7IQmXWbsUt251xU+A
 3VJQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1739193866; x=1739798666;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=MeANa9IhX+7wHq07vJcXT9cRRTMvkA97a0K001D0eEE=;
 b=tHMJjIqz0+rJP+0SGcba9ZrVBpnQOhR9TO0TOT2u2T5TsLwJBV8e7seTYEAmrtJegc
 CcDgDP2uHahvjvwZFZzSVm5KqT6GxZ3XYQ+IaMrCmALiRf2X5Jaiz0/+WJykCZG9HY5j
 4vZfoLzDWDZgfplw4IT3vxhjZRRzo733zq8dqu7tLsLY/EIv72rH5zZDg814YUVVAwdK
 llDHR15cvacYqamPMmm8Qci0+FgnrlAyhl4FxYew/md8L7hxSrDB16gS01lgDCIYEnr6
 UpWkblFhELxnRGxBM8JAH1vdNqwzKlez4M4Q740rBfLFWDFeWJQR/YkimBzcyrSxjFzR
 3exQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCUhsFxP8eHkBKt9ap4aEz7qUiHklO0+QcXffwRj3AR8hwzPck5LC9ADuJ7ox3ewWv0+Z/wcZA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwTglVV05ALNdBspZWkgSUcZQGsez3HtP0ZdiS451PJFTtUEZaj
 jYHGDN8bTv1lGsUf9z0iXbC9Ik/JIyY02v9LmMRmCsJzZgI7RYTl3aqi6g==
X-Gm-Gg: ASbGncupkXL3Z9iBedz9rolKZ8h3W1IVeLEhwT/dA+RCAKXxwkJO27p7wlrX927P337
 f0zZcsAzuNz5MqKtkbOBkojAvGVoZJ4WVZHwe18dkYpRj6Dp8x2s6YBdzN+nkuHXKKvgANfXDeM
 FChXXbI/R2YIdmGP0zGgjkOwy83ykVrNfldo9Nf7pGOgRE2dHmJHHEP4kIvBakIa77BpTm96Hs3
 08ZptALdNxV/FNwuBsCrp+rNLMbkkY1PdYwwqgaHUh3zswhSy4EV37CxuWt3P8e8I695Y20uqTW
 DgNqTZ0HP3ZkyxQQUPYWCf97wEmxO668MMXNki8xrwl1fKGhoxFSvVnov5NJ0V1dQxx0WUNFayO
 INuBXxGUoVeiCGYnpbUQ4xNvp
X-Google-Smtp-Source: AGHT+IEtdxkPg6WbdJoEOC++fYD8QJF6vnqlFzyAbSWZzDihW8BbFhgly2A4iP6Gn/aZqHfxkeiarg==
X-Received: by 2002:a17:907:9803:b0:ab6:d7c5:123 with SMTP id
 a640c23a62f3a-ab789c50a85mr1393536566b.51.1739193865872; 
 Mon, 10 Feb 2025 05:24:25 -0800 (PST)
Received: from pro2 (p200300e0b72ded006d97dc68cf4df393.dip0.t-ipconnect.de.
 [2003:e0:b72d:ed00:6d97:dc68:cf4d:f393])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab78e82cc0csm702391866b.12.2025.02.10.05.24.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 10 Feb 2025 05:24:25 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <9edd64ba-3e0d-4448-8384-3fd42d8279bb@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m28qqrlkyg.fsf@HIDDEN>
 <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
 <m2seozjo3c.fsf@HIDDEN> <m2msf6ezfq.fsf@HIDDEN>
 <m2jz9zmlfg.fsf@HIDDEN> <m2frknml43.fsf@HIDDEN>
 <e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
 <m234gnmjvi.fsf@HIDDEN>
 <31bd2acb-9523-4def-80c1-235807c4abc9@HIDDEN>
 <m2y0yfks1p.fsf@HIDDEN> <m2seonf0qr.fsf@HIDDEN>
 <9edd64ba-3e0d-4448-8384-3fd42d8279bb@HIDDEN>
Date: Mon, 10 Feb 2025 14:24:24 +0100
Message-ID: <m2v7tikk53.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>> This works better with the menu-bar, although the menu bar itself does
>> strange stuff while the menu is open. Don't know what that is.
>
> Still can't test it with emacs -Q -nw
>
> Debugger entered--Lisp error: (void-function cond*)

Is that an Emacs <= 30? In master, cond* is fboundp and autoloaded.

BTW, I made a branch here on my side today because things won't work
without a small addition to the C core, a hook that I called
x-popup-menu-function. Reason being that C calls x_popup_menu_1 which is
not exposed to Lisp.

It's still a bit early, I'll holler when I think I have something
more or less usable.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 10 Feb 2025 10:16:05 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 10 05:16:04 2025
Received: from localhost ([127.0.0.1]:48235 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1thQpf-0003RT-Df
	for submit <at> debbugs.gnu.org; Mon, 10 Feb 2025 05:16:04 -0500
Received: from mout.gmx.net ([212.227.15.15]:43421)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1thQpc-00038j-Gn
 for 75056 <at> debbugs.gnu.org; Mon, 10 Feb 2025 05:16:01 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1739182550; x=1739787350; i=rudalics@HIDDEN;
 bh=N0Zd4w2QI8ApxXsG2TAznrLK1C69mylbU8lvVl/0T08=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=qTWm4OOwTUcEGliU3OQz9OISNIDcdVo9v2PkLgDjWgkt2pzJTNmzHSLVepPr6fWL
 llLxb+QWjjXRvUNg3nFrlwGwnC/tkkCQoZSV4HGASCZPhcHpvedI7T1KMVWEbC5Vz
 nfQwH8qeu3FLMqlYp6vMFLlsA7ynUr9sfAu5lDHUJhSqTdLa22vjDWWSN6F19YTmL
 2xDAHUgIEg/s/pSvQBhoIskmzNhGFLTJyTeijFpqpHjp62bw6EUbQmfvHSGuqb/so
 2LMRQ5gpmdEqaUon6++OA40uyUA+L6FbkZ6h8vPxy7+PWbiqSfYa1TeSypq8PlMMN
 AWtabmYCzWNEr1mYTA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.219]) by mail.gmx.net (mrgmx005
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MAwXr-1tWCQp0OaH-00E3eY; Mon, 10
 Feb 2025 11:15:50 +0100
Message-ID: <9edd64ba-3e0d-4448-8384-3fd42d8279bb@HIDDEN>
Date: Mon, 10 Feb 2025 11:15:49 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
 <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN> <m2seozjo3c.fsf@HIDDEN>
 <m2msf6ezfq.fsf@HIDDEN> <m2jz9zmlfg.fsf@HIDDEN>
 <m2frknml43.fsf@HIDDEN> <e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
 <m234gnmjvi.fsf@HIDDEN> <31bd2acb-9523-4def-80c1-235807c4abc9@HIDDEN>
 <m2y0yfks1p.fsf@HIDDEN> <m2seonf0qr.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2seonf0qr.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64
X-Provags-ID: V03:K1:dSYoOObFn0TRyP+VX0+07sQFndwOMTtF6r4ht4TcUJBIOI54K0C
 8zbSvwenP0fI/P54QsraEAy86A7u/RuCdxDYJLFgeiVRi8LKYpQzOZlYMx7tMWQyz1NokPX
 wYdxZUSTdxHzJM4SsPxOt4JhPN8qPuJ1te6tQAbbTEQkzFuGPfnXSdVWOSJC8JiDLUByoLP
 6NOpE9SFDpY84oLjbDsPQ==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:1IElaP33hso=;wT4FYH+f6wVKDfD7zOVagw/TAP7
 TPditjoAzwGT3sUD0aRV3+f079i7uGw051eOJ5Avn/EBOQ/QTcW+nPviiXk69yShYMDnPK+wk
 z461TSnzLoY++nl73TAfbBL97YQN/4TbyCMX9luiB8caupjBk3nflFozHwylMusUC++6QZl6k
 oOEYIGMHXBnrH6pL3ZJM6ZZLMaWfU6siqbnPPBigN9nTW6hvtuL9Hg5wGPdqOeVe5qAqM3oHL
 h/NeuLWcj9+tfwe/TIDWMafzOm5cNpe7mhjyO2aQPUQPzaOdJ/GuRutnLCdb41U+dXDSNV+IK
 /o5HT94TAGYRuWtPV/4bBWf2pETxuTOKW2gjLNqqZh010YSWDr/9IukuBwkpQQdr5lgmOMb0o
 Fs2si9zriE8Ct+WLUDulKAETkcTcCVkiBgNhZu0fq9JlFXAAJRr2p/DxpzPpmsvrgJbdahG2u
 znR96ADFwH5Pkpb9Q7Er3n5+hJ42sDyIR//eKwpTPKZI43VAfq41pDWDxC6V3t7e8dvzc1oUP
 TyVKpAQ4Lao9zEXM2FbqMPNVLxjFmGDxD5v87yknMzL0iC4JDf5cpY2CnI/DrhZLe5BXjZIUf
 8mySO1Z2Um56u7SmSN1k+DHtceLPeWmlm11WBwRERYFp4O79ECC+5fip/yhe8p3uC7XSM235j
 RMIteBDELqxG8zCQYJ9+q9qC2Pf5IE5DNVXN+N48Z3Hpfl2uqw8UyjC56ElRO1hjrB21Kvc5J
 rnaZlOrwnNIQs0YdoFIEW/zJy9LWoOeyLktB0iBz9EYaMYw03UmkGn0Ix6DqaFWD3K4k6CnuI
 NtBbqMgr1tyUA4k8dc0ha4qUWWzrgapis8wNQs/b/o7Z/JeywbGSAWGIsV07+hHGFtS9l7WAC
 38k8zazMVzOJ/9NbmH7fsPHec12YsDZZLpnYKLlCHpg1TWq8ft2uxl2snNOeiBCV+ssOgR8FS
 UzfLqk0qdeXMO8A1qJLjy4B9VxSOlxcyIbX2nA+dWmFRFB3BAL4iiAO+SsnVOiK0Fc2sFShvM
 pj3O45B86Wid35SMVhaW4NLMubmfkZ/WoEEBIKKaIvuqWvreNunKpx5YyBhqxkAxUPp4J7dEW
 WqQrmfuArlpLxafaWCCvH44MxO8NT32otyaV8ZwbhVL2v1n8pBUeTqtwy028PW7Fb4g24XCMJ
 JI7ENEcrTBdsgSOOyKPAM8uq7uOUzptv+VsduAsDXo5SD31eTfr3yuJQ0X8RrUo5sftvgYGNI
 s1QRV8fUl7aI7hQcu93f898q5cRKZdqMl5dBJ8+v/iR8dftZXafDgs2br7UZwP+lJIbnDvfi1
 IzoC/hQvvGVwoqTrRy0WI57jOxecFKYArWW1JUYABi9r/TE6EgsSILajxFgwQvGU7+MISqZhG
 GZl/KTshqsw1hJ6Dj13K/FJ1k7+Un5N1lOGHMD96s9jKhmERKHLGl1JkXkv/fmO/PqvAM1iHb
 d0qiq/A==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

ID4gVGhpcyB3b3JrcyBiZXR0ZXIgd2l0aCB0aGUgbWVudS1iYXIsIGFsdGhvdWdoIHRoZSBt
ZW51IGJhciBpdHNlbGYgZG9lcw0KID4gc3RyYW5nZSBzdHVmZiB3aGlsZSB0aGUgbWVudSBp
cyBvcGVuLiBEb24ndCBrbm93IHdoYXQgdGhhdCBpcy4NCg0KU3RpbGwgY2FuJ3QgdGVzdCBp
dCB3aXRoIGVtYWNzIC1RIC1udw0KDQpEZWJ1Z2dlciBlbnRlcmVkLS1MaXNwIGVycm9yOiAo
dm9pZC1mdW5jdGlvbiBjb25kKikNCiAgIChjb25kKiAoKG1hdGNoKiAnbmlsIHBvcykgbmls
KSAoKG1hdGNoKiAndCBwb3MpIChsZXQqICgoeSAobW91c2UtcG9zaXRpb24pKSAoZnJhbWUg
KGlmIChjZHIgeSkgKGNhci1zYWZlIChwcm9nMSB5IC4uLikpIChzaWduYWwgJ3dyb25nLW51
bWJlci1vZi1hcmd1bWVudHMgKGxpc3QgLi4uIC4uLikpKSkgKHggKGNhci1zYWZlIChwcm9n
MSB5IChzZXRxIHkgLi4uKSkpKSkgKGxpc3QgZnJhbWUgKG9yIHggMTApIChvciB5IDEwKSkp
KSAoKG1hdGNoKiAoZXZlbnRwIGUpIHBvcykgKGxldCogKChlbmQgKGV2ZW50LWVuZCBlKSkg
KHdpbiAocG9zbi13aW5kb3cgZW5kKSkgKHggKGNhciAocG9zbi14LXkgZW5kKSkpICh5IChj
ZHIgKHBvc24teC15IGVuZCkpKSkgKGlmICh3aW5kb3dwIHdpbikgKGxldCogKCgtLWNsLXJl
c3QtLSAod2luZG93LWVkZ2VzIHdpbiBuaWwgdCkpICh3eCAoaWYgLi4uIC4uLiAuLi4pKSAo
d3kgKGNhci1zYWZlIC4uLikpIChfIChjYXItc2FmZSAuLi4pKSAoXyAoY2FyLXNhZmUgLS1j
bC1yZXN0LS0pKSkgKGxpc3QgKHdpbmRvdy1mcmFtZSB3aW4pICgrIHd4IHgpICgrIHd5IHkp
KSkgKGxldCAoKG1lbnUtYmFyLWxpbmVzIChmcmFtZS1wYXJhbWV0ZXIgd2luIC4uLikpKSAo
bGlzdCB3aW4geCAoKyB5IG1lbnUtYmFyLWxpbmVzKSkpKSkpICgobWF0Y2gqIChjb25zIChj
b25zIChudW1iZXJwIHgpIChudW1iZXJwIHkpKSAoY29ucyAod2luZG93cCB3aW4pIF8pKSBw
b3MpIChsZXQqICgoLS1jbC1yZXN0LS0gKHdpbmRvdy1lZGdlcyB3aW4gbmlsIHQpKSAod3gg
KGlmICg9IChsZW5ndGggLS1jbC1yZXN0LS0pIDQpIChjYXItc2FmZSAocHJvZzEgLS1jbC1y
ZXN0LS0gLi4uKSkgKHNpZ25hbCAnd3JvbmctbnVtYmVyLW9mLWFyZ3VtZW50cyAobGlzdCAu
Li4gLi4uKSkpKSAod3kgKGNhci1zYWZlIChwcm9nMSAtLWNsLXJlc3QtLSAoc2V0cSAtLWNs
LXJlc3QtLSAuLi4pKSkpIChfIChjYXItc2FmZSAocHJvZzEgLS1jbC1yZXN0LS0gKHNldHEg
LS1jbC1yZXN0LS0gLi4uKSkpKSAoXyAoY2FyLXNhZmUgLS1jbC1yZXN0LS0pKSkgKGxpc3Qg
KHdpbmRvdy1mcmFtZSB3aW4pICgrIHd4IHgpICgrIHd5IHkpKSkpICgobWF0Y2gqIChjb25z
IChsaXN0IChudW1iZXJwIHgpIChudW1iZXJwIHkpKSAoY29ucyAoZnJhbWVwIGZyYW1lKSBf
KSkgcG9zKSAobGlzdCBmcmFtZSB4IHkpKSAoKG1hdGNoKiAoY29ucyAoY29ucyAobnVtYmVy
cCB4KSAobnVtYmVycCB5KSkgKGNvbnMgKGZyYW1lcCBmcmFtZSkgXykpIHBvcykgKGxpc3Qg
ZnJhbWUgeCB5KSkgKChtYXRjaCogKGNvbnMgKG51bWJlcnAgeCkgKG51bWJlcnAgeSkpIHBv
cykgKGxpc3QgKHNlbGVjdGVkLWZyYW1lKSB4IHkpKSAodCAoZXJyb3IgIiVTIGRvZXMgbm90
IG1hdGNoIGluIHR0eS1tZW51LXBvc2l0aW9uIiBwb3MpKSkNCiAgIHR0eS1tZW51LXBvc2l0
aW9uKCh0b29scyAoIzxmcmFtZSBGMSAweDIxYjVjYWQwPiAobWVudS1iYXIpICgyNiAuIDAp
IDApKSkNCiAgIChhbmQgdCAodHR5LW1lbnUtcG9zaXRpb24gcG9zaXRpb24pKQ0KICAgKGxl
dCogKCh3aGVyZSAoYW5kIHQgKHR0eS1tZW51LXBvc2l0aW9uIHBvc2l0aW9uKSkpKSAoaWYg
d2hlcmUgKGNvbmQgKChrZXltYXBwIG1lbnUpICh0dHktbWVudS1sb29wIG1lbnUgd2hlcmUp
KSAoKGNvbnNwIG1lbnUpIChsZXQqICgob3V0ZXIgKG1ha2Utc3BhcnNlLWtleW1hcCAib3V0
ZXIiKSkgKC0tY2wtdmFyLS0gbWVudSkgKGtleW1hcCBuaWwpIChuYW1lIG5pbCkgKC0tY2wt
dmFyLS0gdCkpICh3aGlsZSAoY29uc3AgLS1jbC12YXItLSkgKHNldHEga2V5bWFwIChjYXIg
LS1jbC12YXItLSkpIChzZXRxIG5hbWUgKHR0eS1tZW51LWtleW1hcC1uYW1lIGtleW1hcCAi
PyIpKSAoZGVmaW5lLWtleSBvdXRlciAodmVjdG9yIC4uLikga2V5bWFwKSAoc2V0cSAtLWNs
LXZhci0tIChjZHIgLS1jbC12YXItLSkpIChzZXRxIC0tY2wtdmFyLS0gbmlsKSkgKHR0eS1t
ZW51LWxvb3Agb3V0ZXIgd2hlcmUpIG5pbCkpICh0IChlcnJvciAiTm90IGEgbWVudTogJVMi
IG1lbnUpKSkpKQ0KICAgdHR5LW1lbnUtcG9wdXAtbWVudSgodG9vbHMgKCM8ZnJhbWUgRjEg
MHgyMWI1Y2FkMD4gKG1lbnUtYmFyKSAoMjYgLiAwKSAwKSkgKGtleW1hcCAoZ3JlcCBtZW51
LWl0ZW0gIlNlYXJjaCBGaWxlcyAoR3JlcCkuLi4iIGdyZXAgOmhlbHAgIlNlYXJjaCBmaWxl
cyBmb3Igc3RyaW5ncyBvciByZWdleHBzICh3aXRoIEdyZXApIikgKHJncmVwIG1lbnUtaXRl
bSAiUmVjdXJzaXZlIEdyZXAuLi4iIHJncmVwIDpoZWxwICJJbnRlcmFjdGl2ZWx5IGFzayBm
b3IgcGFyYW1ldGVycyBhbmQgc2VhcmNoIHJlY3Vyc2l2ZWx5IikgKHNoZWxsLWNvbW1hbmRz
IG1lbnUtaXRlbSAiU2hlbGwgQ29tbWFuZHMiIChrZXltYXAgLi4uIC4uLiAuLi4gLi4uIC4u
LiAiU2hlbGwgQ29tbWFuZHMiKSkgKGNvbXBpbGUgbWVudS1pdGVtICJDb21waWxlLi4uIiBj
b21waWxlIDpoZWxwICJJbnZva2UgY29tcGlsZXIgb3IgTWFrZSBpbiBjdXJyZW50IGJ1ZmZl
cidzIGRpcmVjdG9yeSwgdmlldyBlcnJvcnMiKSAocHJvamVjdC1jb21waWxlIG1lbnUtaXRl
bSAiQ29tcGlsZSBQcm9qZWN0Li4uIiBwcm9qZWN0LWNvbXBpbGUgOmhlbHAgIkludm9rZSBj
b21waWxlciBvciBNYWtlIGZvciBjdXJyZW50IHByb2plY3QsIHZpZXcgZXJyb3JzIikgKGdk
YiBtZW51LWl0ZW0gIkRlYnVnZ2VyIChHREIpLi4uIiBnZGIgOmhlbHAgIkRlYnVnIGEgcHJv
Z3JhbSBmcm9tIHdpdGhpbiBFbWFjcyB3aXRoIEdEQiIpIChlZGUgbWVudS1pdGVtICJQcm9q
ZWN0IFN1cHBvcnQgKEVERSkiIGdsb2JhbC1lZGUtbW9kZSA6aGVscCAiVG9nZ2xlIHRoZSBF
bWFjcyBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCAoR2xvYmFsIEVERSBtb2RlKSIgOmJ1dHRv
biAoOnRvZ2dsZSBib3VuZC1hbmQtdHJ1ZS1wIGdsb2JhbC1lZGUtbW9kZSkpIChwcm9qZWN0
IG1lbnUtaXRlbSAiUHJvamVjdCIgKGtleW1hcCAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAu
Li4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4u
IC4uLiAiUHJvamVjdCIpKSAoZWdsb3QgbWVudS1pdGVtICJMYW5ndWFnZSBTZXJ2ZXIgU3Vw
cG9ydCAoRWdsb3QpIiBlZ2xvdCA6aGVscCAiU3RhcnQgbGFuZ3VhZ2Ugc2VydmVyIHN1aXRh
YmxlIGZvciB0aGlzIGJ1ZmZlcidzIG1ham9yLW1vZGUiKSAoc2VtYW50aWMgbWVudS1pdGVt
ICJTb3VyY2UgQ29kZSBQYXJzZXJzIChTZW1hbnRpYykiIHNlbWFudGljLW1vZGUgOmhlbHAg
IlRvZ2dsZSBhdXRvbWF0aWMgcGFyc2luZyBpbiBzb3VyY2UgY29kZSBidWZmZXJzIChTZW1h
bnRpYyBtb2RlKSIgOmJ1dHRvbiAoOnRvZ2dsZSBib3VuZC1hbmQtdHJ1ZS1wIHNlbWFudGlj
LW1vZGUpKSAoc2VwYXJhdG9yLXByb2cgIi0tIikgKHNwZWxsIG1lbnUtaXRlbSAiU3BlbGwg
Q2hlY2tpbmciIGlzcGVsbC1tZW51LW1hcCkgKHNlcGFyYXRvci1zcGVsbCAiLS0iKSAoY29t
cGFyZSBtZW51LWl0ZW0gIkNvbXBhcmUgKEVkaWZmKSIgbWVudS1iYXItZWRpZmYtbWVudSkg
KGVkaWZmLW1lcmdlIG1lbnUtaXRlbSAiTWVyZ2UiIG1lbnUtYmFyLWVkaWZmLW1lcmdlLW1l
bnUpIChlcGF0Y2ggbWVudS1pdGVtICJBcHBseSBQYXRjaCIgDQptZW51LWJhci1lcGF0Y2gt
bWVudSkgKHNlcGFyYXRvci1jb21wYXJlICItLSIpICh2YyBtZW51LWl0ZW0gIlZlcnNpb24g
Q29udHJvbCIgdmMtbWVudS1tYXAgOmZpbHRlciB2Yy1tZW51LW1hcC1maWx0ZXIpIChzZXBh
cmF0b3ItdmMgIi0tIikgKGdudXMgbWVudS1pdGVtICJSZWFkIE5ldCBOZXdzIiBnbnVzIDpo
ZWxwICJSZWFkIG5ldHdvcmsgbmV3cyBncm91cHMiKSAocm1haWwgbWVudS1pdGVtICJSZWFk
IE1haWwiIG1lbnUtYmFyLXJlYWQtbWFpbCA6dmlzaWJsZSAoYW5kIHJlYWQtbWFpbC1jb21t
YW5kIC4uLikgOmhlbHAgIlJlYWQgeW91ciBtYWlsIikgKGNvbXBvc2UtbWFpbCBtZW51LWl0
ZW0gIkNvbXBvc2UgTmV3IE1haWwiIGNvbXBvc2UtbWFpbCA6dmlzaWJsZSAoYW5kIG1haWwt
dXNlci1hZ2VudCAuLi4pIDpoZWxwICJTdGFydCB3cml0aW5nIGEgbmV3IG1haWwgbWVzc2Fn
ZSIpIChkaXJlY3Rvcnktc2VhcmNoIG1lbnUtaXRlbSAiRGlyZWN0b3J5IFNlcnZlcnMiIGV1
ZGMtdG9vbHMtbWVudSkgKGJyb3dzZS13ZWIgbWVudS1pdGVtICJCcm93c2UgdGhlIFdlYi4u
LiIgYnJvd3NlLXdlYikgKHNlcGFyYXRvci1uZXQgIi0tIikgLi4uKSkNCiAgIGFwcGx5KHR0
eS1tZW51LXBvcHVwLW1lbnUgKCh0b29scyAoIzxmcmFtZSBGMSAweDIxYjVjYWQwPiAobWVu
dS1iYXIpICgyNiAuIDApIDApKSAoa2V5bWFwIChncmVwIG1lbnUtaXRlbSAiU2VhcmNoIEZp
bGVzIChHcmVwKS4uLiIgZ3JlcCA6aGVscCAiU2VhcmNoIGZpbGVzIGZvciBzdHJpbmdzIG9y
IHJlZ2V4cHMgKHdpdGggR3JlcCkiKSAocmdyZXAgbWVudS1pdGVtICJSZWN1cnNpdmUgR3Jl
cC4uLiIgcmdyZXAgOmhlbHAgIkludGVyYWN0aXZlbHkgYXNrIGZvciBwYXJhbWV0ZXJzIGFu
ZCBzZWFyY2ggcmVjdXJzaXZlbHkiKSAoc2hlbGwtY29tbWFuZHMgbWVudS1pdGVtICJTaGVs
bCBDb21tYW5kcyIgKGtleW1hcCAuLi4gLi4uIC4uLiAuLi4gLi4uICJTaGVsbCBDb21tYW5k
cyIpKSAoY29tcGlsZSBtZW51LWl0ZW0gIkNvbXBpbGUuLi4iIGNvbXBpbGUgOmhlbHAgIklu
dm9rZSBjb21waWxlciBvciBNYWtlIGluIGN1cnJlbnQgYnVmZmVyJ3MgZGlyZWN0b3J5LCB2
aWV3IGVycm9ycyIpIChwcm9qZWN0LWNvbXBpbGUgbWVudS1pdGVtICJDb21waWxlIFByb2pl
Y3QuLi4iIHByb2plY3QtY29tcGlsZSA6aGVscCAiSW52b2tlIGNvbXBpbGVyIG9yIE1ha2Ug
Zm9yIGN1cnJlbnQgcHJvamVjdCwgdmlldyBlcnJvcnMiKSAoZ2RiIG1lbnUtaXRlbSAiRGVi
dWdnZXIgKEdEQikuLi4iIGdkYiA6aGVscCAiRGVidWcgYSBwcm9ncmFtIGZyb20gd2l0aGlu
IEVtYWNzIHdpdGggR0RCIikgKGVkZSBtZW51LWl0ZW0gIlByb2plY3QgU3VwcG9ydCAoRURF
KSIgZ2xvYmFsLWVkZS1tb2RlIDpoZWxwICJUb2dnbGUgdGhlIEVtYWNzIERldmVsb3BtZW50
IEVudmlyb25tZW50IChHbG9iYWwgRURFIG1vZGUpIiA6YnV0dG9uICg6dG9nZ2xlIGJvdW5k
LWFuZC10cnVlLXAgZ2xvYmFsLWVkZS1tb2RlKSkgKHByb2plY3QgbWVudS1pdGVtICJQcm9q
ZWN0IiAoa2V5bWFwIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAu
Li4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uICJQcm9qZWN0Iikp
IChlZ2xvdCBtZW51LWl0ZW0gIkxhbmd1YWdlIFNlcnZlciBTdXBwb3J0IChFZ2xvdCkiIGVn
bG90IDpoZWxwICJTdGFydCBsYW5ndWFnZSBzZXJ2ZXIgc3VpdGFibGUgZm9yIHRoaXMgYnVm
ZmVyJ3MgbWFqb3ItbW9kZSIpIChzZW1hbnRpYyBtZW51LWl0ZW0gIlNvdXJjZSBDb2RlIFBh
cnNlcnMgKFNlbWFudGljKSIgc2VtYW50aWMtbW9kZSA6aGVscCAiVG9nZ2xlIGF1dG9tYXRp
YyBwYXJzaW5nIGluIHNvdXJjZSBjb2RlIGJ1ZmZlcnMgKFNlbWFudGljIG1vZGUpIiA6YnV0
dG9uICg6dG9nZ2xlIGJvdW5kLWFuZC10cnVlLXAgc2VtYW50aWMtbW9kZSkpIChzZXBhcmF0
b3ItcHJvZyAiLS0iKSAoc3BlbGwgbWVudS1pdGVtICJTcGVsbCBDaGVja2luZyIgaXNwZWxs
LW1lbnUtbWFwKSAoc2VwYXJhdG9yLXNwZWxsICItLSIpIChjb21wYXJlIG1lbnUtaXRlbSAi
Q29tcGFyZSAoRWRpZmYpIiBtZW51LWJhci1lZGlmZi1tZW51KSAoZWRpZmYtbWVyZ2UgbWVu
dS1pdGVtICJNZXJnZSIgbWVudS1iYXItZWRpZmYtbWVyZ2UtbWVudSkgKGVwYXRjaCBtZW51
LWl0ZW0gIkFwcGx5IFBhdGNoIiANCm1lbnUtYmFyLWVwYXRjaC1tZW51KSAoc2VwYXJhdG9y
LWNvbXBhcmUgIi0tIikgKHZjIG1lbnUtaXRlbSAiVmVyc2lvbiBDb250cm9sIiB2Yy1tZW51
LW1hcCA6ZmlsdGVyIHZjLW1lbnUtbWFwLWZpbHRlcikgKHNlcGFyYXRvci12YyAiLS0iKSAo
Z251cyBtZW51LWl0ZW0gIlJlYWQgTmV0IE5ld3MiIGdudXMgOmhlbHAgIlJlYWQgbmV0d29y
ayBuZXdzIGdyb3VwcyIpIChybWFpbCBtZW51LWl0ZW0gIlJlYWQgTWFpbCIgbWVudS1iYXIt
cmVhZC1tYWlsIDp2aXNpYmxlIChhbmQgcmVhZC1tYWlsLWNvbW1hbmQgLi4uKSA6aGVscCAi
UmVhZCB5b3VyIG1haWwiKSAoY29tcG9zZS1tYWlsIG1lbnUtaXRlbSAiQ29tcG9zZSBOZXcg
TWFpbCIgY29tcG9zZS1tYWlsIDp2aXNpYmxlIChhbmQgbWFpbC11c2VyLWFnZW50IC4uLikg
OmhlbHAgIlN0YXJ0IHdyaXRpbmcgYSBuZXcgbWFpbCBtZXNzYWdlIikgKGRpcmVjdG9yeS1z
ZWFyY2ggbWVudS1pdGVtICJEaXJlY3RvcnkgU2VydmVycyIgZXVkYy10b29scy1tZW51KSAo
YnJvd3NlLXdlYiBtZW51LWl0ZW0gIkJyb3dzZSB0aGUgV2ViLi4uIiBicm93c2Utd2ViKSAo
c2VwYXJhdG9yLW5ldCAiLS0iKSAoY2FsZW5kYXIgbWVudS1pdGVtICJDYWxlbmRhciIgY2Fs
ZW5kYXIgOmhlbHAgIkludm9rZSB0aGUgRW1hY3MgYnVpbHQtaW4gY2FsZW5kYXIiKSAoY2Fs
YyBtZW51LWl0ZW0gIlByb2dyYW1tYWJsZSBDYWxjdWxhdG9yIiBjYWxjIDpoZWxwICJJbnZv
a2UgdGhlIEVtYWNzIGJ1aWx0LWluIGZ1bGwgc2NpZW50aWZpYyBjYWxjdWxhdG9yIikgKHNp
bXBsZS1jYWxjdWxhdG9yIG1lbnUtaXRlbSAiU2ltcGxlIENhbGN1bGF0b3IiIGNhbGN1bGF0
b3IgOmhlbHAgIkludm9rZSB0aGUgRW1hY3MgYnVpbHQtaW4gcXVpY2sgY2FsY3VsYXRvciIp
IChzZXBhcmF0b3ItZW5jcnlwdGlvbi1kZWNyeXB0aW9uICItLSIpIChlbmNyeXB0aW9uLWRl
Y3J5cHRpb24gbWVudS1pdGVtICJFbmNyeXB0aW9uL0RlY3J5cHRpb24iIChrZXltYXAgLi4u
IC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAu
Li4gIkVuY3J5cHRpb24vRGVjcnlwdGlvbiIpKSAoc2VwYXJhdG9yLWdhbWVzICItLSIpIC4u
LikpKQ0KICAgeC1wb3B1cC1tZW51KCh0b29scyAoIzxmcmFtZSBGMSAweDIxYjVjYWQwPiAo
bWVudS1iYXIpICgyNiAuIDApIDApKSAoa2V5bWFwIChncmVwIG1lbnUtaXRlbSAiU2VhcmNo
IEZpbGVzIChHcmVwKS4uLiIgZ3JlcCA6aGVscCAiU2VhcmNoIGZpbGVzIGZvciBzdHJpbmdz
IG9yIHJlZ2V4cHMgKHdpdGggR3JlcCkiKSAocmdyZXAgbWVudS1pdGVtICJSZWN1cnNpdmUg
R3JlcC4uLiIgcmdyZXAgOmhlbHAgIkludGVyYWN0aXZlbHkgYXNrIGZvciBwYXJhbWV0ZXJz
IGFuZCBzZWFyY2ggcmVjdXJzaXZlbHkiKSAoc2hlbGwtY29tbWFuZHMgbWVudS1pdGVtICJT
aGVsbCBDb21tYW5kcyIgKGtleW1hcCAuLi4gLi4uIC4uLiAuLi4gLi4uICJTaGVsbCBDb21t
YW5kcyIpKSAoY29tcGlsZSBtZW51LWl0ZW0gIkNvbXBpbGUuLi4iIGNvbXBpbGUgOmhlbHAg
Ikludm9rZSBjb21waWxlciBvciBNYWtlIGluIGN1cnJlbnQgYnVmZmVyJ3MgZGlyZWN0b3J5
LCB2aWV3IGVycm9ycyIpIChwcm9qZWN0LWNvbXBpbGUgbWVudS1pdGVtICJDb21waWxlIFBy
b2plY3QuLi4iIHByb2plY3QtY29tcGlsZSA6aGVscCAiSW52b2tlIGNvbXBpbGVyIG9yIE1h
a2UgZm9yIGN1cnJlbnQgcHJvamVjdCwgdmlldyBlcnJvcnMiKSAoZ2RiIG1lbnUtaXRlbSAi
RGVidWdnZXIgKEdEQikuLi4iIGdkYiA6aGVscCAiRGVidWcgYSBwcm9ncmFtIGZyb20gd2l0
aGluIEVtYWNzIHdpdGggR0RCIikgKGVkZSBtZW51LWl0ZW0gIlByb2plY3QgU3VwcG9ydCAo
RURFKSIgZ2xvYmFsLWVkZS1tb2RlIDpoZWxwICJUb2dnbGUgdGhlIEVtYWNzIERldmVsb3Bt
ZW50IEVudmlyb25tZW50IChHbG9iYWwgRURFIG1vZGUpIiA6YnV0dG9uICg6dG9nZ2xlIGJv
dW5kLWFuZC10cnVlLXAgZ2xvYmFsLWVkZS1tb2RlKSkgKHByb2plY3QgbWVudS1pdGVtICJQ
cm9qZWN0IiAoa2V5bWFwIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4u
LiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uICJQcm9qZWN0
IikpIChlZ2xvdCBtZW51LWl0ZW0gIkxhbmd1YWdlIFNlcnZlciBTdXBwb3J0IChFZ2xvdCki
IGVnbG90IDpoZWxwICJTdGFydCBsYW5ndWFnZSBzZXJ2ZXIgc3VpdGFibGUgZm9yIHRoaXMg
YnVmZmVyJ3MgbWFqb3ItbW9kZSIpIChzZW1hbnRpYyBtZW51LWl0ZW0gIlNvdXJjZSBDb2Rl
IFBhcnNlcnMgKFNlbWFudGljKSIgc2VtYW50aWMtbW9kZSA6aGVscCAiVG9nZ2xlIGF1dG9t
YXRpYyBwYXJzaW5nIGluIHNvdXJjZSBjb2RlIGJ1ZmZlcnMgKFNlbWFudGljIG1vZGUpIiA6
YnV0dG9uICg6dG9nZ2xlIGJvdW5kLWFuZC10cnVlLXAgc2VtYW50aWMtbW9kZSkpIChzZXBh
cmF0b3ItcHJvZyAiLS0iKSAoc3BlbGwgbWVudS1pdGVtICJTcGVsbCBDaGVja2luZyIgaXNw
ZWxsLW1lbnUtbWFwKSAoc2VwYXJhdG9yLXNwZWxsICItLSIpIChjb21wYXJlIG1lbnUtaXRl
bSAiQ29tcGFyZSAoRWRpZmYpIiBtZW51LWJhci1lZGlmZi1tZW51KSAoZWRpZmYtbWVyZ2Ug
bWVudS1pdGVtICJNZXJnZSIgbWVudS1iYXItZWRpZmYtbWVyZ2UtbWVudSkgKGVwYXRjaCBt
ZW51LWl0ZW0gIkFwcGx5IFBhdGNoIiANCm1lbnUtYmFyLWVwYXRjaC1tZW51KSAoc2VwYXJh
dG9yLWNvbXBhcmUgIi0tIikgKHZjIG1lbnUtaXRlbSAiVmVyc2lvbiBDb250cm9sIiB2Yy1t
ZW51LW1hcCA6ZmlsdGVyIHZjLW1lbnUtbWFwLWZpbHRlcikgKHNlcGFyYXRvci12YyAiLS0i
KSAoZ251cyBtZW51LWl0ZW0gIlJlYWQgTmV0IE5ld3MiIGdudXMgOmhlbHAgIlJlYWQgbmV0
d29yayBuZXdzIGdyb3VwcyIpIChybWFpbCBtZW51LWl0ZW0gIlJlYWQgTWFpbCIgbWVudS1i
YXItcmVhZC1tYWlsIDp2aXNpYmxlIChhbmQgcmVhZC1tYWlsLWNvbW1hbmQgLi4uKSA6aGVs
cCAiUmVhZCB5b3VyIG1haWwiKSAoY29tcG9zZS1tYWlsIG1lbnUtaXRlbSAiQ29tcG9zZSBO
ZXcgTWFpbCIgY29tcG9zZS1tYWlsIDp2aXNpYmxlIChhbmQgbWFpbC11c2VyLWFnZW50IC4u
LikgOmhlbHAgIlN0YXJ0IHdyaXRpbmcgYSBuZXcgbWFpbCBtZXNzYWdlIikgKGRpcmVjdG9y
eS1zZWFyY2ggbWVudS1pdGVtICJEaXJlY3RvcnkgU2VydmVycyIgZXVkYy10b29scy1tZW51
KSAoYnJvd3NlLXdlYiBtZW51LWl0ZW0gIkJyb3dzZSB0aGUgV2ViLi4uIiBicm93c2Utd2Vi
KSAoc2VwYXJhdG9yLW5ldCAiLS0iKSAuLi4pKQ0KICAgcG9wdXAtbWVudSgoa2V5bWFwIChn
cmVwIG1lbnUtaXRlbSAiU2VhcmNoIEZpbGVzIChHcmVwKS4uLiIgZ3JlcCA6aGVscCAiU2Vh
cmNoIGZpbGVzIGZvciBzdHJpbmdzIG9yIHJlZ2V4cHMgKHdpdGggR3JlcCkiKSAocmdyZXAg
bWVudS1pdGVtICJSZWN1cnNpdmUgR3JlcC4uLiIgcmdyZXAgOmhlbHAgIkludGVyYWN0aXZl
bHkgYXNrIGZvciBwYXJhbWV0ZXJzIGFuZCBzZWFyY2ggcmVjdXJzaXZlbHkiKSAoc2hlbGwt
Y29tbWFuZHMgbWVudS1pdGVtICJTaGVsbCBDb21tYW5kcyIgKGtleW1hcCAuLi4gLi4uIC4u
LiAuLi4gLi4uICJTaGVsbCBDb21tYW5kcyIpKSAoY29tcGlsZSBtZW51LWl0ZW0gIkNvbXBp
bGUuLi4iIGNvbXBpbGUgOmhlbHAgIkludm9rZSBjb21waWxlciBvciBNYWtlIGluIGN1cnJl
bnQgYnVmZmVyJ3MgZGlyZWN0b3J5LCB2aWV3IGVycm9ycyIpIChwcm9qZWN0LWNvbXBpbGUg
bWVudS1pdGVtICJDb21waWxlIFByb2plY3QuLi4iIHByb2plY3QtY29tcGlsZSA6aGVscCAi
SW52b2tlIGNvbXBpbGVyIG9yIE1ha2UgZm9yIGN1cnJlbnQgcHJvamVjdCwgdmlldyBlcnJv
cnMiKSAoZ2RiIG1lbnUtaXRlbSAiRGVidWdnZXIgKEdEQikuLi4iIGdkYiA6aGVscCAiRGVi
dWcgYSBwcm9ncmFtIGZyb20gd2l0aGluIEVtYWNzIHdpdGggR0RCIikgKGVkZSBtZW51LWl0
ZW0gIlByb2plY3QgU3VwcG9ydCAoRURFKSIgZ2xvYmFsLWVkZS1tb2RlIDpoZWxwICJUb2dn
bGUgdGhlIEVtYWNzIERldmVsb3BtZW50IEVudmlyb25tZW50IChHbG9iYWwgRURFIG1vZGUp
IiA6YnV0dG9uICg6dG9nZ2xlIGJvdW5kLWFuZC10cnVlLXAgZ2xvYmFsLWVkZS1tb2RlKSkg
KHByb2plY3QgbWVudS1pdGVtICJQcm9qZWN0IiAoa2V5bWFwIC4uLiAuLi4gLi4uIC4uLiAu
Li4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4uIC4uLiAuLi4gLi4u
IC4uLiAuLi4gLi4uICJQcm9qZWN0IikpIChlZ2xvdCBtZW51LWl0ZW0gIkxhbmd1YWdlIFNl
cnZlciBTdXBwb3J0IChFZ2xvdCkiIGVnbG90IDpoZWxwICJTdGFydCBsYW5ndWFnZSBzZXJ2
ZXIgc3VpdGFibGUgZm9yIHRoaXMgYnVmZmVyJ3MgbWFqb3ItbW9kZSIpIChzZW1hbnRpYyBt
ZW51LWl0ZW0gIlNvdXJjZSBDb2RlIFBhcnNlcnMgKFNlbWFudGljKSIgc2VtYW50aWMtbW9k
ZSA6aGVscCAiVG9nZ2xlIGF1dG9tYXRpYyBwYXJzaW5nIGluIHNvdXJjZSBjb2RlIGJ1ZmZl
cnMgKFNlbWFudGljIG1vZGUpIiA6YnV0dG9uICg6dG9nZ2xlIGJvdW5kLWFuZC10cnVlLXAg
c2VtYW50aWMtbW9kZSkpIChzZXBhcmF0b3ItcHJvZyAiLS0iKSAoc3BlbGwgbWVudS1pdGVt
ICJTcGVsbCBDaGVja2luZyIgaXNwZWxsLW1lbnUtbWFwKSAoc2VwYXJhdG9yLXNwZWxsICIt
LSIpIChjb21wYXJlIG1lbnUtaXRlbSAiQ29tcGFyZSAoRWRpZmYpIiBtZW51LWJhci1lZGlm
Zi1tZW51KSAoZWRpZmYtbWVyZ2UgbWVudS1pdGVtICJNZXJnZSIgbWVudS1iYXItZWRpZmYt
bWVyZ2UtbWVudSkgKGVwYXRjaCBtZW51LWl0ZW0gIkFwcGx5IFBhdGNoIiBtZW51LWJhci1l
cGF0Y2gtbWVudSkgKHNlcGFyYXRvci1jb21wYXJlICItLSIpICh2YyBtZW51LWl0ZW0gIlZl
cnNpb24gDQpDb250cm9sIiB2Yy1tZW51LW1hcCA6ZmlsdGVyIHZjLW1lbnUtbWFwLWZpbHRl
cikgKHNlcGFyYXRvci12YyAiLS0iKSAoZ251cyBtZW51LWl0ZW0gIlJlYWQgTmV0IE5ld3Mi
IGdudXMgOmhlbHAgIlJlYWQgbmV0d29yayBuZXdzIGdyb3VwcyIpIChybWFpbCBtZW51LWl0
ZW0gIlJlYWQgTWFpbCIgbWVudS1iYXItcmVhZC1tYWlsIDp2aXNpYmxlIChhbmQgcmVhZC1t
YWlsLWNvbW1hbmQgLi4uKSA6aGVscCAiUmVhZCB5b3VyIG1haWwiKSAoY29tcG9zZS1tYWls
IG1lbnUtaXRlbSAiQ29tcG9zZSBOZXcgTWFpbCIgY29tcG9zZS1tYWlsIDp2aXNpYmxlIChh
bmQgbWFpbC11c2VyLWFnZW50IC4uLikgOmhlbHAgIlN0YXJ0IHdyaXRpbmcgYSBuZXcgbWFp
bCBtZXNzYWdlIikgKGRpcmVjdG9yeS1zZWFyY2ggbWVudS1pdGVtICJEaXJlY3RvcnkgU2Vy
dmVycyIgZXVkYy10b29scy1tZW51KSAoYnJvd3NlLXdlYiBtZW51LWl0ZW0gIkJyb3dzZSB0
aGUgV2ViLi4uIiBicm93c2Utd2ViKSAoc2VwYXJhdG9yLW5ldCAiLS0iKSAuLi4pICgjPHdp
bmRvdyAxIG9uICpzY3JhdGNoKj4gMjcgKDI2IC4gMCkgMCBuaWwgMjcgKDI2IC4gMCkgbmls
ICgwIC4gMCkgKDEgLiAwKSkgbmlsIHQpDQogICBtZW51LWJhci1vcGVuKG5pbCAyNikNCiAg
IG1lbnUtYmFyLW9wZW4tbW91c2UoKG1vdXNlLTEgKG5pbCBtZW51LWJhciAoMjggLiAwKSA5
NjgpKSkNCiAgIGZ1bmNhbGwtaW50ZXJhY3RpdmVseShtZW51LWJhci1vcGVuLW1vdXNlICht
b3VzZS0xIChuaWwgbWVudS1iYXIgKDI4IC4gMCkgOTY4KSkpDQogICBjYWxsLWludGVyYWN0
aXZlbHkobWVudS1iYXItb3Blbi1tb3VzZSBuaWwgbmlsKQ0KICAgY29tbWFuZC1leGVjdXRl
KG1lbnUtYmFyLW9wZW4tbW91c2UpDQoNCm1hcnRpbg0K




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 9 Feb 2025 18:10:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 13:10:17 2025
Received: from localhost ([127.0.0.1]:46189 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1thBl3-0008D4-0n
	for submit <at> debbugs.gnu.org; Sun, 09 Feb 2025 13:10:17 -0500
Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]:47305)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1thBkz-0008BE-E5
 for 75056 <at> debbugs.gnu.org; Sun, 09 Feb 2025 13:10:14 -0500
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-aaeec07b705so590376166b.2
 for <75056 <at> debbugs.gnu.org>; Sun, 09 Feb 2025 10:10:13 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1739124607; x=1739729407; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=QnzhzdQhas+zYuwC2rYcrNfQNZg6viZ/FuMsYxBvl08=;
 b=EWQ71Z2r+FR39x4q1u7SMsmMwRLt0iVl4c3111Y7qnOk4Kws+kU4dtopt/nyiooPcz
 agbbmI+BhAhJBXP1t0koi8KboenK5YH71PllX8ARpNBBPbiEusaES3bHxMcrNVs2OL/Z
 i9mZPunsNIB3VPcBfsLNyNXVbChny+Wgr7fLIO1Savh/Gn4E8G+XIoT4rZDGYyGxV8EX
 hjZN3YWSkWoYHDzlJV42hcgX1L3tyBijJUB2vNssG81oae1HtmibDPYxNZI4Ff4Va/nC
 dOn1WKJYIn97lnkQUIzJRYIUvNvIqcDPOoMQuq9mWJzq0Y7xt+aKEA5wZjtrdKWuthiH
 FZ9w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1739124607; x=1739729407;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=QnzhzdQhas+zYuwC2rYcrNfQNZg6viZ/FuMsYxBvl08=;
 b=jpD11WQKSHwTO81QxIPEdMJcSjs/OSy+Jpd28Yu8q0jyjzxbBgA44Qn8e/SW19zeXf
 ky6XxZF396/Y9GfWAETlJXN5pvMrxIYlkiz6D2ozI/lSPsX8xw3hRwVwiqLeWN2+PcY1
 AvmiCGUmYIhKrPW4v8KEleBY1/n2+wWsbLfv7XzqgMCDiPIl+iLbW1pRtxfbpXkKtyvv
 ii3aAgIRfDQtEg4kMMKRMJLKi59KJgg4ztkJDTNpoLCN+bj66n2UeDo9F3vsA99iJd9q
 I243xd472UUGs3QH2HCQKu1b+Bl0dK4PAv+vN2396cR0Ndog3WguWypY3ltTmqKl4ZKN
 q+Ew==
X-Forwarded-Encrypted: i=1;
 AJvYcCXQNy0eJ7hbchC5P2Xnte+ArhwjyumDtras1Ho2YT6Ubt3gABKXAUmMRyCwdvd9HDIQXCMSRg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzbUID0BBTFsrqiX3PthWCBUHeBMDaxtwXFIIOiL11zLlAyAPMe
 aZEAJyBARXvTWyZQpM9WP7EiLGJhSbNXwKQMeHukejc41+H/fCaJbH7EXA==
X-Gm-Gg: ASbGncvTGbktf66IMvhx0dF1D2WdgRrWregddlf8Cgo8tZWE49PZv3cZgMRJx2efjik
 noUSVwftx+jgoAhr1Qd/U9CkKw+S9h1GJhowK5OB+ffjtGPLF7Lg9D04ssQ7QbKf3qQir3oFbgq
 xc8uWqe3sxSjeTcel49xwgbFjAWFvcPS8YVpdhCQq8+hwtKKB2DSz1bS6gsGumIYFhxpvxEcjQx
 3BLBCaSCgy/lRM1DKGRJWj8RS9O7C1WKZrZ361q8HFcNiaXbiqhDWIka6LMdmjGC6+OCMTD267h
 ym653nFqlRwIE6gN9VaHqd1oMXz2EJizMDX1gcEixYfIDXW/f+teBoiXsBs1QpERY8poWgQyROO
 BHD24x+Z1uPbFWMDzLs3nlc1i
X-Google-Smtp-Source: AGHT+IEIqemKoOuhNoYNDeR0baJArTcg3lu8MJNhK2TRI0DpK0fuApLRRkSFbuw5UPU0WWcmwy1SAw==
X-Received: by 2002:a17:907:9719:b0:aaf:8f8e:6bf4 with SMTP id
 a640c23a62f3a-ab789aeacc1mr1087002266b.26.1739124606345; 
 Sun, 09 Feb 2025 10:10:06 -0800 (PST)
Received: from pro2 (p200300e0b725cf0094296d0536d9d0d3.dip0.t-ipconnect.de.
 [2003:e0:b725:cf00:9429:6d05:36d9:d0d3])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab7809a2ec4sm639317266b.116.2025.02.09.10.10.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 09 Feb 2025 10:10:05 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <m2y0yfks1p.fsf@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m28qqrlkyg.fsf@HIDDEN>
 <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
 <m2seozjo3c.fsf@HIDDEN> <m2msf6ezfq.fsf@HIDDEN>
 <m2jz9zmlfg.fsf@HIDDEN> <m2frknml43.fsf@HIDDEN>
 <e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
 <m234gnmjvi.fsf@HIDDEN>
 <31bd2acb-9523-4def-80c1-235807c4abc9@HIDDEN>
 <m2y0yfks1p.fsf@HIDDEN>
Date: Sun, 09 Feb 2025 19:10:04 +0100
Message-ID: <m2seonf0qr.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:

> martin rudalics <rudalics@HIDDEN> writes:
>
>>> Sachen gibt's :-/.
>>
>> Clicking with the mouse on an arbitrary menubar item gets me
>
> Yeah, I didn't do the integration with the rest of Emacs yet. Looks like
> another dark and ancient corner of Emacs. Insofar, please disregard
> tty-menu-mode at the moment. But the rest is kind of funny, help-echo,
> C-s in menus :-).
>
> Wie auch immer.

This works better with the menu-bar, although the menu bar itself does
strange stuff while the menu is open. Don't know what that is.


--=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: attachment; filename=tty-menu.el
Content-Transfer-Encoding: quoted-printable

;; -*- lexical-binding: t; symbol-packages: t -*-
;;; tty-menu.el --- A menu implementation in Lisp

;; Copyright (C) 2025 Gerd M=C3=B6llmann

;; This file is not part of GNU Emacs.

;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.

;;; Commentary:

;;; Code:

;;; Todo

;; A mode: Open a sub-menu by moving the selection into the menu-item
;; for the sub-menu.  Close it by moving the selection out.

;; Make cursor invisible somehow (is cursor-type not supposed to
;; work?)

;; menu-bar-menu doesn't work (list of keymaps?)

(eval-when-compile (require 'cl-lib))
(require 'eieio)

(defclass tty-menu-element () ()
  :documentation "Base class for elements of a menu.")

(defclass tty-menu-pane (tty-menu-element)
  ((items :initarg :items :initform nil :type t)
   (buffer :initarg :buffer :type buffer)
   (layout :type list))
  :documentation "Class for menu panes.")

(defclass tty-menu-item (tty-menu-element)
  ((name :initarg :name :type string)
   (enable :initarg :enable :initform t :type t)
   (help :initarg :help :initform nil :type t)
   (visible :initarg :visible :initform t :type t)
   (key-sequence :initarg :key-sequence :initform nil :type t)
   (keys :initarg :keys :initform nil :type t)
   (filter :initarg :filter :initform nil :type t)
   (button :initarg :button :initform nil :type t)
   (selected :initarg :selected :initform nil :type t)
   (binding :initarg :binding :initform nil :type t)))

(defclass tty-menu-button (tty-menu-item) ())
(defclass tty-menu-radio (tty-menu-button) ())
(defclass tty-menu-checkbox (tty-menu-button) ())

(defclass tty-menu-separator (tty-menu-item)
  ((sep :initform "-" :type string :reader tty-menu-sep)))

(cl-defmethod initialize-instance :after ((item tty-menu-separator) &rest)
  (with-slots (name sep enable) item
    (setf enable nil)
    (cl-multiple-value-bind (ch disp)
	(pcase name
	  ("--space" (cl-values ?\s nil))
	  ("--double-line" (cl-values ?=3D 'box-double-horizontal))
	  (_ (cl-values ?- 'box-horizontal)))
      (setf sep
	    (make-string 1
			 (or (and disp
				  (let ((c (display-table-slot
					    standard-display-table disp)))
				    (and (characterp c) c)))
			     ch))))))

(defvar tty-menu-left-border-format "%1s")
(defvar tty-menu-right-border-format "%1s")
(defvar tty-menu-button-format "%-4s")
(defvar tty-menu-key-format "%10s")
(defvar tty-menu-name-format "%s")

(defvar tty-menu-triangle "=E2=96=B6")
(defvar tty-menu-radio-on "=E2=97=8F")
(defvar tty-menu-radio-off "=E2=97=AF")
(defvar tty-menu-checkbox-on "=E2=9C=94")
(defvar tty-menu-checkbox-off "=E2=96=A1")

(defun tty-menu-selectable-p (item)
  (eval (slot-value item 'enable)))

(defun tty-menu-visible-p (item)
  (eval (slot-value item 'visible)))

(defun tty-menu-enabled-p (item)
  (eval (slot-value item 'enable)))

(defun tty-menu-ninsert (n x)
  (cl-loop repeat n do (insert x)))

(cl-defgeneric tty-menu-button-string (item)
  (:method ((_ tty-menu-item)) "")
  (:method ((r tty-menu-radio))
	   (format tty-menu-button-format
		   (if (slot-value r 'selected)
		       tty-menu-radio-on tty-menu-radio-off)))
  (:method ((c tty-menu-checkbox))
	   (format tty-menu-button-format
		   (if (slot-value c 'selected)
		       tty-menu-checkbox-on tty-menu-checkbox-off)))
  (:method ((_ tty-menu-separator)) ""))

(cl-defgeneric tty-menu-name-string (item)
  (:method ((item tty-menu-item))
	   (format tty-menu-name-format (slot-value item 'name)))
  (:method ((_ tty-menu-separator)) ""))

(cl-defgeneric tty-menu-key-string (item)
  (:method ((item tty-menu-item))
	   (format tty-menu-key-format
		   (with-slots (binding) item
		     (cond ((commandp binding)
			    (key-description (where-is-internal binding nil t)))
			   ((keymapp binding)
			    tty-menu-triangle)
			   (t "")))))
  (:method ((_ tty-menu-separator)) ""))

(cl-defgeneric tty-menu-draw-button (item pane)
  (:method ((_item tty-menu-item) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ button-width _ _ _) layout
	       (tty-menu-ninsert button-width ?\s))))
  (:method ((item tty-menu-button) _pane)
	   (with-slots (selected button) item
	     (cl-destructuring-bind (_ . form) button
	       (setf selected (eval form))
	       (insert (tty-menu-button-string item)))))
  (:method ((item tty-menu-separator) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ button-width _ _ _) layout
	       (tty-menu-ninsert button-width (tty-menu-sep item))))))

(cl-defgeneric tty-menu-draw-name (item pane)
  (:method ((item tty-menu-item) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (left-border button name-width _ _) layout
	       (with-slots (name) item
		 (insert (tty-menu-name-string item))
		 (indent-to (+ left-border button name-width))))))
  (:method ((item tty-menu-separator) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ _ name-width _ _) layout
	       (tty-menu-ninsert name-width (tty-menu-sep item))))))

(cl-defgeneric tty-menu-draw-key (item pane)
  (:method ((item tty-menu-item) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (left-border button name-width key-width _) la=
yout
	       (insert (tty-menu-key-string item))
	       (indent-to (+ left-border button name-width key-width)))))
  (:method ((item tty-menu-separator) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ _ _ key-width _) layout
	       (tty-menu-ninsert key-width (tty-menu-sep item))))))

(cl-defgeneric tty-menu-draw-finish (item pane)
  (:method ((item tty-menu-item) _)
	   (let* ((enabled (tty-menu-enabled-p item))
		  (face (if enabled 'tty-menu-enabled-face
			  'tty-menu-disabled-face)))
	     (put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable enabled)
	     (put-text-property (pos-bol) (pos-eol) 'face face))
	   (when-let* ((help (slot-value item 'help)))
	     (put-text-property (pos-bol) (pos-eol) 'help-echo help)))
  (:method ((_item tty-menu-separator) _)
	   (put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable nil)
	   (put-text-property (pos-bol) (pos-eol) 'face 'tty-menu-enabled-face)))

(cl-defgeneric tty-menu-layout (pane)
  (:method ((pane tty-menu-pane))
	   (with-slots (items layout) pane
	     (cl-loop
	      with left-border =3D (string-width (format tty-menu-left-border-form=
at ""))
	      with right-border =3D (string-width (format tty-menu-right-border-fo=
rmat ""))
	      for i in items
	      maximize (string-width (tty-menu-button-string i)) into button
	      maximize (string-width (tty-menu-name-string i)) into name
	      maximize (string-width (tty-menu-key-string i)) into key
	      finally (setq layout `(,left-border ,button ,name ,key ,right-border=
))))))

(defun tty-menu-try-place-point (selectable old-line)
  (goto-char (point-min))
  (if (nth old-line selectable)
      (forward-line old-line)
    (let ((next (cl-loop for i from (1+ old-line)
			 to (1- (length selectable))
			 when (nth i selectable) return i))
	  (prev (cl-loop for i downfrom (1- old-line) to 0
			 when (nth i selectable) return i)))
      (cond (next (forward-line next))
	    (prev (forward-line prev))))))

(cl-defgeneric tty-menu-draw (item pane)
  (:method ((pane tty-menu-pane) line)
	   (with-slots (buffer items) pane
	     (with-current-buffer buffer
	       (let ((old-line (or line (1- (line-number-at-pos)))))
		 (erase-buffer)
		 (tty-menu-layout pane)
		 (let ((selectable
 			(cl-loop for i in items
				 when (tty-menu-visible-p i)
				 do (tty-menu-draw i pane)
				 and collect (tty-menu-selectable-p i))))
		   (tty-menu-try-place-point selectable old-line))))))
  (:method :around ((item tty-menu-item) pane)
	   (let ((start (point)))
	     (insert (format tty-menu-left-border-format ""))
	     (cl-call-next-method)
	     (insert (format tty-menu-right-border-format ""))
	     (tty-menu-draw-finish item pane)
	     (insert ?\n)
	     (put-text-property start (point) 'tty-menu-item item)))
  (:method ((item tty-menu-item) pane)
	   (tty-menu-draw-button item pane)
	   (tty-menu-draw-name item pane)
	   (tty-menu-draw-key item pane)))

(defvar-local tty-menu-selection-ov nil)
(defvar-local tty-menu-pane-drawn nil)

(cl-defgeneric tty-menu-select-item (item how)
  (:method ((item tty-menu-item) how)
	   (when-let* ((enabled (tty-menu-enabled-p item)))
	     (throw 'tty-menu-item-selected (cons item how))))
  (:method ((_item tty-menu-separator) _))
  (:method ((item tty-menu-button) _)
	   (with-slots (binding) item
	     (when (commandp binding)
	       (call-interactively binding))
	     (tty-menu-draw tty-menu-pane-drawn nil))))

(defun tty-menu-create-buffer (pane)
  "Create a buffer named BUFFER for DRAW to fill.
DRAW is called with no arguments and with current buffer being the
buffer created. Value is (BUFFER WIDTH HEIGHT), where BUFFER is
the buffer that was used, WIDTH is the maximum line width in the
buffer, and HEIGHT is the number of lines in the buffer. "
  (with-slots (buffer) pane
    (with-current-buffer buffer
      (dolist (var '((mode-line-format . nil)
                     (header-line-format . nil)
                     (tab-line-format . nil)
                     (tab-bar-format . nil)
                     (frame-title-format . "")
                     (truncate-lines . t)
                     (cursor-in-non-selected-windows . nil)
                     (cursor-type . nil)
                     (show-trailing-whitespace . nil)
                     (display-line-numbers . nil)
                     (left-fringe-width . nil)
                     (right-fringe-width . nil)
                     (left-margin-width . 0)
                     (right-margin-width . 0)
                     (fringes-outside-margins . 0)
                     (scroll-conservatively . 1)))
	(set (make-local-variable (car var)) (cdr var)))
      (let ((inhibit-modification-hooks t)
            (inhibit-read-only t)
	    (indent-tabs-mode nil))
	(setq tty-menu-selection-ov nil tty-menu-pane-drawn pane)
	(tty-menu-draw pane 0)
	(cl-flet ((line-width ()
		    (save-excursion
		      (goto-char (point-min))
		      (goto-char (line-end-position))
		      (current-column))))
	  (list (current-buffer)
		(line-width)
		(count-lines (point-min) (point-max))))))))

(defun tty-menu-make-element (item)
  (cl-labels ((separator? (name) (string-prefix-p "--" name))
	      (button? (props) (plist-get props :button))
	      (radio? (props) (eq (car (button? props)) :radio))
	      (toggle? (props) (eq (car (button? props)) :toggle)))
    ;; COND* complains about unknown pattern (PREDICATE symbol) if
    ;; PREDICATE is a local function. Use (CONSTRAIN symbol (PRODICATE
    ;; symbol)) instead.
    (cond*
     ((match* (cons 'menu-item
		    (cons (constrain name (separator? name))
			  props))
	      item)
      (apply #'make-instance 'tty-menu-separator (cl-list* :name name props=
)))
     ((match* (list 'menu-item name) item)
      (make-instance 'tty-menu-item :name name :enable nil))
     ((match* (cons 'menu-item
		    (cons name
			  (cons binding
				(constrain props (radio? props)))))
	      item)
      (apply #'make-instance 'tty-menu-radio
	     (cl-list* :name name :binding binding props)))
     ((match* (cons 'menu-item
		    (cons name
			  (cons binding
				(constrain props (toggle? props)))))
	      item)
      (apply #'make-instance 'tty-menu-checkbox
	     (cl-list* :name name :binding binding props)))
     ((match* (cons 'menu-item
		    (cons name
			  (cons binding props)))
	      item)
      (apply #'make-instance 'tty-menu-item
	     (cl-list* :name name :binding binding props)))
     ((match* (cons (constrain name (separator? name)) _)
	      item)
      (make-instance 'tty-menu-separator :name name))
     ((match* (cons name
		    (cons help
			  binding))
	      item)
      (make-instance 'tty-menu-item :name name :binding binding :help help))
     ((match* (cons name binding) item)
      (make-instance 'tty-menu-item :name name :binding binding))
     (t (error "No match for menu item %S" item)))))

(defun tty-menu-keymap-name (keymap)
  (let ((name (last keymap)))
    (and (stringp (car name)) (car name))))

(defun tty-menu-make-pane-buffer (keymap)
  (cl-labels
      ((pane-buffer-name ()
	 (if-let* ((name (tty-menu-keymap-name keymap)))
	     (format " *tty-menu-%s*" name)
	   (generate-new-buffer-name " *tty-menu--")))
       (make-pane ()
	 (make-instance
	  'tty-menu-pane
	  :buffer (get-buffer-create (pane-buffer-name))
	  :items (cl-loop for b being the key-bindings of keymap
			  collect (tty-menu-make-element b)))))
    (tty-menu-create-buffer (make-pane))))

(defvar tty-menu-frame-parameters
  `((visibility . nil)
    (background-color . "grey20")
    (foreground-color . "white")
    (width . 0) (height . 0)
    (min-width . t) (min-height . t)
    (no-accept-focus . t)
    (no-focus-on-map . t)
    (border-width . 0)
    (child-frame-border-width . 1)
    (left-fringe . 0)
    (right-fringe . 0)
    (vertical-scroll-bars . nil)
    (horizontal-scroll-bars . nil)
    (tty-menu-bar-lines . 0)
    (tool-bar-lines . 0)
    (tab-bar-lines . 0)
    (no-other-frame . t)
    (no-other-window . t)
    (no-delete-other-windows . t)
    (unsplittable . t)
    (undecorated . t)
    (cursor-type . nil)
    (no-special-glyphs . t)
    (desktop-dont-save . t)))

(defun tty-menu-frame-parameters ()
  (let ((params (copy-sequence tty-menu-frame-parameters))
        (fg (face-attribute 'tty-menu-enabled-face :foreground))
        (bg (face-attribute 'tty-menu-enabled-face :background)))
    (when (stringp fg)
      (setf (alist-get 'foreground-color params) fg))
    (when (stringp bg)
      (setf (alist-get 'background-color params) bg))
    params))

(defun tty-menu-make-fully-visible (f1 f2 x y)
  (let* ((f1-edges (frame-edges f1))
	 (f1-width (frame-width f1))
         (f1-height (frame-height f1))
         (f1-x (nth 0 f1-edges))
         (f1-y (nth 1 f1-edges))
         (f2-width (frame-width f2))
         (f2-height (frame-height f2))
         (new-x (max f1-x (min (+ f1-x f1-width (- f2-width)) x)))
         (new-y (max f1-y (min (+ f1-y f1-height (- f2-height)) y))))
    ;; Ensure F2 is fully contained within F1
    (setq new-x (min new-x (+ f1-x f1-width (- f2-width))))
    (setq new-y (min new-y (+ f1-y f1-height (- f2-height))))
    ;; Move and resize F2
    (set-frame-position f2 new-x new-y)
    (set-frame-size f2 f2-width f2-height)))

(defun tty-menu-frame-absolute-position (frame x y)
  "Translate (X, Y) in FRAME to absolute coordinates relative to the root f=
rame."
  (let ((current-frame frame)
        (abs-x x)
        (abs-y y))
    (while (frame-parent current-frame)
      (let ((edges (frame-edges current-frame)))
	(setq abs-x (+ abs-x (nth 0 edges)))
	(setq abs-y (+ abs-y (nth 1 edges)))
	(setq current-frame (frame-parent current-frame))))
    (cons abs-x abs-y)))

(defun tty-menu-create-frame (keymap where)
  (cl-destructuring-bind (buffer width height)
      (tty-menu-make-pane-buffer keymap)
    (cl-destructuring-bind (parent-frame x y) where
      ;; We want to show the menu using a root frame as parent because
      ;; that doesn't clip the frame. Means that we have to translate
      ;; coordinates to absolute.
      (when (frame-parent parent-frame)
	(cl-destructuring-bind (ax . ay)
	    (tty-menu-frame-absolute-position parent-frame x y)
	  (setq x ax y ay)
	  (setq parent-frame (frame-root-frame parent-frame))))
      (setq height (min height
			(round (/ (frame-height parent-frame) 1.6))))
      (let* ((minibuffer (minibuffer-window parent-frame))
             (window-min-height 1)
             (window-min-width 1)
             (after-make-frame-functions nil)
	     (frame (make-frame `((parent-frame . ,parent-frame)
				  (name . ,(buffer-name buffer))
				  (minibuffer . ,minibuffer)
				  ,@(tty-menu-frame-parameters))))
	     (win (frame-root-window frame)))
	(set-window-buffer win buffer)
	(set-window-dedicated-p win t)
	(set-frame-size frame width height)
	(set-frame-position frame x y)
	(tty-menu-make-fully-visible parent-frame frame x y)
	(make-frame-visible frame)
	(raise-frame frame)
	(select-frame-set-input-focus frame)
	frame))))

(defun tty-menu-mouse-select-item (event)
  (interactive "e")
  (let* ((end (event-end event))
	 (win (posn-window end)))
    (unless (eq (window-frame win) (tty-top-frame))
      (throw 'tty-menu-item-selected nil))
    (when-let* ((item (get-text-property (posn-point end) 'tty-menu-item)))
      (tty-menu-select-item item 'mouse))))

(defun tty-menu-key-select-item ()
  (interactive)
  (when-let* ((item (get-text-property (point) 'tty-menu-item)))
    (tty-menu-select-item item 'key)))

(defun tty-menu-key-select-item-if-subpane ()
  (interactive)
  (when-let* ((item (get-text-property (point) 'tty-menu-item)))
    (with-slots (binding) item
      (when (keymapp binding)
	(tty-menu-select-item item 'key)))))

(defun tty-menu-mouse-moved (event)
  (interactive "e")
  (let* ((end (event-end event))
	 (win (posn-window end)))
    (when (eq (window-frame win) (tty-top-frame))
      (let ((item (get-text-property (posn-point end) 'tty-menu-item)))
	(when (and item (tty-menu-selectable-p item))
	  (goto-char (posn-point end)))))))

(defun tty-menu-next-line ()
  (interactive)
  (cl-loop for next =3D (next-single-property-change (point) 'tty-menu-item)
	   then (next-single-property-change next 'tty-menu-item)
	   while next
	   for item =3D (get-text-property next 'tty-menu-item)
	   until (tty-menu-selectable-p item)
	   finally (when next (goto-char next))))

(defun tty-menu-previous-line ()
  (interactive)
  (cl-loop for prev =3D (previous-single-property-change
		       (point) 'tty-menu-item nil (point-min))
	   then (previous-single-property-change
		 prev 'tty-menu-item nil (point-min))
	   while prev
	   for item =3D (get-text-property prev 'tty-menu-item)=20
	   if (tty-menu-selectable-p item) do (goto-char prev) and return t
	   else if (eq prev (point-min)) return t))

(defun tty-menu-close-pane ()
  (interactive)
  (throw 'tty-menu-item-selected nil))

(defun tty-menu-isearch (forward)
  (isearch-mode forward nil nil)
  (while isearch-mode
    (let* ((key (read-key-sequence nil nil t nil nil nil)))
      (when-let* ((cmd (lookup-key isearch-mode-map key)))
	(if (and (eq cmd #'isearch-printing-char)
		 (stringp key))
	    (isearch-printing-char (aref key 0))
	  (call-interactively cmd))))))

(defun tty-menu-isearch-forward ()
  (interactive)
  (tty-menu-isearch t))
=20=20
(defun tty-menu-isearch-backward ()
  (interactive)
  (tty-menu-isearch nil))

(defvar-keymap tty-menu-keymap
  :doc "Keymap for menu interaction."
  "<up>" #'tty-menu-previous-line
  "<down>" #'tty-menu-next-line
  "<left>" #'tty-menu-close-pane
  "<right>" #'tty-menu-key-select-item-if-subpane
  "C-b" #'tty-menu-close-pane
  "C-g" #'keyboard-quit
  "C-j" #'tty-menu-key-select-item
  "C-n" #'tty-menu-next-line
  "C-p" #'tty-menu-previous-line
  "C-r" #'tty-menu-isearch-backward
  "C-s" #'tty-menu-isearch-forward
  "RET" #'tty-menu-key-select-item
  "SPC" #'tty-menu-key-select-item
  "<return>" #'tty-menu-key-select-item
  "<mouse-movement>" #'tty-menu-mouse-moved
  "<mouse-1>" #'tty-menu-mouse-select-item)

(defun tty-menu-show-selected-item ()
  (unless tty-menu-selection-ov
    (setq tty-menu-selection-ov (make-overlay 1 1))
    (overlay-put tty-menu-selection-ov 'face 'tty-menu-selected-face))
  (move-overlay tty-menu-selection-ov (line-beginning-position) (line-end-p=
osition)))

(defun tty-menu-global-menu ()
  (keymap-lookup global-map "<menu-bar>"))

(defun tty-menu-position (pos)
  (interactive)
  (cond*
   ((match* 'nil pos) nil)
   ((match* 't pos)
    (cl-destructuring-bind (frame x . y) (mouse-position)
      ;; mouse-position sometimes returns nil for x and y which I
      ;; think should not happen.
      (list frame (or x 10) (or y 10))))
   ((match* (eventp e) pos)
    (let* ((end (event-end e))
	   (win (posn-window end))
	   (x (car (posn-x-y end)))
	   (y (cdr (posn-x-y end))))
      ;; posn-window returns a frame when the event is not on a window, for
      ;; example, when clicking on a menu bar in a tty frame.
      (if (windowp win)
	  (cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
	    (list (window-frame win) (+ wx x) (+ wy y)))
	(let ((menu-bar-lines (frame-parameter win 'menu-bar-lines)))
	  (list win x (+ y menu-bar-lines))))))
   ((match* (cons (cons (numberp x)
			(numberp y))
		  (cons (windowp win)
			_))
	    pos)
    (cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
      (list (window-frame win) (+ wx x) (+ wy y))))
   ((match* (cons (list (numberp x) (numberp y))
		  (cons (framep frame) _))
	    pos)
    (list frame x y))
   ((match* (cons (cons (numberp x) (numberp y))
		  (cons (framep frame) _))
	    pos)
    (list frame x y))
   ((match* (cons (numberp x) (numberp y)) pos)
    (list (selected-frame) x y))
   (t (error "%S does not match in tty-menu-position" pos))))

(defun tty-menu-where (how)
  (cl-ecase how
    (mouse (tty-menu-position t))
    (key (let* ((posn (posn-at-point (line-end-position)))
		(xy (posn-x-y posn))
		(win (posn-window posn)))
	   (tty-menu-position (list xy win))))))

(defun tty-menu-loop (keymap where)
  (let ((frame (tty-menu-create-frame keymap where)))
    (unwind-protect
	;; Inner loop handling mouse movement over the pane,
	;; moving with the keyboard on the pane. The loop is
	;; left by a throw when a menu-item is selected.
	(cl-loop
	 named outer-loop
	 while t
	 for res =3D (catch 'tty-menu-item-selected
		     (while t
		       (tty-menu-show-selected-item)
		       (let* ((track-mouse t)
			      (key (read-key-sequence nil))
			      (cmd (lookup-key tty-menu-keymap key)))
			 (when (commandp cmd)
			   (call-interactively cmd)))))
	 do
	 ;; If the selected item was for a sub-pane, call ourselves
	 ;; recursively with the sub-pane.
	 (cond* ((match* (cons selected how) res)
		 (with-slots (binding) selected
		   (if (keymapp binding)
		       (tty-menu-loop binding (tty-menu-where how))
		     ;; Return a list because x-popup-menu does.
		     (cl-return-from outer-loop (list binding)))))
		((match* 'nil res)
		 (cl-return-from outer-loop nil))))
      (when frame
	(delete-frame frame)))))

(defun frame-with-name (name)
  (cl-flet ((frame-name (frame)
	      (frame-parameter frame 'name)))
    (cl-find-if (lambda (f) (equal (frame-name f) name))
		(frame-list))))

(defun tty-menu-delete-menu-frames ()
  (cl-flet ((frame-name (frame)
	      (frame-parameter frame 'name)))
    (cl-loop for frame in (frame-list)
	     when (string-prefix-p " *tty-menu-" (frame-name frame))
	     do (delete-frame frame))))
=20=20
(cl-defun tty-menu-popup-menu (position menu)
  (when-let* ((where (tty-menu-position position)))
    (cond ((keymapp menu)
	   (tty-menu-loop menu where))
	  ((consp menu)
	   (cl-loop with outer =3D (make-sparse-keymap "outer")
		    for keymap in menu
		    for name =3D (tty-menu-keymap-name keymap "?")
		    do (define-key outer (vector (intern name)) keymap)
		    finally (tty-menu-loop outer where)))
	  (t (error "Not a menu: %S" menu)))))

;;;###autoload
(define-minor-mode tty-menu-mode
  "Global minor mode for displaying menus with tty child frames."
  :global t :group 'menu
  (unless (display-graphic-p)
    (if tty-menu-mode
	(add-function :override (symbol-function 'x-popup-menu)
		      #'tty-menu-popup-menu)
      (remove-function (symbol-function 'x-popup-menu)
		       #'tty-menu-popup-menu))))

(provide 'tty-menu)

;;; Local Variables:
;;; fill-column: 80
;;; End:

--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 9 Feb 2025 16:21:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 11:21:34 2025
Received: from localhost ([127.0.0.1]:45942 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1thA3q-0005PP-5w
	for submit <at> debbugs.gnu.org; Sun, 09 Feb 2025 11:21:34 -0500
Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]:55495)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1thA3n-0005P8-4f
 for 75056 <at> debbugs.gnu.org; Sun, 09 Feb 2025 11:21:31 -0500
Received: by mail-ed1-x535.google.com with SMTP id
 4fb4d7f45d1cf-5de64873d18so1572384a12.2
 for <75056 <at> debbugs.gnu.org>; Sun, 09 Feb 2025 08:21:31 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1739118084; x=1739722884; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=QNfxZlRywYwyBsmLmxf2rTkbUI3Ee0311Sh2JwIsLj0=;
 b=LG7WBSR4gCMYespanEORH2IQzSUsUY6zzjFyjYEtMMExuzpK/Tmf+8tqCd9FPOejhV
 RiEJWaq2/DB2AqOO2U2UyHbJSczoeDrS66QUSiiyPupkFjJn5MFSAGAmykKQhqbiR6tn
 UwYOJozIkLQyfSNNysvsHYhepocOxtzn4OaljFPcsBilDDKKMmhGUyu2V07631AcfNiZ
 QMrtxlGSxc1IpQbi5d/hmpEqkYNcyo1sZVMT4ZFb9T/YHvGqsEtIPtXJHK8Z/8zObgj9
 vrZ5zHZgM9e8sdHy8fzDFYV+OBCL5mMdqYWGEIrK4andfzK800bmO0bQxEnT3qQLyBEa
 1O2w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1739118084; x=1739722884;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=QNfxZlRywYwyBsmLmxf2rTkbUI3Ee0311Sh2JwIsLj0=;
 b=WzMGHXygU8Q/3rt+DDpU5XQs9UtaFjNds2WmArx2fjs3CGF0PVzVbhtyUprJBmDM+W
 NE+8kgLi3afitceKrG2mCuOkO/2b4GvQCkR7t2c3xxtbhn9aDZUscDmfQWr2cnoTJ/IW
 PP4S203h5dvuwv/oKw1yDl3tCUYeebrXpz9IMXRhSFHpN2g5f9TTq7c5nTdVPWFfbM01
 7GSa66oeDXEJTEODoq5zxK2d+drdp9R4yGNidRNr6Lb2J6G0tLolyl1xB7CZLTxr/KoZ
 TqwCmXTTU95TdsAx0oZ4XeZcWikyFJcVIQRPqfjtxgQt8qFOFxSPaRGHSTtJFZwalJDk
 Oh6w==
X-Forwarded-Encrypted: i=1;
 AJvYcCX4qmP2IH0wZX/mS6ChMcD2XdqfIxCrl7XOqn6Zuald1KfelLGUtLWQOmqzkxsXD7e1+M4odg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yzf3PK7c1dCKS9VYXj5XggKwXhAyzIzLsMe2VHiLV+SxifVD5lx
 LsPiFbRZ718+PKvQL64nK3InFaqbqrnb+tA1Jg7/oxlGA5OdmcjKq/X0MA==
X-Gm-Gg: ASbGncvjXElgp92Cml2rqkv/viutvgbHXI1TN4ET7/6A8l3bIDPU4C0ySb22OcTFIjB
 bFeUtHp3fU1kbPu2oE2ouRFh/TX8lPMOgYvq+ZG9HOv+1X4uH5YXfffNKaDVAomzj3NItYOSkTO
 SG69LCJu+OeTr5AXsQPPNS/0Trw/5AzQKAmFr0ibXtxqXTzGS27nrNCaf4syl7F2qSA22T8gaXk
 JqejcW16HhnfJ883tNoz6xgElLJ5QMTPu0TetRH+dg/JhIrLjN0K4nfbOJuQQnegoIX4BEdafbo
 1+AyJpoy5GpKGVOQVP0CQhc5kKdbOvMYEPGmvdZdfaVXf+QO5B9vpqwN4hdQlji7ILsc4Sd14X7
 GXM+Qi77IjmADdBGLPD5Sploa
X-Google-Smtp-Source: AGHT+IH+GhYOEWXKME6Dqp2zCDc9uQKmTYvf2tKepnOlYjuWWvgJTvsJUS3QBsFVhByd5xrebjBnBw==
X-Received: by 2002:a05:6402:42c8:b0:5dc:1f35:56a with SMTP id
 4fb4d7f45d1cf-5de44feb976mr12606122a12.5.1739118084228; 
 Sun, 09 Feb 2025 08:21:24 -0800 (PST)
Received: from pro2 (p200300e0b725cf0094296d0536d9d0d3.dip0.t-ipconnect.de.
 [2003:e0:b725:cf00:9429:6d05:36d9:d0d3])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5de3ca503a2sm5616923a12.72.2025.02.09.08.21.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 09 Feb 2025 08:21:23 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <31bd2acb-9523-4def-80c1-235807c4abc9@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m28qqrlkyg.fsf@HIDDEN>
 <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
 <m2seozjo3c.fsf@HIDDEN> <m2msf6ezfq.fsf@HIDDEN>
 <m2jz9zmlfg.fsf@HIDDEN> <m2frknml43.fsf@HIDDEN>
 <e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
 <m234gnmjvi.fsf@HIDDEN>
 <31bd2acb-9523-4def-80c1-235807c4abc9@HIDDEN>
Date: Sun, 09 Feb 2025 17:21:22 +0100
Message-ID: <m2y0yfks1p.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>> Sachen gibt's :-/.
>
> Clicking with the mouse on an arbitrary menubar item gets me

Yeah, I didn't do the integration with the rest of Emacs yet. Looks like
another dark and ancient corner of Emacs. Insofar, please disregard
tty-menu-mode at the moment. But the rest is kind of funny, help-echo,
C-s in menus :-).

Wie auch immer.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 9 Feb 2025 15:47:37 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 10:47:37 2025
Received: from localhost ([127.0.0.1]:45854 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1th9Wy-0003l9-EW
	for submit <at> debbugs.gnu.org; Sun, 09 Feb 2025 10:47:37 -0500
Received: from mout.gmx.net ([212.227.15.19]:39187)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1th9Wv-0003kr-89
 for 75056 <at> debbugs.gnu.org; Sun, 09 Feb 2025 10:47:34 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1739116039; x=1739720839; i=rudalics@HIDDEN;
 bh=Iyqm+Ot7C9LzX1Ddx+KMImnoyAaBD2WP4Mp9vpb+0T4=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=W8KF8HPXKt3WgB43Blgc0wXUaFPRy7GkVI5AlQp2tryAsu+GNsqW5hmokJX0P2BB
 xfSk/WW4UexpzDvC05FdSISvnpEid2qOsPEgxjJi2ZBOfidf4IEAD74IYr+eUoO/u
 3OYCfT7Mm4J/NeYiRGHMVTUfzBV+Cg/h6CRvihSyya3zHpBzq8H1MYNYx7ampYau5
 LF9mzSVRPJsryTW5SzgGVYmKlZFyTS3dvdJ1lOAuEgy23bq9HNOP/zpfGFGqcPU8Q
 WucnIbxVYvhGtpjoQmW2MyDoQuGNes2uNCKaeLQliBsCxeiWW3pAzzRDaZCpINPgi
 bgLspCtGdM01i2PhPQ==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.97.220]) by mail.gmx.net (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MMobO-1tzmL52Qj6-00MQ72; Sun, 09
 Feb 2025 16:47:19 +0100
Message-ID: <31bd2acb-9523-4def-80c1-235807c4abc9@HIDDEN>
Date: Sun, 9 Feb 2025 16:47:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN> <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN> <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
 <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN> <m2seozjo3c.fsf@HIDDEN>
 <m2msf6ezfq.fsf@HIDDEN> <m2jz9zmlfg.fsf@HIDDEN>
 <m2frknml43.fsf@HIDDEN> <e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
 <m234gnmjvi.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m234gnmjvi.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64
X-Provags-ID: V03:K1:iHUtu6TWF3O301kbCvlvI1MHqzD0CcJ7Z4aInAnI09DivsV52Sf
 Ivirn5rfywRvAev+zC/B6e66XmehGp080lySRSpI1bJ5wm1nH3EzfqwyY0ei7B7kuzholf0
 SHSgDMzdndNQrOsl5MsjZxR4B9hE075CIPWzaBpb7XKvjAtpz4dxpKlCYvFOCmxPG2JOorR
 RxHkyOkQseBOcZXzIAP2w==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:c5QDSH6yr4g=;CZU1RZz9nNzCcK0fkljsNh4JRR3
 ru0IcNywMF/5A9eXPdrvnk/I2Bx7JxBWuY6rdtNSydpAi4h8VAOyPfg0su78t5ypNnEKoF7IT
 GaKYHVWpZyw4irEMlPP9wK1Fa3WfcbxaB5kJ4+h+QPl7NF1Cw50maFTeOK+hhvXTIvNAf0xB/
 kAJHNy3iHj6qVUnI5l4UhUaPi2QQSZw1im6w/SiNEbF/lLhE0j+++BhUPLZc8BDjgrj6f1t44
 RDj2oIqmWOQ79RUY0h0nsoe/AU/s6zmssxi62NZ+1cdMKpfvatIiTLZ+6QbnyBTqysZJdNddX
 h8VvJIsSvEcWOE0ekLxOOW5zN1wAEszyFKTljMLhPvRjpbAnO5v/Vp7qmuFnxQGq3dWZb9Gqd
 LAN1jkdAEevo59uj0ywygB5fZ/NqZINHlDGpfuYpG8yPZMJlRTaouhLOvvW+3hXcEAcG622d+
 +/g6qXetayVT5mqmSzjZA5u/Gbm9Jumox+or2HzLKN3ETjp52gqCY+YTICNBjLF271r6Du1vf
 0gwIQccUQT2H+5KM+n2uiHMxy9ld2CEOmRLuzOZn+rCJh9/yVvByKSXqswE972GgUdTNc84hA
 cH2YZQpzgrYDzs7CGoDfl4R2o2AYQYenHWegCy9Ue0RpbJ0euvrZdwurJjY9/e/aKeJn1o3Dh
 tNKCSLFHY1m2yW+gK00P9uNFs1C92X7nw+ziLDJ+PLu5PUo9nZmng0wDgA/MC02j9YyaamxOc
 4Oc/qDg36pBPxo0bOGw32rknc66S/2Dfki+xGAEAD3uwcw1Wt1qC+KDgPCqhefevD61y6GBAk
 WJPcv3cdt/cMxZIPEKDW/gkQK4c/Z3I3KEx7qw2a2HBukQoDvA3a0Jrhp4dPzzOLvmFncgO+U
 rRk/OmhOpXaKkN4RTzQ86K+YRe+/b5NoygfYaboJEjOQQY6ztxVZiYjun/ZCy6cjCt0rAvhVK
 GZkPoSV44N7Lgtd+urC638EtS581YGeER9DsBD1eohVC6QCNoNbg656vEVA3Yr0t6YdpuGb5w
 Qt+kAOlmN4bEZIJj9EgzW4NuX+/NEWMlQ5mmVPU0y8cbSrRZbKzn9GFKID7Tcy/zdz7MfQtg+
 3tJuqgPOcKWLGJZvGlR/x2gAMZpPfnkMic1NrfHFuzFDDPiIIBAdTmwCVCSWII8KL54JEAWIe
 lmkmD+lojM9GFp4SAl7ACDRxIk5oHlE3tvMKzSPhQxIJqV/kPTgueGEK7O0aImPWNqIINpjPI
 /5rwqyJ4XN5DwldLQWPPi7mvfAz/8bjP2O2trcRGFCFyiQPfS1TBdOxFvoZV06H1QlbCD8VWk
 WGI8frF3Q66MNYjZto304eVQwd+1jNWqpsaygJMzmwQQPdEwzlZDL/2ksr5tpeB6XvcdcoykR
 GIPucwKOMVa7jfje1IKEYL9lQGFb6eK0zEe8WShr6LUZPbIyFBiygRZpREhWcWfR0yITPm+dn
 X3ZBbhw==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

ID4gU2FjaGVuIGdpYnQncyA6LS8uDQoNCkNsaWNraW5nIHdpdGggdGhlIG1vdXNlIG9uIGFu
IGFyYml0cmFyeSBtZW51YmFyIGl0ZW0gZ2V0cyBtZQ0KDQoNCkRlYnVnZ2VyIGVudGVyZWQt
LUxpc3AgZXJyb3I6IChlcnJvciAiIzxmcmFtZSBGMSAweDEzOTA2ZDQwPiBpcyBub3QgYSB2
YWxpZCB3aW5kb3ciKQ0KICAgc2lnbmFsKGVycm9yICgiIzxmcmFtZSBGMSAweDEzOTA2ZDQw
PiBpcyBub3QgYSB2YWxpZCB3aW5kb3ciKSkNCiAgIGVycm9yKCIlcyBpcyBub3QgYSB2YWxp
ZCB3aW5kb3ciICM8ZnJhbWUgRjEgMHgxMzkwNmQ0MD4pDQogICB3aW5kb3ctbm9ybWFsaXpl
LXdpbmRvdygjPGZyYW1lIEYxIDB4MTM5MDZkNDA+IG5pbCkNCiAgIHdpbmRvdy1lZGdlcygj
PGZyYW1lIEYxIDB4MTM5MDZkNDA+IG5pbCB0KQ0KICAgKGxldCogKCgtLWNsLXJlc3QtLSAo
d2luZG93LWVkZ2VzIHdpbiBuaWwgdCkpICh3eCAoaWYgKD0gKGxlbmd0aCAtLWNsLXJlc3Qt
LSkgNCkgKGNhci1zYWZlIChwcm9nMSAtLWNsLXJlc3QtLSAoc2V0cSAtLWNsLXJlc3QtLSAo
Y2RyIC0tY2wtcmVzdC0tKSkpKSAoc2lnbmFsICd3cm9uZy1udW1iZXItb2YtYXJndW1lbnRz
IChsaXN0ICcod3ggd3kgXyBfKSAobGVuZ3RoIC0tY2wtcmVzdC0tKSkpKSkgKHd5IChjYXIt
c2FmZSAocHJvZzEgLS1jbC1yZXN0LS0gKHNldHEgLS1jbC1yZXN0LS0gKGNkciAtLWNsLXJl
c3QtLSkpKSkpIChfIChjYXItc2FmZSAocHJvZzEgLS1jbC1yZXN0LS0gKHNldHEgLS1jbC1y
ZXN0LS0gKGNkciAtLWNsLXJlc3QtLSkpKSkpIChfIChjYXItc2FmZSAtLWNsLXJlc3QtLSkp
KSAobGlzdCAod2luZG93LWZyYW1lIHdpbikgKCsgd3ggeCkgKCsgd3kgeSkpKQ0KICAgKGxl
dCogKChlbmQgKGV2ZW50LWVuZCBlKSkgKHdpbiAocG9zbi13aW5kb3cgZW5kKSkgKHggKGNh
ciAocG9zbi14LXkgZW5kKSkpICh5IChjZHIgKHBvc24teC15IGVuZCkpKSkgKGxldCogKCgt
LWNsLXJlc3QtLSAod2luZG93LWVkZ2VzIHdpbiBuaWwgdCkpICh3eCAoaWYgKD0gKGxlbmd0
aCAtLWNsLXJlc3QtLSkgNCkgKGNhci1zYWZlIChwcm9nMSAtLWNsLXJlc3QtLSAoc2V0cSAt
LWNsLXJlc3QtLSAuLi4pKSkgKHNpZ25hbCAnd3JvbmctbnVtYmVyLW9mLWFyZ3VtZW50cyAo
bGlzdCAnLi4uIChsZW5ndGggLS1jbC1yZXN0LS0pKSkpKSAod3kgKGNhci1zYWZlIChwcm9n
MSAtLWNsLXJlc3QtLSAoc2V0cSAtLWNsLXJlc3QtLSAoY2RyIC0tY2wtcmVzdC0tKSkpKSkg
KF8gKGNhci1zYWZlIChwcm9nMSAtLWNsLXJlc3QtLSAoc2V0cSAtLWNsLXJlc3QtLSAoY2Ry
IC0tY2wtcmVzdC0tKSkpKSkgKF8gKGNhci1zYWZlIC0tY2wtcmVzdC0tKSkpIChsaXN0ICh3
aW5kb3ctZnJhbWUgd2luKSAoKyB3eCB4KSAoKyB3eSB5KSkpKQ0KICAgKGxldCogKChlIGQx
MikpIChsZXQqICgoZW5kIChldmVudC1lbmQgZSkpICh3aW4gKHBvc24td2luZG93IGVuZCkp
ICh4IChjYXIgKHBvc24teC15IGVuZCkpKSAoeSAoY2RyIChwb3NuLXgteSBlbmQpKSkpIChs
ZXQqICgoLS1jbC1yZXN0LS0gKHdpbmRvdy1lZGdlcyB3aW4gbmlsIHQpKSAod3ggKGlmICg9
IChsZW5ndGggLS1jbC1yZXN0LS0pIDQpIChjYXItc2FmZSAocHJvZzEgLS1jbC1yZXN0LS0g
Li4uKSkgKHNpZ25hbCAnd3JvbmctbnVtYmVyLW9mLWFyZ3VtZW50cyAobGlzdCAuLi4gLi4u
KSkpKSAod3kgKGNhci1zYWZlIChwcm9nMSAtLWNsLXJlc3QtLSAoc2V0cSAtLWNsLXJlc3Qt
LSAuLi4pKSkpIChfIChjYXItc2FmZSAocHJvZzEgLS1jbC1yZXN0LS0gKHNldHEgLS1jbC1y
ZXN0LS0gLi4uKSkpKSAoXyAoY2FyLXNhZmUgLS1jbC1yZXN0LS0pKSkgKGxpc3QgKHdpbmRv
dy1mcmFtZSB3aW4pICgrIHd4IHgpICgrIHd5IHkpKSkpKQ0KICAgKGlmIChldmVudHAgZDEy
KSAobGV0KiAoKGUgZDEyKSkgKGxldCogKChlbmQgKGV2ZW50LWVuZCBlKSkgKHdpbiAocG9z
bi13aW5kb3cgZW5kKSkgKHggKGNhciAocG9zbi14LXkgZW5kKSkpICh5IChjZHIgKHBvc24t
eC15IGVuZCkpKSkgKGxldCogKCgtLWNsLXJlc3QtLSAod2luZG93LWVkZ2VzIHdpbiBuaWwg
dCkpICh3eCAoaWYgKD0gLi4uIDQpIChjYXItc2FmZSAuLi4pIChzaWduYWwgLi4uIC4uLikp
KSAod3kgKGNhci1zYWZlIChwcm9nMSAtLWNsLXJlc3QtLSAuLi4pKSkgKF8gKGNhci1zYWZl
IChwcm9nMSAtLWNsLXJlc3QtLSAuLi4pKSkgKF8gKGNhci1zYWZlIC0tY2wtcmVzdC0tKSkp
IChsaXN0ICh3aW5kb3ctZnJhbWUgd2luKSAoKyB3eCB4KSAoKyB3eSB5KSkpKSkgKGxldCAo
KGQxMSBwb3MpKSAoaWYgKGFuZCAoY29uc3AgZDExKSAoYW5kIChjb25zcCAoY2FyIGQxMSkp
IChudW1iZXJwIChjYXIgKGNhciBkMTEpKSkgKG51bWJlcnAgKGNkciAoY2FyIGQxMSkpKSkg
KGFuZCAoY29uc3AgKGNkciBkMTEpKSAod2luZG93cCAoY2FyIChjZHIgZDExKSkpKSkgKGxl
dCogKCh3aW4gKGNhciAoY2RyIGQxMSkpKSAoeSAoY2RyIChjYXIgZDExKSkpICh4IChjYXIg
KGNhciBkMTEpKSkpIChsZXQqICgoLS1jbC1yZXN0LS0gKHdpbmRvdy1lZGdlcyB3aW4gbmls
IHQpKSAod3ggKGlmIC4uLiAuLi4gLi4uKSkgKHd5IChjYXItc2FmZSAuLi4pKSAoXyAoY2Fy
LXNhZmUgLi4uKSkgKF8gKGNhci1zYWZlIC0tY2wtcmVzdC0tKSkpIChsaXN0ICh3aW5kb3ct
ZnJhbWUgd2luKSAoKyB3eCB4KSAoKyB3eSB5KSkpKSAobGV0ICgoZDEwIHBvcykpIChpZiAo
YW5kIChjb25zcCBkMTApIChhbmQgKGNvbnNwIC4uLikgKG51bWJlcnAgLi4uKSAoY29uc3Ag
Li4uKSAobnVtYmVycCAuLi4pIChudWxsIC4uLikpIChhbmQgKGNvbnNwIC4uLikgKGZyYW1l
cCAuLi4pKSkgKGxldCogKChmcmFtZSAuLi4pICh5IC4uLikgKHggLi4uKSkgKGxpc3QgZnJh
bWUgeCB5KSkgKGxldCAoKGQ5IHBvcykpIChpZiAoYW5kIC4uLiAuLi4gLi4uKSAobGV0KiAu
Li4gLi4uKSAobGV0IC4uLiAuLi4pKSkpKSkpKQ0KICAgKGxldCAoKGQxMiBwb3MpKSAoaWYg
KGV2ZW50cCBkMTIpIChsZXQqICgoZSBkMTIpKSAobGV0KiAoKGVuZCAoZXZlbnQtZW5kIGUp
KSAod2luIChwb3NuLXdpbmRvdyBlbmQpKSAoeCAoY2FyIChwb3NuLXgteSBlbmQpKSkgKHkg
KGNkciAocG9zbi14LXkgZW5kKSkpKSAobGV0KiAoKC0tY2wtcmVzdC0tICh3aW5kb3ctZWRn
ZXMgd2luIG5pbCB0KSkgKHd4IChpZiAuLi4gLi4uIC4uLikpICh3eSAoY2FyLXNhZmUgLi4u
KSkgKF8gKGNhci1zYWZlIC4uLikpIChfIChjYXItc2FmZSAtLWNsLXJlc3QtLSkpKSAobGlz
dCAod2luZG93LWZyYW1lIHdpbikgKCsgd3ggeCkgKCsgd3kgeSkpKSkpIChsZXQgKChkMTEg
cG9zKSkgKGlmIChhbmQgKGNvbnNwIGQxMSkgKGFuZCAoY29uc3AgKGNhciBkMTEpKSAobnVt
YmVycCAoY2FyIC4uLikpIChudW1iZXJwIChjZHIgLi4uKSkpIChhbmQgKGNvbnNwIChjZHIg
ZDExKSkgKHdpbmRvd3AgKGNhciAuLi4pKSkpIChsZXQqICgod2luIChjYXIgLi4uKSkgKHkg
KGNkciAuLi4pKSAoeCAoY2FyIC4uLikpKSAobGV0KiAoKC0tY2wtcmVzdC0tIC4uLikgKHd4
IC4uLikgKHd5IC4uLikgKF8gLi4uKSAoXyAuLi4pKSAobGlzdCAod2luZG93LWZyYW1lIHdp
bikgKCsgd3ggeCkgKCsgd3kgeSkpKSkgKGxldCAoKGQxMCBwb3MpKSAoaWYgKGFuZCAoY29u
c3AgZDEwKSAoYW5kIC4uLiAuLi4gLi4uIC4uLiAuLi4pIChhbmQgLi4uIC4uLikpIChsZXQq
ICguLi4gLi4uIC4uLikgKGxpc3QgZnJhbWUgeCB5KSkgKGxldCAoLi4uKSAoaWYgLi4uIC4u
LiAuLi4pKSkpKSkpKQ0KICAgKGlmIChlcSAndCBkMTMpIChwcm9nbiAobGV0KiAoKHkgKG1v
dXNlLXBvc2l0aW9uKSkgKGZyYW1lIChpZiAoY2RyIHkpIChjYXItc2FmZSAocHJvZzEgeSAu
Li4pKSAoc2lnbmFsICd3cm9uZy1udW1iZXItb2YtYXJndW1lbnRzIChsaXN0IC4uLiAuLi4p
KSkpICh4IChjYXItc2FmZSAocHJvZzEgeSAoc2V0cSB5IC4uLikpKSkpIChsaXN0IGZyYW1l
IChvciB4IDEwKSAob3IgeSAxMCkpKSkgKGxldCAoKGQxMiBwb3MpKSAoaWYgKGV2ZW50cCBk
MTIpIChsZXQqICgoZSBkMTIpKSAobGV0KiAoKGVuZCAoZXZlbnQtZW5kIGUpKSAod2luIChw
b3NuLXdpbmRvdyBlbmQpKSAoeCAoY2FyIC4uLikpICh5IChjZHIgLi4uKSkpIChsZXQqICgo
LS1jbC1yZXN0LS0gLi4uKSAod3ggLi4uKSAod3kgLi4uKSAoXyAuLi4pIChfIC4uLikpIChs
aXN0ICh3aW5kb3ctZnJhbWUgd2luKSAoKyB3eCB4KSAoKyB3eSB5KSkpKSkgKGxldCAoKGQx
MSBwb3MpKSAoaWYgKGFuZCAoY29uc3AgZDExKSAoYW5kIChjb25zcCAuLi4pIChudW1iZXJw
IC4uLikgKG51bWJlcnAgLi4uKSkgKGFuZCAoY29uc3AgLi4uKSAod2luZG93cCAuLi4pKSkg
KGxldCogKCh3aW4gLi4uKSAoeSAuLi4pICh4IC4uLikpIChsZXQqICguLi4gLi4uIC4uLiAu
Li4gLi4uKSAobGlzdCAuLi4gLi4uIC4uLikpKSAobGV0ICgoZDEwIHBvcykpIChpZiAoYW5k
IC4uLiAuLi4gLi4uKSAobGV0KiAuLi4gLi4uKSAobGV0IC4uLiAuLi4pKSkpKSkpKQ0KICAg
KGxldCAoKGQxMyBwb3MpKSAoaWYgKGVxICd0IGQxMykgKHByb2duIChsZXQqICgoeSAobW91
c2UtcG9zaXRpb24pKSAoZnJhbWUgKGlmIChjZHIgeSkgKGNhci1zYWZlIC4uLikgKHNpZ25h
bCAuLi4gLi4uKSkpICh4IChjYXItc2FmZSAocHJvZzEgeSAuLi4pKSkpIChsaXN0IGZyYW1l
IChvciB4IDEwKSAob3IgeSAxMCkpKSkgKGxldCAoKGQxMiBwb3MpKSAoaWYgKGV2ZW50cCBk
MTIpIChsZXQqICgoZSBkMTIpKSAobGV0KiAoKGVuZCAuLi4pICh3aW4gLi4uKSAoeCAuLi4p
ICh5IC4uLikpIChsZXQqICguLi4gLi4uIC4uLiAuLi4gLi4uKSAobGlzdCAuLi4gLi4uIC4u
LikpKSkgKGxldCAoKGQxMSBwb3MpKSAoaWYgKGFuZCAoY29uc3AgZDExKSAoYW5kIC4uLiAu
Li4gLi4uKSAoYW5kIC4uLiAuLi4pKSAobGV0KiAoLi4uIC4uLiAuLi4pIChsZXQqIC4uLiAu
Li4pKSAobGV0ICguLi4pIChpZiAuLi4gLi4uIC4uLikpKSkpKSkpDQogICAoaWYgKGVxICdu
aWwgZDE0KSAocHJvZ24gbmlsKSAobGV0ICgoZDEzIHBvcykpIChpZiAoZXEgJ3QgZDEzKSAo
cHJvZ24gKGxldCogKCh5IChtb3VzZS1wb3NpdGlvbikpIChmcmFtZSAoaWYgLi4uIC4uLiAu
Li4pKSAoeCAoY2FyLXNhZmUgLi4uKSkpIChsaXN0IGZyYW1lIChvciB4IDEwKSAob3IgeSAx
MCkpKSkgKGxldCAoKGQxMiBwb3MpKSAoaWYgKGV2ZW50cCBkMTIpIChsZXQqICgoZSBkMTIp
KSAobGV0KiAoLi4uIC4uLiAuLi4gLi4uKSAobGV0KiAuLi4gLi4uKSkpIChsZXQgKChkMTEg
cG9zKSkgKGlmIChhbmQgLi4uIC4uLiAuLi4pIChsZXQqIC4uLiAuLi4pIChsZXQgLi4uIC4u
LikpKSkpKSkpDQogICAobGV0ICgoZDE0IHBvcykpIChpZiAoZXEgJ25pbCBkMTQpIChwcm9n
biBuaWwpIChsZXQgKChkMTMgcG9zKSkgKGlmIChlcSAndCBkMTMpIChwcm9nbiAobGV0KiAo
KHkgLi4uKSAoZnJhbWUgLi4uKSAoeCAuLi4pKSAobGlzdCBmcmFtZSAob3IgeCAxMCkgKG9y
IHkgMTApKSkpIChsZXQgKChkMTIgcG9zKSkgKGlmIChldmVudHAgZDEyKSAobGV0KiAoLi4u
KSAobGV0KiAuLi4gLi4uKSkgKGxldCAoLi4uKSAoaWYgLi4uIC4uLiAuLi4pKSkpKSkpKQ0K
ICAgdHR5LW1lbnUtcG9zaXRpb24oKGJ1ZmZlciAoIzxmcmFtZSBGMSAweDEzOTA2ZDQwPiAo
bWVudS1iYXIpICgxOCAuIDApIDApKSkNCiAgIChhbmQgdCAodHR5LW1lbnUtcG9zaXRpb24g
cG9zaXRpb24pKQ0KICAgKGxldCogKCh3aGVyZSAoYW5kIHQgKHR0eS1tZW51LXBvc2l0aW9u
IHBvc2l0aW9uKSkpKSAoaWYgd2hlcmUgKGNvbmQgKChrZXltYXBwIG1lbnUpICh0dHktbWVu
dS1sb29wIG1lbnUgd2hlcmUpKSAoKGNvbnNwIG1lbnUpIChsZXQqICgob3V0ZXIgKG1ha2Ut
c3BhcnNlLWtleW1hcCAib3V0ZXIiKSkgKC0tY2wtdmFyLS0gbWVudSkgKGtleW1hcCBuaWwp
IChuYW1lIG5pbCkgKC0tY2wtdmFyLS0gdCkpICh3aGlsZSAoY29uc3AgLS1jbC12YXItLSkg
KHNldHEga2V5bWFwIChjYXIgLS1jbC12YXItLSkpIChzZXRxIG5hbWUgKHR0eS1tZW51LWtl
eW1hcC1uYW1lIGtleW1hcCAiPyIpKSAoZGVmaW5lLWtleSBvdXRlciAodmVjdG9yIC4uLikg
a2V5bWFwKSAoc2V0cSAtLWNsLXZhci0tIChjZHIgLS1jbC12YXItLSkpIChzZXRxIC0tY2wt
dmFyLS0gbmlsKSkgKHR0eS1tZW51LWxvb3Agb3V0ZXIgd2hlcmUpIG5pbCkpICh0IChlcnJv
ciAiTm90IGEgbWVudTogJVMiIG1lbnUpKSkpKQ0KICAgdHR5LW1lbnUtcG9wdXAtbWVudSgo
YnVmZmVyICgjPGZyYW1lIEYxIDB4MTM5MDZkNDA+IChtZW51LWJhcikgKDE4IC4gMCkgMCkp
IChrZXltYXAgIkJ1ZmZlcnMiIFsoIipzY3JhdGNoKiAgIiAuICNmKGNvbXBpbGVkLWZ1bmN0
aW9uICgpIChpbnRlcmFjdGl2ZSBuaWwpICM8Ynl0ZWNvZGUgLTB4MTY2MjNiZDEwMWZlMzU4
MD4pKSAoIipNZXNzYWdlcyogIColIiAuICNmKGNvbXBpbGVkLWZ1bmN0aW9uICgpIChpbnRl
cmFjdGl2ZSBuaWwpICM8Ynl0ZWNvZGUgLTB4MTY2MjNiZDU0ZjM5MzU4MD4pKV0gKGNvbW1h
bmQtc2VwYXJhdG9yICItLSIpIChuZXh0LWJ1ZmZlciBtZW51LWl0ZW0gIk5leHQgQnVmZmVy
IiBuZXh0LWJ1ZmZlciA6aGVscCAiU3dpdGNoIHRvIHRoZSBcIm5leHRcIiBidWZmZXIgaW4g
YSBjeWNsaWMgb3JkZXIiKSAocHJldmlvdXMtYnVmZmVyIG1lbnUtaXRlbSAiUHJldmlvdXMg
QnVmZmVyIiBwcmV2aW91cy1idWZmZXIgOmhlbHAgIlN3aXRjaCB0byB0aGUgXCJwcmV2aW91
c1wiIGJ1ZmZlciBpbiBhIGN5Y2xpYyBvcmRlciIpIChzZWxlY3QtbmFtZWQtYnVmZmVyIG1l
bnUtaXRlbSAiU2VsZWN0IE5hbWVkIEJ1ZmZlci4uLiIgc3dpdGNoLXRvLWJ1ZmZlciA6aGVs
cCAiUHJvbXB0IGZvciBhIGJ1ZmZlciBuYW1lLCBhbmQgc2VsZWN0IHRoYXQgYnVmZmVyIGlu
IHRoZSBjdXJyZW50IHdpbmRvdyIpIChsaXN0LWFsbC1idWZmZXJzIG1lbnUtaXRlbSAiTGlz
dCBBbGwgQnVmZmVycyIgbGlzdC1idWZmZXJzIDpoZWxwICJQb3AgdXAgYSB3aW5kb3cgbGlz
dGluZyBhbGwgRW1hY3MgYnVmZmVycyIpIChzZWxlY3QtYnVmZmVyLWluLXByb2plY3QgbWVu
dS1pdGVtICJTZWxlY3QgQnVmZmVyIEluIFByb2plY3QuLi4iIHByb2plY3Qtc3dpdGNoLXRv
LWJ1ZmZlciA6aGVscCAiUHJvbXB0IGZvciBhIGJ1ZmZlciBiZWxvbmdpbmcgdG8gY3VycmVu
dCBwcm9qZWN0LCBhbmQgc3dpdGNoIHRvIGl0IikgKGxpc3QtYnVmZmVycy1pbi1wcm9qZWN0
IG1lbnUtaXRlbSAiTGlzdCBCdWZmZXJzIEluIFByb2plY3QuLi4iIHByb2plY3QtbGlzdC1i
dWZmZXJzIDpoZWxwICJQb3AgdXAgYSB3aW5kb3cgbGlzdGluZyBhbGwgRW1hY3MgYnVmZmVy
cyBiZWxvbmdpbmcgdG8gY3VycmVudCBwcm9qZWN0IikpKQ0KICAgYXBwbHkodHR5LW1lbnUt
cG9wdXAtbWVudSAoKGJ1ZmZlciAoIzxmcmFtZSBGMSAweDEzOTA2ZDQwPiAobWVudS1iYXIp
ICgxOCAuIDApIDApKSAoa2V5bWFwICJCdWZmZXJzIiBbKCIqc2NyYXRjaCogICIgLiAjZihj
b21waWxlZC1mdW5jdGlvbiAoKSAoaW50ZXJhY3RpdmUgbmlsKSAjPGJ5dGVjb2RlIC0weDE2
NjIzYmQxMDFmZTM1ODA+KSkgKCIqTWVzc2FnZXMqICAqJSIgLiAjZihjb21waWxlZC1mdW5j
dGlvbiAoKSAoaW50ZXJhY3RpdmUgbmlsKSAjPGJ5dGVjb2RlIC0weDE2NjIzYmQ1NGYzOTM1
ODA+KSldIChjb21tYW5kLXNlcGFyYXRvciAiLS0iKSAobmV4dC1idWZmZXIgbWVudS1pdGVt
ICJOZXh0IEJ1ZmZlciIgbmV4dC1idWZmZXIgOmhlbHAgIlN3aXRjaCB0byB0aGUgXCJuZXh0
XCIgYnVmZmVyIGluIGEgY3ljbGljIG9yZGVyIikgKHByZXZpb3VzLWJ1ZmZlciBtZW51LWl0
ZW0gIlByZXZpb3VzIEJ1ZmZlciIgcHJldmlvdXMtYnVmZmVyIDpoZWxwICJTd2l0Y2ggdG8g
dGhlIFwicHJldmlvdXNcIiBidWZmZXIgaW4gYSBjeWNsaWMgb3JkZXIiKSAoc2VsZWN0LW5h
bWVkLWJ1ZmZlciBtZW51LWl0ZW0gIlNlbGVjdCBOYW1lZCBCdWZmZXIuLi4iIHN3aXRjaC10
by1idWZmZXIgOmhlbHAgIlByb21wdCBmb3IgYSBidWZmZXIgbmFtZSwgYW5kIHNlbGVjdCB0
aGF0IGJ1ZmZlciBpbiB0aGUgY3VycmVudCB3aW5kb3ciKSAobGlzdC1hbGwtYnVmZmVycyBt
ZW51LWl0ZW0gIkxpc3QgQWxsIEJ1ZmZlcnMiIGxpc3QtYnVmZmVycyA6aGVscCAiUG9wIHVw
IGEgd2luZG93IGxpc3RpbmcgYWxsIEVtYWNzIGJ1ZmZlcnMiKSAoc2VsZWN0LWJ1ZmZlci1p
bi1wcm9qZWN0IG1lbnUtaXRlbSAiU2VsZWN0IEJ1ZmZlciBJbiBQcm9qZWN0Li4uIiBwcm9q
ZWN0LXN3aXRjaC10by1idWZmZXIgOmhlbHAgIlByb21wdCBmb3IgYSBidWZmZXIgYmVsb25n
aW5nIHRvIGN1cnJlbnQgcHJvamVjdCwgYW5kIHN3aXRjaCB0byBpdCIpIChsaXN0LWJ1ZmZl
cnMtaW4tcHJvamVjdCBtZW51LWl0ZW0gIkxpc3QgQnVmZmVycyBJbiBQcm9qZWN0Li4uIiBw
cm9qZWN0LWxpc3QtYnVmZmVycyA6aGVscCAiUG9wIHVwIGEgd2luZG93IGxpc3RpbmcgYWxs
IEVtYWNzIGJ1ZmZlcnMgYmVsb25naW5nIHRvIGN1cnJlbnQgcHJvamVjdCIpKSkpDQogICB4
LXBvcHVwLW1lbnUoKGJ1ZmZlciAoIzxmcmFtZSBGMSAweDEzOTA2ZDQwPiAobWVudS1iYXIp
ICgxOCAuIDApIDApKSAoa2V5bWFwICJCdWZmZXJzIiBbKCIqc2NyYXRjaCogICIgLiAjZihj
b21waWxlZC1mdW5jdGlvbiAoKSAoaW50ZXJhY3RpdmUgbmlsKSAjPGJ5dGVjb2RlIC0weDE2
NjIzYmQxMDFmZTM1ODA+KSkgKCIqTWVzc2FnZXMqICAqJSIgLiAjZihjb21waWxlZC1mdW5j
dGlvbiAoKSAoaW50ZXJhY3RpdmUgbmlsKSAjPGJ5dGVjb2RlIC0weDE2NjIzYmQ1NGYzOTM1
ODA+KSldIChjb21tYW5kLXNlcGFyYXRvciAiLS0iKSAobmV4dC1idWZmZXIgbWVudS1pdGVt
ICJOZXh0IEJ1ZmZlciIgbmV4dC1idWZmZXIgOmhlbHAgIlN3aXRjaCB0byB0aGUgXCJuZXh0
XCIgYnVmZmVyIGluIGEgY3ljbGljIG9yZGVyIikgKHByZXZpb3VzLWJ1ZmZlciBtZW51LWl0
ZW0gIlByZXZpb3VzIEJ1ZmZlciIgcHJldmlvdXMtYnVmZmVyIDpoZWxwICJTd2l0Y2ggdG8g
dGhlIFwicHJldmlvdXNcIiBidWZmZXIgaW4gYSBjeWNsaWMgb3JkZXIiKSAoc2VsZWN0LW5h
bWVkLWJ1ZmZlciBtZW51LWl0ZW0gIlNlbGVjdCBOYW1lZCBCdWZmZXIuLi4iIHN3aXRjaC10
by1idWZmZXIgOmhlbHAgIlByb21wdCBmb3IgYSBidWZmZXIgbmFtZSwgYW5kIHNlbGVjdCB0
aGF0IGJ1ZmZlciBpbiB0aGUgY3VycmVudCB3aW5kb3ciKSAobGlzdC1hbGwtYnVmZmVycyBt
ZW51LWl0ZW0gIkxpc3QgQWxsIEJ1ZmZlcnMiIGxpc3QtYnVmZmVycyA6aGVscCAiUG9wIHVw
IGEgd2luZG93IGxpc3RpbmcgYWxsIEVtYWNzIGJ1ZmZlcnMiKSAoc2VsZWN0LWJ1ZmZlci1p
bi1wcm9qZWN0IG1lbnUtaXRlbSAiU2VsZWN0IEJ1ZmZlciBJbiBQcm9qZWN0Li4uIiBwcm9q
ZWN0LXN3aXRjaC10by1idWZmZXIgOmhlbHAgIlByb21wdCBmb3IgYSBidWZmZXIgYmVsb25n
aW5nIHRvIGN1cnJlbnQgcHJvamVjdCwgYW5kIHN3aXRjaCB0byBpdCIpIChsaXN0LWJ1ZmZl
cnMtaW4tcHJvamVjdCBtZW51LWl0ZW0gIkxpc3QgQnVmZmVycyBJbiBQcm9qZWN0Li4uIiBw
cm9qZWN0LWxpc3QtYnVmZmVycyA6aGVscCAiUG9wIHVwIGEgd2luZG93IGxpc3RpbmcgYWxs
IEVtYWNzIGJ1ZmZlcnMgYmVsb25naW5nIHRvIGN1cnJlbnQgcHJvamVjdCIpKSkNCiAgIHBv
cHVwLW1lbnUoKGtleW1hcCAiQnVmZmVycyIgWygiKnNjcmF0Y2gqICAiIC4gI2YoY29tcGls
ZWQtZnVuY3Rpb24gKCkgKGludGVyYWN0aXZlIG5pbCkgIzxieXRlY29kZSAtMHgxNjYyM2Jk
MTAxZmUzNTgwPikpICgiKk1lc3NhZ2VzKiAgKiUiIC4gI2YoY29tcGlsZWQtZnVuY3Rpb24g
KCkgKGludGVyYWN0aXZlIG5pbCkgIzxieXRlY29kZSAtMHgxNjYyM2JkNTRmMzkzNTgwPikp
XSAoY29tbWFuZC1zZXBhcmF0b3IgIi0tIikgKG5leHQtYnVmZmVyIG1lbnUtaXRlbSAiTmV4
dCBCdWZmZXIiIG5leHQtYnVmZmVyIDpoZWxwICJTd2l0Y2ggdG8gdGhlIFwibmV4dFwiIGJ1
ZmZlciBpbiBhIGN5Y2xpYyBvcmRlciIpIChwcmV2aW91cy1idWZmZXIgbWVudS1pdGVtICJQ
cmV2aW91cyBCdWZmZXIiIHByZXZpb3VzLWJ1ZmZlciA6aGVscCAiU3dpdGNoIHRvIHRoZSBc
InByZXZpb3VzXCIgYnVmZmVyIGluIGEgY3ljbGljIG9yZGVyIikgKHNlbGVjdC1uYW1lZC1i
dWZmZXIgbWVudS1pdGVtICJTZWxlY3QgTmFtZWQgQnVmZmVyLi4uIiBzd2l0Y2gtdG8tYnVm
ZmVyIDpoZWxwICJQcm9tcHQgZm9yIGEgYnVmZmVyIG5hbWUsIGFuZCBzZWxlY3QgdGhhdCBi
dWZmZXIgaW4gdGhlIGN1cnJlbnQgd2luZG93IikgKGxpc3QtYWxsLWJ1ZmZlcnMgbWVudS1p
dGVtICJMaXN0IEFsbCBCdWZmZXJzIiBsaXN0LWJ1ZmZlcnMgOmhlbHAgIlBvcCB1cCBhIHdp
bmRvdyBsaXN0aW5nIGFsbCBFbWFjcyBidWZmZXJzIikgKHNlbGVjdC1idWZmZXItaW4tcHJv
amVjdCBtZW51LWl0ZW0gIlNlbGVjdCBCdWZmZXIgSW4gUHJvamVjdC4uLiIgcHJvamVjdC1z
d2l0Y2gtdG8tYnVmZmVyIDpoZWxwICJQcm9tcHQgZm9yIGEgYnVmZmVyIGJlbG9uZ2luZyB0
byBjdXJyZW50IHByb2plY3QsIGFuZCBzd2l0Y2ggdG8gaXQiKSAobGlzdC1idWZmZXJzLWlu
LXByb2plY3QgbWVudS1pdGVtICJMaXN0IEJ1ZmZlcnMgSW4gUHJvamVjdC4uLiIgcHJvamVj
dC1saXN0LWJ1ZmZlcnMgOmhlbHAgIlBvcCB1cCBhIHdpbmRvdyBsaXN0aW5nIGFsbCBFbWFj
cyBidWZmZXJzIGJlbG9uZ2luZyB0byBjdXJyZW50IHByb2plY3QiKSkgKCM8d2luZG93IDEg
b24gKnNjcmF0Y2gqPiAxOSAoMTggLiAwKSAwIG5pbCAxOSAoMTggLiAwKSBuaWwgKDAgLiAw
KSAoMSAuIDApKSBuaWwgdCkNCiAgIG1lbnUtYmFyLW9wZW4obmlsIDE4KQ0KICAgbWVudS1i
YXItb3Blbi1tb3VzZSgobW91c2UtMSAobmlsIG1lbnUtYmFyICgyMSAuIDApIDI0MjQpKSkN
CiAgIGZ1bmNhbGwtaW50ZXJhY3RpdmVseShtZW51LWJhci1vcGVuLW1vdXNlIChtb3VzZS0x
IChuaWwgbWVudS1iYXIgKDIxIC4gMCkgMjQyNCkpKQ0KICAgY2FsbC1pbnRlcmFjdGl2ZWx5
KG1lbnUtYmFyLW9wZW4tbW91c2UgbmlsIG5pbCkNCiAgIGNvbW1hbmQtZXhlY3V0ZShtZW51
LWJhci1vcGVuLW1vdXNlKQ0KDQoNCm1hcnRpbg0K




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 9 Feb 2025 11:35:09 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 06:35:08 2025
Received: from localhost ([127.0.0.1]:43382 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1th5ae-0005AL-L7
	for submit <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:35:08 -0500
Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:42335)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1th5ac-00055W-8a
 for 75056 <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:35:07 -0500
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-43934d6b155so4356065e9.1
 for <75056 <at> debbugs.gnu.org>; Sun, 09 Feb 2025 03:35:06 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1739100899; x=1739705699; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=7JWVbj6LPKQGYJaX9zOXQjKNPZmY4c8R3Mni9krWQPs=;
 b=ZTJUnqyCgWTCJD10FSyOVpBesZqg0UPv0tbZBnUcaGjdGd1j+gmQbgTEuemj1FGO4J
 l/S0MC5cDasQETLgLCPioErTZH22dTXXt5F3xQEZ2NONLnjKEXcEb/e9bLiGEZNUt94Z
 HaO2osTQ7DLHRLmOC+YVVjl1A0ty9m9V5QwPc0ZTE0EfNMJveq66cr2m29rOJt6SE6fQ
 segaDvcT+5HmOssF9D+mMGUXGmYuBx/+bcFALPI2kMjS7Y98yqorUFSEC/BibOPeRizU
 m28BNx9jKlQRwgj8/ENKZRWCfMqiRcs4hH6DMIUNM+cZ3K4dYZI12F3cSxgAIGKo8RoO
 rmIQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1739100899; x=1739705699;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=7JWVbj6LPKQGYJaX9zOXQjKNPZmY4c8R3Mni9krWQPs=;
 b=A0FOeafc9K5O1iUKBxL3sWPopcKn/A9+42mw2390N3gJUyUr2h42kIeBbDg0unQ13/
 QXsgH4kxgN7Uprf7F0gJ8zxN6wqt6pCPahZ7rHh0KmohK7GmReLLirsAkwjmO9poT2pt
 AwOYyb28243hg433CcNhuUHmcsCCAIGeAUC8YZ98deNfu5Lcz8s81xZPlSrZKpRydpWi
 A5rwdVe68vYIna2mtSUGnFqgx4KuOV1yCbdGOjMV1xe++txSt1KOeEQl3p/M1U6y8KvL
 JOgNvxVBAy+iUulRHEz/kXDsjzj51Mvec1VxFSrZzCq+QLQl+40VVQczR3wfeMDMtVEM
 +/Lg==
X-Forwarded-Encrypted: i=1;
 AJvYcCXujyFRSo5ZKn1DND8OFPUdOcTEToNGzrKocb5FwdMoDKUrKA9u5hEAN9+PNEpwRQoaCMywSw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yw1YbciCWuLklaDLhXmvAgzy26BZdkg86IRxB2MVBzKhIb6w1M6
 Y4ffkYmBn0pPmPsloKKqt8rlBevKFrwOMt2GXAxVFCSAlVqHv0dtXIqB+A==
X-Gm-Gg: ASbGncvGda5SPsbUo7iM1OuJOlBFQX4fFFsKtI7r/B6F245ymT/zJWMjLh263GKuMCS
 47mRWQ7qG4AsiE3ePcpy9+MAp7lSfKMEmWoDauVOf9jyNX+7p9qc5mTko3jdgrkfwu/xVdYyga0
 Xo+SJi7hPbfL2a6B72k/glAFOCwCq4hvFLkTx01z078gr1ZgDACpqkOwLBRPtFgxg87TQ2oI8GC
 zt0mJIMP/B4a3bfxwjTvaz+rLVS6Va84E22v40jd1z5vZ8sAJXPcEQHkRjPXnqkQUA5yAz+6sCZ
 ADLHVq15atEm7gK7w4D1M9vN1Ar9Zddow3z0eKFN8lZbTK5VhxN4b4aoIy0kh+gx41FFoNHij7t
 UQqXfuaAcjF9MIhuJUF1HsAtX
X-Google-Smtp-Source: AGHT+IFNoLZk+aeH19YYljQeUWW8VoTjoTZoL93SjkkOGIvOGFqAh0wmr97plu3SSYBHTwLGVI5pEg==
X-Received: by 2002:a05:600c:c7:b0:434:e65e:457b with SMTP id
 5b1f17b1804b1-43912d0f1eemr102199825e9.3.1739100898861; 
 Sun, 09 Feb 2025 03:34:58 -0800 (PST)
Received: from pro2 (p200300e0b725cf0094296d0536d9d0d3.dip0.t-ipconnect.de.
 [2003:e0:b725:cf00:9429:6d05:36d9:d0d3])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4390d94d40csm146644255e9.9.2025.02.09.03.34.57
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 09 Feb 2025 03:34:58 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m28qqrlkyg.fsf@HIDDEN>
 <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
 <m2seozjo3c.fsf@HIDDEN> <m2msf6ezfq.fsf@HIDDEN>
 <m2jz9zmlfg.fsf@HIDDEN> <m2frknml43.fsf@HIDDEN>
 <e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
Date: Sun, 09 Feb 2025 12:34:57 +0100
Message-ID: <m234gnmjvi.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

martin rudalics <rudalics@HIDDEN> writes:

>> Wrong version. Please use this one:
>
> Can you send me one I can load with emacs -Q -nw?
> Here it complains about a void defclass.

Sorry, I would never have expected that defclass requires eieio, and is
not autoloaded. Sachen gibt's :-/.


--=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: attachment; filename=tty-menu.el
Content-Transfer-Encoding: quoted-printable

;; -*- lexical-binding: t; symbol-packages: t -*-
;;; tty-menu.el --- A menu implementation in Lisp

;; Copyright (C) 2025 Gerd M=C3=B6llmann

;; This file is not part of GNU Emacs.

;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.

;;; Commentary:

;;; Code:

;;; Todo

;; A mode: Open a sub-menu by moving the selection into the menu-item
;; for the sub-menu.  Close it by moving the selection out.

;; Make cursor invisible somehow (is cursor-type not supposed to
;; work?)

;; menu-bar-menu doesn't work (list of keymaps?)

(eval-when-compile (require 'cl-lib))
(require 'eieio)

(defclass tty-menu-element () ()
  :documentation "Base class for elements of a menu.")

(defclass tty-menu-pane (tty-menu-element)
  ((items :initarg :items :initform nil :type t)
   (buffer :initarg :buffer :type buffer)
   (layout :type list))
  :documentation "Class for menu panes.")

(defclass tty-menu-item (tty-menu-element)
  ((name :initarg :name :type string)
   (enable :initarg :enable :initform t :type t)
   (help :initarg :help :initform nil :type t)
   (visible :initarg :visible :initform t :type t)
   (key-sequence :initarg :key-sequence :initform nil :type t)
   (keys :initarg :keys :initform nil :type t)
   (filter :initarg :filter :initform nil :type t)
   (button :initarg :button :initform nil :type t)
   (selected :initarg :selected :initform nil :type t)
   (binding :initarg :binding :initform nil :type t)))

(defclass tty-menu-button (tty-menu-item) ())
(defclass tty-menu-radio (tty-menu-button) ())
(defclass tty-menu-checkbox (tty-menu-button) ())

(defclass tty-menu-separator (tty-menu-item)
  ((sep :initform "-" :type string :reader tty-menu-sep)))

(cl-defmethod initialize-instance :after ((item tty-menu-separator) &rest)
  (with-slots (name sep enable) item
    (setf enable nil)
    (cl-multiple-value-bind (ch disp)
	(pcase name
	  ("--space" (cl-values ?\s nil))
	  ("--double-line" (cl-values ?=3D 'box-double-horizontal))
	  (_ (cl-values ?- 'box-horizontal)))
      (setf sep
	    (make-string 1
			 (or (and disp
				  (let ((c (display-table-slot
					    standard-display-table disp)))
				    (and (characterp c) c)))
			     ch))))))

(defvar tty-menu-left-border-format "%1s")
(defvar tty-menu-right-border-format "%1s")
(defvar tty-menu-button-format "%-4s")
(defvar tty-menu-key-format "%10s")
(defvar tty-menu-name-format "%s")

(defvar tty-menu-triangle "=E2=96=B7")
(defvar tty-menu-radio-on "=E2=9C=94")
(defvar tty-menu-radio-off "")
(defvar tty-menu-checkbox-on "=E2=9C=94")
(defvar tty-menu-checkbox-off "=F0=90=84=82")

(defun tty-menu-selectable-p (item)
  (eval (slot-value item 'enable)))

(defun tty-menu-visible-p (item)
  (eval (slot-value item 'visible)))

(defun tty-menu-enabled-p (item)
  (eval (slot-value item 'enable)))

(defun tty-menu-ninsert (n x)
  (cl-loop repeat n do (insert x)))

(cl-defgeneric tty-menu-button-string (item)
  (:method ((_ tty-menu-item)) "")
  (:method ((r tty-menu-radio))
	   (format tty-menu-button-format
		   (if (slot-value r 'selected)
		       tty-menu-radio-on tty-menu-radio-off)))
  (:method ((c tty-menu-checkbox))
	   (format tty-menu-button-format
		   (if (slot-value c 'selected)
		       tty-menu-checkbox-on tty-menu-checkbox-off)))
  (:method ((_ tty-menu-separator)) ""))

(cl-defgeneric tty-menu-name-string (item)
  (:method ((item tty-menu-item))
	   (format tty-menu-name-format (slot-value item 'name)))
  (:method ((_ tty-menu-separator)) ""))

(cl-defgeneric tty-menu-key-string (item)
  (:method ((item tty-menu-item))
	   (format tty-menu-key-format
		   (with-slots (binding) item
		     (cond ((commandp binding)
			    (key-description (where-is-internal binding nil t)))
			   ((keymapp binding)
			    tty-menu-triangle)
			   (t (format "?? %S" binding))))))
  (:method ((_ tty-menu-separator)) ""))

(cl-defgeneric tty-menu-draw-button (item pane)
  (:method ((_item tty-menu-item) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ button-width _ _ _) layout
	       (tty-menu-ninsert button-width ?\s))))
  (:method ((item tty-menu-button) _pane)
	   (with-slots (selected button) item
	     (cl-destructuring-bind (_ . form) button
	       (setf selected (eval form))
	       (insert (tty-menu-button-string item)))))
  (:method ((item tty-menu-separator) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ button-width _ _ _) layout
	       (tty-menu-ninsert button-width (tty-menu-sep item))))))

(cl-defgeneric tty-menu-draw-name (item pane)
  (:method ((item tty-menu-item) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (left-border button name-width _ _) layout
	       (with-slots (name) item
		 (insert (tty-menu-name-string item))
		 (indent-to (+ left-border button name-width))))))
  (:method ((item tty-menu-separator) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ _ name-width _ _) layout
	       (tty-menu-ninsert name-width (tty-menu-sep item))))))

(cl-defgeneric tty-menu-draw-key (item pane)
  (:method ((item tty-menu-item) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (left-border button name-width key-width _) la=
yout
	       (insert (tty-menu-key-string item))
	       (indent-to (+ left-border button name-width key-width)))))
  (:method ((item tty-menu-separator) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ _ _ key-width _) layout
	       (tty-menu-ninsert key-width (tty-menu-sep item))))))

(cl-defgeneric tty-menu-draw-finish (item pane)
  (:method ((item tty-menu-item) _)
	   (let* ((enabled (tty-menu-enabled-p item))
		  (face (if enabled 'tty-menu-enabled-face
			  'tty-menu-disabled-face)))
	     (put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable enabled)
	     (put-text-property (pos-bol) (pos-eol) 'face face))
	   (when-let* ((help (slot-value item 'help)))
	     (put-text-property (pos-bol) (pos-eol) 'help-echo help)))
  (:method ((_item tty-menu-separator) _)
	   (put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable nil)
	   (put-text-property (pos-bol) (pos-eol) 'face 'tty-menu-enabled-face)))

(cl-defgeneric tty-menu-layout (pane)
  (:method ((pane tty-menu-pane))
	   (with-slots (items layout) pane
	     (cl-loop
	      with left-border =3D (string-width (format tty-menu-left-border-form=
at ""))
	      with right-border =3D (string-width (format tty-menu-right-border-fo=
rmat ""))
	      for i in items
	      maximize (string-width (tty-menu-button-string i)) into button
	      maximize (string-width (tty-menu-name-string i)) into name
	      maximize (string-width (tty-menu-key-string i)) into key
	      finally (setq layout `(,left-border ,button ,name ,key ,right-border=
))))))

(defun tty-menu-try-place-point (selectable old-line)
  (goto-char (point-min))
  (if (nth old-line selectable)
      (forward-line old-line)
    (let ((next (cl-loop for i from (1+ old-line)
			 to (1- (length selectable))
			 when (nth i selectable) return i))
	  (prev (cl-loop for i downfrom (1- old-line) to 0
			 when (nth i selectable) return i)))
      (cond (next (forward-line next))
	    (prev (forward-line prev))))))

(cl-defgeneric tty-menu-draw (item pane)
  (:method ((pane tty-menu-pane) line)
	   (with-slots (buffer items) pane
	     (with-current-buffer buffer
	       (let ((old-line (or line (1- (line-number-at-pos)))))
		 (erase-buffer)
		 (tty-menu-layout pane)
		 (let ((selectable
 			(cl-loop for i in items
				 when (tty-menu-visible-p i)
				 do (tty-menu-draw i pane)
				 and collect (tty-menu-selectable-p i))))
		   (tty-menu-try-place-point selectable old-line))))))
  (:method :around ((item tty-menu-item) pane)
	   (let ((start (point)))
	     (insert (format tty-menu-left-border-format ""))
	     (cl-call-next-method)
	     (insert (format tty-menu-right-border-format ""))
	     (tty-menu-draw-finish item pane)
	     (insert ?\n)
	     (put-text-property start (point) 'tty-menu-item item)))
  (:method ((item tty-menu-item) pane)
	   (tty-menu-draw-button item pane)
	   (tty-menu-draw-name item pane)
	   (tty-menu-draw-key item pane)))

(defvar-local tty-menu-selection-ov nil)
(defvar-local tty-menu-pane-drawn nil)

(cl-defgeneric tty-menu-select-item (item how)
  (:method ((item tty-menu-item) how)
	   (when-let* ((enabled (tty-menu-enabled-p item)))
	     (throw 'tty-menu-item-selected (cons item how))))
  (:method ((_item tty-menu-separator) _))
  (:method ((item tty-menu-button) _)
	   (with-slots (binding) item
	     (when (commandp binding)
	       (call-interactively binding))
	     (tty-menu-draw tty-menu-pane-drawn nil))))

(defun tty-menu-create-buffer (pane)
  "Create a buffer named BUFFER for DRAW to fill.
DRAW is called with no arguments and with current buffer being the
buffer created. Value is (BUFFER WIDTH HEIGHT), where BUFFER is
the buffer that was used, WIDTH is the maximum line width in the
buffer, and HEIGHT is the number of lines in the buffer. "
  (with-slots (buffer) pane
    (with-current-buffer buffer
      (dolist (var '((mode-line-format . nil)
                     (header-line-format . nil)
                     (tab-line-format . nil)
                     (tab-bar-format . nil)
                     (frame-title-format . "")
                     (truncate-lines . t)
                     (cursor-in-non-selected-windows . nil)
                     (cursor-type . nil)
                     (show-trailing-whitespace . nil)
                     (display-line-numbers . nil)
                     (left-fringe-width . nil)
                     (right-fringe-width . nil)
                     (left-margin-width . 0)
                     (right-margin-width . 0)
                     (fringes-outside-margins . 0)
                     (scroll-conservatively . 1)))
	(set (make-local-variable (car var)) (cdr var)))
      (let ((inhibit-modification-hooks t)
            (inhibit-read-only t)
	    (indent-tabs-mode nil))
	(setq tty-menu-selection-ov nil tty-menu-pane-drawn pane)
	(tty-menu-draw pane 0)
	(cl-flet ((line-width ()
		    (save-excursion
		      (goto-char (point-min))
		      (goto-char (line-end-position))
		      (current-column))))
	  (list (current-buffer)
		(line-width)
		(count-lines (point-min) (point-max))))))))

(defun tty-menu-make-element (item)
  (cl-labels ((separator? (name) (string-prefix-p "--" name))
	      (button? (props) (plist-get props :button))
	      (radio? (props) (eq (car (button? props)) :radio))
	      (toggle? (props) (eq (car (button? props)) :toggle)))
    ;; COND* complains about unknown pattern (PREDICATE symbol) if
    ;; PREDICATE is a local function. Use (CONSTRAIN symbol (PRODICATE
    ;; symbol)) instead.
    (cond*
     ((match* (cons 'menu-item
		    (cons (constrain name (separator? name))
			  props))
	      item)
      (apply #'make-instance 'tty-menu-separator (cl-list* :name name props=
)))
     ((match* (list 'menu-item name) item)
      (make-instance 'tty-menu-item :name name :enable nil))
     ((match* (cons 'menu-item
		    (cons name
			  (cons binding
				(constrain props (radio? props)))))
	      item)
      (apply #'make-instance 'tty-menu-radio
	     (cl-list* :name name :binding binding props)))
     ((match* (cons 'menu-item
		    (cons name
			  (cons binding
				(constrain props (toggle? props)))))
	      item)
      (apply #'make-instance 'tty-menu-checkbox
	     (cl-list* :name name :binding binding props)))
     ((match* (cons 'menu-item
		    (cons name
			  (cons binding props)))
	      item)
      (apply #'make-instance 'tty-menu-item
	     (cl-list* :name name :binding binding props)))
     ((match* (cons (constrain name (separator? name)) _)
	      item)
      (make-instance 'tty-menu-separator :name name))
     ((match* (cons name
		    (cons help
			  binding))
	      item)
      (make-instance 'tty-menu-item :name name :binding binding :help help))
     ((match* (cons name binding) item)
      (make-instance 'tty-menu-item :name name :binding binding))
     (t (error "No match for menu item %S" item)))))

(defun tty-menu-keymap-name (keymap default)
  (let ((name (last keymap)))
    (or (and (stringp (car name)) (car name))
	default)))

(defun tty-menu-make-pane-buffer (keymap)
  (cl-labels
      ((pane-buffer-name ()
	 (format " *tty-menu-%s*" (tty-menu-keymap-name keymap "<no-name>")))
       (make-pane ()
	 (make-instance
	  'tty-menu-pane
	  :buffer (get-buffer-create (pane-buffer-name))
	  :items (cl-loop for b being the key-bindings of keymap
			  collect (tty-menu-make-element b)))))
    (tty-menu-create-buffer (make-pane))))

(defvar tty-menu-frame-parameters
  `((visibility . nil)
    (background-color . "grey20")
    (foreground-color . "white")
    (width . 0) (height . 0)
    (min-width . t) (min-height . t)
    (no-accept-focus . t)
    (no-focus-on-map . t)
    (border-width . 0)
    (child-frame-border-width . 1)
    (left-fringe . 0)
    (right-fringe . 0)
    (vertical-scroll-bars . nil)
    (horizontal-scroll-bars . nil)
    (tty-menu-bar-lines . 0)
    (tool-bar-lines . 0)
    (tab-bar-lines . 0)
    (no-other-frame . t)
    (no-other-window . t)
    (no-delete-other-windows . t)
    (unsplittable . t)
    (undecorated . t)
    (cursor-type . nil)
    (no-special-glyphs . t)
    (desktop-dont-save . t)))

(defun tty-menu-frame-parameters ()
  (let ((params (copy-sequence tty-menu-frame-parameters))
        (fg (face-attribute 'tty-menu-enabled-face :foreground))
        (bg (face-attribute 'tty-menu-enabled-face :background)))
    (when (stringp fg)
      (setf (alist-get 'foreground-color params) fg))
    (when (stringp bg)
      (setf (alist-get 'background-color params) bg))
    params))

(defun tty-menu-make-fully-visible (f1 f2 x y)
  (let* ((f1-edges (frame-edges f1))
	 (f1-width (frame-width f1))
         (f1-height (frame-height f1))
         (f1-x (nth 0 f1-edges))
         (f1-y (nth 1 f1-edges))
         (f2-width (frame-width f2))
         (f2-height (frame-height f2))
         (new-x (max f1-x (min (+ f1-x f1-width (- f2-width)) x)))
         (new-y (max f1-y (min (+ f1-y f1-height (- f2-height)) y))))
    ;; Ensure F2 is fully contained within F1
    (setq new-x (min new-x (+ f1-x f1-width (- f2-width))))
    (setq new-y (min new-y (+ f1-y f1-height (- f2-height))))
    ;; Move and resize F2
    (set-frame-position f2 new-x new-y)
    (set-frame-size f2 f2-width f2-height)))

(defun tty-menu-frame-absolute-position (frame x y)
  "Translate (X, Y) in FRAME to absolute coordinates relative to the root f=
rame."
  (let ((current-frame frame)
        (abs-x x)
        (abs-y y))
    (while (frame-parent current-frame)
      (let ((edges (frame-edges current-frame)))
	(setq abs-x (+ abs-x (nth 0 edges)))
	(setq abs-y (+ abs-y (nth 1 edges)))
	(setq current-frame (frame-parent current-frame))))
    (cons abs-x abs-y)))

(defun tty-menu-create-frame (keymap where)
  (cl-destructuring-bind (buffer width height)
      (tty-menu-make-pane-buffer keymap)
    (cl-destructuring-bind (parent-frame x y) where
      ;; We want to show the menu using a root frame as parent because
      ;; that doesn't clip the frame. Means that we have to translate
      ;; coordinates to absolute.
      (when (frame-parent parent-frame)
	(cl-destructuring-bind (ax . ay)
	    (tty-menu-frame-absolute-position parent-frame x y)
	  (setq x ax y ay)
	  (setq parent-frame (frame-root-frame parent-frame))))
      (let* ((minibuffer (minibuffer-window parent-frame))
             (window-min-height 1)
             (window-min-width 1)
             (after-make-frame-functions nil)
	     (frame (make-frame `((parent-frame . ,parent-frame)
				  (name . ,(buffer-name buffer))
				  (minibuffer . ,minibuffer)
				  ,@(tty-menu-frame-parameters))))
	     (win (frame-root-window frame)))
	(set-window-buffer win buffer)
	(set-window-dedicated-p win t)
	(set-frame-size frame width height)
	(set-frame-position frame x y)
	(tty-menu-make-fully-visible parent-frame frame x y)
	(make-frame-visible frame)
	(raise-frame frame)
	(select-frame-set-input-focus frame)
	frame))))

(defun tty-menu-mouse-select-item (event)
  (interactive "e")
  (let* ((end (event-end event))
	 (win (posn-window end)))
    (unless (eq (window-frame win) (tty-top-frame))
      (throw 'tty-menu-item-selected nil))
    (when-let* ((item (get-text-property (posn-point end) 'tty-menu-item)))
      (tty-menu-select-item item 'mouse))))

(defun tty-menu-key-select-item ()
  (interactive)
  (when-let* ((item (get-text-property (point) 'tty-menu-item)))
    (tty-menu-select-item item 'key)))

(defun tty-menu-mouse-moved (event)
  (interactive "e")
  (let* ((end (event-end event))
	 (win (posn-window end)))
    (when (eq (window-frame win) (tty-top-frame))
      (let ((item (get-text-property (posn-point end) 'tty-menu-item)))
	(when (and item (tty-menu-selectable-p item))
	  (goto-char (posn-point end)))))))

(defun tty-menu-next-line ()
  (interactive)
  (cl-loop for next =3D (next-single-property-change (point) 'tty-menu-item)
	   then (next-single-property-change next 'tty-menu-item)
	   while next
	   for item =3D (get-text-property next 'tty-menu-item)
	   until (tty-menu-selectable-p item)
	   finally (when next (goto-char next))))

(defun tty-menu-previous-line ()
  (interactive)
  (cl-loop for prev =3D (previous-single-property-change
		       (point) 'tty-menu-item nil (point-min))
	   then (previous-single-property-change
		 prev 'tty-menu-item nil (point-min))
	   while prev
	   for item =3D (get-text-property prev 'tty-menu-item)=20
	   if (tty-menu-selectable-p item) do (goto-char prev) and return t
	   else if (eq prev (point-min)) return t))

(defun tty-menu-close-pane ()
  (interactive)
  (throw 'tty-menu-item-selected nil))

(defun tty-menu-isearch (forward)
  (isearch-mode forward nil nil)
  (while isearch-mode
    (let* ((key (read-key-sequence nil nil t nil nil nil)))
      (when-let* ((cmd (lookup-key isearch-mode-map key)))
	(if (and (eq cmd #'isearch-printing-char)
		 (stringp key))
	    (isearch-printing-char (aref key 0))
	  (call-interactively cmd))))))

(defun tty-menu-isearch-forward ()
  (interactive)
  (tty-menu-isearch t))
=20=20
(defun tty-menu-isearch-backward ()
  (interactive)
  (tty-menu-isearch nil))

(defvar-keymap tty-menu-keymap
  :doc "Keymap for menu interaction."
  "<up>" #'tty-menu-previous-line
  "<down>" #'tty-menu-next-line
  "<left>" #'tty-menu-close-pane
  "C-b" #'tty-menu-close-pane
  "C-g" #'keyboard-quit
  "C-j" #'tty-menu-key-select-item
  "C-n" #'tty-menu-next-line
  "C-p" #'tty-menu-previous-line
  "C-r" #'tty-menu-isearch-backward
  "C-s" #'tty-menu-isearch-forward
  "RET" #'tty-menu-key-select-item
  "SPC" #'tty-menu-key-select-item
  "<return>" #'tty-menu-key-select-item
  "<mouse-movement>" #'tty-menu-mouse-moved
  "<mouse-1>" #'tty-menu-mouse-select-item)

(defun tty-menu-show-selected-item ()
  (unless tty-menu-selection-ov
    (setq tty-menu-selection-ov (make-overlay 1 1))
    (overlay-put tty-menu-selection-ov 'face 'tty-menu-selected-face))
  (move-overlay tty-menu-selection-ov (line-beginning-position) (line-end-p=
osition)))

(defun tty-menu-global-menu ()
  (keymap-lookup global-map "<menu-bar>"))

(defun tty-menu-position (pos)
  (interactive)
  (cond*
   ((match* 'nil pos) nil)
   ((match* 't pos)
    (cl-destructuring-bind (frame x . y) (mouse-position)
      ;; mouse-position sometimes returns nil for x and y which I
      ;; think should not happen.
      (list frame (or x 10) (or y 10))))
   ((match* (eventp e) pos)
    (let* ((end (event-end e))
	   (win (posn-window end))
	   (x (car (posn-x-y end)))
	   (y (cdr (posn-x-y end))))
      (cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
	(list (window-frame win) (+ wx x) (+ wy y)))))
   ((match* (cons (cons (numberp x)
			(numberp y))
		  (cons (windowp win)
			_))
	    pos)
    (cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
      (list (window-frame win) (+ wx x) (+ wy y))))
   ((match* (cons (list (numberp x) (numberp y))
		  (cons (framep frame) _))
	    pos)
    (list frame x y))
   ((match* (cons (cons (numberp x) (numberp y))
		  (cons (framep frame) _))
	    pos)
    (list frame x y))
   ((match* (cons (numberp x) (numberp y)) pos)
    (list (selected-frame) x y))
   (t (error "%S does not match in tty-menu-position" pos))))

(defun tty-menu-where (how)
  (cl-ecase how
    (mouse (tty-menu-position t))
    (key (let* ((posn (posn-at-point (line-end-position)))
		(xy (posn-x-y posn))
		(win (posn-window posn)))
	   (tty-menu-position (list xy win))))))

(defun tty-menu-loop (keymap where)
  (let ((frame (tty-menu-create-frame keymap where)))
    (unwind-protect
	;; Inner loop handling mouse movement over the pane,
	;; moving with the keyboard on the pane. The loop is
	;; left by a throw when a menu-item is selected.
	(cl-loop
	 named outer-loop
	 while t
	 for res =3D (catch 'tty-menu-item-selected
		     (while t
		       (tty-menu-show-selected-item)
		       (let* ((track-mouse t)
			      (key (read-key-sequence nil))
			      (cmd (lookup-key tty-menu-keymap key)))
			 (when (commandp cmd)
			   (call-interactively cmd)))))
	 do
	 ;; If the selected item was for a sub-pane, call ourselves
	 ;; recursively with the sub-pane.
	 (cond* ((match* (cons selected how) res)
		 (with-slots (binding) selected
		   (if (keymapp binding)
		       (tty-menu-loop binding (tty-menu-where how))
		     ;; Return a list because x-popup-menu does.
		     (cl-return-from outer-loop (list binding)))))
		((match* 'nil res)
		 (cl-return-from outer-loop nil))))
      (when frame
	(delete-frame frame)))))

(defun frame-with-name (name)
  (cl-flet ((frame-name (frame)
	      (frame-parameter frame 'name)))
    (cl-find-if (lambda (f) (equal (frame-name f) name))
		(frame-list))))

(defun tty-menu-delete-menu-frames ()
  (cl-flet ((frame-name (frame)
	      (frame-parameter frame 'name)))
    (cl-loop for frame in (frame-list)
	     when (string-prefix-p " *tty-menu-" (frame-name frame))
	     do (delete-frame frame))))
=20=20
(cl-defun tty-menu-popup-menu (position menu)
  (when-let* ((where (tty-menu-position position)))
    (cond ((keymapp menu)
	   (tty-menu-loop menu where))
	  ((consp menu)
	   (cl-loop with outer =3D (make-sparse-keymap "outer")
		    for keymap in menu
		    for name =3D (tty-menu-keymap-name keymap "?")
		    do (define-key outer (vector (intern name)) keymap)
		    finally (tty-menu-loop outer where)))
	  (t (error "Not a menu: %S" menu)))))

;;;###autoload
(define-minor-mode tty-menu-mode
  "Global minor mode for displaying menus with tty child frames."
  :global t :group 'menu
  (unless (display-graphic-p)
    (if tty-menu-mode
	(remove-function (symbol-function 'x-popup-menu)
			 #'tty-menu-popup-menu))
    (add-function :override (symbol-function 'x-popup-menu)
		  #'tty-menu-popup-menu)))

(provide 'tty-menu)

;;; Local Variables:
;;; fill-column: 80
;;; End:

--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 9 Feb 2025 11:27:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 06:27:08 2025
Received: from localhost ([127.0.0.1]:43353 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1th5Su-0004ke-8w
	for submit <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:27:08 -0500
Received: from mout.gmx.net ([212.227.15.19]:43237)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1th5Sr-0004jy-Or
 for 75056 <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:27:06 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1739100416; x=1739705216; i=rudalics@HIDDEN;
 bh=ad1GqqGEz/V/VliK40LUx68MwUaj4UvBcPru1J6g6cI=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=AzQMH3c4alq0z9eBsn/N5XeSYEayQVtY7M7c+Ch3nvKu9tr/CgsYIo0DkuetwPYC
 nvdKBvYsR3jW8ynf1vBTNIP2TucLtBE55h4GcvTYcyu5YfVzW2jXfZx4rORrBnSpb
 aoQSQ0B23hZIEqgD6K2DFYnJCWajyzjPtLT0AikNvf0Z8lFH8IDNriDOmyDlNav/5
 YU5080VAMZ+XxJLLm+/aiwhPOBa++30kXS0HC1RP52SnnxEc9JKAo2IRr7tEB0xma
 qYhc6DZHZnhk2W7/I0LWBLVyGCQuHdbSd38/pN2FE27+9/V/+5b06/0abHPkCo6Rv
 vCXZDWuAtBkv5h6imQ==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.97.220]) by mail.gmx.net (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MulqD-1tQFKl1MYt-00wr94; Sun, 09
 Feb 2025 12:26:56 +0100
Message-ID: <e4670861-a251-4250-b988-73b428a1b7e0@HIDDEN>
Date: Sun, 9 Feb 2025 12:26:55 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN> <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN> <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN> <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
 <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN> <m2seozjo3c.fsf@HIDDEN>
 <m2msf6ezfq.fsf@HIDDEN> <m2jz9zmlfg.fsf@HIDDEN>
 <m2frknml43.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2frknml43.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:u6yab7u6fkmIdnKEPnF7aBZW3+VnOL7agI3GXhM05oiKvzZqru7
 d4p5ebiuF1KOAFD4TI8ekhHaC5FitAgM6CPBAXr4zGU5SE+PqU1Ii9qeZfqdJEBhBk/jseA
 7qsj/A7EA1Xbotum10iwYdIw6XlGzZzgGySKy8TlorAYKtv+zlOibQGZ6nVMYtRVWitmqtd
 eX1irIVn0apuZdDLwN18g==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:oGk5YOF1AAU=;1hiKD19WQQNSclWicvJR9mbTbR7
 OlF7vv+gPppoQdgieZm9qZ8/DzbQkwsU+G+L5AQlGw1JQOHtrhrsVZYsYM12oCdu0MMXUSn6b
 I47S5zti7UL5iXswFiGwDth7HryV10Zn104SwX7vic8I9CP1LaIvUMzEcBmuJtjWPYK5tBBHC
 TMqJiZ/eaydMh0gBDdWuLPZEg0xtoioZdbJSEbKatXNKvfNplkgOh/NOPdjhapeIyH3yD39ZI
 N59NS1J5swc0dYfYFuNUdZ/KJ4feXNsGKg1KoFGUm+lw6OLwUj59H8jskQpCVYcOPTAQHpaml
 OBU8Ec1n1TLLbzDzoVVc5J9bzivqzKfH0sK0lV5inFfSCjETGj/Yn+pek2PNX7akILn3ieiCs
 MSxkw4lCka9+i1fPuMHgDrccm10+JmzUhefFSl8yrYfV2n0BZQNf5bRvksC5fjts3oVKnvXAZ
 lrW60vwCI+S2BRWhngx/gVT7Rza0ECPzgyCz4i9x3sfNi3YOD0J+fozNOmRPnb99Tf8XDt7aC
 6Zm6oFEAv8tOLTbZia1rVMAgZRlrKITM6oJBT52DPX+qdbYauBPw6b4WKZS7mf7hHcKTwVZ0w
 Xtl5XOqBJ8abrxjNWGAmHJJCMWdTHGP9wc9JWPhHY3MRGha+uxPsHhHXTy4fiNnFyB4SZXBL8
 RQC8Rh3+1Y77JxUuOsh+dDAOHKCXjAcHMF7GMmyDltg+crlhbGbeGFfhb5ER/ExNuzviBz24S
 2xTIdmsfWLyhToRuhwdHvdqK1ReBxAR0liyn9yqZRLEww6J7C3WMqhqiLmXRz9MR74co/ZQxP
 D05jOukkRl0yELj0xi+n1/+pRF2dfSGoUSZaQofzhuvGE4/R+FFVkHinU1NuUF+vkInwEkm2W
 8dq1Lk7VWEvsrHL76GZCNw+Ygl5SaglCCk8v+q96NEGeR8NAoRP7JLZA9ruzcm1/CuBCAmSuu
 OlIlC6Uuj3ESbUhVzA/A9j/OadAAi+8bHMV1PRw2uZAezuRiMVA8gAFbrjCtnrPZ4YxuEMBlN
 jaU3EVmmVBQBodimVKHtyenhNb7fM4bXhrslG5tcK89U/00rKUpxNFt/RJwooPSLeGGMAK5IZ
 vdwc+4cL1IxYRpPAXF+toI3mElHuHHLQqtym/gS/yQoUwhdUQy/aO5c1BiKznJBtPNHWfg292
 5UWWjjbN6Ky2vN/SFuQlSlHxjxC5p+aCgYZqxVcFW7TWbe+pkRDStiFybWQxFml7kw9Mqaz5b
 VRy2anM0s8JXJ8kSWhL4mHDqqZipJglc2j2xO0j4M+chtrcYAtDAwYU8xC5CVBVv5j637pq/U
 dZFMz7yHahuvhbs4xMZJBESDkBKVKW1pBwx5p0VYVL4Xc532D/MtQAdX60LI+H9I0AsxtwFji
 85hW6Z6hLn+uRWmfHSNFzXFr2PgBtCLsgZfWyDdKdxWFkvuItjP7twAE/5LEkktRPla9LzXnF
 ZiuKFSg==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

> Wrong version. Please use this one:

Can you send me one I can load with emacs -Q -nw?
Here it complains about a void defclass.

martin





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 9 Feb 2025 11:08:24 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 06:08:24 2025
Received: from localhost ([127.0.0.1]:43316 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1th5Am-0003o5-6r
	for submit <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:08:24 -0500
Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]:52250)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1th5Aj-0003no-LQ
 for 75056 <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:08:22 -0500
Received: by mail-wm1-x335.google.com with SMTP id
 5b1f17b1804b1-4363ae65100so40858215e9.0
 for <75056 <at> debbugs.gnu.org>; Sun, 09 Feb 2025 03:08:21 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1739099295; x=1739704095; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=apZJnunvGoGDxHdOWip0zrjVdSBDc4/2d3yVwnuy+Mc=;
 b=YYApe+E+0uJdHyQ0d1A1sNPnI6X05Yil9zyhY1EEjv3KHRwnTvLFSjIzyznOYeqGhK
 5e/FAftgxv9r4ohG/wkIMHvDi+Umjmqf4d2DbrONo1/sQHdfcIs7P+aI9yPRRy6ySy4k
 m99cjlqHEoIS35xo4Z0cJa2BS/kFxV1BnkYUaJoSmk+ntYbG2EQQijJ/tH0HJvikMMt9
 cZqk6qgsJKrl63lMN9kj9pWExLG9SpgYJMsfRUH9atqOC3UvUa+cdmPV9BJixjvbuZHw
 yKmMhL6UbXEOk08PY8m135DQ2mR9ewaF2ss7oayVZJvFgM1HnnDDMbNIDzckDQj4CTr/
 7RBA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1739099295; x=1739704095;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=apZJnunvGoGDxHdOWip0zrjVdSBDc4/2d3yVwnuy+Mc=;
 b=Vs8bhvFtNbmCooPii6gBi78XNjXOyGNcT9Z2sXUxaWX5LY2KTrsc1zhPNwwkJH6uYg
 oMiUIfWQzNDn0OyJjZjCMGPcYyFaHIe4ocysKt36WSWvnnmDlfOYvjXSnKgfDD0NzgOo
 v8OR26Ff/zpLKam8tfz5TqqdP9mLbDHAdEex3HDRIIJ3sicCCnn3DVPdUgvlsLYxvlu6
 XIIqh/ZabcjbG/jQgoj6uLQuI2TBiL0coU5oGNw7+9SNj0vu6nSkyNRFpHeu0AmAwDXM
 d8mTViI/vmNKpjsQpHN58Hi+yMq+xPwenttvEnbXMIEZLz7yg5IPRHe4Bi8Dv7NNq0iX
 BBZg==
X-Forwarded-Encrypted: i=1;
 AJvYcCU+fdFe+evU0WOBiZEpJJAK5/wdlMJ1bng/u70YULubdq1VvcMRA08OiZvsOhUSPdFGZWfrvQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwjzgjJpBYLUbfv7X9GxT7sekJPFlcLYhgkLNzwqcLLEdAgyCam
 aYi0HTDs/A7+VHK/IJeVtgzl8AaWTd9Fw4ILYRD5fCCpopn63aQdA4COFA==
X-Gm-Gg: ASbGnctl0V1+i33hWnZ3h35soRBNH1eRQRmId/bYmXCFm7eErF37oi6vEjWRjBB5rv5
 XCCK28oNCu64YLBhOegWqAHWze+DYj5zX8yD7e/EYfOflF7uywsV+5lrit6750Oug9HV5PSJW12
 XF1coJAr2RSJBKieTBv44rOdqtxF9ObpijywwyuPF9qDpUAtBYMeGkgk/cxI1hy609Uo3gs5abM
 nK6vilauH/WCPgCMmb1OElIyiMG1lMJCP92p+dEOTdtRb0Kugw9bPPRTW2kcTe1j7pS9XKBsHDz
 sYq4MRS6FxE7P5E+0YqgMPBaR/JWtaF8mUeBfXz3jdKngXq76ILWS/aUDnpoKrJIBDX7wr1jgCQ
 eNkWEtrMhKIWD0qWMkcfu91p9
X-Google-Smtp-Source: AGHT+IEYBvv2iKB2lfGXar6+jdgIDUvVOfqP0DOOlEmWoHu5eLL4yH1VZfbj+kGFuVSCmiAMyGBx0A==
X-Received: by 2002:a5d:64af:0:b0:38d:d371:e01d with SMTP id
 ffacd0b85a97d-38dd371e466mr3644773f8f.49.1739099294702; 
 Sun, 09 Feb 2025 03:08:14 -0800 (PST)
Received: from pro2 (p200300e0b725cf0094296d0536d9d0d3.dip0.t-ipconnect.de.
 [2003:e0:b725:cf00:9429:6d05:36d9:d0d3])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38dc3a10fffsm8457403f8f.12.2025.02.09.03.08.12
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 09 Feb 2025 03:08:14 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <m2jz9zmlfg.fsf@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m28qqrlkyg.fsf@HIDDEN>
 <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
 <m2seozjo3c.fsf@HIDDEN> <m2msf6ezfq.fsf@HIDDEN>
 <m2jz9zmlfg.fsf@HIDDEN>
Date: Sun, 09 Feb 2025 12:08:12 +0100
Message-ID: <m2frknml43.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:

> Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
>
>> Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
>>
>>> I take everything back. I think it would be much much better to do that
>>> all in Lisp.
>>
>> FWIW, a proof-of-concept, only showing a frame with a menu. 200 loc with
>> half of it copied from tty-tip.el.
>
> I'm not sure if it's worth it, but I did a bit more. You can try it out
> with something like
>
>   (tty-menu-popup-menu t menu-bar-file-menu)

Wrong version. Please use this one:


--=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: attachment; filename=tty-menu.el
Content-Transfer-Encoding: quoted-printable

;; -*- lexical-binding: t; symbol-packages: t -*-
;;; tty-menu.el --- A menu implementation in Lisp

;; Copyright (C) 2025 Gerd M=C3=B6llmann

;; This file is not part of GNU Emacs.

;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.

;;; Commentary:

;;; Code:

;;; Todo

;; A mode: Open a sub-menu by moving the selection into the menu-item
;; for the sub-menu.  Close it by moving the selection out.

;; Make cursor invisible somehow (is cursor-type not supposed to
;; work?)

;; menu-bar-menu doesn't work (list of keymaps?)

(eval-when-compile (require 'cl-lib))

(defclass tty-menu-element () ()
  :documentation "Base class for elements of a menu.")

(defclass tty-menu-pane (tty-menu-element)
  ((items :initarg :items :initform nil :type t)
   (buffer :initarg :buffer :type buffer)
   (layout :type list))
  :documentation "Class for menu panes.")

(defclass tty-menu-item (tty-menu-element)
  ((name :initarg :name :type string)
   (enable :initarg :enable :initform t :type t)
   (help :initarg :help :initform nil :type t)
   (visible :initarg :visible :initform t :type t)
   (key-sequence :initarg :key-sequence :initform nil :type t)
   (keys :initarg :keys :initform nil :type t)
   (filter :initarg :filter :initform nil :type t)
   (button :initarg :button :initform nil :type t)
   (selected :initarg :selected :initform nil :type t)
   (binding :initarg :binding :initform nil :type t)))

(defclass tty-menu-button (tty-menu-item) ())
(defclass tty-menu-radio (tty-menu-button) ())
(defclass tty-menu-checkbox (tty-menu-button) ())

(defclass tty-menu-separator (tty-menu-item)
  ((sep :initform "-" :type string :reader tty-menu-sep)))

(cl-defmethod initialize-instance :after ((item tty-menu-separator) &rest)
  (with-slots (name sep enable) item
    (setf enable nil)
    (cl-multiple-value-bind (ch disp)
	(pcase name
	  ("--space" (cl-values ?\s nil))
	  ("--double-line" (cl-values ?=3D 'box-double-horizontal))
	  (_ (cl-values ?- 'box-horizontal)))
      (setf sep
	    (make-string 1
			 (or (and disp
				  (let ((c (display-table-slot
					    standard-display-table disp)))
				    (and (characterp c) c)))
			     ch))))))

(defvar tty-menu-left-border-format "%1s")
(defvar tty-menu-right-border-format "%1s")
(defvar tty-menu-button-format "%-4s")
(defvar tty-menu-key-format "%10s")
(defvar tty-menu-name-format "%s")

(defvar tty-menu-triangle "=E2=96=B7")
(defvar tty-menu-radio-on "=E2=9C=94")
(defvar tty-menu-radio-off "")
(defvar tty-menu-checkbox-on "=E2=9C=94")
(defvar tty-menu-checkbox-off "=F0=90=84=82")

(defun tty-menu-selectable-p (item)
  (eval (slot-value item 'enable)))

(defun tty-menu-visible-p (item)
  (eval (slot-value item 'visible)))

(defun tty-menu-enabled-p (item)
  (eval (slot-value item 'enable)))

(defun tty-menu-ninsert (n x)
  (cl-loop repeat n do (insert x)))

(cl-defgeneric tty-menu-button-string (item)
  (:method ((_ tty-menu-item)) "")
  (:method ((r tty-menu-radio))
	   (format tty-menu-button-format
		   (if (slot-value r 'selected)
		       tty-menu-radio-on tty-menu-radio-off)))
  (:method ((c tty-menu-checkbox))
	   (format tty-menu-button-format
		   (if (slot-value c 'selected)
		       tty-menu-checkbox-on tty-menu-checkbox-off)))
  (:method ((_ tty-menu-separator)) ""))

(cl-defgeneric tty-menu-name-string (item)
  (:method ((item tty-menu-item))
	   (format tty-menu-name-format (slot-value item 'name)))
  (:method ((_ tty-menu-separator)) ""))

(cl-defgeneric tty-menu-key-string (item)
  (:method ((item tty-menu-item))
	   (format tty-menu-key-format
		   (with-slots (binding) item
		     (cond ((commandp binding)
			    (key-description (where-is-internal binding nil t)))
			   ((keymapp binding)
			    tty-menu-triangle)
			   (t (format "?? %S" binding))))))
  (:method ((_ tty-menu-separator)) ""))

(cl-defgeneric tty-menu-draw-button (item pane)
  (:method ((_item tty-menu-item) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ button-width _ _ _) layout
	       (tty-menu-ninsert button-width ?\s))))
  (:method ((item tty-menu-button) _pane)
	   (with-slots (selected button) item
	     (cl-destructuring-bind (_ . form) button
	       (setf selected (eval form))
	       (insert (tty-menu-button-string item)))))
  (:method ((item tty-menu-separator) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ button-width _ _ _) layout
	       (tty-menu-ninsert button-width (tty-menu-sep item))))))

(cl-defgeneric tty-menu-draw-name (item pane)
  (:method ((item tty-menu-item) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (left-border button name-width _ _) layout
	       (with-slots (name) item
		 (insert (tty-menu-name-string item))
		 (indent-to (+ left-border button name-width))))))
  (:method ((item tty-menu-separator) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ _ name-width _ _) layout
	       (tty-menu-ninsert name-width (tty-menu-sep item))))))

(cl-defgeneric tty-menu-draw-key (item pane)
  (:method ((item tty-menu-item) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (left-border button name-width key-width _) la=
yout
	       (insert (tty-menu-key-string item))
	       (indent-to (+ left-border button name-width key-width)))))
  (:method ((item tty-menu-separator) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ _ _ key-width _) layout
	       (tty-menu-ninsert key-width (tty-menu-sep item))))))

(cl-defgeneric tty-menu-draw-finish (item pane)
  (:method ((item tty-menu-item) _)
	   (let* ((enabled (tty-menu-enabled-p item))
		  (face (if enabled 'tty-menu-enabled-face
			  'tty-menu-disabled-face)))
	     (put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable enabled)
	     (put-text-property (pos-bol) (pos-eol) 'face face))
	   (when-let* ((help (slot-value item 'help)))
	     (put-text-property (pos-bol) (pos-eol) 'help-echo help)))
  (:method ((_item tty-menu-separator) _)
	   (put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable nil)
	   (put-text-property (pos-bol) (pos-eol) 'face 'tty-menu-enabled-face)))

(cl-defgeneric tty-menu-layout (pane)
  (:method ((pane tty-menu-pane))
	   (with-slots (items layout) pane
	     (cl-loop
	      with left-border =3D (string-width (format tty-menu-left-border-form=
at ""))
	      with right-border =3D (string-width (format tty-menu-right-border-fo=
rmat ""))
	      for i in items
	      maximize (string-width (tty-menu-button-string i)) into button
	      maximize (string-width (tty-menu-name-string i)) into name
	      maximize (string-width (tty-menu-key-string i)) into key
	      finally (setq layout `(,left-border ,button ,name ,key ,right-border=
))))))

(defun tty-menu-try-place-point (selectable old-line)
  (goto-char (point-min))
  (if (nth old-line selectable)
      (forward-line old-line)
    (let ((next (cl-loop for i from (1+ old-line)
			 to (1- (length selectable))
			 when (nth i selectable) return i))
	  (prev (cl-loop for i downfrom (1- old-line) to 0
			 when (nth i selectable) return i)))
      (cond (next (forward-line next))
	    (prev (forward-line prev))))))

(cl-defgeneric tty-menu-draw (item pane)
  (:method ((pane tty-menu-pane) line)
	   (with-slots (buffer items) pane
	     (with-current-buffer buffer
	       (let ((old-line (or line (1- (line-number-at-pos)))))
		 (erase-buffer)
		 (tty-menu-layout pane)
		 (let ((selectable
 			(cl-loop for i in items
				 when (tty-menu-visible-p i)
				 do (tty-menu-draw i pane)
				 and collect (tty-menu-selectable-p i))))
		   (tty-menu-try-place-point selectable old-line))))))
  (:method :around ((item tty-menu-item) pane)
	   (let ((start (point)))
	     (insert (format tty-menu-left-border-format ""))
	     (cl-call-next-method)
	     (insert (format tty-menu-right-border-format ""))
	     (tty-menu-draw-finish item pane)
	     (insert ?\n)
	     (put-text-property start (point) 'tty-menu-item item)))
  (:method ((item tty-menu-item) pane)
	   (tty-menu-draw-button item pane)
	   (tty-menu-draw-name item pane)
	   (tty-menu-draw-key item pane)))

(defvar-local tty-menu-selection-ov nil)
(defvar-local tty-menu-pane-drawn nil)

(cl-defgeneric tty-menu-select-item (item how)
  (:method ((item tty-menu-item) how)
	   (when-let* ((enabled (tty-menu-enabled-p item)))
	     (throw 'tty-menu-item-selected (cons item how))))
  (:method ((_item tty-menu-separator) _))
  (:method ((item tty-menu-button) _)
	   (with-slots (binding) item
	     (when (commandp binding)
	       (call-interactively binding))
	     (tty-menu-draw tty-menu-pane-drawn nil))))

(defun tty-menu-create-buffer (pane)
  "Create a buffer named BUFFER for DRAW to fill.
DRAW is called with no arguments and with current buffer being the
buffer created. Value is (BUFFER WIDTH HEIGHT), where BUFFER is
the buffer that was used, WIDTH is the maximum line width in the
buffer, and HEIGHT is the number of lines in the buffer. "
  (with-slots (buffer) pane
    (with-current-buffer buffer
      (dolist (var '((mode-line-format . nil)
                     (header-line-format . nil)
                     (tab-line-format . nil)
                     (tab-bar-format . nil)
                     (frame-title-format . "")
                     (truncate-lines . t)
                     (cursor-in-non-selected-windows . nil)
                     (cursor-type . nil)
                     (show-trailing-whitespace . nil)
                     (display-line-numbers . nil)
                     (left-fringe-width . nil)
                     (right-fringe-width . nil)
                     (left-margin-width . 0)
                     (right-margin-width . 0)
                     (fringes-outside-margins . 0)
                     (scroll-conservatively . 1)))
	(set (make-local-variable (car var)) (cdr var)))
      (let ((inhibit-modification-hooks t)
            (inhibit-read-only t)
	    (indent-tabs-mode nil))
	(setq tty-menu-selection-ov nil tty-menu-pane-drawn pane)
	(tty-menu-draw pane 0)
	(cl-flet ((line-width ()
		    (save-excursion
		      (goto-char (point-min))
		      (goto-char (line-end-position))
		      (current-column))))
	  (list (current-buffer)
		(line-width)
		(count-lines (point-min) (point-max))))))))

(defun tty-menu-make-element (item)
  (cl-labels ((separator? (name) (string-prefix-p "--" name))
	      (button? (props) (plist-get props :button))
	      (radio? (props) (eq (car (button? props)) :radio))
	      (toggle? (props) (eq (car (button? props)) :toggle)))
    ;; COND* complains about unknown pattern (PREDICATE symbol) if
    ;; PREDICATE is a local function. Use (CONSTRAIN symbol (PRODICATE
    ;; symbol)) instead.
    (cond*
     ((match* (cons 'menu-item
		    (cons (constrain name (separator? name))
			  props))
	      item)
      (apply #'make-instance 'tty-menu-separator (cl-list* :name name props=
)))
     ((match* (list 'menu-item name) item)
      (make-instance 'tty-menu-item :name name :enable nil))
     ((match* (cons 'menu-item
		    (cons name
			  (cons binding
				(constrain props (radio? props)))))
	      item)
      (apply #'make-instance 'tty-menu-radio
	     (cl-list* :name name :binding binding props)))
     ((match* (cons 'menu-item
		    (cons name
			  (cons binding
				(constrain props (toggle? props)))))
	      item)
      (apply #'make-instance 'tty-menu-checkbox
	     (cl-list* :name name :binding binding props)))
     ((match* (cons 'menu-item
		    (cons name
			  (cons binding props)))
	      item)
      (apply #'make-instance 'tty-menu-item
	     (cl-list* :name name :binding binding props)))
     ((match* (cons (constrain name (separator? name)) _)
	      item)
      (make-instance 'tty-menu-separator :name name))
     ((match* (cons name
		    (cons help
			  binding))
	      item)
      (make-instance 'tty-menu-item :name name :binding binding :help help))
     ((match* (cons name binding) item)
      (make-instance 'tty-menu-item :name name :binding binding))
     (t (error "No match for menu item %S" item)))))

(defun tty-menu-keymap-name (keymap default)
  (let ((name (last keymap)))
    (or (and (stringp (car name)) (car name))
	default)))

(defun tty-menu-make-pane-buffer (keymap)
  (cl-labels
      ((pane-buffer-name ()
	 (format " *tty-menu-%s*" (tty-menu-keymap-name keymap "<no-name>")))
       (make-pane ()
	 (make-instance
	  'tty-menu-pane
	  :buffer (get-buffer-create (pane-buffer-name))
	  :items (cl-loop for b being the key-bindings of keymap
			  collect (tty-menu-make-element b)))))
    (tty-menu-create-buffer (make-pane))))

(defvar tty-menu-frame-parameters
  `((visibility . nil)
    (background-color . "grey20")
    (foreground-color . "white")
    (width . 0) (height . 0)
    (min-width . t) (min-height . t)
    (no-accept-focus . t)
    (no-focus-on-map . t)
    (border-width . 0)
    (child-frame-border-width . 1)
    (left-fringe . 0)
    (right-fringe . 0)
    (vertical-scroll-bars . nil)
    (horizontal-scroll-bars . nil)
    (tty-menu-bar-lines . 0)
    (tool-bar-lines . 0)
    (tab-bar-lines . 0)
    (no-other-frame . t)
    (no-other-window . t)
    (no-delete-other-windows . t)
    (unsplittable . t)
    (undecorated . t)
    (cursor-type . nil)
    (no-special-glyphs . t)
    (desktop-dont-save . t)))

(defun tty-menu-frame-parameters ()
  (let ((params (copy-sequence tty-menu-frame-parameters))
        (fg (face-attribute 'tty-menu-enabled-face :foreground))
        (bg (face-attribute 'tty-menu-enabled-face :background)))
    (when (stringp fg)
      (setf (alist-get 'foreground-color params) fg))
    (when (stringp bg)
      (setf (alist-get 'background-color params) bg))
    params))

(defun tty-menu-make-fully-visible (f1 f2 x y)
  (let* ((f1-edges (frame-edges f1))
	 (f1-width (frame-width f1))
         (f1-height (frame-height f1))
         (f1-x (nth 0 f1-edges))
         (f1-y (nth 1 f1-edges))
         (f2-width (frame-width f2))
         (f2-height (frame-height f2))
         (new-x (max f1-x (min (+ f1-x f1-width (- f2-width)) x)))
         (new-y (max f1-y (min (+ f1-y f1-height (- f2-height)) y))))
    ;; Ensure F2 is fully contained within F1
    (setq new-x (min new-x (+ f1-x f1-width (- f2-width))))
    (setq new-y (min new-y (+ f1-y f1-height (- f2-height))))
    ;; Move and resize F2
    (set-frame-position f2 new-x new-y)
    (set-frame-size f2 f2-width f2-height)))

(defun tty-menu-frame-absolute-position (frame x y)
  "Translate (X, Y) in FRAME to absolute coordinates relative to the root f=
rame."
  (let ((current-frame frame)
        (abs-x x)
        (abs-y y))
    (while (frame-parent current-frame)
      (let ((edges (frame-edges current-frame)))
	(setq abs-x (+ abs-x (nth 0 edges)))
	(setq abs-y (+ abs-y (nth 1 edges)))
	(setq current-frame (frame-parent current-frame))))
    (cons abs-x abs-y)))

(defun tty-menu-create-frame (keymap where)
  (cl-destructuring-bind (buffer width height)
      (tty-menu-make-pane-buffer keymap)
    (cl-destructuring-bind (parent-frame x y) where
      ;; We want to show the menu using a root frame as parent because
      ;; that doesn't clip the frame. Means that we have to translate
      ;; coordinates to absolute.
      (when (frame-parent parent-frame)
	(cl-destructuring-bind (ax . ay)
	    (tty-menu-frame-absolute-position parent-frame x y)
	  (setq x ax y ay)
	  (setq parent-frame (frame-root-frame parent-frame))))
      (let* ((minibuffer (minibuffer-window parent-frame))
             (window-min-height 1)
             (window-min-width 1)
             (after-make-frame-functions nil)
	     (frame (make-frame `((parent-frame . ,parent-frame)
				  (name . ,(buffer-name buffer))
				  (minibuffer . ,minibuffer)
				  ,@(tty-menu-frame-parameters))))
	     (win (frame-root-window frame)))
	(set-window-buffer win buffer)
	(set-window-dedicated-p win t)
	(set-frame-size frame width height)
	(set-frame-position frame x y)
	(tty-menu-make-fully-visible parent-frame frame x y)
	(make-frame-visible frame)
	(raise-frame frame)
	(select-frame-set-input-focus frame)
	frame))))

(defun tty-menu-mouse-select-item (event)
  (interactive "e")
  (let* ((end (event-end event))
	 (win (posn-window end)))
    (unless (eq (window-frame win) (tty-top-frame))
      (throw 'tty-menu-item-selected nil))
    (when-let* ((item (get-text-property (posn-point end) 'tty-menu-item)))
      (tty-menu-select-item item 'mouse))))

(defun tty-menu-key-select-item ()
  (interactive)
  (when-let* ((item (get-text-property (point) 'tty-menu-item)))
    (tty-menu-select-item item 'key)))

(defun tty-menu-mouse-moved (event)
  (interactive "e")
  (let* ((end (event-end event))
	 (win (posn-window end)))
    (when (eq (window-frame win) (tty-top-frame))
      (let ((item (get-text-property (posn-point end) 'tty-menu-item)))
	(when (and item (tty-menu-selectable-p item))
	  (goto-char (posn-point end)))))))

(defun tty-menu-next-line ()
  (interactive)
  (cl-loop for next =3D (next-single-property-change (point) 'tty-menu-item)
	   then (next-single-property-change next 'tty-menu-item)
	   while next
	   for item =3D (get-text-property next 'tty-menu-item)
	   until (tty-menu-selectable-p item)
	   finally (when next (goto-char next))))

(defun tty-menu-previous-line ()
  (interactive)
  (cl-loop for prev =3D (previous-single-property-change
		       (point) 'tty-menu-item nil (point-min))
	   then (previous-single-property-change
		 prev 'tty-menu-item nil (point-min))
	   while prev
	   for item =3D (get-text-property prev 'tty-menu-item)=20
	   if (tty-menu-selectable-p item) do (goto-char prev) and return t
	   else if (eq prev (point-min)) return t))

(defun tty-menu-close-pane ()
  (interactive)
  (throw 'tty-menu-item-selected nil))

(defun tty-menu-isearch (forward)
  (isearch-mode forward nil nil)
  (while isearch-mode
    (let* ((key (read-key-sequence nil nil t nil nil nil)))
      (when-let* ((cmd (lookup-key isearch-mode-map key)))
	(if (and (eq cmd #'isearch-printing-char)
		 (stringp key))
	    (isearch-printing-char (aref key 0))
	  (call-interactively cmd))))))

(defun tty-menu-isearch-forward ()
  (interactive)
  (tty-menu-isearch t))
=20=20
(defun tty-menu-isearch-backward ()
  (interactive)
  (tty-menu-isearch nil))

(defvar-keymap tty-menu-keymap
  :doc "Keymap for menu interaction."
  "<up>" #'tty-menu-previous-line
  "<down>" #'tty-menu-next-line
  "<left>" #'tty-menu-close-pane
  "C-b" #'tty-menu-close-pane
  "C-g" #'keyboard-quit
  "C-j" #'tty-menu-key-select-item
  "C-n" #'tty-menu-next-line
  "C-p" #'tty-menu-previous-line
  "C-r" #'tty-menu-isearch-backward
  "C-s" #'tty-menu-isearch-forward
  "RET" #'tty-menu-key-select-item
  "SPC" #'tty-menu-key-select-item
  "<return>" #'tty-menu-key-select-item
  "<mouse-movement>" #'tty-menu-mouse-moved
  "<mouse-1>" #'tty-menu-mouse-select-item)

(defun tty-menu-show-selected-item ()
  (unless tty-menu-selection-ov
    (setq tty-menu-selection-ov (make-overlay 1 1))
    (overlay-put tty-menu-selection-ov 'face 'tty-menu-selected-face))
  (move-overlay tty-menu-selection-ov (line-beginning-position) (line-end-p=
osition)))

(defun tty-menu-global-menu ()
  (keymap-lookup global-map "<menu-bar>"))

(defun tty-menu-position (pos)
  (interactive)
  (cond*
   ((match* 'nil pos) nil)
   ((match* 't pos)
    (cl-destructuring-bind (frame x . y) (mouse-position)
      ;; mouse-position sometimes returns nil for x and y which I
      ;; think should not happen.
      (list frame (or x 10) (or y 10))))
   ((match* (eventp e) pos)
    (let* ((end (event-end e))
	   (win (posn-window end))
	   (x (car (posn-x-y end)))
	   (y (cdr (posn-x-y end))))
      (cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
	(list (window-frame win) (+ wx x) (+ wy y)))))
   ((match* (cons (cons (numberp x)
			(numberp y))
		  (cons (windowp win)
			_))
	    pos)
    (cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
      (list (window-frame win) (+ wx x) (+ wy y))))
   ((match* (cons (list (numberp x) (numberp y))
		  (cons (framep frame) _))
	    pos)
    (list frame x y))
   ((match* (cons (cons (numberp x) (numberp y))
		  (cons (framep frame) _))
	    pos)
    (list frame x y))
   ((match* (cons (numberp x) (numberp y)) pos)
    (list (selected-frame) x y))
   (t (error "%S does not match in tty-menu-position" pos))))

(defun tty-menu-where (how)
  (cl-ecase how
    (mouse (tty-menu-position t))
    (key (let* ((posn (posn-at-point (line-end-position)))
		(xy (posn-x-y posn))
		(win (posn-window posn)))
	   (tty-menu-position (list xy win))))))

(defun tty-menu-loop (keymap where)
  (let ((frame (tty-menu-create-frame keymap where)))
    (unwind-protect
	;; Inner loop handling mouse movement over the pane,
	;; moving with the keyboard on the pane. The loop is
	;; left by a throw when a menu-item is selected.
	(cl-loop
	 named outer-loop
	 while t
	 for res =3D (catch 'tty-menu-item-selected
		     (while t
		       (tty-menu-show-selected-item)
		       (let* ((track-mouse t)
			      (key (read-key-sequence nil))
			      (cmd (lookup-key tty-menu-keymap key)))
			 (when (commandp cmd)
			   (call-interactively cmd)))))
	 do
	 ;; If the selected item was for a sub-pane, call ourselves
	 ;; recursively with the sub-pane.
	 (cond* ((match* (cons selected how) res)
		 (with-slots (binding) selected
		   (if (keymapp binding)
		       (tty-menu-loop binding (tty-menu-where how))
		     ;; Return a list because x-popup-menu does.
		     (cl-return-from outer-loop (list binding)))))
		((match* 'nil res)
		 (cl-return-from outer-loop nil))))
      (when frame
	(delete-frame frame)))))

(defun frame-with-name (name)
  (cl-flet ((frame-name (frame)
	      (frame-parameter frame 'name)))
    (cl-find-if (lambda (f) (equal (frame-name f) name))
		(frame-list))))

(defun tty-menu-delete-menu-frames ()
  (cl-flet ((frame-name (frame)
	      (frame-parameter frame 'name)))
    (cl-loop for frame in (frame-list)
	     when (string-prefix-p " *tty-menu-" (frame-name frame))
	     do (delete-frame frame))))
=20=20
(cl-defun tty-menu-popup-menu (position menu)
  (when-let* ((where (tty-menu-position position)))
    (cond ((keymapp menu)
	   (tty-menu-loop menu where))
	  ((consp menu)
	   (cl-loop with outer =3D (make-sparse-keymap "outer")
		    for keymap in menu
		    for name =3D (tty-menu-keymap-name keymap "?")
		    do (define-key outer (vector (intern name)) keymap)
		    finally (tty-menu-loop outer where)))
	  (t (error "Not a menu: %S" menu)))))

;;;###autoload
(define-minor-mode tty-menu-mode
  "Global minor mode for displaying menus with tty child frames."
  :global t :group 'menu
  (unless (display-graphic-p)
    (if tty-menu-mode
	(remove-function (symbol-function 'x-popup-menu)
			 #'tty-menu-popup-menu))
    (add-function :override (symbol-function 'x-popup-menu)
		  #'tty-menu-popup-menu)))

(provide 'tty-menu)

;;; Local Variables:
;;; fill-column: 80
;;; End:

--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 9 Feb 2025 11:01:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 09 06:01:36 2025
Received: from localhost ([127.0.0.1]:43294 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1th54B-0003W0-Ks
	for submit <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:01:35 -0500
Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]:59679)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1th548-0003VW-8M
 for 75056 <at> debbugs.gnu.org; Sun, 09 Feb 2025 06:01:33 -0500
Received: by mail-wr1-x433.google.com with SMTP id
 ffacd0b85a97d-38dc962f1b9so1184592f8f.3
 for <75056 <at> debbugs.gnu.org>; Sun, 09 Feb 2025 03:01:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1739098886; x=1739703686; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=khmS/yNzQU9dOK+jDT55XTorzDw6FTCft8aIu7I099k=;
 b=LPzKfPnd0MDwm9sQd+5hRMtUUh2ALCAh8CiTiKEvYmYvBFcQG3ZlcT1tj3IuTq+Z64
 CRXKAfwGs4QOjAJq3dSgzOqVvbmcutJfFZAPQ/mWF+bYnDyZfBBLAwEba9eQ0kERlWDE
 us9DwE7X2VpusvRnb9gxMtOAB8iDlfSzeex/QcTnhybLDOZtEVE0NpI4D6zq5udRdNRL
 cFEyfPH0XU/2gaYwYqVef/z1exBUiCif1EbiemgwkI1iw/yEmCqLwSo3wGZmqmeztDsc
 PbBG558bfS31QW71nMWBYW9OeTZSKdgnYPXotnqRIkDq3AdJKHtOofWwWyuaJ+bzwqlJ
 gDbQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1739098886; x=1739703686;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=khmS/yNzQU9dOK+jDT55XTorzDw6FTCft8aIu7I099k=;
 b=bm5MwmVz/qSUoPP5skKAkJrD6w8vyzlLnPn/DeBYRxnEP32xtRXXzr95ME3WCHH/HF
 130GYvmZH+w3AQCQ+mFXM13AcaGt0ZFUi8eZuqUvXkrhB2LPS/QxHvcR29hmtTupb82q
 miRLKU5ItNe4V3DIEZw6AhF9bo6ixMIDwNdJEhQLvlfFVNqKFPSLhFyp8vSazkE4Cxu+
 72+qRM637mGrh4YsnsiGA12/WZHCJ9+EHV8qvVV0h8p6xGmpByDrQmo4YqB8sD9qv2s2
 4/6ZudgBBwmJnwajKQSmxKV0QcxgIpHAteGONQQbr8mAF+Q2yk3wt3GXLK+S15ROvNfw
 0oXg==
X-Forwarded-Encrypted: i=1;
 AJvYcCVdyFvSuHjjRJ3hhOC1mVfdF5t/RS9g8xLU8cmQjgYvzbVvqkoIT6XYbrgor8Ne+0QmBdnLVg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YydAlowrS8uKSLUZm0XE/qP7Rpku0S49kjy9WgLr7ugywjBZM5T
 CDfzMeX6CsqeylpaiXP9ao0SPGTnv4dq2Bz91IktNn5vEXjcxE/04GhfpA==
X-Gm-Gg: ASbGncsMFHKU2RrUqYbP60oNsF98rfJn1FsijGqIJV76V/9F1wmxTHAyAdVOlj3d52o
 IznPNgzFNBh7X9a3s1bJcCQR+hwmqKaIaFcV+WkGERQZv4eCPJg9/U5VcPiQgBOJGPFUooNf4Ts
 gS6Obp3kkyJA1jtspI+cg05DiWENvQZ4O10hfpTTjd1IQ2E01mKnK/Cq+TNVFHH9WCdmvGRYFzA
 XFgD5C92poe78CeuGzOtG2aYwCzO7cSzsHUF8aSWQUjavrsBESm5Ao7xKJHwfdvNys04xBXOsZx
 qTlVhZWH6z6KhvW5NCBZfNy9rYyxx6OYJLQEF/fGAAcqxGxsT823EfnjKVJs3r89JZROfzZ6oNx
 b6ZrN3h4YJdbcJJkssAhNVho1
X-Google-Smtp-Source: AGHT+IE/3MB+GmHYaOGziTymJEYGlkmGbiewoC0lDgdD3EhoygMqu41qFUgdFxUXft4t7/+Ie9dNMQ==
X-Received: by 2002:adf:e981:0:b0:385:f7d2:7e9b with SMTP id
 ffacd0b85a97d-38dc90e1758mr5434384f8f.30.1739098885337; 
 Sun, 09 Feb 2025 03:01:25 -0800 (PST)
Received: from pro2 (p200300e0b725cf0094296d0536d9d0d3.dip0.t-ipconnect.de.
 [2003:e0:b725:cf00:9429:6d05:36d9:d0d3])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38dbde1dfaesm9503067f8f.90.2025.02.09.03.01.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 09 Feb 2025 03:01:24 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <m2msf6ezfq.fsf@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m28qqrlkyg.fsf@HIDDEN>
 <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
 <m2seozjo3c.fsf@HIDDEN> <m2msf6ezfq.fsf@HIDDEN>
Date: Sun, 09 Feb 2025 12:01:23 +0100
Message-ID: <m2jz9zmlfg.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:

> Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
>
>> I take everything back. I think it would be much much better to do that
>> all in Lisp.
>
> FWIW, a proof-of-concept, only showing a frame with a menu. 200 loc with
> half of it copied from tty-tip.el.

I'm not sure if it's worth it, but I did a bit more. You can try it out
with something like

  (tty-menu-popup-menu t menu-bar-file-menu)


--=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: attachment; filename=tty-menu.el
Content-Transfer-Encoding: quoted-printable

;; -*- lexical-binding: t; symbol-packages: t -*-
;;; tty-menu.el --- A menu implementation in Lisp

;; Copyright (C) 2025 Gerd M=C3=B6llmann

;; This file is not part of GNU Emacs.

;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.

;;; Commentary:

;;; Code:

;;; Todo

;; A mode: Open a sub-menu by moving the selection into the menu-item
;; for the sub-menu.  Close it by moving the selection out.

;; Make cursor invisible somehow (is cursor-type not supposed to
;; work?)

;; menu-bar-menu doesn't work (list of keymaps?)

(eval-when-compile (require 'cl-lib))

(defclass tty-menu-element () ()
  :documentation "Base class for elements of a menu.")

(defclass tty-menu-pane (tty-menu-element)
  ((items :initarg :items :initform nil :type t)
   (buffer :initarg :buffer :type buffer)
   (layout :type list))
  :documentation "Class for menu panes.")

(defclass tty-menu-item (tty-menu-element)
  ((name :initarg :name :type string)
   (enable :initarg :enable :initform t :type t)
   (help :initarg :help :initform nil :type t)
   (visible :initarg :visible :initform t :type t)
   (key-sequence :initarg :key-sequence :initform nil :type t)
   (keys :initarg :keys :initform nil :type t)
   (filter :initarg :filter :initform nil :type t)
   (button :initarg :button :initform nil :type t)
   (selected :initarg :selected :initform nil :type t)
   (binding :initarg :binding :initform nil :type t)))

(defclass tty-menu-button (tty-menu-item) ())
(defclass tty-menu-radio (tty-menu-button) ())
(defclass tty-menu-checkbox (tty-menu-button) ())

(defclass tty-menu-separator (tty-menu-item)
  ((sep :initform "-" :type string :reader tty-menu-sep)))

(cl-defmethod initialize-instance :after ((item tty-menu-separator) &rest)
  (with-slots (name sep enable) item
    (setf enable nil)
    (cl-multiple-value-bind (ch disp)
	(pcase name
	  ("--space" (cl-values ?\s nil))
	  ("--double-line" (cl-values ?=3D 'box-double-horizontal))
	  (_ (cl-values ?- 'box-horizontal)))
      (setf sep
	    (make-string 1
			 (or (and disp
				  (let ((c (display-table-slot
					    standard-display-table disp)))
				    (and (characterp c) c)))
			     ch))))))

(defvar tty-menu-left-border-format "%1s")
(defvar tty-menu-right-border-format "%1s")
(defvar tty-menu-button-format "%-4s")
(defvar tty-menu-key-format "%10s")
(defvar tty-menu-name-format "%s")

(defvar tty-menu-triangle "=E2=96=B7")
(defvar tty-menu-radio-on "=E2=9C=94")
(defvar tty-menu-radio-off "")
(defvar tty-menu-checkbox-on "=E2=9C=94")
(defvar tty-menu-checkbox-off "=F0=90=84=82")

(defun tty-menu-selectable-p (item)
  (eval (slot-value item 'enable)))

(defun tty-menu-visible-p (item)
  (eval (slot-value item 'visible)))

(defun tty-menu-enabled-p (item)
  (eval (slot-value item 'enable)))

(defun tty-menu-ninsert (n x)
  (cl-loop repeat n do (insert x)))

(cl-defgeneric tty-menu-button-string (item)
  (:method ((_ tty-menu-item)) "")
  (:method ((r tty-menu-radio))
	   (format tty-menu-button-format
		   (if (slot-value r 'selected)
		       tty-menu-radio-on tty-menu-radio-off)))
  (:method ((c tty-menu-checkbox))
	   (format tty-menu-button-format
		   (if (slot-value c 'selected)
		       tty-menu-checkbox-on tty-menu-checkbox-off)))
  (:method ((_ tty-menu-separator)) ""))

(cl-defgeneric tty-menu-name-string (item)
  (:method ((item tty-menu-item))
	   (format tty-menu-name-format (slot-value item 'name)))
  (:method ((_ tty-menu-separator)) ""))

(cl-defgeneric tty-menu-key-string (item)
  (:method ((item tty-menu-item))
	   (format tty-menu-key-format
		   (with-slots (binding) item
		     (cond ((commandp binding)
			    (key-description (where-is-internal binding nil t)))
			   ((keymapp binding)
			    tty-menu-triangle)
			   (t (format "?? %S" binding))))))
  (:method ((_ tty-menu-separator)) ""))

(cl-defgeneric tty-menu-draw-button (item pane)
  (:method ((_item tty-menu-item) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ button-width _ _ _) layout
	       (tty-menu-ninsert button-width ?\s))))
  (:method ((item tty-menu-button) _pane)
	   (with-slots (selected button) item
	     (cl-destructuring-bind (_ . form) button
	       (setf selected (eval form))
	       (insert (tty-menu-button-string item)))))
  (:method ((item tty-menu-separator) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ button-width _ _ _) layout
	       (tty-menu-ninsert button-width (tty-menu-sep item))))))

(cl-defgeneric tty-menu-draw-name (item pane)
  (:method ((item tty-menu-item) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (left-border button name-width _ _) layout
	       (with-slots (name) item
		 (insert (tty-menu-name-string item))
		 (indent-to (+ left-border button name-width))))))
  (:method ((item tty-menu-separator) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ _ name-width _ _) layout
	       (tty-menu-ninsert name-width (tty-menu-sep item))))))

(cl-defgeneric tty-menu-draw-key (item pane)
  (:method ((item tty-menu-item) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (left-border button name-width key-width _) la=
yout
	       (insert (tty-menu-key-string item))
	       (indent-to (+ left-border button name-width key-width)))))
  (:method ((item tty-menu-separator) pane)
	   (with-slots (layout) pane
	     (cl-destructuring-bind (_ _ _ key-width _) layout
	       (tty-menu-ninsert key-width (tty-menu-sep item))))))

(cl-defgeneric tty-menu-draw-finish (item pane)
  (:method ((item tty-menu-item) _)
	   (let* ((enabled (tty-menu-enabled-p item))
		  (face (if enabled 'tty-menu-enabled-face
			  'tty-menu-disabled-face)))
	     (put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable enabled)
	     (put-text-property (pos-bol) (pos-eol) 'face face))
	   (when-let* ((help (slot-value item 'help)))
	     (put-text-property (pos-bol) (pos-eol) 'help-echo help)))
  (:method ((_item tty-menu-separator) _)
	   (put-text-property (pos-bol) (pos-eol) 'tty-menu-selectable nil)
	   (put-text-property (pos-bol) (pos-eol) 'face 'tty-menu-enabled-face)))

(cl-defgeneric tty-menu-layout (pane)
  (:method ((pane tty-menu-pane))
	   (with-slots (items layout) pane
	     (cl-loop
	      with left-border =3D (string-width (format tty-menu-left-border-form=
at ""))
	      with right-border =3D (string-width (format tty-menu-right-border-fo=
rmat ""))
	      for i in items
	      maximize (string-width (tty-menu-button-string i)) into button
	      maximize (string-width (tty-menu-name-string i)) into name
	      maximize (string-width (tty-menu-key-string i)) into key
	      finally (setq layout `(,left-border ,button ,name ,key ,right-border=
))))))

(defun tty-menu-try-place-point (selectable old-line)
  (goto-char (point-min))
  (if (nth old-line selectable)
      (forward-line old-line)
    (let ((next (cl-loop for i from (1+ old-line)
			 to (1- (length selectable))
			 when (nth i selectable) return i))
	  (prev (cl-loop for i downfrom (1- old-line) to 0
			 when (nth i selectable) return i)))
      (cond (next (forward-line next))
	    (prev (forward-line prev))))))

(cl-defgeneric tty-menu-draw (item pane)
  (:method ((pane tty-menu-pane) line)
	   (with-slots (buffer items) pane
	     (with-current-buffer buffer
	       (let ((old-line (or line (1- (line-number-at-pos)))))
		 (erase-buffer)
		 (tty-menu-layout pane)
		 (let ((selectable
 			(cl-loop for i in items
				 when (tty-menu-visible-p i)
				 do (tty-menu-draw i pane)
				 and collect (tty-menu-selectable-p i))))
		   (tty-menu-try-place-point selectable old-line))))))
  (:method :around ((item tty-menu-item) pane)
	   (let ((start (point)))
	     (insert (format tty-menu-left-border-format ""))
	     (cl-call-next-method)
	     (insert (format tty-menu-right-border-format ""))
	     (tty-menu-draw-finish item pane)
	     (insert ?\n)
	     (put-text-property start (point) 'tty-menu-item item)))
  (:method ((item tty-menu-item) pane)
	   (tty-menu-draw-button item pane)
	   (tty-menu-draw-name item pane)
	   (tty-menu-draw-key item pane)))

(defvar-local tty-menu-selection-ov nil)
(defvar-local tty-menu-pane-drawn nil)

(cl-defgeneric tty-menu-select-item (item how)
  (:method ((item tty-menu-item) how)
	   (when-let* ((enabled (tty-menu-enabled-p item)))
	     (throw 'tty-menu-item-selected (cons item how))))
  (:method ((_item tty-menu-separator) _))
  (:method ((item tty-menu-button) _)
	   (with-slots (binding) item
	     (when (commandp binding)
	       (call-interactively binding))
	     (tty-menu-draw tty-menu-pane-drawn nil))))

(defun tty-menu-create-buffer (pane)
  "Create a buffer named BUFFER for DRAW to fill.
DRAW is called with no arguments and with current buffer being the
buffer created. Value is (BUFFER WIDTH HEIGHT), where BUFFER is
the buffer that was used, WIDTH is the maximum line width in the
buffer, and HEIGHT is the number of lines in the buffer. "
  (with-slots (buffer) pane
    (with-current-buffer buffer
      (dolist (var '((mode-line-format . nil)
                     (header-line-format . nil)
                     (tab-line-format . nil)
                     (tab-bar-format . nil)
                     (frame-title-format . "")
                     (truncate-lines . t)
                     (cursor-in-non-selected-windows . nil)
                     (cursor-type . nil)
                     (show-trailing-whitespace . nil)
                     (display-line-numbers . nil)
                     (left-fringe-width . nil)
                     (right-fringe-width . nil)
                     (left-margin-width . 0)
                     (right-margin-width . 0)
                     (fringes-outside-margins . 0)
                     (scroll-conservatively . 1)))
	(set (make-local-variable (car var)) (cdr var)))
      (let ((inhibit-modification-hooks t)
            (inhibit-read-only t)
	    (indent-tabs-mode nil))
	(setq tty-menu-selection-ov nil tty-menu-pane-drawn pane)
	(tty-menu-draw pane 0)
	(cl-flet ((line-width ()
		    (save-excursion
		      (goto-char (point-min))
		      (goto-char (line-end-position))
		      (current-column))))
	  (list (current-buffer)
		(line-width)
		(count-lines (point-min) (point-max))))))))

(defun tty-menu-make-element (item)
  (cl-labels ((separator? (name) (string-prefix-p "--" name))
	      (button? (props) (plist-get props :button))
	      (radio? (props) (eq (car (button? props)) :radio))
	      (toggle? (props) (eq (car (button? props)) :toggle)))
    ;; COND* complains about unknown pattern (PREDICATE symbol) if
    ;; PREDICATE is a local function. Use (CONSTRAIN symbol (PRODICATE
    ;; symbol)) instead.
    (cond*
     ((match* (cons 'menu-item
		    (cons (constrain name (separator? name))
			  props))
	      item)
      (apply #'make-instance 'tty-menu-separator (cl-list* :name name props=
)))
     ((match* (list 'menu-item name) item)
      (make-instance 'tty-menu-item :name name :enable nil))
     ((match* (cons 'menu-item
		    (cons name
			  (cons binding
				(constrain props (radio? props)))))
	      item)
      (apply #'make-instance 'tty-menu-radio
	     (cl-list* :name name :binding binding props)))
     ((match* (cons 'menu-item
		    (cons name
			  (cons binding
				(constrain props (toggle? props)))))
	      item)
      (apply #'make-instance 'tty-menu-checkbox
	     (cl-list* :name name :binding binding props)))
     ((match* (cons 'menu-item
		    (cons name
			  (cons binding props)))
	      item)
      (apply #'make-instance 'tty-menu-item
	     (cl-list* :name name :binding binding props)))
     ((match* (cons (constrain name (separator? name)) _)
	      item)
      (make-instance 'tty-menu-separator :name name))
     ((match* (cons name
		    (cons help
			  binding))
	      item)
      (make-instance 'tty-menu-item :name name :binding binding :help help))
     ((match* (cons name binding) item)
      (make-instance 'tty-menu-item :name name :binding binding))
     (t (error "No match for menu item %S" item)))))

(defun tty-menu-keymap-name (keymap default)
  (let ((name (last keymap)))
    (or (and (stringp (car name)) (car name))
	default)))

(defun tty-menu-make-pane-buffer (keymap)
  (cl-labels
      ((pane-buffer-name ()
	 (format " *tty-menu-%s*" (tty-menu-keymap-name keymap "<no-name>")))
       (make-pane ()
	 (make-instance
	  'tty-menu-pane
	  :buffer (get-buffer-create (pane-buffer-name))
	  :items (cl-loop for b being the key-bindings of keymap
			  collect (tty-menu-make-element b)))))
    (tty-menu-create-buffer (make-pane))))

(defvar tty-menu-frame-parameters
  `((visibility . nil)
    (background-color . "grey20")
    (foreground-color . "white")
    (width . 0) (height . 0)
    (min-width . t) (min-height . t)
    (no-accept-focus . t)
    (no-focus-on-map . t)
    (border-width . 0)
    (child-frame-border-width . 1)
    (left-fringe . 0)
    (right-fringe . 0)
    (vertical-scroll-bars . nil)
    (horizontal-scroll-bars . nil)
    (tty-menu-bar-lines . 0)
    (tool-bar-lines . 0)
    (tab-bar-lines . 0)
    (no-other-frame . t)
    (no-other-window . t)
    (no-delete-other-windows . t)
    (unsplittable . t)
    (undecorated . t)
    (cursor-type . nil)
    (no-special-glyphs . t)
    (desktop-dont-save . t)))

(defun tty-menu-frame-parameters ()
  (let ((params (copy-sequence tty-menu-frame-parameters))
        (fg (face-attribute 'tty-menu-enabled-face :foreground))
        (bg (face-attribute 'tty-menu-enabled-face :background)))
    (when (stringp fg)
      (setf (alist-get 'foreground-color params) fg))
    (when (stringp bg)
      (setf (alist-get 'background-color params) bg))
    params))

(defun tty-menu-make-fully-visible (f1 f2 x y)
  (let* ((f1-edges (frame-edges f1))
	 (f1-width (frame-width f1))
         (f1-height (frame-height f1))
         (f1-x (nth 0 f1-edges))
         (f1-y (nth 1 f1-edges))
         (f2-width (frame-width f2))
         (f2-height (frame-height f2))
         (new-x (max f1-x (min (+ f1-x f1-width (- f2-width)) x)))
         (new-y (max f1-y (min (+ f1-y f1-height (- f2-height)) y))))
    ;; Ensure F2 is fully contained within F1
    (setq new-x (min new-x (+ f1-x f1-width (- f2-width))))
    (setq new-y (min new-y (+ f1-y f1-height (- f2-height))))
    ;; Move and resize F2
    (set-frame-position f2 new-x new-y)
    (set-frame-size f2 f2-width f2-height)))

(defun tty-menu-frame-absolute-position (frame x y)
  "Translate (X, Y) in FRAME to absolute coordinates relative to the root f=
rame."
  (let ((current-frame frame)
        (abs-x x)
        (abs-y y))
    (while (frame-parent current-frame)
      (let ((edges (frame-edges current-frame)))
	(setq abs-x (+ abs-x (nth 0 edges)))
	(setq abs-y (+ abs-y (nth 1 edges)))
	(setq current-frame (frame-parent current-frame))))
    (cons abs-x abs-y)))

(defun tty-menu-create-frame (keymap where)
  (cl-destructuring-bind (buffer width height)
      (tty-menu-make-pane-buffer keymap)
    (cl-destructuring-bind (parent-frame x y) where
      ;; We want to show the menu using a root frame as parent because
      ;; that doesn't clip the frame. Means that we have to translate
      ;; coordinates to absolute.
      (when (frame-parent parent-frame)
	(cl-destructuring-bind (ax . ay)
	    (tty-menu-frame-absolute-position parent-frame x y)
	  (setq x ax y ay)
	  (setq parent-frame (frame-root-frame parent-frame))))
      (let* ((minibuffer (minibuffer-window parent-frame))
             (window-min-height 1)
             (window-min-width 1)
             (after-make-frame-functions nil)
	     (frame (make-frame `((parent-frame . ,parent-frame)
				  (name . ,(buffer-name buffer))
				  (minibuffer . ,minibuffer)
				  ,@(tty-menu-frame-parameters))))
	     (win (frame-root-window frame)))
	(set-window-buffer win buffer)
	(set-window-dedicated-p win t)
	(set-frame-size frame width height)
	(set-frame-position frame x y)
	(tty-menu-make-fully-visible parent-frame frame x y)
	(make-frame-visible frame)
	(raise-frame frame)
	(select-frame-set-input-focus frame)
	frame))))

(defun tty-menu-mouse-select-item (event)
  (interactive "e")
  (let* ((end (event-end event))
	 (win (posn-window end)))
    (unless (eq (window-frame win) (tty-top-frame))
      (throw 'tty-menu-item-selected nil))
    (when-let* ((item (get-text-property (posn-point end) 'tty-menu-item)))
      (tty-menu-select-item item 'mouse))))

(defun tty-menu-key-select-item ()
  (interactive)
  (when-let* ((item (get-text-property (point) 'tty-menu-item)))
    (tty-menu-select-item item 'key)))

(defun tty-menu-mouse-moved (event)
  (interactive "e")
  (let* ((end (event-end event))
	 (win (posn-window end)))
    (when (eq (window-frame win) (tty-top-frame))
      (let ((item (get-text-property (posn-point end) 'tty-menu-item)))
	(when (and item (tty-menu-selectable-p item))
	  (goto-char (posn-point end)))))))

(defun tty-menu-next-line ()
  (interactive)
  (cl-loop for next =3D (next-single-property-change (point) 'tty-menu-item)
	   then (next-single-property-change next 'tty-menu-item)
	   while next
	   for item =3D (get-text-property next 'tty-menu-item)
	   until (tty-menu-selectable-p item)
	   finally (when next (goto-char next))))

(defun tty-menu-previous-line ()
  (interactive)
  (cl-loop for prev =3D (previous-single-property-change
		       (point) 'tty-menu-item nil (point-min))
	   then (previous-single-property-change
		 prev 'tty-menu-item nil (point-min))
	   while prev
	   for item =3D (get-text-property prev 'tty-menu-item)=20
	   if (tty-menu-selectable-p item) do (goto-char prev) and return t
	   else if (eq prev (point-min)) return t))

(defun tty-menu-close-pane ()
  (interactive)
  (throw 'tty-menu-item-selected nil))

(defun tty-menu-isearch (forward)
  (isearch-mode forward nil nil)
  (while isearch-mode
    (let* ((key (read-key-sequence nil nil t nil nil nil)))
      (when-let* ((cmd (lookup-key isearch-mode-map key)))
	(if (and (eq cmd #'isearch-printing-char)
		 (stringp key))
	    (isearch-printing-char (aref key 0))
	  (call-interactively cmd))))))

(defun tty-menu-isearch-forward ()
  (interactive)
  (tty-menu-isearch t))
=20=20
(defun tty-menu-isearch-backward ()
  (interactive)
  (tty-menu-isearch nil))

(defvar-keymap tty-menu-keymap
  :doc "Keymap for menu interaction."
  "<up>" #'tty-menu-previous-line
  "<down>" #'tty-menu-next-line
  "<left>" #'tty-menu-close-pane
  "C-b" #'tty-menu-close-pane
  "C-g" #'keyboard-quit
  "C-j" #'tty-menu-key-select-item
  "C-n" #'tty-menu-next-line
  "C-p" #'tty-menu-previous-line
  "C-r" #'tty-menu-isearch-backward
  "C-s" #'tty-menu-isearch-forward
  "RET" #'tty-menu-key-select-item
  "SPC" #'tty-menu-key-select-item
  "<return>" #'tty-menu-key-select-item
  "<mouse-movement>" #'tty-menu-mouse-moved
  "<mouse-1>" #'tty-menu-mouse-select-item)

(defun tty-menu-show-selected-item ()
  (unless tty-menu-selection-ov
    (setq tty-menu-selection-ov (make-overlay 1 1))
    (overlay-put tty-menu-selection-ov 'face 'tty-menu-selected-face))
  (move-overlay tty-menu-selection-ov (line-beginning-position) (line-end-p=
osition)))

(defun tty-menu-global-menu ()
  (keymap-lookup global-map "<menu-bar>"))

(defun tty-menu-position (pos)
  (interactive)
  (cond*
   ((match* 'nil pos) nil)
   ((match* 't pos)
    (cl-destructuring-bind (frame x . y) (mouse-position)
      ;; mouse-position sometimes returns nil for x and y which I
      ;; think should not happen.
      (list frame (or x 10) (or y 10))))
   ((match* (eventp e) pos)
    (let* ((end (event-end e))
	   (win (posn-window end))
	   (x (car (posn-x-y end)))
	   (y (cdr (posn-x-y end))))
      (cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
	(list (window-frame win) (+ wx x) (+ wy y)))))
   ((match* (cons (cons (numberp x)
			(numberp y))
		  (cons (windowp win)
			_))
	    pos)
    (cl-destructuring-bind (wx wy _ _) (window-edges win nil t)
      (list (window-frame win) (+ wx x) (+ wy y))))
   ((match* (cons (list (numberp x) (numberp y))
		  (cons (framep frame) _))
	    pos)
    (list frame x y))
   ((match* (cons (numberp x) (numberp y)) pos)
    (list (selected-frame) x y))
   (t (error "%S does not match in tty-menu-position" pos))))

(defun tty-menu-where (how)
  (cl-ecase how
    (mouse (tty-menu-position t))
    (key (let* ((posn (posn-at-point (line-end-position)))
		(xy (posn-x-y posn))
		(win (posn-window posn)))
	   (tty-menu-position (list xy win))))))

(defun tty-menu-loop (keymap where)
  (let ((frame (tty-menu-create-frame keymap where)))
    (unwind-protect
	;; Inner loop handling mouse movement over the pane,
	;; moving with the keyboard on the pane. The loop is
	;; left by a throw when a menu-item is selected.
	(cl-loop
	 named outer-loop
	 while t
	 for res =3D (catch 'tty-menu-item-selected
		     (while t
		       (tty-menu-show-selected-item)
		       (let* ((track-mouse t)
			      (key (read-key-sequence nil))
			      (cmd (lookup-key tty-menu-keymap key)))
			 (when (commandp cmd)
			   (call-interactively cmd)))))
	 do
	 ;; If the selected item was for a sub-pane, call ourselves
	 ;; recursively with the sub-pane.
	 (cond* ((match* (cons selected how) res)
		 (with-slots (binding) selected
		   (if (keymapp binding)
		       (tty-menu-loop binding (tty-menu-where how))
		     ;; Return a list because x-popup-menu does.
		     (cl-return-from outer-loop (list binding)))))
		((match* 'nil res)
		 (cl-return-from outer-loop nil))))
      (when frame
	(delete-frame frame)))))

(defun frame-with-name (name)
  (cl-flet ((frame-name (frame)
	      (frame-parameter frame 'name)))
    (cl-find-if (lambda (f) (equal (frame-name f) name))
		(frame-list))))

(defun tty-menu-delete-menu-frames ()
  (cl-flet ((frame-name (frame)
	      (frame-parameter frame 'name)))
    (cl-loop for frame in (frame-list)
	     when (string-prefix-p " *tty-menu-" (frame-name frame))
	     do (delete-frame frame))))
=20=20
(cl-defun tty-menu-popup-menu (position menu)
  (when-let* ((where (tty-menu-position position)))
    (cond ((keymapp menu)
	   (tty-menu-loop menu where))
	  ((consp menu)
	   (cl-loop with outer =3D (make-sparse-keymap "outer")
		    for keymap in menu
		    for name =3D (tty-menu-keymap-name keymap "?")
		    do (define-key outer (vector (intern name)) keymap)
		    finally (tty-menu-loop outer where)))
	  (t (error "Not a menu: %S" menu)))))

;;;###autoload
(define-minor-mode tty-menu-mode
  "Global minor mode for displaying menus with tty child frames."
  :global t :group 'menu
  (unless (display-graphic-p)
    (if tty-menu-mode
	(remove-function (symbol-function 'x-popup-menu)
			 #'tty-menu-popup-menu))
    (add-function :override (symbol-function 'x-popup-menu)
		  #'tty-menu-popup-menu)))

(provide 'tty-menu)

;;; Local Variables:
;;; fill-column: 80
;;; End:

--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 3 Feb 2025 08:33:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 03 03:33:16 2025
Received: from localhost ([127.0.0.1]:37668 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tertM-0006D7-IA
	for submit <at> debbugs.gnu.org; Mon, 03 Feb 2025 03:33:16 -0500
Received: from mout.gmx.net ([212.227.17.22]:58925)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tertJ-0006Cm-Mk
 for 75056 <at> debbugs.gnu.org; Mon, 03 Feb 2025 03:33:14 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738571586; x=1739176386; i=rudalics@HIDDEN;
 bh=hSwzX4crwrlkljMB/auKTsoFn4ufk8inMSuOBe3f/aE=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=Pc4vWlNLiqdfSuqJy3DHfB0/WtOid3Fk8IIZEX6p8oC540MoWBDw3mr57/FdPVqr
 ubDT7zNltg1vkQIeHAoBxzWPYi4lfJtLl9Quw4MH/Fs4NIfduLKDwPXOZGDV1F0cO
 UfQroK6uYmWa3wXg3qHoKp55rwE1sVjT1WwBhHVAzPOZbIvTl4M44TXlCkZDy0qzQ
 J1l9L2fpcc17aVtj/tb19EnX5Jrbb/2F3nPLSzLh2gDBHETLA9i7Tucyx4facCTPE
 BEWFURuKUWXU34jfCdiDlwB3z8gYL5KvEWuFSoP1up4V9oXXs/8N30+Bm/vxG/Jv0
 derDRMnRvYiV5+hXzg==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([46.125.249.108]) by mail.gmx.net (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MDQic-1tXg600iAA-009dvu; Mon, 03
 Feb 2025 09:33:06 +0100
Message-ID: <fa5ab88b-9aaf-46e2-a7a0-7482ad151ac5@HIDDEN>
Date: Mon, 3 Feb 2025 09:33:03 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m2tt9dkl7x.fsf@HIDDEN>
 <e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN> <m2o6zjy5go.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2o6zjy5go.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:SMIloIGtzdnyNu0GZ+andwi+tVtrfAJKOMfKe4NvYwlyuVRITfR
 k7Zr+39ecK88Wn3Tl5GbpVu3raysDQBeimivcXMV19pLQeoDpmhUE0AbDcb3wj3cmptEizI
 Q2zL934M89pI9BJoOVuXXZwRYivwGbz0n657n4WxNAdfZ7SiBtIOxHin+0s7xy24zYy/Vyq
 mCHYqn318H5Rqv7AJhGNg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:etnVwVT9i8E=;Zfr9zrPn/Xu1GweeIoqec3ZOMSz
 jp9SbkGFHPQNkFLnz1RXWT0nxsMAKvQKJw6Siy/F8T5EhAoZIdcSeWxpiFnoKZ8mo1IsHxVkJ
 KRV2/PQ/Rv1kQyHVmvbFL9WdWB6aKTD1WPAOmqvswWTT+SZcUOQq9C/k53mTAJ5oW0WGxVe1N
 CZ1otAa7BkfRB8ooUTpN+DJIVFOTDp46PsJi6NuB5SlhruVv3achl9RhkwKvcudav8ALQBTIi
 slWZVDozAqywmp7vCEKz605/GxyUDXSklr9lcmn8RdPy5LxDmnayc6VgeNLeSQ1jX/9/zfjRk
 XN007AeRrOOmSb6BJgR2kFLYB28zkzhoEtdVZAtaEFEjByZr7Kg+b9YHLy4bVVxh/tRFzmzBk
 wsBFQB7c2HxKVeM1Z0P25KTP0/j3WkuCFlykLrftG0MdimIjTLcFYYSbzAb5lUinKp0D9jAEd
 ZGPH7S9ie2zz0OdUNWRPQfgUPYN3yGwIrxVHt03ReKYZ6UYamByE1FKX85ripMQ5MTHFZG7Pk
 iiTb6hJYWXPT01VxPf5xt382bLDFujW8FDs+EZXGoWhdi45zeXLfH9Ld5r7JSdRjxo/gHptMQ
 X4P00Ru3TOcflwfBnpQITPZTI+Wk5Y/vGuVM/DQyt4Vgnjiuo/oWtTrf1HdtBavWEpyeTT9Ir
 fUlLAvHxaLSAu9kQrmMbAB93u4ABleT6s8TKH5niWQ/3AyhRPmqWxB4cFvbPyLomEy6qV0ma8
 48NXXAuj2i2Zvs1DMa+e5+FyOQOsctjcb1gOIIgELZYh/uBo6EDN/JdqKdH+K6Zay5GV4dokk
 mBCZ/xqE1vmEVr0w/t9rrXTi2jSZBZ30QTJ3VVc3eGgiXCgy45mRRXIHLFLimYfTkiEgWuf3Z
 YDrizjCkKLj0usSDnBj/7L76RLELdBKer7Tz0bQWDVCOoKapkPIIGyffAIznToImDXHE8ECX2
 upofgt8B0e2iand94HMbtRgQYOT/pLTNpexyKByw1fvYYKZeJFvAOjIIrGShXr9MKZiWwDomo
 oB7g9MS6FbmAf19HvYHWqUmwTj8ELRzifRzXeCjK/PyBr2rqjehr42rszKGiMp0yRekfrYSRw
 aPoh8p7XXCE3umdwM88wMsW3qsLg4CrsWZGQeQOAj8Ut303GGJBDBd5a0HsiajEkjtpi7JJIx
 wE0ibkNYvWNU2xxKXbxA6qpWe7+9noUaJDJaju41N2rcvVIuPQP822npytez47bnPIdUVYK+s
 YSU0z0SsNHcrmxPunn2qj3rC/d/+9ILuPeKoMZypUqx+TsjyLpo9XShs3IljqxqTHsYroL8ku
 QCavdhYbQHHvtJJTIbekF820Kvqcp4bdHL8Z1zfkIx2kVDvQFPnIaBfI2QITND8G3Gp
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

 > Fix pushed to master.

Thanks.  I won't check it because I probably could not reproduce it
anyway.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 3 Feb 2025 05:15:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Feb 03 00:15:15 2025
Received: from localhost ([127.0.0.1]:37252 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1teonj-00022D-M8
	for submit <at> debbugs.gnu.org; Mon, 03 Feb 2025 00:15:15 -0500
Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]:55569)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1teong-0001xa-6H
 for 75056 <at> debbugs.gnu.org; Mon, 03 Feb 2025 00:15:13 -0500
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-ab6ed8a5a04so638325366b.3
 for <75056 <at> debbugs.gnu.org>; Sun, 02 Feb 2025 21:15:12 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738559706; x=1739164506; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=OuL0Kpb8YJ+D6JZQpAlbq+88jNkNzogasw9TWj7d5nY=;
 b=Glj/0iDckBu50W+trln1r3QP8xlrn8R+kqs8whi9kujsnEY2jzpXLL69WznMVTonAS
 jGaxRq3WMdbEenINy75Ec42EjRADHqJRofiS174wbXC7AARZ6MIkePwSOYtTwz5tQt2D
 ek8Hm7abRYigwi2Jy9su+AnlukGxwPclutKmwPy1GQCmmCFezHjOX5gdJhFHa8eqvfYg
 uJUYQ2R9O/kthZ85C77khOMFr9qRVGab1R0QTaJ7pliwXmepYGPNMNgUK1B460Aoccon
 ROEI7YPYKM8KABeWHVycMff5wD5uoQPyyHBRE5ugc7gzB4WDwLk7KiLW8Zwp0d6whllT
 woRg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738559706; x=1739164506;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=OuL0Kpb8YJ+D6JZQpAlbq+88jNkNzogasw9TWj7d5nY=;
 b=e8lYFeQ+GZBDXAunsCEzjNdcp0ofCPv8CTAsO9A39hHhzG53ZkHcijsvR3g8sAjI86
 OkNxwwVrm/wA8iI9aHDZuYi5HnheLn2vO5T+yB5KInEF3hL1Hmj2J7oBRfBiQp9bOEpR
 GrE9BkEytH2/SP4eBYHXnuvnYmcDue4dIgR73xagmwtXDuRssQ7xAEuUlAkdKursRLzU
 OQ4MjibiDHtqIs7OiXemIToQDqtOrSFpKFyvjjudCeKvQGzHVSDlhsNyGAkGVzzUJ0jL
 +WSuUKgRm+AyUVn+zCkDRNkn/fF7VYuI8//6+UDc5OnC6wucwdGijn5NBKQr3LzfGRmW
 yA7w==
X-Forwarded-Encrypted: i=1;
 AJvYcCU/Ye7oqUxU+hVzvSm/yNd2zNfl7OjXA5D0ooOLZFoRx8t5s4I/R3W1V3Nf2Y3x6WWrjm77ZA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yzcsk2Lzb5IKLR56ZeonPz0N1qyP7GUiiQYLxkvrel/DckwM2Pe
 8VyNsqUIUsr4uNP4zKq0SmE5Y7Mo1bu0X1sVlQya0JG6S1t4qvrGcTI/rw==
X-Gm-Gg: ASbGncvu4srmCVs4YeBluj7AeszD5svCdUfZGadbGc7JojrI2/v1EGzer5GiuPo9hAo
 SGIZKquJ2rXtYrzEnCPrrWKIXZ9lnEMDM8mabLCVGsgIZ4K4WLY0cif0AlrcKoEaGkWtZ2DPkWN
 nVftpWLSGD8YK/Ejk43MmbNYUxCyRD253QN6v2p1IDURFv8rel/AtcJQGsQSNnH5vL1YDxV0azU
 8TqEI4h9H2iZleTku7uiGaDPSkLlSqiSxep5mZ/cE4YyAAdCv8mYLKsAdfOa0dvWJomNS088mKn
 pdFYGQvFfSkXXo10R93AzLty7nz9/LQ+SPYDZ9PWGkUaS8Jv0etLlOKRxCMApgKyys2PMu6vg14
 DK3SS7q0bECXU7+0Ls1Qbj2Zs
X-Google-Smtp-Source: AGHT+IHaBzt6mRbmjiakSuGvwTVspL9mlsqgjNmRRNL0eXk9Bec4oV5PnK+cXFdGK7Yd5J5dPaAx2A==
X-Received: by 2002:a17:907:940f:b0:ab7:b7d:62b with SMTP id
 a640c23a62f3a-ab70b7d06b9mr868148266b.6.1738559705401; 
 Sun, 02 Feb 2025 21:15:05 -0800 (PST)
Received: from pro2 (p200300e0b7285e007cabc7148d4ef104.dip0.t-ipconnect.de.
 [2003:e0:b728:5e00:7cab:c714:8d4e:f104])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab6e47f18e8sm683279866b.76.2025.02.02.21.15.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 02 Feb 2025 21:15:04 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN> (martin rudalics's
 message of "Sun, 2 Feb 2025 09:53:12 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m2tt9dkl7x.fsf@HIDDEN>
 <e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN>
Date: Mon, 03 Feb 2025 06:15:03 +0100
Message-ID: <m2o6zjy5go.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>> Fix pushed to master.
>
> Confirmed, thanks.
>
> Next issue: Please look at how the mode line of the orange window
> overlaps the yellow window in the attached screenshot.  It happened
> after I mouse-clicked the mode line of the yellow window to bring it to
> foreground.
>
> Schon wieder was passiert, martin

Fix pushed to master.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 19:39:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 02 14:39:16 2025
Received: from localhost ([127.0.0.1]:36374 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tefoK-0002Wi-8z
	for submit <at> debbugs.gnu.org; Sun, 02 Feb 2025 14:39:16 -0500
Received: from mail-ed1-x530.google.com ([2a00:1450:4864:20::530]:43071)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tefoH-0002WL-Gw
 for 75056 <at> debbugs.gnu.org; Sun, 02 Feb 2025 14:39:14 -0500
Received: by mail-ed1-x530.google.com with SMTP id
 4fb4d7f45d1cf-5d9837f201aso8915922a12.0
 for <75056 <at> debbugs.gnu.org>; Sun, 02 Feb 2025 11:39:13 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738525147; x=1739129947; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=O+vN5Da1g85hHQmrxt9sgUqwWBzvw0tQsuhBP7VX750=;
 b=lbAkQ+9ol71CSwxRTBzPwG1sgXeAPzQgsetf7tvqI7+cnniLP0Ott8e3F5z/VdB7Uw
 6oBFcYwpCsDfTOIXPkVdHMuY5HGrhi8WP8U+eLeTTieGFcaNdIUbLDbYzw5mWYcHv/aT
 ib8lOjuLapxQNJTfvTh2I9TaPRngP4Sdsw4X9IgIpozrovbHS+Yudw57SprxzgV4HIwk
 rXI27/9Lqt4wM+7b2F0+4MP6Z8Bw2WTC87/ppL0+yYA/sc3avTp+Obd7+zeXLatKDUT0
 L+YGutL5XDcAgzW0/iYY+MjXobpz6G8bwYsqaABd2qm2DDvoJ4xn20H3ZEQ7/PoPvVZS
 ekJQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738525147; x=1739129947;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=O+vN5Da1g85hHQmrxt9sgUqwWBzvw0tQsuhBP7VX750=;
 b=ImjSLnpU9ZHiaGTGE8DVs0Bvqd4JzZ5to3equ0kqcLWCERe2/j1uV+32zNjFGcuKaD
 8ZEZdPxqgWUjesMhPvpKgvKY8sZ+yFBYd9sUz/DmywhnbBWwfaKho7NQiOW+GDlCxRp+
 byaE8bRm4MIR/yyqtZ0YSNbQhoYh72tED1ZdE6vMHMuHP7KQFX1PyMfScZvx+UV/9Rqc
 +fJR/nBgFQDLrr98MlGASwjimSCjVisq4mk4mX14Aa1Ci8QfeBY9Kae0MWvNJBF2gVDC
 w1xHA1tp023m6L/yJK5vHJqWuguGEiKxJYm2GfGVl3s4YYNRaUg0mW0hE831t9m9fLYg
 VLcg==
X-Forwarded-Encrypted: i=1;
 AJvYcCV9w19mRSfTNocBZR3U2ThB1ydUvlvctDbfQOEufyLyhrYcjkWQYVRjaumNpwCwCsign0wI9w==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwDIYAeDzEcCD3Ge2yfiYihz8qD6XlGgsmjxOp/xU9u+E4ZXV+E
 OEz+OuYaFZat4aX32YU+pvKv9fajNZ1u7JetWgodRuvTXdrhPPjdspHNEQ==
X-Gm-Gg: ASbGncs9avXZSFPz6zu2wyjt5zSbFTTKTdeGtf6dwS8CazuXwRwjtdAgaYjvUIkvj2V
 nCbn8U7m+UNmaAb8znD/LnfJph7VLE+k3mzdszsZNC3/WDBUNw/en7Tmx9fSsun+MqAOB5eOQtP
 P738cQI5a828HBTms2MwLuGr5VLXozCqY368rd7YWySlI2meagyxn4gTumIRXuuh4Cbni8XClfi
 ziMXllpnyQhq0K1k4UgwvYje8Be9mQVf2CmrI9i7TfTT5alnk5oz9ueEoktzqwhUAJ8XkGIRazM
 t/XN8TXbb/JRv4+GEqFLREuOCnOohHxW3WWXlpI7Yw4b7K10pjG+dJwNUvASdCslclToQTIjQLH
 mZ+FGmXzkafX/IQJX4VCOPmnr
X-Google-Smtp-Source: AGHT+IHq66nLiSHQ5j3B+i4gWMLkcNehVI+u+46PAx/zn2eSSxgJljsE9hJ6QmuJs/bbs80HjROdjg==
X-Received: by 2002:a17:906:6a09:b0:aab:8311:951f with SMTP id
 a640c23a62f3a-ab6e0bc1e0fmr1858225066b.6.1738525146493; 
 Sun, 02 Feb 2025 11:39:06 -0800 (PST)
Received: from pro2 (p200300e0b71e2e00b17d1337b17de790.dip0.t-ipconnect.de.
 [2003:e0:b71e:2e00:b17d:1337:b17d:e790])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab6e4a562f2sm630496666b.173.2025.02.02.11.39.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 02 Feb 2025 11:39:06 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <a886ab8d-516b-4158-aac4-5afac15a74b6@HIDDEN> (martin rudalics's
 message of "Sun, 2 Feb 2025 18:37:46 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m28qqrlkyg.fsf@HIDDEN>
 <a886ab8d-516b-4158-aac4-5afac15a74b6@HIDDEN>
Date: Sun, 02 Feb 2025 20:39:05 +0100
Message-ID: <m21pwgyw4m.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>> Also, moving child frames is pretty nice too!
>
> The attached patch now also resizes child frames by dragging their edges
> or corners.  One thing that does not work is that when another child
> frame is beneath an edge, Emacs selects the child frame beneath the edge
> before I can start dragging.  I think that frame/child frame selection
> with the mouse is not perfect in the current state in three regards:
>
> - When I do down-mouse-1 in the non-selected root frame, Emacs does
>   'mouse-set-point' there.  I think it should do so only for a mouse-1
>   so I can back out before releasing the mouse button and obviously use
>   the down-mouse-1 for dragging.
>
> - When I have two overlapping child frames and do down-mouse-1 on a
>   border of the frame above and that border covers the frame beneath,
>   Emacs should never select the frame beneath here.  Not even after I
>   release the button.
>
> - Clicking into a child frame anywhere but on a bar does not select it.
>   This is uncomfortable and at least does not mimic the behavior of GUI
>   frames on all window managers I know.
>
> I'll look into these tomorrow.  Pointers welcome.

Thanks!

Works well for me. Only dragging the edges of a child frame doesn't seem
to work like in a GUI.

With the mouse bindings I'm afraid I can't help much. I agree that the
current use of down-mouse-N is generally not such a great idea. Example:
menus on the mode-line. The default binding of down-mouse-1 for opening
the menu is a PITA for trackpad users using tap-to-click, and prevents
keyboard interaction with the menu because lifting the finger closes the
menu.

Likewise, it would be nice if one could drag the child frames without
having to hold the finger pressed on the trackpad. (In contrast to
dragging a region, which can be done with a 3-finger drag.) Very
inconvenient, and a bit inconsistent.

How that all is currently wired is a bit of a mystery to me. There are
a number of keymaps involved, and it is unclear to me which exact
purpose each one has, and where mouse key bindings are exactly put in
and why: input-decode-map, function-key-map, key-translation-map,
global-map, maybe others?






Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 17:38:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 02 12:38:08 2025
Received: from localhost ([127.0.0.1]:36109 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tedv4-0001yP-Sj
	for submit <at> debbugs.gnu.org; Sun, 02 Feb 2025 12:38:08 -0500
Received: from mout.gmx.net ([212.227.17.22]:46239)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tedv0-0001xq-U7
 for 75056 <at> debbugs.gnu.org; Sun, 02 Feb 2025 12:38:04 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738517868; x=1739122668; i=rudalics@HIDDEN;
 bh=0MKRhyfLSuj1oz5sI4LFoQM5dmSyWf/7Q5Yk4Ps5EF8=;
 h=X-UI-Sender-Class:Content-Type:Message-ID:Date:MIME-Version:
 Subject:To:Cc:References:From:In-Reply-To:cc:
 content-transfer-encoding:content-type:date:from:message-id:
 mime-version:reply-to:subject:to;
 b=JTCTo73XhnlyjhWp/WMGcv2vZ4Zykzqmu7Yv0R+VClAX1eAyro6POSlMd7sG7Go0
 9+1fTVyvbXl13H6C4VsUOCi8qJDt03eNxNFAO5n2JFj560rMtmPMgfapemmQJoeiv
 zE30ZC5rP1NT5kp9oS7EhtJjt4QXb6VTqq/txOLVpaDPS4rqTWsFbgbCaL5GHQn3u
 CX52zTDBwIB8EaLSMKlvBmR/YcOuGuxDu1XlKt1uVyDuQ4WWWxc1FfNk77LLzPS7e
 2YYhvXwS4UWVxBlJbxTkRZwYjgBeBe16DWxbOzTR0fn+TgudHBgZdNTQBqd5RFn0P
 06duIPNsS/eInEwIMA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.97.190]) by mail.gmx.net (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MoO6C-1t7Twx3HVA-00q7fF; Sun, 02
 Feb 2025 18:37:47 +0100
Content-Type: multipart/mixed; boundary="------------OonywoDpVCk8BD8QQlfCUFVy"
Message-ID: <a886ab8d-516b-4158-aac4-5afac15a74b6@HIDDEN>
Date: Sun, 2 Feb 2025 18:37:46 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m28qqrlkyg.fsf@HIDDEN>
X-Provags-ID: V03:K1:tkpHil7sAe7FsDPlv6R0HNAYlBiMIdl6ZfSrJHtFxXWXKoGwryU
 Ge3dKHHvJqO71cl4ZS06686shiiFe3QkuxDc/Hxj9NCs7ibiqMV7scalsyRYT2CTIee5TS+
 tKyon4SsA/6lwJT4ZVSbxHnkmPrdxMkJsgY1M2EUjzA6tijUhz+pIx8A/Q1NSlVOAaTvukg
 wB8ye6fqf4ELF540qZOZg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:Cgsjpg3dY4s=;ecLdNIXJEueaJsKEnYk1fq8BV2u
 f5v744wmTpOSzudjW4Wc+fzbIf06f8UH9FC3gdzjH4SCvCHf22yKBhoujXxwXzLQwBWxMHWv8
 2yvmljXo9ndAZj7KI3qfZz8A/T0nAy2wLyvSXHJY5eeZQGT0J75wyzih2WkMo3gLI0HVe3rXN
 B+DEACEaMaHOkA4cwNTAtzkde9thJatcqxpC2avv+4Trpw47ZmoOGQeQSx6LH5D2uZ4pHStNA
 vjuftXboxauc1D3PpbvdiqHZlc7sQHnElf+vGyT8Q8Gmk2g9G7J4nQNrS8g+7YYHZO3Yd0lZd
 RnHNfn8qQiqo6ojcm1nGWzruYEDf9vNsp1Dg5zr5zglO4yDrMQmA9ZoPvvADf8VzzX1nLy9eJ
 vMuY3GGyxLFj+cdcSLJan6fCd9uOxMMmRmkvQfjdUOz8BS2MK8mvIXDvpK7Umlkyp/pKC5HpX
 UdxNa5+5ODiHFDwXaK6r5DjfiCJEEnKEBoEIMF+845jXx7rCiOd/KYTkaJHcmQk3M/hORPOeW
 bRH1ETQXwJlovKZ0ZqlWcYm3sSEFVp6VUxPk1RF/fYwuz0uo5AlsgUjKq0Udct5EsvbEj59mE
 nBXy4TfJakv2iqH0m2mWTC64syI+7r5aBYp62Tj3vi8Cl31ACrRbPVrcyBujjXm3g5u7C7of7
 pJO+dR4qJRFfe8QMLZNTJDhy6tt+j+5w6FU5Lup699FO4fbQ7FBcawN2NOWs+XZvXxDeWRQ7V
 NR2FDxAyZmjn9JrSNZnYQQpbiZNVEjkgi3cfqCj6+sH2/Mlrnbo8V4PuSGl+VyJf/yo0hi2zY
 L6jDiVLVCMwM5UBwvh4E/Bpc425y1jluRz0AoEqODnSenv0QxXSCjuKn4VtiZKbCfH2qXdMZf
 6WaSUaJoCd0oRU+4hmL+GmNz2Se5DSk+jGicYmzFKJJwwX2chHb7a42y+VGLsOzmya6kx8RWA
 nKPqapUd5Ysb7E5Jt/be9TFMaSpG3j8hKko4kk/HnaHldylf9/hg+BJ/iNBb1UKwTee7XYbti
 hQJDPrXIhPKZLhywLs3dnD99Izkv0Jyd1f5ewB/2wtuA2z50aYiUk9aDP8BI+ihL0/oaZUnKl
 PuU0CFrFFBKe14uxAFz12EoqbzhzUnw8XGkvprsp6QG4BtY+lt+K9jfnn/Np5qzZ/jJFYg9CN
 cPOQrYDes3URALRwZ2onqBNhLcf8aVS3jyb1kV5NRFOh/9J6Agp66hw4gLRNY7B7iZxBgtEPD
 BIKw0GIzSx/GfsXStDq+WI1+e+NEWDIy2xho+JRoxUjq20K3XeTh2tZBvapyBqAMpiDf0zHkX
 Fxe+vsf0Ozbnc77sGoUdDaW3c0DRP880ASsISINVGQ5IgAG4f9mkU0Rt8Tdojzzt8Nt
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

This is a multi-part message in MIME format.
--------------OonywoDpVCk8BD8QQlfCUFVy
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

 > Also, moving child frames is pretty nice too!

The attached patch now also resizes child frames by dragging their edges
or corners.  One thing that does not work is that when another child
frame is beneath an edge, Emacs selects the child frame beneath the edge
before I can start dragging.  I think that frame/child frame selection
with the mouse is not perfect in the current state in three regards:

- When I do down-mouse-1 in the non-selected root frame, Emacs does
   'mouse-set-point' there.  I think it should do so only for a mouse-1
   so I can back out before releasing the mouse button and obviously use
   the down-mouse-1 for dragging.

- When I have two overlapping child frames and do down-mouse-1 on a
   border of the frame above and that border covers the frame beneath,
   Emacs should never select the frame beneath here.  Not even after I
   release the button.

- Clicking into a child frame anywhere but on a bar does not select it.
   This is uncomfortable and at least does not mimic the behavior of GUI
   frames on all window managers I know.

I'll look into these tomorrow.  Pointers welcome.

martin
--------------OonywoDpVCk8BD8QQlfCUFVy
Content-Type: text/x-patch; charset=UTF-8;
 name="child-frame-menubar-drag-resize.diff"
Content-Disposition: attachment;
 filename="child-frame-menubar-drag-resize.diff"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL2xpc3AvbWVudS1iYXIuZWwgYi9saXNwL21lbnUtYmFyLmVsCmluZGV4
IDEzOTExMTA5ZmQ3Li4xNDY5ZGY2MzE2ZiAxMDA2NDQKLS0tIGEvbGlzcC9tZW51LWJhci5l
bAorKysgYi9saXNwL21lbnUtYmFyLmVsCkBAIC0yNjkxLDUzICsyNjkxLDc0IEBAIHBvcHVw
LW1lbnUKIAkJCSAoZmlsdGVyICh3aGVuIChzeW1ib2xwIG1hcCkKIAkJCQkgICAocGxpc3Qt
Z2V0IChnZXQgbWFwICdtZW51LXByb3ApIDpmaWx0ZXIpKSkpCiAJCSAgICAoaWYgZmlsdGVy
IChmdW5jYWxsIGZpbHRlciAoc3ltYm9sLWZ1bmN0aW9uIG1hcCkpIG1hcCkpKSkpCi0JIChm
cmFtZSAoc2VsZWN0ZWQtZnJhbWUpKQorCSAoc2VsZWN0ZWQtZnJhbWUgKHNlbGVjdGVkLWZy
YW1lKSkKKwkgKGZyYW1lIChpZiAoYW5kIChlcSAoZnJhbWVwIHNlbGVjdGVkLWZyYW1lKSB0
KSAoZnJhbWUtcGFyZW50KQorCQkJIGZyb20tbWVudS1iYXIKKwkJCSAoemVyb3AgKG9yIChm
cmFtZS1wYXJhbWV0ZXIgbmlsICdtZW51LWJhci1saW5lcykgMCkpKQorCQkgICAgOzsgSWYg
dGhlIHNlbGVjdGVkIGZyYW1lIGlzIGEgdHR5IGNoaWxkIGZyYW1lCisJCSAgICA7OyB3aXRo
b3V0IGl0cyBvd24gbWVudSBiYXIgYW5kIHdlIGFyZSBjYWxsZWQgZnJvbQorCQkgICAgOzsg
dGhlIG1lbnUgYmFyLCB0aGUgbWVudSBiYXIgbXVzdCBiZSBvbiB0aGUgcm9vdAorCQkgICAg
OzsgZnJhbWUgb2YgdGhlIHNlbGVjdGVkIGZyYW1lLgorCQkgICAgKGZyYW1lLXJvb3QtZnJh
bWUpCisJCSAgKHNlbGVjdGVkLWZyYW1lKSkpCiAJIGV2ZW50IGNtZCkKLSAgICAoaWYgZnJv
bS1tZW51LWJhcgotCShsZXQqICgoeHkgKHBvc24teC15IHBvc2l0aW9uKSkKLQkgICAgICAg
KG1lbnUtc3ltYm9sIChtZW51LWJhci1tZW51LWF0LXgteSAoY2FyIHh5KSAoY2RyIHh5KSkp
KQotCSAgKHNldHEgcG9zaXRpb24gKGxpc3QgbWVudS1zeW1ib2wgKGxpc3QgZnJhbWUgJyht
ZW51LWJhcikKLQkJCQkJCSB4eSAwKSkpKQotICAgICAgKHNldHEgcG9zaXRpb24gKHBvcHVw
LW1lbnUtbm9ybWFsaXplLXBvc2l0aW9uIHBvc2l0aW9uKSkpCi0gICAgOzsgVGhlIGxvb3Bp
bmcgYmVoYXZpb3Igd2FzIHRha2VuIGZyb20gbG1lbnUncyBwb3B1cC1tZW51LXBvcHVwCi0g
ICAgKHdoaWxlIChhbmQgbWFwIChzZXRxIGV2ZW50Ci0JCQkgIDs7IG1hcCBjb3VsZCBiZSBh
IHByZWZpeCBrZXksIGluIHdoaWNoIGNhc2UKLQkJCSAgOzsgd2UgbmVlZCB0byBnZXQgaXRz
IGZ1bmN0aW9uIGNlbGwKLQkJCSAgOzsgZGVmaW5pdGlvbi4KLQkJCSAgKHgtcG9wdXAtbWVu
dSBwb3NpdGlvbiAoaW5kaXJlY3QtZnVuY3Rpb24gbWFwKSkpKQotICAgICAgOzsgU3RyYW5n
ZWx5IHgtcG9wdXAtbWVudSByZXR1cm5zIGEgbGlzdC4KLSAgICAgIDs7IG1vdXNlLW1ham9y
LW1vZGUtbWVudSB3YXMgdXNpbmcgYSB3ZWlyZDoKLSAgICAgIDs7IChrZXktYmluZGluZyAo
YXBwbHkgJ3ZlY3RvciAoYXBwZW5kICcobWVudS1iYXIpIG1lbnUtcHJlZml4IGV2ZW50cykp
KQotICAgICAgKHNldHEgY21kCi0JICAgIChjb25kCi0JICAgICAoKGFuZCBmcm9tLW1lbnUt
YmFyCi0JCSAgIChjb25zcCBldmVudCkKLQkJICAgKG51bWJlcnAgKGNhciBldmVudCkpCi0J
CSAgIChudW1iZXJwIChjZHIgZXZlbnQpKSkKLQkgICAgICAobGV0ICgoeCAoY2FyIGV2ZW50
KSkKLQkJICAgICh5IChjZHIgZXZlbnQpKQotCQkgICAgbWVudS1zeW1ib2wpCi0JCShzZXRx
IG1lbnUtc3ltYm9sIChtZW51LWJhci1tZW51LWF0LXgteSB4IHkpKQotCQkoc2V0cSBwb3Np
dGlvbiAobGlzdCBtZW51LXN5bWJvbCAobGlzdCBmcmFtZSAnKG1lbnUtYmFyKQotCQkJCQkJ
IGV2ZW50IDApKSkKLQkJKHNldHEgbWFwCi0JCSAgICAgIChrZXktYmluZGluZyAodmVjdG9y
ICdtZW51LWJhciBtZW51LXN5bWJvbCkpKSkpCi0JICAgICAoKGFuZCAobm90IChrZXltYXBw
IG1hcCkpIChsaXN0cCBtYXApKQotCSAgICAgIDs7IFdlIHdlcmUgZ2l2ZW4gYSBsaXN0IG9m
IGtleW1hcHMuICBTZWFyY2ggdGhlbSBhbGwKLQkgICAgICA7OyBpbiBzZXF1ZW5jZSB1bnRp
bCBhIGZpcnN0IGJpbmRpbmcgaXMgZm91bmQuCi0JICAgICAgKGxldCAoKG1vdXNlLWNsaWNr
IChhcHBseSAndmVjdG9yIGV2ZW50KSkKLQkJICAgIGJpbmRpbmcpCi0JCSh3aGlsZSAoYW5k
IG1hcCAobnVsbCBiaW5kaW5nKSkKLQkJICAoc2V0cSBiaW5kaW5nIChsb29rdXAta2V5LWln
bm9yZS10b28tbG9uZyAoY2FyIG1hcCkgbW91c2UtY2xpY2spKQotCQkgIChzZXRxIG1hcCAo
Y2RyIG1hcCkpKQotICAgICAgICAgICAgICAgIGJpbmRpbmcpKQotCSAgICAgKHQKLQkgICAg
ICA7OyBXZSB3ZXJlIGdpdmVuIGEgc2luZ2xlIGtleW1hcC4KLQkgICAgICAobG9va3VwLWtl
eSBtYXAgKGFwcGx5ICd2ZWN0b3IgZXZlbnQpKSkpKQotICAgICAgOzsgQ2xlYXIgb3V0IGVj
aG9pbmcsIHdoaWNoIHBlcmhhcHMgc2hvd3MgYSBwcmVmaXggYXJnLgotICAgICAgKG1lc3Nh
Z2UgIiIpCi0gICAgICA7OyBNYXliZSB0cnkgYWdhaW4gYnV0IHdpdGggdGhlIHN1Ym1hcC4K
LSAgICAgIChzZXRxIG1hcCAoaWYgKGtleW1hcHAgY21kKSBjbWQpKSkKKyAgICAod2l0aC1z
ZWxlY3RlZC1mcmFtZSBmcmFtZQorICAgICAgKGlmIGZyb20tbWVudS1iYXIKKwkgIChsZXQq
ICgoeHkgKHBvc24teC15IHBvc2l0aW9uKSkKKwkJIChtZW51LXN5bWJvbCAobWVudS1iYXIt
bWVudS1hdC14LXkgKGNhciB4eSkgKGNkciB4eSkpKSkKKwkgICAgKHNldHEgcG9zaXRpb24g
KGxpc3QgbWVudS1zeW1ib2wgKGxpc3QgZnJhbWUgJyhtZW51LWJhcikKKwkJCQkJCSAgIHh5
IDApKSkpCisJKHNldHEgcG9zaXRpb24gKHBvcHVwLW1lbnUtbm9ybWFsaXplLXBvc2l0aW9u
IHBvc2l0aW9uKSkpCisKKyAgICAgIDs7IFRoZSBsb29waW5nIGJlaGF2aW9yIHdhcyB0YWtl
biBmcm9tIGxtZW51J3MgcG9wdXAtbWVudS1wb3B1cAorICAgICAgKHdoaWxlIChhbmQgbWFw
IChzZXRxIGV2ZW50CisJCQkgICAgOzsgbWFwIGNvdWxkIGJlIGEgcHJlZml4IGtleSwgaW4g
d2hpY2ggY2FzZQorCQkJICAgIDs7IHdlIG5lZWQgdG8gZ2V0IGl0cyBmdW5jdGlvbiBjZWxs
CisJCQkgICAgOzsgZGVmaW5pdGlvbi4KKwkJCSAgICAoeC1wb3B1cC1tZW51IHBvc2l0aW9u
IChpbmRpcmVjdC1mdW5jdGlvbiBtYXApKSkpCisJOzsgU3RyYW5nZWx5IHgtcG9wdXAtbWVu
dSByZXR1cm5zIGEgbGlzdC4KKwk7OyBtb3VzZS1tYWpvci1tb2RlLW1lbnUgd2FzIHVzaW5n
IGEgd2VpcmQ6CisJOzsgKGtleS1iaW5kaW5nIChhcHBseSAndmVjdG9yIChhcHBlbmQgJyht
ZW51LWJhcikgbWVudS1wcmVmaXggZXZlbnRzKSkpCisJKHNldHEgY21kCisJICAgICAgKGNv
bmQKKwkgICAgICAgKChhbmQgZnJvbS1tZW51LWJhcgorCQkgICAgIChjb25zcCBldmVudCkK
KwkJICAgICAobnVtYmVycCAoY2FyIGV2ZW50KSkKKwkJICAgICAobnVtYmVycCAoY2RyIGV2
ZW50KSkpCisJCShsZXQgKCh4IChjYXIgZXZlbnQpKQorCQkgICAgICAoeSAoY2RyIGV2ZW50
KSkKKwkJICAgICAgbWVudS1zeW1ib2wpCisJCSAgKHNldHEgbWVudS1zeW1ib2wgKG1lbnUt
YmFyLW1lbnUtYXQteC15IHggeSkpCisJCSAgKHNldHEgcG9zaXRpb24gKGxpc3QgbWVudS1z
eW1ib2wgKGxpc3QgZnJhbWUgJyhtZW51LWJhcikKKwkJCQkJCQkgZXZlbnQgMCkpKQorCQkg
IChpZiAobm90IChlcSBmcmFtZSBzZWxlY3RlZC1mcmFtZSkpCisJCSAgICAgIDs7IElmIHdl
IGFyZSB1c2luZyB0aGUgbWVudSBiYXIgZnJvbSB0aGUgcm9vdAorCQkgICAgICA7OyBmcmFt
ZSwgbG9vayB1cCB0aGUga2V5IGJpbmRpbmcgaW4gdGhlIGtleW1hcHMKKwkJICAgICAgOzsg
b2YgdGhlIGluaXRpYWxseSBzZWxlY3RlZCB3aW5kb3cncyBidWZmZXIgdG8KKwkJICAgICAg
OzsgbWFrZSBzdXJlIHRoYXQgbmF2aWdhdGluZyB0aGUgbWVudSBiYXIgd2l0aCB0aGUKKwkJ
ICAgICAgOzsga2V5Ym9hcmQgd29ya3MgYXMgaW50ZW5kZWQuCisJCSAgICAgIChzZXRxIG1h
cAorCQkJICAgIChrZXktYmluZGluZyAodmVjdG9yICdtZW51LWJhciBtZW51LXN5bWJvbCkg
bmlsIG5pbAorCQkJCQkgKGZyYW1lLXNlbGVjdGVkLXdpbmRvdyBzZWxlY3RlZC1mcmFtZSkp
KQorCQkgICAgKHNldHEgbWFwCisJCQkgIChrZXktYmluZGluZyAodmVjdG9yICdtZW51LWJh
ciBtZW51LXN5bWJvbCkpKSkpKQorCSAgICAgICAoKGFuZCAobm90IChrZXltYXBwIG1hcCkp
IChsaXN0cCBtYXApKQorCQk7OyBXZSB3ZXJlIGdpdmVuIGEgbGlzdCBvZiBrZXltYXBzLiAg
U2VhcmNoIHRoZW0gYWxsCisJCTs7IGluIHNlcXVlbmNlIHVudGlsIGEgZmlyc3QgYmluZGlu
ZyBpcyBmb3VuZC4KKwkJKGxldCAoKG1vdXNlLWNsaWNrIChhcHBseSAndmVjdG9yIGV2ZW50
KSkKKwkJICAgICAgYmluZGluZykKKwkJICAod2hpbGUgKGFuZCBtYXAgKG51bGwgYmluZGlu
ZykpCisJCSAgICAoc2V0cSBiaW5kaW5nIChsb29rdXAta2V5LWlnbm9yZS10b28tbG9uZyAo
Y2FyIG1hcCkgbW91c2UtY2xpY2spKQorCQkgICAgKHNldHEgbWFwIChjZHIgbWFwKSkpCisJ
CSAgYmluZGluZykpCisJICAgICAgICh0CisJCTs7IFdlIHdlcmUgZ2l2ZW4gYSBzaW5nbGUg
a2V5bWFwLgorCQkobG9va3VwLWtleSBtYXAgKGFwcGx5ICd2ZWN0b3IgZXZlbnQpKSkpKQor
CTs7IENsZWFyIG91dCBlY2hvaW5nLCB3aGljaCBwZXJoYXBzIHNob3dzIGEgcHJlZml4IGFy
Zy4KKwkobWVzc2FnZSAiIikKKwk7OyBNYXliZSB0cnkgYWdhaW4gYnV0IHdpdGggdGhlIHN1
Ym1hcC4KKwkoc2V0cSBtYXAgKGlmIChrZXltYXBwIGNtZCkgY21kKSkpKQorCiAgICAgOzsg
SWYgdGhlIHVzZXIgZGlkIG5vdCBjYW5jZWwgYnkgcmVmdXNpbmcgdG8gc2VsZWN0LAogICAg
IDs7IGFuZCBpZiB0aGUgcmVzdWx0IGlzIGEgY29tbWFuZCwgcnVuIGl0LgogICAgICh3aGVu
IChhbmQgKG51bGwgbWFwKSAoY29tbWFuZHAgY21kKSkKQEAgLTI4MDgsMTQgKzI4MjksMjcg
QEAgbWVudS1iYXItb3BlbgogSWYgRlJBTUUgaXMgbmlsIG9yIG5vdCBnaXZlbiwgdXNlIHRo
ZSBzZWxlY3RlZCBmcmFtZS4iCiAgIChpbnRlcmFjdGl2ZQogICAgKGxpc3QgbmlsIChwcmVm
aXgtbnVtZXJpYy12YWx1ZSBjdXJyZW50LXByZWZpeC1hcmcpKSkKLSAgKGxldCAoKHR5cGUg
KGZyYW1lcCAob3IgZnJhbWUgKHNlbGVjdGVkLWZyYW1lKSkpKSkKKyAgKGxldCogKCh0eXBl
IChmcmFtZXAgKG9yIGZyYW1lIChzZWxlY3RlZC1mcmFtZSkpKSkKKwkgcm9vdAorCSAoZnJh
bWUgKGlmIChhbmQgKGVxIHR5cGUgdCkgKGZyYW1lLXBhcmVudCBmcmFtZSkKKwkJCSAobnVs
bCB0dHktbWVudS1vcGVuLXVzZS10bW0pCisJCQkgKHplcm9wIChvciAoZnJhbWUtcGFyYW1l
dGVyIGZyYW1lICdtZW51LWJhci1saW5lcykgMCkpCisJCQkgKHNldHEgcm9vdCAoZnJhbWUt
cm9vdC1mcmFtZSkpCisJCQkgKG5vdCAoemVyb3AKKwkJCSAgICAgICAob3IgKGZyYW1lLXBh
cmFtZXRlciByb290ICdtZW51LWJhci1saW5lcykgMCkpKSkKKwkJICAgIDs7IElmIEZSQU1F
IGlzIGEgdHR5IGNoaWxkIGZyYW1lIHdpdGhvdXQgaXRzIG93bgorCQkgICAgOzsgbWVudSBi
YXIsICd0dHktbWVudS1vcGVuLXVzZS10bW0nIGlzIGZhbHNlIGFuZAorCQkgICAgOzsgRlJB
TUUncyByb290IGZyYW1lIGhhcyBhIG1lbnUgYmFyLCB1c2UgdGhhdCByb290CisJCSAgICA7
OyBmcmFtZSdzIG1lbnUgYmFyLgorCQkgICAgcm9vdAorCQkgIGZyYW1lKSkpCiAgICAgKGNv
bmQKICAgICAgKChlcSB0eXBlICd4KSAoeC1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAg
KChlcSB0eXBlICd3MzIpICh3MzItbWVudS1iYXItb3BlbiBmcmFtZSkpCiAgICAgICgoZXEg
dHlwZSAnaGFpa3UpIChoYWlrdS1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAgKChlcSB0
eXBlICdwZ3RrKSAocGd0ay1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAgKChhbmQgKG51
bGwgdHR5LW1lbnUtb3Blbi11c2UtdG1tKQotCSAgIChub3QgKHplcm9wIChvciAoZnJhbWUt
cGFyYW1ldGVyIG5pbCAnbWVudS1iYXItbGluZXMpIDApKSkpCisJICAgKG5vdCAoemVyb3Ag
KG9yIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ21lbnUtYmFyLWxpbmVzKSAwKSkpKQogICAg
ICAgOzsgTWFrZSBzdXJlIHRoZSBtZW51IGJhciBpcyB1cCB0byBkYXRlLiAgT25lIHNpdHVh
dGlvbiB3aGVyZQogICAgICAgOzsgdGhpcyBpcyBpbXBvcnRhbnQgaXMgd2hlbiB0aGlzIGZ1
bmN0aW9uIGlzIGludm9rZWQgYnkgbmFtZQogICAgICAgOzsgdmlhIE0teCwgaW4gd2hpY2gg
Y2FzZSB0aGUgbWVudSBiYXIgaW5jbHVkZXMgdGhlICJNaW5pYnVmIgpAQCAtMjgzMSw3ICsy
ODY1LDcgQEAgbWVudS1iYXItb3BlbgogICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50
LWxvY2FsLW1hcCkgKHZlY3RvciAnbWVudS1iYXIgbWVudSkpCiAJCSAgICAgKGNkYXIgKG1p
bm9yLW1vZGUta2V5LWJpbmRpbmcgKHZlY3RvciAnbWVudS1iYXIgbWVudSkpKQogICAgICAg
ICAgICAgICAgICAgICAgKG1vdXNlLW1lbnUtYmFyLW1hcCkpCi0JCSAgICAocG9zbi1hdC14
LXkgeCAwIG5pbCB0KSBuaWwgdCkpKQorCQkgICAgKHBvc24tYXQteC15IHggMCBmcmFtZSB0
KSBuaWwgdCkpKQogICAgICAodCAod2l0aC1zZWxlY3RlZC1mcmFtZSAob3IgZnJhbWUgKHNl
bGVjdGVkLWZyYW1lKSkKICAgICAgICAgICAodG1tLW1lbnViYXIpKSkpKSkKIApkaWZmIC0t
Z2l0IGEvbGlzcC9tb3VzZS5lbCBiL2xpc3AvbW91c2UuZWwKaW5kZXggYjA1MTE1YjIzN2Qu
LjVkNGQzMGFmNWU3IDEwMDY0NAotLS0gYS9saXNwL21vdXNlLmVsCisrKyBiL2xpc3AvbW91
c2UuZWwKQEAgLTExMDYsNyArMTEwNiwxMCBAQCBtb3VzZS1kcmFnLWZyYW1lLXJlc2l6ZQog
CSAoZHJhZy1ib3R0b20gKG1lbXEgcGFydCAnKGJvdHRvbS1yaWdodCBib3R0b20gYm90dG9t
LWxlZnQpKSkKIAkgOzsgSW5pdGlhbCAiZmlyc3QiIG1vdXNlIHBvc2l0aW9uLiAgV2hpbGUg
ZHJhZ2dpbmcgd2UgYmFzZSBhbGwKIAkgOzsgY2FsY3VsYXRpb25zIGFnYWluc3QgdGhhdCBw
b3NpdGlvbi4KLQkgKGZpcnN0LXgteSAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24p
KQorCSAodHR5ICh0dHktdHlwZSBmcmFtZSkpCisJIChmaXJzdC14LXkgKGlmIHR0eQorCQkJ
KG1vdXNlLXBvc2l0aW9uLWluLXJvb3QtZnJhbWUpCisJCSAgICAgIChtb3VzZS1hYnNvbHV0
ZS1waXhlbC1wb3NpdGlvbikpKQogICAgICAgICAgKGZpcnN0LXggKGNhciBmaXJzdC14LXkp
KQogICAgICAgICAgKGZpcnN0LXkgKGNkciBmaXJzdC14LXkpKQogICAgICAgICAgKGV4aXRm
dW4gbmlsKQpAQCAtMTExNCw3ICsxMTE3LDkgQEAgbW91c2UtZHJhZy1mcmFtZS1yZXNpemUK
ICAgICAgICAgICAobGFtYmRhIChldmVudCkKICAgICAgICAgICAgIChpbnRlcmFjdGl2ZSAi
ZSIpCiAgICAgICAgICAgICAod2hlbiAoY29uc3AgZXZlbnQpCi0gICAgICAgICAgICAgIChs
ZXQqICgobGFzdC14LXkgKG1vdXNlLWFic29sdXRlLXBpeGVsLXBvc2l0aW9uKSkKKyAgICAg
ICAgICAgICAgKGxldCogKChsYXN0LXgteSAoaWYgdHR5CisJCQkJICAgKG1vdXNlLXBvc2l0
aW9uLWluLXJvb3QtZnJhbWUpCisJCQkJIChtb3VzZS1hYnNvbHV0ZS1waXhlbC1wb3NpdGlv
bikpKQogCQkgICAgIChsYXN0LXggKGNhciBsYXN0LXgteSkpCiAJCSAgICAgKGxhc3QteSAo
Y2RyIGxhc3QteC15KSkKIAkJICAgICAobGVmdCAoLSBsYXN0LXggZmlyc3QteCkpCkBAIC0x
MjIzLDEwICsxMjI4LDEzIEBAIG1vdXNlLWRyYWctZnJhbWUtbW92ZQogICAgICAgICAgKHBh
cmVudC1ib3R0b20gKGFuZCBwYXJlbnQtZWRnZXMgKG50aCAzIHBhcmVudC1lZGdlcykpKQog
CSA7OyBJbml0aWFsICJmaXJzdCIgbW91c2UgcG9zaXRpb24uICBXaGlsZSBkcmFnZ2luZyB3
ZSBiYXNlIGFsbAogCSA7OyBjYWxjdWxhdGlvbnMgYWdhaW5zdCB0aGF0IHBvc2l0aW9uLgot
CSAoZmlyc3QteC15IChtb3VzZS1hYnNvbHV0ZS1waXhlbC1wb3NpdGlvbikpCi0gICAgICAg
ICAoZmlyc3QteCAoY2FyIGZpcnN0LXgteSkpCi0gICAgICAgICAoZmlyc3QteSAoY2RyIGZp
cnN0LXgteSkpCi0gICAgICAgICA7OyBgc25hcC13aWR0aCcgKG1heWJlIGFsc28gYSB5ZXQg
dG8gYmUgcHJvdmlkZWQgYHNuYXAtaGVpZ2h0JykKKwkgKHR0eSAodHR5LXR5cGUgZnJhbWUp
KQorCSAoZmlyc3QteC15IChpZiB0dHkKKwkJCShtb3VzZS1wb3NpdGlvbi1pbi1yb290LWZy
YW1lKQorCQkgICAgICAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24pKSkKKwkgKGZp
cnN0LXggKGNhciBmaXJzdC14LXkpKQorCSAoZmlyc3QteSAoY2RyIGZpcnN0LXgteSkpCisJ
IDs7IGBzbmFwLXdpZHRoJyAobWF5YmUgYWxzbyBhIHlldCB0byBiZSBwcm92aWRlZCBgc25h
cC1oZWlnaHQnKQogICAgICAgICAgOzsgY291bGQgYmVjb21lIGZsb2F0cyB0byBoYW5kbGUg
cHJvcG9ydGlvbmFsaXR5IHdydCBQQVJFTlQuCiAgICAgICAgICA7OyBXZSBkb24ndCBkbyBh
bnkgY2hlY2tzIG9uIHRoaXMgcGFyYW1ldGVyIHNvIGZhci4KICAgICAgICAgIChzbmFwLXdp
ZHRoIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ3NuYXAtd2lkdGgpKQpAQCAtMTI0Miw3ICsx
MjUwLDkgQEAgbW91c2UtZHJhZy1mcmFtZS1tb3ZlCiAgICAgICAgICAgKGxhbWJkYSAoZXZl
bnQpCiAgICAgICAgICAgICAoaW50ZXJhY3RpdmUgImUiKQogICAgICAgICAgICAgKHdoZW4g
KGNvbnNwIGV2ZW50KQotICAgICAgICAgICAgICAobGV0KiAoKGxhc3QteC15IChtb3VzZS1h
YnNvbHV0ZS1waXhlbC1wb3NpdGlvbikpCisgICAgICAgICAgICAgIChsZXQqICgobGFzdC14
LXkgKGlmIHR0eQorCQkJCSAgIChtb3VzZS1wb3NpdGlvbi1pbi1yb290LWZyYW1lKQorCQkJ
CSAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24pKSkKIAkJICAgICAobGFzdC14IChj
YXIgbGFzdC14LXkpKQogCQkgICAgIChsYXN0LXkgKGNkciBsYXN0LXgteSkpCiAJCSAgICAg
KGxlZnQgKC0gbGFzdC14IGZpcnN0LXgpKQpAQCAtMTM3Myw3ICsxMzgzLDggQEAgbW91c2Ut
ZHJhZy1mcmFtZS1tb3ZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgt
IHBhcmVudC1ib3R0b20gbmF0aXZlLWhlaWdodCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKG1pbiAobWF4IHRvcCBwYXJlbnQtdG9wKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKC0gcGFyZW50LWJvdHRvbSBwYXIpKSkpKSkKLSAgICAgICAgICAgICAg
ICA7OyBVc2UgYG1vZGlmeS1mcmFtZS1wYXJhbWV0ZXJzJyBzaW5jZSBgbGVmdCcgYW5kIGB0
b3AnCisKKwkJOzsgVXNlICdtb2RpZnktZnJhbWUtcGFyYW1ldGVycycgc2luY2UgJ2xlZnQn
IGFuZCAndG9wJwogICAgICAgICAgICAgICAgIDs7IG1heSB3YW50IHRvIG1vdmUgRlJBTUUg
b3V0IG9mIGl0cyBQQVJFTlQuCiAgICAgICAgICAgICAgICAgKG1vZGlmeS1mcmFtZS1wYXJh
bWV0ZXJzIGZyYW1lIGAoKGxlZnQgLiAoKyAsbGVmdCkpICh0b3AgLiAoKyAsdG9wKSkpKSkp
KSkKIAkgKG9sZC10cmFjay1tb3VzZSB0cmFjay1tb3VzZSkpCmRpZmYgLS1naXQgYS9zcmMv
ZnJhbWUuYyBiL3NyYy9mcmFtZS5jCmluZGV4IGNhYzliMGE0YWNkLi5iOWE2OWY5YzFiMSAx
MDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmMKKysrIGIvc3JjL2ZyYW1lLmMKQEAgLTE0NDksMTcg
KzE0NDksMzggQEAgZ2V0X2Z1dHVyZV9mcmFtZV9wYXJhbSAoTGlzcF9PYmplY3QgcGFyYW1l
dGVyLAogI2VuZGlmCiAKIGludAotdHR5X2NoaWxkX3Bvc19wYXJhbSAoc3RydWN0IGZyYW1l
ICpjaGlsZCwgTGlzcF9PYmplY3Qga2V5LAotCQkgICAgIExpc3BfT2JqZWN0IHBhcmFtcywg
aW50IGRmbHQpCit0dHlfY2hpbGRfcG9zX3BhcmFtIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3Bf
T2JqZWN0IGtleSwKKwkJICAgICBMaXNwX09iamVjdCBwYXJhbXMsIGludCBwb3MpCiB7Cisg
IHN0cnVjdCBmcmFtZSAqcCA9IFhGUkFNRSAoZi0+cGFyZW50X2ZyYW1lKTsKICAgTGlzcF9P
YmplY3QgdmFsID0gRmFzc3EgKGtleSwgcGFyYW1zKTsKKwogICBpZiAoQ09OU1AgKHZhbCkp
CiAgICAgewogICAgICAgdmFsID0gWENEUiAodmFsKTsKLSAgICAgIGlmIChGSVhOVU1QICh2
YWwpKQotCXJldHVybiBYRklYTlVNICh2YWwpOworCisgICAgICBpZiAoVFlQRV9SQU5HRURf
RklYTlVNUCAoaW50LCB2YWwpKQorCXsKKwkgIHBvcyA9IFhGSVhOVU0gKHZhbCk7CisKKwkg
IGlmIChwb3MgPCAwKQorCSAgICAvKiBIYW5kbGUgbmVnYXRpdmUgdmFsdWUuICovCisJICAg
IHBvcyA9IG1heCAoRVEgKGtleSwgUXRvcCkKKwkJICAgICAgID8gcC0+cGl4ZWxfaGVpZ2h0
IC0gZi0+cGl4ZWxfaGVpZ2h0IC0gcG9zCisJCSAgICAgICA6IHAtPnBpeGVsX3dpZHRoIC0g
Zi0+cGl4ZWxfd2lkdGggLSBwb3MsCisJCSAgICAgICAwKTsKKwl9CisgICAgICBlbHNlIGlm
IChDT05TUCAodmFsKSAmJiBFUSAoWENBUiAodmFsKSwgUXBsdXMpCisJICAgICAgICYmIENP
TlNQIChYQ0RSICh2YWwpKQorCSAgICAgICAmJiBUWVBFX1JBTkdFRF9GSVhOVU1QIChpbnQs
IFhDQVIgKFhDRFIgKHZhbCkpKSkKKwlwb3MgPSBYRklYTlVNIChYQ0FSIChYQ0RSICh2YWwp
KSk7CisgICAgICBlbHNlIGlmIChDT05TUCAodmFsKSAmJiBFUSAoWENBUiAodmFsKSwgUW1p
bnVzKQorCSAgICAgICAmJiBDT05TUCAoWENEUiAodmFsKSkKKwkgICAgICAgJiYgUkFOR0VE
X0ZJWE5VTVAgKC1JTlRfTUFYLCBYQ0FSIChYQ0RSICh2YWwpKSwgSU5UX01BWCkpCisJcG9z
ID0gLSBYRklYTlVNIChYQ0FSIChYQ0RSICh2YWwpKSk7CiAgICAgfQotICByZXR1cm4gZGZs
dDsKKworICByZXR1cm4gcG9zOwogfQogCiBpbnQKQEAgLTI4MzgsNyArMjg1OSw3IEBAIERF
RlVOICgiZGVsZXRlLWZyYW1lIiwgRmRlbGV0ZV9mcmFtZSwgU2RlbGV0ZV9mcmFtZSwgMCwg
MiwgIiIsCiAgIHJldHVybiBkZWxldGVfZnJhbWUgKGZyYW1lLCAhTklMUCAoZm9yY2UpID8g
UXQgOiBRbmlsKTsKIH0KIAwKLSNpZmRlZiBIQVZFX1dJTkRPV19TWVNURU0KKwogLyoqCiAg
KiBmcmFtZV9pbnRlcm5hbF9ib3JkZXJfcGFydDoKICAqCkBAIC0yODYxLDcgKzI4ODIsMTEg
QEAgREVGVU4gKCJkZWxldGUtZnJhbWUiLCBGZGVsZXRlX2ZyYW1lLCBTZGVsZXRlX2ZyYW1l
LCAwLCAyLCAiIiwKIGVudW0gaW50ZXJuYWxfYm9yZGVyX3BhcnQKIGZyYW1lX2ludGVybmFs
X2JvcmRlcl9wYXJ0IChzdHJ1Y3QgZnJhbWUgKmYsIGludCB4LCBpbnQgeSkKIHsKLSAgaW50
IGJvcmRlciA9IEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAoZik7CisgIGludCBib3Jk
ZXIgPSAoRlJBTUVfSU5URVJOQUxfQk9SREVSX1dJRFRIIChmKQorCQk/IEZSQU1FX0lOVEVS
TkFMX0JPUkRFUl9XSURUSCAoZikKKwkJOiAoaXNfdHR5X2NoaWxkX2ZyYW1lIChmKSAmJiAh
RlJBTUVfVU5ERUNPUkFURUQgKGYpKQorCQk/IDEKKwkJOiAwKTsKICAgaW50IG9mZnNldCA9
IEZSQU1FX0xJTkVfSEVJR0hUIChmKTsKICAgaW50IHdpZHRoID0gRlJBTUVfUElYRUxfV0lE
VEggKGYpOwogICBpbnQgaGVpZ2h0ID0gRlJBTUVfUElYRUxfSEVJR0hUIChmKTsKQEAgLTI5
MzAsNyArMjk1NSw3IEBAIGZyYW1lX2ludGVybmFsX2JvcmRlcl9wYXJ0IChzdHJ1Y3QgZnJh
bWUgKmYsIGludCB4LCBpbnQgeSkKIAogICByZXR1cm4gcGFydDsKIH0KLSNlbmRpZgorCiAK
IC8qIFJldHVybiBtb3VzZSBwb3NpdGlvbiBpbiBjaGFyYWN0ZXIgY2VsbCB1bml0cy4gICov
CiAKQEAgLTY0NzgsNiArNjUwMywzNyBAQCBERUZVTiAoImZyYW1lLXBvaW50ZXItdmlzaWJs
ZS1wIiwgRmZyYW1lX3BvaW50ZXJfdmlzaWJsZV9wLAogICByZXR1cm4gZGVjb2RlX2FueV9m
cmFtZSAoZnJhbWUpLT5wb2ludGVyX2ludmlzaWJsZSA/IFFuaWwgOiBRdDsKIH0KIAorREVG
VU4gKCJtb3VzZS1wb3NpdGlvbi1pbi1yb290LWZyYW1lIiwgRm1vdXNlX3Bvc2l0aW9uX2lu
X3Jvb3RfZnJhbWUsCisgICAgICAgU21vdXNlX3Bvc2l0aW9uX2luX3Jvb3RfZnJhbWUsIDAs
IDAsIDAsCisgICAgICAgZG9jOiAvKiBSZXR1cm4gbW91c2UgcG9zaXRpb24gaW4gc2VsZWN0
ZWQgZnJhbWUncyByb290IGZyYW1lLgorCitSZXR1cm4gdGhlIHBvc2l0aW9uIG9mIGBtb3Vz
ZS1wb3NpdGlvbicgaW4gY29vcmRpbmF0ZXMgb2YgdGhlIHJvb3QgZnJhbWUKK29mIHRoZSBm
cmFtZSByZXR1cm5lZCBieSAnbW91c2UtcG9zaXRpb24nLiAgKi8pCisgICh2b2lkKQorewor
ICBMaXNwX09iamVjdCBwb3MgPSBtb3VzZV9wb3NpdGlvbiAodHJ1ZSk7CisgIExpc3BfT2Jq
ZWN0IGZyYW1lID0gWENBUiAocG9zKTsKKyAgc3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChm
cmFtZSk7CisgIGludCB4ID0gWEZJWE5VTSAoWENBUiAoWENEUiAocG9zKSkpICsgZi0+bGVm
dF9wb3M7CisgIGludCB5ID0gWEZJWE5VTSAoWENEUiAoWENEUiAocG9zKSkpICsgZi0+dG9w
X3BvczsKKworICBpZiAoIUZSQU1FUCAoZnJhbWUpKQorICAgIHJldHVybiBRbmlsOworICBl
bHNlCisgICAgeworICAgICAgZiA9IEZSQU1FX1BBUkVOVF9GUkFNRSAoZik7CisKKyAgICAg
IHdoaWxlIChmKQorCXsKKwkgIHggPSB4ICsgZi0+bGVmdF9wb3M7CisJICB5ID0geSArIGYt
PnRvcF9wb3M7CisJICBmID0gRlJBTUVfUEFSRU5UX0ZSQU1FIChmKTsKKwl9CisKKyAgICAg
IHJldHVybiBGY29ucyAobWFrZV9maXhudW0gKHgpLCBtYWtlX2ZpeG51bSAoeSkpOworICAg
IH0KK30KKwogREVGVU4gKCJmcmFtZS0tc2V0LXdhcy1pbnZpc2libGUiLCBGZnJhbWVfX3Nl
dF93YXNfaW52aXNpYmxlLAogICAgICAgIFNmcmFtZV9fc2V0X3dhc19pbnZpc2libGUsIDIs
IDIsIDAsCiAgICAgICAgZG9jOiAvKiBTZXQgRlJBTUUncyB3YXMtaW52aXNpYmxlIGZsYWcg
aWYgV0FTLUlOVklTSUJMRSBpcyBub24tbmlsLgpAQCAtNzI1MCw2ICs3MzA2LDcgQEAgZm9j
dXMgKHdoZXJlIGEgZnJhbWUgaW1tZWRpYXRlbHkgbG9zZXMgZm9jdXMgd2hlbiBpdCdzIGxl
ZnQgYnkgdGhlIG1vdXNlCiAgIGRlZnN1YnIgKCZTZnJhbWVfcG9zaXRpb24pOwogICBkZWZz
dWJyICgmU3NldF9mcmFtZV9wb3NpdGlvbik7CiAgIGRlZnN1YnIgKCZTZnJhbWVfcG9pbnRl
cl92aXNpYmxlX3ApOworICBkZWZzdWJyICgmU21vdXNlX3Bvc2l0aW9uX2luX3Jvb3RfZnJh
bWUpOwogICBkZWZzdWJyICgmU2ZyYW1lX19zZXRfd2FzX2ludmlzaWJsZSk7CiAgIGRlZnN1
YnIgKCZTZnJhbWVfd2luZG93X3N0YXRlX2NoYW5nZSk7CiAgIGRlZnN1YnIgKCZTc2V0X2Zy
YW1lX3dpbmRvd19zdGF0ZV9jaGFuZ2UpOwpkaWZmIC0tZ2l0IGEvc3JjL2ZyYW1lLmggYi9z
cmMvZnJhbWUuaAppbmRleCBmZWE4YmFhNzMzMi4uNmJhY2YyYTNjNDkgMTAwNjQ0Ci0tLSBh
L3NyYy9mcmFtZS5oCisrKyBiL3NyYy9mcmFtZS5oCkBAIC0zMSw2ICszMSwxOSBAQCAjZGVm
aW5lIEVNQUNTX0ZSQU1FX0gKICAgdmVydGljYWxfc2Nyb2xsX2Jhcl9yaWdodAogfTsKIAor
ZW51bSBpbnRlcm5hbF9ib3JkZXJfcGFydAorICB7CisgICBJTlRFUk5BTF9CT1JERVJfTk9O
RSwKKyAgIElOVEVSTkFMX0JPUkRFUl9MRUZUX0VER0UsCisgICBJTlRFUk5BTF9CT1JERVJf
VE9QX0xFRlRfQ09STkVSLAorICAgSU5URVJOQUxfQk9SREVSX1RPUF9FREdFLAorICAgSU5U
RVJOQUxfQk9SREVSX1RPUF9SSUdIVF9DT1JORVIsCisgICBJTlRFUk5BTF9CT1JERVJfUklH
SFRfRURHRSwKKyAgIElOVEVSTkFMX0JPUkRFUl9CT1RUT01fUklHSFRfQ09STkVSLAorICAg
SU5URVJOQUxfQk9SREVSX0JPVFRPTV9FREdFLAorICAgSU5URVJOQUxfQk9SREVSX0JPVFRP
TV9MRUZUX0NPUk5FUiwKKyAgfTsKKwogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQogCiBl
bnVtIGZ1bGxzY3JlZW5fdHlwZQpAQCAtNTMsMTkgKzY2LDYgQEAgI2RlZmluZSBFTUFDU19G
UkFNRV9ICiAgIHpfZ3JvdXBfYWJvdmVfc3VzcGVuZGVkLAogfTsKIAotZW51bSBpbnRlcm5h
bF9ib3JkZXJfcGFydAotICB7Ci0gICBJTlRFUk5BTF9CT1JERVJfTk9ORSwKLSAgIElOVEVS
TkFMX0JPUkRFUl9MRUZUX0VER0UsCi0gICBJTlRFUk5BTF9CT1JERVJfVE9QX0xFRlRfQ09S
TkVSLAotICAgSU5URVJOQUxfQk9SREVSX1RPUF9FREdFLAotICAgSU5URVJOQUxfQk9SREVS
X1RPUF9SSUdIVF9DT1JORVIsCi0gICBJTlRFUk5BTF9CT1JERVJfUklHSFRfRURHRSwKLSAg
IElOVEVSTkFMX0JPUkRFUl9CT1RUT01fUklHSFRfQ09STkVSLAotICAgSU5URVJOQUxfQk9S
REVSX0JPVFRPTV9FREdFLAotICAgSU5URVJOQUxfQk9SREVSX0JPVFRPTV9MRUZUX0NPUk5F
UiwKLSAgfTsKLQogI2lmZGVmIE5TX0lNUExfQ09DT0EKIGVudW0gbnNfYXBwZWFyYW5jZV90
eXBlCiAgIHsKQEAgLTE4NzUsNyArMTg3NSw2IEBAICNkZWZpbmUgRU1BQ1NfQ0xBU1MgIkVt
YWNzIgogZXh0ZXJuIHZvaWQgc2V0X2ZyYW1lX21lbnViYXIgKHN0cnVjdCBmcmFtZSAqZiwg
Ym9vbCBkZWVwX3ApOwogZXh0ZXJuIHZvaWQgZnJhbWVfc2V0X21vdXNlX3BpeGVsX3Bvc2l0
aW9uIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBwaXhfeCwgaW50IHBpeF95KTsKIGV4dGVybiB2
b2lkIGZyZWVfZnJhbWVfbWVudWJhciAoc3RydWN0IGZyYW1lICopOwotZXh0ZXJuIGVudW0g
aW50ZXJuYWxfYm9yZGVyX3BhcnQgZnJhbWVfaW50ZXJuYWxfYm9yZGVyX3BhcnQgKHN0cnVj
dCBmcmFtZSAqZiwgaW50IHgsIGludCB5KTsKIAogI2lmIGRlZmluZWQgSEFWRV9YX1dJTkRP
V1MKIGV4dGVybiB2b2lkIHhfd21fc2V0X2ljb25fcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAq
LCBpbnQsIGludCk7CkBAIC0xOTAxLDYgKzE5MDAsOCBAQCBndWlfc2V0X2JpdG1hcF9pY29u
IChzdHJ1Y3QgZnJhbWUgKmYpCiAjZW5kaWYgLyogIUhBVkVfTlMgKi8KICNlbmRpZiAvKiBI
QVZFX1dJTkRPV19TWVNURU0gKi8KIAorZXh0ZXJuIGVudW0gaW50ZXJuYWxfYm9yZGVyX3Bh
cnQgZnJhbWVfaW50ZXJuYWxfYm9yZGVyX3BhcnQgKHN0cnVjdCBmcmFtZSAqZiwKKwkJCQkJ
CQkgICAgIGludCB4LCBpbnQgeSk7CiBleHRlcm4gYm9vbCBmcmFtZV9hbmNlc3Rvcl9wIChz
dHJ1Y3QgZnJhbWUgKmFmLCBzdHJ1Y3QgZnJhbWUgKmRmKTsKIAogSU5MSU5FIHZvaWQKZGlm
ZiAtLWdpdCBhL3NyYy9rZXlib2FyZC5jIGIvc3JjL2tleWJvYXJkLmMKaW5kZXggMmQ4YzQ1
YzA1ZWUuLjIzNDk2OWExNmYwIDEwMDY0NAotLS0gYS9zcmMva2V5Ym9hcmQuYworKysgYi9z
cmMva2V5Ym9hcmQuYwpAQCAtNTU1Miw3ICs1NTUyLDYgQEAgI2RlZmluZSBJU09fRlVOQ1RJ
T05fS0VZX09GRlNFVCAweGZlMDAKICAgU1lNQk9MX0lOREVYIChRcmlnaHRtb3N0KSwgU1lN
Qk9MX0lOREVYIChRZW5kX3Njcm9sbCksIFNZTUJPTF9JTkRFWCAoUXJhdGlvKQogfTsKIAot
I2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQogLyogQW4gYXJyYXkgb2Ygc3ltYm9sIGluZGV4
ZXMgb2YgaW50ZXJuYWwgYm9yZGVyIHBhcnRzLCBpbmRleGVkIGJ5IGFuIGVudW0KICAgIGlu
dGVybmFsX2JvcmRlcl9wYXJ0IHZhbHVlLiAgTm90ZSB0aGF0IFFuaWwgY29ycmVzcG9uZHMg
dG8KICAgIGludGVybmFsX2JvcmRlcl9wYXJ0X25vbmUgYW5kIHNob3VsZCBub3QgYXBwZWFy
IGluIExpc3AgZXZlbnRzLiAgKi8KQEAgLTU1NjMsNyArNTU2Miw2IEBAICNkZWZpbmUgSVNP
X0ZVTkNUSU9OX0tFWV9PRkZTRVQgMHhmZTAwCiAgIFNZTUJPTF9JTkRFWCAoUWJvdHRvbV9y
aWdodF9jb3JuZXIpLCBTWU1CT0xfSU5ERVggKFFib3R0b21fZWRnZSksCiAgIFNZTUJPTF9J
TkRFWCAoUWJvdHRvbV9sZWZ0X2Nvcm5lcikKIH07Ci0jZW5kaWYKIAogLyogQSB2ZWN0b3Is
IGluZGV4ZWQgYnkgYnV0dG9uIG51bWJlciwgZ2l2aW5nIHRoZSBkb3duLWdvaW5nIGxvY2F0
aW9uCiAgICBvZiBjdXJyZW50bHkgZGVwcmVzc2VkIGJ1dHRvbnMsIGJvdGggc2Nyb2xsIGJh
ciBhbmQgbm9uLXNjcm9sbCBiYXIuCkBAIC01NTk4LDYgKzU1OTYsOTQgQEAgI2RlZmluZSBJ
U09fRlVOQ1RJT05fS0VZX09GRlNFVCAweGZlMDAKIAogc3RhdGljIGludCBkb3VibGVfY2xp
Y2tfY291bnQ7CiAKK2VudW0gZnJhbWVfYm9yZGVyX3NpZGUKK3sKKyAgT05fTEVGVCwKKyAg
T05fVE9QLAorICBPTl9SSUdIVCwKKyAgT05fQk9UVE9NLAorICBPTl9OT05FCit9OworCisv
KiBIYW5kbGUgbWFrZV9saXNweV9ldmVudCB3aGVuIGEgdHR5IGNoaWxkIGZyYW1lJ3MgZGVj
b3JhdGlvbnMgc2hhbGwgYmUKKyAgIHVzZWQgaW4gbGlldSBvZiBpbnRlcm5hbCBib3JkZXJz
LiAgUiBkZW5vdGVzIHRoZSByb290IGZyYW1lIHVuZGVyCisgICBpbnZlc3RpZ2F0aW9uLCBN
WCBhbmQgTVkgYXJlIHRoZSBwb3NpdGlvbnMgb2YgdGhlIG1vdXNlIHJlbGF0aXZlIHRvCisg
ICBSLiAgV0lORE9XX09SX0ZSQU1FIGRlbm90ZXMgdGhlIGZyYW1lIHByZXZpb3VzbHkgcmVw
b3J0ZWQgYXMgdGhlCisgICBmcmFtZSB1bmRlciAoTVgsIE1ZKS4gIE5vdGU6IFRoZSBkZWNv
cmF0aW9ucyBvZiBhIGNoaWxkIGZyYW1lIGFyZQorICAgYWx3YXlzIGRyYXduIG91dHNpZGUg
dGhlIGNoaWxkIGZyYW1lLCBzbyBXSU5ET1dfT1JfRlJBTUUgaXMgY2VydGFpbmx5CisgICBu
b3QgdGhlIGZyYW1lIHdlIGFyZSBsb29raW5nIGZvci4gIE5laXRoZXIgaXMgUi4gIEEgY2Fu
ZGlkYXRlIGZyYW1lCisgICBpcyBhbnkgZnJhbWUgYnV0IFdJTkRPV19PUl9GUkFNRSBhbmQg
UiB3aG9zZSByb290IGlzIFIsIHdoaWNoIGlzIG5vdAorICAgZGVjb3JhdGVkIGFuZCBoYXMg
YSAnZHJhZy1pbnRlcm5hbC1ib3JkZXInIHBhcmFtZXRlci4gIElmIHdlIGZpbmQgYQorICAg
c3VpdGFibGUgZnJhbWUsIHNldCBXSU5ET1dfT1JfRlJBTUUgdG8gaXQgYW5kIFBPU04gdG8g
dGhlIHBhcnQgb2YgdGhlCisgICBpbnRlcm5hbCBib3JkZXIgY29ycmVzcG9uZGluZyB0byAo
TVgsIE1ZKSBvbiB0aGUgZnJhbWUgZm91bmQuICAqLworCitzdGF0aWMgdm9pZAorbWFrZV9s
aXNweV90dHlfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqciwgaW50IG14LCBpbnQgbXksCisJ
CQkgTGlzcF9PYmplY3QgKndpbmRvd19vcl9mcmFtZSwgTGlzcF9PYmplY3QgKnBvc24pCit7
CisgIGVudW0gZnJhbWVfYm9yZGVyX3NpZGUgc2lkZSA9IE9OX05PTkU7CisgIC8qIFdJTkRP
V19PUl9GUkFNRSBpcyB0aGUgd2luZG93IHdoZXJlIChNWCwgTVkpIGlzIGxvY2F0ZWQ6IEl0
cyBmcmFtZQorICAgICBOIGlzIGNlcnRhaW5seSBub3QgdGhlIGZyYW1lIHdlIGNhbiBkcmFn
IGJlY2F1c2UgdGhlIHBvc2l0aW9uIGlzCisgICAgIGluc2lkZS4gIEl0IGNhbiBiZSBhbiBh
cmJpdHJhcnkgZnJhbWUgd2hvc2Ugcm9vdCBpcyBSLiAgKi8KKyAgc3RydWN0IGZyYW1lICpu
ID0gV0lORE9XX1hGUkFNRSAoWFdJTkRPVyAoKndpbmRvd19vcl9mcmFtZSkpOworICBzdHJ1
Y3QgZnJhbWUgKmYgPSBOVUxMOworICBMaXNwX09iamVjdCB0YWlsLCBmcmFtZTsKKyAgaW50
IGl4LCBpeSA9IDA7CisKKyAgRk9SX0VBQ0hfRlJBTUUgKHRhaWwsIGZyYW1lKQorICAgIHsK
KyAgICAgIGYgPSBYRlJBTUUgKGZyYW1lKTsKKworICAgICAgaW50IGxlZnQgPSBmLT5sZWZ0
X3BvczsKKyAgICAgIGludCB0b3AgPSBmLT50b3BfcG9zOworICAgICAgaW50IHJpZ2h0ID0g
bGVmdCArIGYtPnBpeGVsX3dpZHRoOworICAgICAgaW50IGJvdHRvbSA9IHRvcCArIGYtPnBp
eGVsX2hlaWdodDsKKworICAgICAgaWYgKHJvb3RfZnJhbWUgKGYpID09IHIgJiYgZiAhPSBu
ICYmIGYgIT0gcgorCSAgJiYgIUZSQU1FX1VOREVDT1JBVEVEIChmKQorCSAgJiYgIU5JTFAg
KGdldF9mcmFtZV9wYXJhbSAoZiwgUWRyYWdfaW50ZXJuYWxfYm9yZGVyKSkpCisJeworCSAg
aWYgKGxlZnQgPT0gbXggKyAxICYmIG15ID49IHRvcCAmJiBteSA8PSBib3R0b20pCisJICAg
IHsKKwkgICAgICBzaWRlID0gT05fTEVGVDsKKwkgICAgICBpeCA9IDA7CisJICAgICAgaXkg
PSBteSAtIHRvcCArIDE7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwkgIGVsc2UgaWYgKHJp
Z2h0ID09IG14ICYmIG15ID49IHRvcCAmJiBteSA8PSBib3R0b20pCisJICAgIHsKKwkgICAg
ICBzaWRlID0gT05fUklHSFQ7CisJICAgICAgaXggPSBmLT5waXhlbF93aWR0aCAtIDE7CisJ
ICAgICAgaXkgPSBteSAtIHRvcCArIDE7CisJICAgICAgYnJlYWs7CisJICAgIH0KKwkgIGVs
c2UgaWYgKHRvcCA9PSBteSArIDEgJiYgbXggPj0gbGVmdCAmJiBteCA8PSByaWdodCkKKwkg
ICAgeworCSAgICAgIHNpZGUgPSBPTl9UT1A7CisJICAgICAgaXggPSBteCAtIGxlZnQgKyAx
OworCSAgICAgIGl5ID0gMDsKKwkgICAgICBicmVhazsKKwkgICAgfQorCSAgZWxzZSBpZiAo
Ym90dG9tID09IG15ICYmIG14ID49IGxlZnQgJiYgbXggPD0gcmlnaHQpCisJICAgIHsKKwkg
ICAgICBzaWRlID0gT05fQk9UVE9NOworCSAgICAgIGl4ID0gbXggLSBsZWZ0ICsgMTsKKwkg
ICAgICBpeSA9IGYtPnBpeGVsX2hlaWdodCAtIDE7CisJICAgICAgYnJlYWs7CisJICAgIH0K
Kwl9CisgICAgfQorCisgIGlmIChzaWRlICE9IE9OX05PTkUpCisgICAgeworICAgICAgZW51
bSBpbnRlcm5hbF9ib3JkZXJfcGFydCBwYXJ0CisJPSBmcmFtZV9pbnRlcm5hbF9ib3JkZXJf
cGFydCAoZiwgaXgsIGl5KTsKKworICAgICAgWFNFVEZSQU1FICgqd2luZG93X29yX2ZyYW1l
LCBmKTsKKyAgICAgICpwb3NuID0gYnVpbHRpbl9saXNwX3N5bWJvbCAoaW50ZXJuYWxfYm9y
ZGVyX3BhcnRzW3BhcnRdKTsKKyAgICB9Cit9CisKIC8qIFggYW5kIFkgYXJlIGZyYW1lLXJl
bGF0aXZlIGNvb3JkaW5hdGVzIGZvciBhIGNsaWNrIG9yIHdoZWVsIGV2ZW50LgogICAgUmV0
dXJuIGEgTGlzcC1zdHlsZSBldmVudCBsaXN0LiAgKi8KIApAQCAtNTY3Niw3ICs1NzYyLDE0
IEBAIG1ha2VfbGlzcHlfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmplY3Qg
eCwgTGlzcF9PYmplY3QgeSwKICAgICAgIHdpbmRvd19vcl9mcmFtZSA9IFFuaWw7CS8qIHNl
ZSBhYm92ZSAqLwogICAgIH0KIAotICBpZiAoV0lORE9XUCAod2luZG93X29yX2ZyYW1lKSkK
KyAgaWYgKFdJTkRPV1AgKHdpbmRvd19vcl9mcmFtZSkgJiYgaXNfdHR5X2ZyYW1lIChmKQor
ICAgICAgJiYgKGlzX3R0eV9yb290X2ZyYW1lX3dpdGhfdmlzaWJsZV9jaGlsZCAoZikKKwkg
IHx8IGlzX3R0eV9jaGlsZF9mcmFtZSAoZikpKQorICAgIG1ha2VfbGlzcHlfdHR5X3Bvc2l0
aW9uIChyb290X2ZyYW1lIChmKSwgbXgsIG15LCAmd2luZG93X29yX2ZyYW1lLCAmcG9zbik7
CisKKyAgaWYgKCFOSUxQIChwb3NuKSkKKyAgICA7CisgIGVsc2UgaWYgKFdJTkRPV1AgKHdp
bmRvd19vcl9mcmFtZSkpCiAgICAgewogICAgICAgLyogSXQncyBhIGNsaWNrIGluIHdpbmRv
dyBXSU5ET1cgYXQgZnJhbWUgY29vcmRpbmF0ZXMgKFgsWSkgICovCiAgICAgICBzdHJ1Y3Qg
d2luZG93ICp3ID0gWFdJTkRPVyAod2luZG93X29yX2ZyYW1lKTsKQEAgLTU4NzksOSArNTk3
Miw3IEBAIG1ha2VfbGlzcHlfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmpl
Y3QgeCwgTGlzcF9PYmplY3QgeSwKICAgICAgIHhyZXQgPSBteDsKICAgICAgIHlyZXQgPSBt
eTsKIAotI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQotICAgICAgaWYgKEZSQU1FX1dJTkRP
V19QIChmKQotCSAgJiYgRlJBTUVfTElWRV9QIChmKQorICAgICAgaWYgKEZSQU1FX0xJVkVf
UCAoZikKIAkgICYmIE5JTFAgKHBvc24pCiAJICAmJiBGUkFNRV9JTlRFUk5BTF9CT1JERVJf
V0lEVEggKGYpID4gMAogCSAgJiYgIU5JTFAgKGdldF9mcmFtZV9wYXJhbSAoZiwgUWRyYWdf
aW50ZXJuYWxfYm9yZGVyKSkpCkBAIC01ODkxLDcgKzU5ODIsNiBAQCBtYWtlX2xpc3B5X3Bv
c2l0aW9uIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IHgsIExpc3BfT2JqZWN0IHks
CiAKIAkgIHBvc24gPSBidWlsdGluX2xpc3Bfc3ltYm9sIChpbnRlcm5hbF9ib3JkZXJfcGFy
dHNbcGFydF0pOwogCX0KLSNlbmRpZgogICAgIH0KICAgZWxzZQogICAgIHsKZGlmZiAtLWdp
dCBhL3NyYy9rZXltYXAuYyBiL3NyYy9rZXltYXAuYwppbmRleCA1NjkxYjM0YzQwZC4uYzk4
YjgzZGI2OGQgMTAwNjQ0Ci0tLSBhL3NyYy9rZXltYXAuYworKysgYi9zcmMva2V5bWFwLmMK
QEAgLTE2NTIsNyArMTY1Miw4IEBAIERFRlVOICgiY3VycmVudC1hY3RpdmUtbWFwcyIsIEZj
dXJyZW50X2FjdGl2ZV9tYXBzLCBTY3VycmVudF9hY3RpdmVfbWFwcywKICAgICAgICBkb2M6
IC8qIFJldHVybiBhIGxpc3Qgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUga2V5bWFwcy4KIE9M
UCBpZiBub24tbmlsIGluZGljYXRlcyB0aGF0IHdlIHNob3VsZCBvYmV5IGBvdmVycmlkaW5n
LWxvY2FsLW1hcCcgYW5kCiBgb3ZlcnJpZGluZy10ZXJtaW5hbC1sb2NhbC1tYXAnLiAgUE9T
SVRJT04gY2FuIHNwZWNpZnkgYSBjbGljayBwb3NpdGlvbgotbGlrZSBpbiB0aGUgcmVzcGVj
dGl2ZSBhcmd1bWVudCBvZiBga2V5LWJpbmRpbmcnLiAgKi8pCitsaWtlIGluIHRoZSByZXNw
ZWN0aXZlIGFyZ3VtZW50IG9mIGBrZXktYmluZGluZycgb3IgYSBsaXZlIHdpbmRvdyB3aGlj
aAorbWVhbnMgdG8gcmV0dXJuIHRoZSBhY3RpdmUgbWFwcyBmb3IgdGhhdCB3aW5kb3cncyBi
dWZmZXIuICAqLykKICAgKExpc3BfT2JqZWN0IG9scCwgTGlzcF9PYmplY3QgcG9zaXRpb24p
CiB7CiAgIHNwZWNwZGxfcmVmIGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKQEAgLTE2ODIs
NiArMTY4MywxNiBAQCBERUZVTiAoImN1cnJlbnQtYWN0aXZlLW1hcHMiLCBGY3VycmVudF9h
Y3RpdmVfbWFwcywgU2N1cnJlbnRfYWN0aXZlX21hcHMsCiAJICBzZXRfYnVmZmVyX2ludGVy
bmFsIChYQlVGRkVSIChYV0lORE9XICh3aW5kb3cpLT5jb250ZW50cykpOwogCX0KICAgICB9
CisgIGVsc2UgaWYgKFdJTkRPV19MSVZFX1AgKHBvc2l0aW9uKSkKKyAgICB7CisgICAgICBp
ZiAoQlVGRkVSUCAoWFdJTkRPVyAocG9zaXRpb24pLT5jb250ZW50cykKKwkgICYmIFhCVUZG
RVIgKFhXSU5ET1cgKHBvc2l0aW9uKS0+Y29udGVudHMpICE9IGN1cnJlbnRfYnVmZmVyKQor
CXsKKwkgIC8qIFNlZSBjb21tZW50IGFib3ZlLiAgKi8KKwkgIHJlY29yZF91bndpbmRfY3Vy
cmVudF9idWZmZXIgKCk7CisJICBzZXRfYnVmZmVyX2ludGVybmFsIChYQlVGRkVSIChYV0lO
RE9XIChwb3NpdGlvbiktPmNvbnRlbnRzKSk7CisJfQorICAgIH0KIAogICBpZiAoIU5JTFAg
KG9scCkKICAgICAgIC8qIFRoZSBkb2Mgc2FpZCB0aGF0IG92ZXJyaWRpbmctdGVybWluYWwt
bG9jYWwtbWFwIHNob3VsZApkaWZmIC0tZ2l0IGEvc3JjL3Rlcm0uYyBiL3NyYy90ZXJtLmMK
aW5kZXggZjMwN2Q3MDkzMTYuLmNmNDhmYTVhNzM0IDEwMDY0NAotLS0gYS9zcmMvdGVybS5j
CisrKyBiL3NyYy90ZXJtLmMKQEAgLTI2MjAsNyArMjYyMCw3IEBAIHR0eV9mcmFtZV9hdCAo
aW50IHgsIGludCB5LCBpbnQgKmN4LCBpbnQgKmN5KQogfQogCiBERUZVTiAoInR0eS1mcmFt
ZS1hdCIsIEZ0dHlfZnJhbWVfYXQsIFN0dHlfZnJhbWVfYXQsIDIsIDIsIDAsCi0gICAgICAg
ZG9jIDogLyogUmV0dXJuIHR0eSBmcmFtZSBjb250YWluaW5nIGFic29sdXRlIHBpeGVsIHBv
c2l0aW9uIChYLCBZKS4KKyAgICAgICBkb2M6IC8qIFJldHVybiB0dHkgZnJhbWUgY29udGFp
bmluZyBhYnNvbHV0ZSBwaXhlbCBwb3NpdGlvbiAoWCwgWSkuCiBWYWx1ZSBpcyBuaWwgaWYg
bm8gZnJhbWUgZm91bmQuICBPdGhlcndpc2UgaXQgaXMgYSBsaXN0IChGUkFNRSBDWCBDWSks
CiB3aGVyZSBGUkFNRSBpcyB0aGUgZnJhbWUgY29udGFpbmluZyAoWCwgWSkgYW5kIENYIGFu
ZCBDWSBhcmUgWCBhbmQgWQogcmVsYXRpdmUgdG8gRlJBTUUuICAqLykKZGlmZiAtLWdpdCBh
L3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMKaW5kZXggMzZlODJmODczYWIuLjdkNTEzMTJm
NWM3IDEwMDY0NAotLS0gYS9zcmMveGRpc3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAtMTE0
Nyw3ICsxMTQ3LDcgQEAgI2RlZmluZSBUSElOX1NQQUNFX1dJRFRIIDEKIAkJCQkgc3RydWN0
IGdseXBoX21hdHJpeCAqLCBwdHJkaWZmX3QsIHB0cmRpZmZfdCwKIAkJCQkgaW50LCBpbnQp
Owogc3RhdGljIGJvb2wgY3Vyc29yX3Jvd19mdWxseV92aXNpYmxlX3AgKHN0cnVjdCB3aW5k
b3cgKiwgYm9vbCwgYm9vbCwgYm9vbCk7Ci1zdGF0aWMgYm9vbCB1cGRhdGVfbWVudV9iYXIg
KHN0cnVjdCBmcmFtZSAqLCBib29sLCBib29sKTsKK3N0YXRpYyBib29sIHVwZGF0ZV9tZW51
X2JhciAoc3RydWN0IGZyYW1lICosIGJvb2wsIGJvb2wsIHN0cnVjdCB3aW5kb3cgKik7CiBz
dGF0aWMgYm9vbCB0cnlfd2luZG93X3JldXNpbmdfY3VycmVudF9tYXRyaXggKHN0cnVjdCB3
aW5kb3cgKik7CiBzdGF0aWMgaW50IHRyeV93aW5kb3dfaWQgKHN0cnVjdCB3aW5kb3cgKik7
CiBzdGF0aWMgdm9pZCBtYXliZV9wcm9kdWNlX2xpbmVfbnVtYmVyIChzdHJ1Y3QgaXQgKik7
CkBAIC0xNDA2MiwxMyArMTQwNjIsMzIgQEAgcHJlcGFyZV9tZW51X2JhcnMgKHZvaWQpCiAg
ICAgICAvKiBUcnVlIG1lYW5zIHRoYXQgdXBkYXRlX21lbnVfYmFyIGhhcyBydW4gaXRzIGhv
b2tzCiAJIHNvIGFueSBmdXJ0aGVyIGNhbGxzIHRvIHVwZGF0ZV9tZW51X2JhciBzaG91bGRu
J3QgZG8gc28gYWdhaW4uICAqLwogICAgICAgYm9vbCBtZW51X2Jhcl9ob29rc19ydW4gPSBm
YWxzZTsKKyAgICAgIHN0cnVjdCB3aW5kb3cgKnN3ID0gWFdJTkRPVyAoc2VsZWN0ZWRfd2lu
ZG93KTsKKyAgICAgIHN0cnVjdCBmcmFtZSAqc2YgPSBXSU5ET1dfWEZSQU1FIChzdyk7Cisg
ICAgICBzdHJ1Y3QgZnJhbWUgKnJmID0gTlVMTDsKKworICAgICAgaWYgKEZSQU1FX1BBUkVO
VF9GUkFNRSAoc2YpICYmICFGUkFNRV9XSU5ET1dfUCAoc2YpCisJICAmJiBGUkFNRV9NRU5V
X0JBUl9MSU5FUyAoc2YpID09IDAKKwkgICYmIEZSQU1FX01FTlVfQkFSX0xJTkVTIChyZiA9
IHJvb3RfZnJhbWUgKHNmKSkgIT0gMAorCSAgJiYgTklMUCAoRmRlZmF1bHRfdmFsdWUgKFF0
dHlfbWVudV9vcGVuX3VzZV90bW0pKSkKKwkvKiBJZiB0aGUgc2VsZWN0ZWQgd2luZG93J3Mg
ZnJhbWUgaXMgYSB0dHkgY2hpbGQgZnJhbWUgd2l0aG91dAorCSAgIG1lbnUgYmFyLCB0aGF0
IGZyYW1lJ3Mgcm9vdCBmcmFtZSBoYXMgYSBtZW51IGJhciBhbmQKKwkgICAndHR5LW1lbnUt
b3Blbi11c2UtdG1tJyBpcyBuaWwsIHVwZGF0ZSB0aGUgbWVudSBiYXIgb2YgdGhlCisJICAg
cm9vdCBmcmFtZSBmcm9tIHRoZSBzZWxlY3RlZCB3aW5kb3cuICAqLworCXNmID0gcmY7Cisg
ICAgICBlbHNlCisJeworCSAgc2YgPSBOVUxMOworCSAgc3cgPSBOVUxMOworCX0KIAogICAg
ICAgcmVjb3JkX3Vud2luZF9zYXZlX21hdGNoX2RhdGEgKCk7CiAKICAgICAgIEZPUl9FQUNI
X0ZSQU1FICh0YWlsLCBmcmFtZSkKIAl7CiAJICBzdHJ1Y3QgZnJhbWUgKmYgPSBYRlJBTUUg
KGZyYW1lKTsKLQkgIHN0cnVjdCB3aW5kb3cgKncgPSBYV0lORE9XIChGUkFNRV9TRUxFQ1RF
RF9XSU5ET1cgKGYpKTsKKwkgIHN0cnVjdCB3aW5kb3cgKncKKwkgICAgPSBzZiA9PSBmID8g
c3cgOiBYV0lORE9XIChGUkFNRV9TRUxFQ1RFRF9XSU5ET1cgKGYpKTsKIAogCSAgLyogSWdu
b3JlIHRvb2x0aXAgZnJhbWUuICAqLwogCSAgaWYgKEZSQU1FX1RPT0xUSVBfUCAoZikpCkBA
IC0xNDA4MCw4ICsxNDA5OSw4IEBAIHByZXBhcmVfbWVudV9iYXJzICh2b2lkKQogCSAgICAg
ICYmICFYQlVGRkVSICh3LT5jb250ZW50cyktPnRleHQtPnJlZGlzcGxheSkKIAkgICAgY29u
dGludWU7CiAKLQkgIGlmICghRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSkKLQkgICAgbWVudV9i
YXJfaG9va3NfcnVuID0gdXBkYXRlX21lbnVfYmFyIChmLCBmYWxzZSwgbWVudV9iYXJfaG9v
a3NfcnVuKTsKKwkgIG1lbnVfYmFyX2hvb2tzX3J1bgorCSAgICA9IHVwZGF0ZV9tZW51X2Jh
ciAoZiwgZmFsc2UsIG1lbnVfYmFyX2hvb2tzX3J1biwgdyk7CiAKIAkgIHVwZGF0ZV90YWJf
YmFyIChmLCBmYWxzZSk7CiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCkBAIC0xNDA5Mywx
MCArMTQxMTIsMjEgQEAgcHJlcGFyZV9tZW51X2JhcnMgKHZvaWQpCiAgICAgfQogICBlbHNl
CiAgICAgewotICAgICAgc3RydWN0IGZyYW1lICpzZiA9IFNFTEVDVEVEX0ZSQU1FICgpOwor
ICAgICAgc3RydWN0IHdpbmRvdyAqc3cgPSBYV0lORE9XIChzZWxlY3RlZF93aW5kb3cpOwor
ICAgICAgc3RydWN0IGZyYW1lICpzZiA9IFdJTkRPV19YRlJBTUUgKHN3KTsKKyAgICAgIHN0
cnVjdCBmcmFtZSAqcmYgPSBOVUxMOwogCi0gICAgICBpZiAoIUZSQU1FX1BBUkVOVF9GUkFN
RSAoc2YpKQotCXVwZGF0ZV9tZW51X2JhciAoc2YsIHRydWUsIGZhbHNlKTsKKyAgICAgIGlm
IChGUkFNRV9QQVJFTlRfRlJBTUUgKHNmKSAmJiAhRlJBTUVfV0lORE9XX1AgKHNmKQorCSAg
JiYgRlJBTUVfTUVOVV9CQVJfTElORVMgKHNmKSA9PSAwCisJICAmJiBGUkFNRV9NRU5VX0JB
Ul9MSU5FUyAocmYgPSByb290X2ZyYW1lIChzZikpICE9IDAKKwkgICYmIE5JTFAgKEZkZWZh
dWx0X3ZhbHVlIChRdHR5X21lbnVfb3Blbl91c2VfdG1tKSkpCisJLyogSWYgdGhlIHNlbGVj
dGVkIHdpbmRvdydzIGZyYW1lIGlzIGEgdHR5IGNoaWxkIGZyYW1lIHdpdGhvdXQKKwkgICBt
ZW51IGJhciwgdGhhdCBmcmFtZSdzIHJvb3QgZnJhbWUgaGFzIGEgbWVudSBiYXIgYW5kCisJ
ICAgJ3R0eS1tZW51LW9wZW4tdXNlLXRtbScgaXMgbmlsLCB1cGRhdGUgdGhlIG1lbnUgYmFy
IG9mIHRoZQorCSAgIHJvb3QgZnJhbWUgZnJvbSB0aGUgc2VsZWN0ZWQgd2luZG93LiAgKi8K
KwlzZiA9IHJmOworCisgICAgICB1cGRhdGVfbWVudV9iYXIgKHNmLCB0cnVlLCBmYWxzZSwg
c3cpOwogCiAgICAgICB1cGRhdGVfdGFiX2JhciAoc2YsIHRydWUpOwogI2lmZGVmIEhBVkVf
V0lORE9XX1NZU1RFTQpAQCAtMTQxMTgsMjAgKzE0MTQ4LDE0IEBAIHByZXBhcmVfbWVudV9i
YXJzICh2b2lkKQogICAgdXBkYXRlZCB2YWx1ZSBvZiB0aGlzIGZsYWcsIHRvIHBhc3MgdG8g
dGhlIG5leHQgY2FsbC4gICovCiAKIHN0YXRpYyBib29sCi11cGRhdGVfbWVudV9iYXIgKHN0
cnVjdCBmcmFtZSAqZiwgYm9vbCBzYXZlX21hdGNoX2RhdGEsIGJvb2wgaG9va3NfcnVuKQor
dXBkYXRlX21lbnVfYmFyIChzdHJ1Y3QgZnJhbWUgKmYsIGJvb2wgc2F2ZV9tYXRjaF9kYXRh
LCBib29sIGhvb2tzX3J1biwgc3RydWN0IHdpbmRvdyAqdykKIHsKLSAgTGlzcF9PYmplY3Qg
d2luZG93OwotICBzdHJ1Y3Qgd2luZG93ICp3OwotCiAgIC8qIElmIGNhbGxlZCByZWN1cnNp
dmVseSBkdXJpbmcgYSBtZW51IHVwZGF0ZSwgZG8gbm90aGluZy4gIFRoaXMgY2FuCiAgICAg
IGhhcHBlbiB3aGVuLCBmb3IgaW5zdGFuY2UsIGFuIGFjdGl2YXRlLW1lbnViYXItaG9vayBj
YXVzZXMgYQogICAgICByZWRpc3BsYXkuICAqLwogICBpZiAoaW5oaWJpdF9tZW51YmFyX3Vw
ZGF0ZSkKICAgICByZXR1cm4gaG9va3NfcnVuOwogCi0gIHdpbmRvdyA9IEZSQU1FX1NFTEVD
VEVEX1dJTkRPVyAoZik7Ci0gIHcgPSBYV0lORE9XICh3aW5kb3cpOwotCiAgIGlmIChGUkFN
RV9XSU5ET1dfUCAoZikKICAgICAgID8KICNpZmRlZiBIQVZFX0VYVF9NRU5VX0JBUgpAQCAt
MjEwODgsMjQgKzIxMTEyLDMzIEBAIHJlZGlzcGxheV93aW5kb3cgKExpc3BfT2JqZWN0IHdp
bmRvdywgYm9vbCBqdXN0X3RoaXNfb25lX3ApCiAKICAgLyogV2hlbiB3ZSByZWFjaCBhIGZy
YW1lJ3Mgc2VsZWN0ZWQgd2luZG93LCByZWRvIHRoZSBmcmFtZSdzIG1lbnUKICAgICAgYmFy
LCB0b29sIGJhciwgdGFiLWJhciwgYW5kIHRoZSBmcmFtZSdzIHRpdGxlLiAgKi8KLSAgaWYg
KHVwZGF0ZV9tb2RlX2xpbmUKLSAgICAgICYmIEVRIChGUkFNRV9TRUxFQ1RFRF9XSU5ET1cg
KGYpLCB3aW5kb3cpKQorICBpZiAodXBkYXRlX21vZGVfbGluZSAmJiBFUSAoRlJBTUVfU0VM
RUNURURfV0lORE9XIChmKSwgd2luZG93KSkKICAgICB7Ci0gICAgICBib29sIHJlZGlzcGxh
eV9tZW51X3A7Ci0KICAgICAgIGlmIChGUkFNRV9XSU5ET1dfUCAoZikpCiAJewogI2lmZGVm
IEhBVkVfRVhUX01FTlVfQkFSCi0JICByZWRpc3BsYXlfbWVudV9wID0gRlJBTUVfRVhURVJO
QUxfTUVOVV9CQVIgKGYpOworCSAgaWYgKEZSQU1FX0VYVEVSTkFMX01FTlVfQkFSIChmKSkK
KwkgICAgZGlzcGxheV9tZW51X2JhciAodyk7CiAjZWxzZQotCSAgcmVkaXNwbGF5X21lbnVf
cCA9IEZSQU1FX01FTlVfQkFSX0xJTkVTIChmKSA+IDA7CisJICBpZiAoRlJBTUVfTUVOVV9C
QVJfTElORVMgKGYpID4gMCkKKwkgICAgZGlzcGxheV9tZW51X2JhciAodyk7CiAjZW5kaWYK
IAl9CiAgICAgICBlbHNlCi0gICAgICAgIHJlZGlzcGxheV9tZW51X3AgPSBGUkFNRV9NRU5V
X0JBUl9MSU5FUyAoZikgPiAwOworCXsKKwkgIHN0cnVjdCBmcmFtZSAqcmYgPSBOVUxMOwog
Ci0gICAgICBpZiAocmVkaXNwbGF5X21lbnVfcCkKLSAgICAgICAgZGlzcGxheV9tZW51X2Jh
ciAodyk7CisJICBpZiAoRlJBTUVfUEFSRU5UX0ZSQU1FIChmKQorCSAgICAgICYmIEZSQU1F
X01FTlVfQkFSX0xJTkVTIChmKSA9PSAwCisJICAgICAgJiYgRlJBTUVfTUVOVV9CQVJfTElO
RVMgKHJmID0gcm9vdF9mcmFtZSAoZikpICE9IDAKKwkgICAgICAmJiBOSUxQIChGZGVmYXVs
dF92YWx1ZSAoUXR0eV9tZW51X29wZW5fdXNlX3RtbSkpKQorCSAgICAvKiBJZiBGIGlzIGEg
dHR5IGNoaWxkIGZyYW1lIHdpdGhvdXQgbWVudSBiYXIsIHRoYXQgZnJhbWUncyByb290CisJ
ICAgICAgIGZyYW1lIGhhcyBhIG1lbnUgYmFyIGFuZCAndHR5LW1lbnUtb3Blbi11c2UtdG1t
JyBpcyBuaWwsCisJICAgICAgIGRpc3BsYXkgdGhlIG1lbnUgYmFyIG9mIHRoZSByb290IGZy
YW1lJ3Mgc2VsZWN0ZWQgd2luZG93LiAgKi8KKwkgICAgZGlzcGxheV9tZW51X2JhciAoWFdJ
TkRPVyAoRlJBTUVfU0VMRUNURURfV0lORE9XIChyZikpKTsKKwkgIGVsc2UgaWYgKEZSQU1F
X01FTlVfQkFSX0xJTkVTIChmKSA+IDApCisJICAgIGRpc3BsYXlfbWVudV9iYXIgKHcpOwor
CX0KIAogI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQogICAgICAgaWYgKEZSQU1FX1dJTkRP
V19QIChmKSkKQEAgLTI3MzQ3LDEwICsyNzM4MCwxOSBAQCBkaXNwbGF5X3R0eV9tZW51X2l0
ZW0gKGNvbnN0IGNoYXIgKml0ZW1fdGV4dCwgaW50IHdpZHRoLCBpbnQgZmFjZV9pZCwKIHsK
ICAgc3RydWN0IGl0IGl0OwogICBzdHJ1Y3QgZnJhbWUgKmYgPSBTRUxFQ1RFRF9GUkFNRSAo
KTsKLSAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cgKGYtPnNlbGVjdGVkX3dpbmRvdyk7
CiAgIHN0cnVjdCBnbHlwaF9yb3cgKnJvdzsKICAgc2l6ZV90IGl0ZW1fbGVuID0gc3RybGVu
IChpdGVtX3RleHQpOwogCisgIHN0cnVjdCBmcmFtZSAqcmYgPSBOVUxMOworCisgIGlmIChG
UkFNRV9QQVJFTlRfRlJBTUUgKGYpICYmICFGUkFNRV9XSU5ET1dfUCAoZikKKyAgICAgICYm
IEZSQU1FX01FTlVfQkFSX0xJTkVTIChmKSA9PSAwCisgICAgICAmJiBGUkFNRV9NRU5VX0JB
Ul9MSU5FUyAocmYgPSByb290X2ZyYW1lIChmKSkgIT0gMAorICAgICAgJiYgTklMUCAoRmRl
ZmF1bHRfdmFsdWUgKFF0dHlfbWVudV9vcGVuX3VzZV90bW0pKSkKKyAgICBmID0gcmY7CisK
KyAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cgKGYtPnNlbGVjdGVkX3dpbmRvdyk7CisK
ICAgZWFzc2VydCAoRlJBTUVfVEVSTUNBUF9QIChmKSk7CiAKICAgLyogRG9uJ3Qgd3JpdGUg
YmV5b25kIHRoZSBtYXRyaXgncyBsYXN0IHJvdy4gIFRoaXMgY2FuIGhhcHBlbiBmb3IKQEAg
LTM4NDY2LDYgKzM4NTA4LDcgQEAgc3ltc19vZl94ZGlzcCAodm9pZCkKICAgREVGU1lNIChR
bmhkcmFnLCAibmhkcmFnIik7CiAgIERFRlNZTSAoUXZkcmFnLCAidmRyYWciKTsKICAgREVG
U1lNIChRaG91cmdsYXNzLCAiaG91cmdsYXNzIik7CisgIERFRlNZTSAoUXR0eV9tZW51X29w
ZW5fdXNlX3RtbSwgInR0eS1tZW51LW9wZW4tdXNlLXRtbSIpOwogfQogCiAK

--------------OonywoDpVCk8BD8QQlfCUFVy--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 16:13:20 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 02 11:13:20 2025
Received: from localhost ([127.0.0.1]:35936 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tecb1-0006FA-Qt
	for submit <at> debbugs.gnu.org; Sun, 02 Feb 2025 11:13:20 -0500
Received: from mail-ej1-x62d.google.com ([2a00:1450:4864:20::62d]:47150)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tecay-0006Eu-Ry
 for 75056 <at> debbugs.gnu.org; Sun, 02 Feb 2025 11:13:17 -0500
Received: by mail-ej1-x62d.google.com with SMTP id
 a640c23a62f3a-aaeec07b705so578142366b.2
 for <75056 <at> debbugs.gnu.org>; Sun, 02 Feb 2025 08:13:16 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738512790; x=1739117590; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=g8XVo99/06dSvX/41vne722OBTTniXuN+35jXCHly7w=;
 b=DpImTL0ynPYT9O5hGRLL4hy4QNeIR6hsXx/d0DTKjo8Zs0WgLOxet7xwMsHV7Dc/cc
 Opf7qEuSlvNKhh5R9saMtj9FB8WQz3pgmx0cQb7Xo04pvR9yv0MTD+Zp0BBmcWrLZbRb
 m0ZJV5zjYrnopNHAYKak7SWv3rZczTBJzLt0lod/zsUotTOSTP4chZjkqzqC5HRYJPxe
 MnbiNAkQJUgTAl+xjvTdYJeI4w/x4McEIfFJw8CDSGTPuwHaHfibuJSpEskW0GKFQnYx
 /IqdgFmhlfAhjVPmoh8cuP8lin7Oo8KMBBlw46XgAB7q35weAVybdLT6S13gGsn6BFfQ
 ydJQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738512790; x=1739117590;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=g8XVo99/06dSvX/41vne722OBTTniXuN+35jXCHly7w=;
 b=QL1MDzo6EyXPK3j1QHVCJYybcZF7PQL/OIsoUJuBmyDHRr+GXO/hKHML65TgXabU8e
 5ab/+j8iUwWmFHBwIS6WiCgFbF+0IphIgRJB0V2AZj6NnNcUVwffMC/uoV3VFm2KYUSS
 LZvWngsqT7oqL9wouKf+LMsul2hy1wRWJHFf+pD/e5IbhqkE1D0zFFXzJmwvkGv/RGd4
 +Ke9SEw6vDBtvncj6fJ/8fLZm5MC3zTwZKB2c4tcRqr1Kh//kZGXn+fGrVu/lskHl2rG
 +96+YQw3pZcEGpmQJimliDv+JnAN9OGnWLVLkzF58Le1u98iMgs/vLcuNOcoPwnOSqQY
 aNaQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCVkoPsqOVH0JKwpuATqxvnUCJ4zGpx/q7wPV8zZGnKv/WJTNPlmhAKQkXs9QkPIx4dwgEeBWw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YynT9HxORp7xtmDfdwhw4VolcPTCnTS/NdDCWUwfegLtgAJpy/8
 gyj/VyazeyLjMiEbIrSmnbeLOfhli3W9YlNuUuNZ2fUPHzYud3yv1fopGg==
X-Gm-Gg: ASbGnctrc4HKE7f0sWcJ8AHn0GkGNJjvO77pRcGSwRGBtUbD5yRlSsIiCVnEz19zZ8C
 hRzygzgVgSj2ID6T9kaCnSecKWtmzLDR8w5Af/DM2Lq/ajtIGxxZVonoTJzaeU1wVlG0Wce053O
 gQkjVwbi5v3t071OGLMK+th1JIvzRMagH+QHv5YcxyaQ5paHSQ+HHxjfTihOvBy5A0STrW5aFqn
 VlRmJdgvmnQT3weiJQhpz1UXsflmJg9SpUkyp4ozyJ67SbKpXgbJq0rfWJpS6SdZpCpvCMkFLUj
 RCzLGgEUjsPDY9MOsv3Ob7A4xtSBcXfmRtVaweJvgAfnvYuvYcdOMLtDrvYG/qmeQHomk90quoX
 9SXigaf7FnwwaYm/fMpVmqOmD
X-Google-Smtp-Source: AGHT+IGuFRTB4o8W/dl82yhWJReiAp5ktxbq+N3yWCIL9AslK+yP2P7RD2ofpGZcpba9mkUiaduNLw==
X-Received: by 2002:a17:906:730a:b0:ab3:a4f6:7549 with SMTP id
 a640c23a62f3a-ab6cfdbdcd9mr2210162066b.45.1738512790279; 
 Sun, 02 Feb 2025 08:13:10 -0800 (PST)
Received: from pro2 (p200300e0b71e2e00b17d1337b17de790.dip0.t-ipconnect.de.
 [2003:e0:b71e:2e00:b17d:1337:b17d:e790])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5dc723efc45sm5983487a12.32.2025.02.02.08.13.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 02 Feb 2025 08:13:09 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <5f9f18dd-4272-4b8d-a929-1d3967197696@HIDDEN> (martin rudalics's
 message of "Sun, 2 Feb 2025 10:43:41 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m2tt9dkl7x.fsf@HIDDEN>
 <e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN>
 <m2jza8vh0y.fsf@HIDDEN>
 <5f9f18dd-4272-4b8d-a929-1d3967197696@HIDDEN>
Date: Sun, 02 Feb 2025 17:13:09 +0100
Message-ID: <m2ikpss4tm.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

> The "All" on the mode line has the final "l" never covered, not even on
> GUI frames.

For the "All" not being displayed correctly I've submitted bug#76014.
Seems to be broken in master for a longer time, and before tty child
frames. Maybe the bug rings a bell for someone.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 10:08:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 02 05:08:21 2025
Received: from localhost ([127.0.0.1]:33204 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1teWto-0002MH-VI
	for submit <at> debbugs.gnu.org; Sun, 02 Feb 2025 05:08:21 -0500
Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:61942)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1teWtn-0002Lz-0w
 for 75056 <at> debbugs.gnu.org; Sun, 02 Feb 2025 05:08:19 -0500
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-4368a293339so40133625e9.3
 for <75056 <at> debbugs.gnu.org>; Sun, 02 Feb 2025 02:08:18 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738490892; x=1739095692; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=mwXMZQeVFx58sBK6jeTr6xdHZjo4SuyfO7fiZmskiqs=;
 b=flLQHlNcsqKmZZUVa3rWdFs1raRrADfeFYzjGhX5A4iMkIJDhIjfz+Otqw+DM5UjJb
 S7VuoWqtiFl3Xs4vmS/h4W27bhqI7smEVKX/N8sXgA9FRTqhdGc5Xs9uJPI2P/Y/DHEO
 1RRx4xQD+of8w3BHtFxZ0Nx40mXyjQ/tprQna+6RdczuUrpoH3sAQz+yS7izOQnYChYw
 j/fdD/VJknW+6yKrtjgZSdppjO32fU4zpuPWWdlEWdjJhhFyz7KDpz4o+ZA8xK/13IxS
 FaQT3AoCtnlUZfn85eOcQ9xyJtehmKUrHC5LxmIx6q+3igH/dyspaD+WYKyqr94GTf87
 8+Dw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738490892; x=1739095692;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=mwXMZQeVFx58sBK6jeTr6xdHZjo4SuyfO7fiZmskiqs=;
 b=mgWXCJVPE1SFnItIZq9GZa5jhNtAqHSX+qs0nblpQ6WlWUJM/n1MRfQGzJMtdfg5cM
 I5CpxK/vL0Me38j5hWu10bNSDA7u7d/HCms9MOVT/UppMVRLEwGIWVfBk9wYcCG0UWJL
 xcQBBWxVYxM/dWPBoIUeMAkWBZaDyMuPHm8lP4I9pfVAZarjUXGhZ0oQhte1prnivTyL
 +g8sHCJ2rzrhjv7qh13KnNJa5YcEIVsKAuPVn3MPFAFW2K+pm75nJ4kdch7HEzp/Qapd
 5bZ3yvT9inUjCcBCE09WgVXUCdJYwztsFuwp43gEobdcBxPeeMQ8oudCUK6blD3m1pEw
 dW7A==
X-Forwarded-Encrypted: i=1;
 AJvYcCV51EdLY2zGdDaAJZmI4DXIc1mnNEvLsyNTBE1tPWjVDRWJnuZcdm1CqSMiO/pmvEIPTExlFA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxgiYMaVctz7pQrQAki/h2A9VMpoQQpKc+S/0togRD/wltJSi6M
 EtvaJ1V2yWiRyZ2RMljjzIq6uyZV8rjhA6Wg1i5OcA6Sytdu7EuH28D8tw==
X-Gm-Gg: ASbGnct9fX4imRqzs36n1syrkxqexpFvCxwQSv8gnBcvBfjBKSMN03XMZI6lwBUEveQ
 DTMziiWJaB9GRb9yOEZmEYzxsOYG7Y8exiHsuyY/4GGteNrXXsnbVyN2TnFnRdyYf0GEv34wBEG
 ZnKKmbF0IbO1XhnmLxnHBdye0xOByfaicFX0hzFcO6b2Y8gc96ehgLpHvCR+9ORMnp2FTkEmO6x
 kCeJLrrfTBO1W/20VSen1q+t+wC/hZ5du7wc6jaOmM0wv4uM4BjbqLDPc6FfSNiOh5ltwwEMRQ4
 Kqy7GBLluZi4Es+zgXphFtApYUahbTcIYD/e2Zi8XRQ9fSuR8ia5sjf509kZDvTdeOkJTKH1tH7
 gZ+pGWc5HJYN12z+vP2k92CWv
X-Google-Smtp-Source: AGHT+IEgvB2JDpv1HR6u+Dr5F+bgHmIZxEfq9BONXBvUYh/vE4MmO2yLrz/ypsu7qFi84+mSnNwGPQ==
X-Received: by 2002:a5d:5989:0:b0:38c:2745:2dd8 with SMTP id
 ffacd0b85a97d-38c51e8e124mr13973824f8f.37.1738490892347; 
 Sun, 02 Feb 2025 02:08:12 -0800 (PST)
Received: from pro2 (p200300e0b71e2e00b17d1337b17de790.dip0.t-ipconnect.de.
 [2003:e0:b71e:2e00:b17d:1337:b17d:e790])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38c5c1cf53asm9386722f8f.87.2025.02.02.02.08.10
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 02 Feb 2025 02:08:11 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <5f9f18dd-4272-4b8d-a929-1d3967197696@HIDDEN> (martin rudalics's
 message of "Sun, 2 Feb 2025 10:43:41 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m2tt9dkl7x.fsf@HIDDEN>
 <e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN>
 <m2jza8vh0y.fsf@HIDDEN>
 <5f9f18dd-4272-4b8d-a929-1d3967197696@HIDDEN>
Date: Sun, 02 Feb 2025 11:08:10 +0100
Message-ID: <m2bjvkveut.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>> Okay, pretty strange, I don't have an idea what that could be yet.
>> I could reproduce it once here, though.
>
> I was able to reproduce it once here only.  It might be connected to
> mouse hovering.

That was a good clue, it's mouse-highlighting! Move the top-most child
frame so that it obscures a part of the mode-line of the other child
that has mouse-face, then move the mouse into that mode-line part.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 09:43:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 02 04:43:57 2025
Received: from localhost ([127.0.0.1]:33151 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1teWWD-0006bl-2M
	for submit <at> debbugs.gnu.org; Sun, 02 Feb 2025 04:43:57 -0500
Received: from mout.gmx.net ([212.227.15.15]:39893)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1teWWA-0006bU-Da
 for 75056 <at> debbugs.gnu.org; Sun, 02 Feb 2025 04:43:55 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738489427; x=1739094227; i=rudalics@HIDDEN;
 bh=VT58xpWXhmIHKmoTdRdrFPg2i/IMrCE65DomY0F5h1E=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=sKcf+app6XrmEbVGurqaPWWERVp471DUnqhwl2e6FUPHOSU31t5CZTawIacEmpOb
 0ItwFymSGXAQWaGAgbH7mZ9vF4vpybEFDTYLS6/GeGqsWKi4mrd1C+7mcKJ58N5/b
 Dty6fChF/RXhVgssiZjTI9Y24FM6Sd9fHP797koz9djDmnD/EPHo6h6p/VWRcZbVW
 5ci+E9tSmP3au8Lh/Akpf26KJhxbaTRE5BqYbeJGxh4qOw6LnVdmNhUH3Uv5BWdtS
 jW1F0fI6sGkcgXYTqi9UudTygGPxwoPANnFOimN98VtxwjuxsKX+YO5h2K26ezyWy
 Myd+7S875ANc5QO+8g==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.97.190]) by mail.gmx.net (mrgmx005
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M6Db0-1tXtk30K3E-00BiAz; Sun, 02
 Feb 2025 10:43:47 +0100
Message-ID: <5f9f18dd-4272-4b8d-a929-1d3967197696@HIDDEN>
Date: Sun, 2 Feb 2025 10:43:41 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m2tt9dkl7x.fsf@HIDDEN>
 <e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN> <m2jza8vh0y.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2jza8vh0y.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64
X-Provags-ID: V03:K1:YwbKP1hWBp9jeitWpdmUfa+DG0VqOB5n+e6Ec9XEcgTELDgOF+S
 YLD1Yw6QqteKr6hrYO6fVNpFzCSu+IMDVCzD4A3RSPA5DyGKKMJQefISmdyFoXvz21mnGkA
 3wImHQaxYylL4/EeYo+tPoIZWxuOSlT45EIfGPkYtFM49fkjFdt4PU2dgPDfN8xwiVUOBrq
 YPBzwpRpTfaCc5iVRuScg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:yS5knWy/bSg=;wn+9kiac3G9B7lsjAbQ2vN6wcwE
 JrqX4tuK8+H0lnKhA75x+ofdLT8+JSgQ+/JmpT/gdfNH5vMNve5HbyS2YG6eHyglAxedS79s9
 tjaRWqzmS8iKj7PAJa/Yhj+XNrtFXcQqGxbbWekqMm1JpvRkD27tW9c9Zvdw2mp0Oi3/vNzrI
 Zt5yri2MUDjs12amhiQjqhVohX9f23wyyfuPYPcAx9UVxUxHzCHLtvjEImSN4fM7SgVdl+sZT
 XTCIrCLWMma73ISoWJ5NIXbKrJRt4aWKkTjwMHUkiuG00KrN08DyI/8ycK0RcJi0qvOGRMKQQ
 ImBQX22iHNqf77yn+2hkEvBayhd1tCQx8R+N25/3LJJBnpgFM3ns/7DB0fCAgquQe75FeyaJQ
 MjhNM+/tVSbRg6vbY8ilAsazgIqfvulRIU49NK/nSVpKnNbXE57awAR92s8hs2iEBFHOvXhlK
 RNH8O0DIIWYwkeW2fSe4g0jfMHio7Dq8Cvztp/w7jIZ8vBA6hEaB02SEwHkETxoyMD/e4+mF2
 RNkSOdtwTbPWy4ATPqNvvqTz4tkFBGJC6a4z6rv26o3iD5cLN0DDyT4Mmyn3zd/9Ui3KpJKlz
 n+Y99PEYk4UKW2CrROAoxakTO4yy6ndhF+s1ZwiwiL8jft6siL250juIy6HdmivPFeJPAqlBP
 QK/1tEyZDxX6BeF0TOmLusXCQqQyVnhoaPUG6NylQuMQGGltWeykEbNPMqWoeKfkGgkeVp+9/
 XHzb0mQNUqXRIOmzJHY5qLs63qNrn9A30dSIdiR7vvp8F/tVwkpChch9w/yCK3C3p5mTDaawy
 SmPgN31XzpUHn1Z+RDrmxd0D5d7sRhdaDFuw9mGKeZaXqXNGZPkaI+NME8qaEky5nLUCy/eZl
 qj7PgmqNpNmEQbF7kfhcT68NGlNmwybauSaig+0IJVWaB3A6KzpMt1UnFA9vnvZ8VJAs2/6m+
 5J6kRLxDoOYBeNtLnVSafg4qWDdqWKIBDqEbdF337NpVJj1KJx75fJbXIregtliatpt3suZEi
 O796B/JfA35GWiEGYKbdNVlOi7PYX/Zn9lp5QJkT8BZuxlOofbgsl3HoZ2SPp/diZ6/6rnun5
 AXZt4GIGU2CyI79aaXtaafBp3Pyjx9RwgMleinA0DYcTr+7U5w4If3/K30R+Fhm3TgNncOEMN
 axyYEkGrl6EXeJJ8OD3EaDazAgndy1M5NUOuGqHPiY4SSEYUrvLoN7SlqnAhANSSMx821R3YG
 Bm0mf+CEC313CaKspNS3RaP5C1dUW+nHxARJy9nV/xe8FAlqcrLFvIfB4f1B3SZQ7bNyBPZfk
 WFYVZ8LhoyBG3z7kIj4nYuDzJ+PXVx6nnAy7PZjYzaMdfM=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

ID4gT2theSwgcHJldHR5IHN0cmFuZ2UsIEkgZG9uJ3QgaGF2ZSBhbiBpZGVhIHdoYXQgdGhh
dCBjb3VsZCBiZSB5ZXQuDQogPiBJIGNvdWxkIHJlcHJvZHVjZSBpdCBvbmNlIGhlcmUsIHRo
b3VnaC4NCg0KSSB3YXMgYWJsZSB0byByZXByb2R1Y2UgaXQgb25jZSBoZXJlIG9ubHkuICBJ
dCBtaWdodCBiZSBjb25uZWN0ZWQgdG8NCm1vdXNlIGhvdmVyaW5nLg0KDQogPiBBcmUgdGhl
IGJsYWNrIHN0cmlwZXMgb24gdGhlIG1vZGUtbGluZSBpbiB5b3VyIGltYWdlIG5vcm1hbCB3
aXRoIHlvdXINCiA+IGNvbG9ycz8gSSd2ZSBjaGFuZ2VkIHRoZSBjb2xvcnMgdG8gd2hpbGUg
b24gc3RlaW5ncmF1IGFuZCBtYXVzZ3JhdQ0KID4gYmVjYXVzZSBJIHdhcyBibGluZGVkIGJ5
IHRoZSBicmlnaHQgY29sb3JzLiBXaGVuIEkgcmVwcm9kdWNlZCBpdCwgSQ0KID4gY291bGQg
c2VlIG9uZSBtb2RlLWxpbmUgYmVpbmcgZHJhd24gcGFydGlhbGx5ICJpbnRvIiB0aGUgb3Ro
ZXIgY2hpbGQsDQogPiBidXQgdGhlIGNvbG9ycyBsb29rZWQgb2theS4NCg0KSUlVQyB0aGVz
ZSBhcmUgdGhlIGhvdmVyaW5nIGNvbG9ycyBmb3IgdGhlIG1vdXNlLCBJIG5ldmVyIGNoYW5n
ZWQgdGhlbS4NClRoZSAiQWxsIiBvbiB0aGUgbW9kZSBsaW5lIGhhcyB0aGUgZmluYWwgImwi
IG5ldmVyIGNvdmVyZWQsIG5vdCBldmVuIG9uDQpHVUkgZnJhbWVzLg0KDQogPiBpY2ggd29s
bHRlIGRvY2ggbnVyIGVpbiBiaXNzY2hlbiBDb3JmdSwgbWltaW1pLg0KDQpGw7xyIFNpc3N5
IHdhciBLb3JmdSBpbW1lciBub2NoIGJlc3NlciBhbHMgZGVyIEdlbmZlciBTZWUsIG1hcnRp
bg0K




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 09:21:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 02 04:21:28 2025
Received: from localhost ([127.0.0.1]:33090 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1teWAR-0005aB-PE
	for submit <at> debbugs.gnu.org; Sun, 02 Feb 2025 04:21:28 -0500
Received: from mail-ej1-x62b.google.com ([2a00:1450:4864:20::62b]:52233)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1teWAQ-0005Zy-1E
 for 75056 <at> debbugs.gnu.org; Sun, 02 Feb 2025 04:21:26 -0500
Received: by mail-ej1-x62b.google.com with SMTP id
 a640c23a62f3a-ab68a4ab074so426156466b.0
 for <75056 <at> debbugs.gnu.org>; Sun, 02 Feb 2025 01:21:26 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738488079; x=1739092879; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=Tnq+L+s2uktEIGB8HzJyiAq5lCjLUOG0E5Cq2pmw8PE=;
 b=MbWrlsSGgALihrPE6XlnK9NEmV8wrbPCgm4Moqrq0lSWRAVreu62RvnEZP8xQ3s5Sz
 LbU2HvdBFIHI3yAfRvGd5UsJL7PyhHsSRewXdBMgM9cXdzrvJXgdYiVZDAI9ALh+QLPL
 IE/pJLfEM7MbTB3dhyoHp2urRgcFJd9E0n0yZQTqIJEUTIWJkdRQFZ0BpWzooVtzi5Oc
 4OzCvDZm2yg/xtvh2ieEF8TWGrfROHW2xHBuBhNSP8VAaDtZEsBeJtv/ksv0ES5GEVN3
 aqsGvEGxBwo94cVtW3UvGAh/bIWYZAY54tQVVJQCKsRGGVZ2l2mxVBdanWBcJ0NMtK0T
 pKcg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738488079; x=1739092879;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=Tnq+L+s2uktEIGB8HzJyiAq5lCjLUOG0E5Cq2pmw8PE=;
 b=qHpvf4CiLqRXz36NHvK+ZNPl0w9fXMVpE3FDey0yWBkC7qF9dnHgjoHT030XLfJQfX
 A2oD7vCufmQJJ0zMd6txlpM0yytPiRl1exfqdNVYx4XKck/ok3Epw3tV962m5dD2u99a
 aTLTl9Fx7cmNOUUW/HD72h+dIEFYpLcYfiVQaADDhkcIbkYl3/6c4NXO0XUv2Z/Fhl4P
 cKW+2SskJYSWVrSTsGwPQbdpVOJH3b42UbvBj//45Z2juKQxQ4vWLNAw1TJptKJovQEs
 SL4I3dCFvdf5BRfR/snJaKmhd4ZJHYtCWLKMxYmK47wlttWnIegCxJH3MPBZzDIHG7Es
 /44Q==
X-Forwarded-Encrypted: i=1;
 AJvYcCX6U7RTPt81BbJzyq+DRurwkcdZu+4qVgF172nZXFqH5HRLkk2VYncfuXhAH6D1SWplQpCXFA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Ywf27y3tjRgTKfllJkfXzY0NQjKqfkeUgf1RYGy9rp66+vagF3o
 KbGfc1MwQtGKydKJn2Hv0acReOyTZPOIjnR3GpHtmNNrYVok5RbEwPW37Q==
X-Gm-Gg: ASbGncvXtRpS79AAsLFd6SNlgS2ZWzDPoocLSx4H0x/mUmCj27LK6t/QYhJrms8I9YI
 izRXcChTBHZxnPA5waxRJ7O5LQpvUrTxzoxSO//LwLpPhtFLBA7186tpBzH4rqAcqr7Gk1bPi4F
 gIueTafQHsSLOTLfAoSN4M0fceQ62iTWC094oeynftwWgqO3LoGwkeR2L6wiQRdFWu5PBUn7Zgl
 QR9zDHrHaCXR4xbxWfJXCulzR9YguUUXO2m2Hw8EZ1k1NpYMcbG8KwKk+cfj/eypwbHs94TEaEv
 AVhvqn/156vDwGnTluYU7yLD09D686CtTgBa5tCTDGfDc5o1dpEpvTGOqYF1DnBBR4k61ZDqfCn
 1posDO41pEmOAqMrrjKjCOJqa
X-Google-Smtp-Source: AGHT+IHarJbhkBsAePyG2E6gITVRpdiKPdwPqRVKhz4N6kkgTqgiDX4ncYZx+T1ezLTwacc8UiBWpg==
X-Received: by 2002:a05:6402:524b:b0:5d9:ad1:dafc with SMTP id
 4fb4d7f45d1cf-5dc5efec0c7mr43047255a12.25.1738488079220; 
 Sun, 02 Feb 2025 01:21:19 -0800 (PST)
Received: from pro2 (p200300e0b71e2e00b17d1337b17de790.dip0.t-ipconnect.de.
 [2003:e0:b71e:2e00:b17d:1337:b17d:e790])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab6e4a5a26bsm548699466b.183.2025.02.02.01.21.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 02 Feb 2025 01:21:18 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN> (martin rudalics's
 message of "Sun, 2 Feb 2025 09:53:12 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m2tt9dkl7x.fsf@HIDDEN>
 <e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN>
Date: Sun, 02 Feb 2025 10:21:17 +0100
Message-ID: <m2jza8vh0y.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>> Fix pushed to master.
>
> Confirmed, thanks.
>
> Next issue: Please look at how the mode line of the orange window
> overlaps the yellow window in the attached screenshot.  It happened
> after I mouse-clicked the mode line of the yellow window to bring it to
> foreground.
>
> Schon wieder was passiert, martin

Okay, pretty strange, I don't have an idea what that could be yet.
I could reproduce it once here, though.

Are the black stripes on the mode-line in your image normal with your
colors? I've changed the colors to while on steingrau and mausgrau
because I was blinded by the bright colors. When I reproduced it, I
could see one mode-line being drawn partially "into" the other child,
but the colors looked okay.

ich wollte doch nur ein bisschen Corfu, mimimi.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 08:53:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Feb 02 03:53:23 2025
Received: from localhost ([127.0.0.1]:33043 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1teVjG-0004Fp-M2
	for submit <at> debbugs.gnu.org; Sun, 02 Feb 2025 03:53:22 -0500
Received: from mout.gmx.net ([212.227.17.20]:57081)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1teVjD-0004Fb-HB
 for 75056 <at> debbugs.gnu.org; Sun, 02 Feb 2025 03:53:20 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738486393; x=1739091193; i=rudalics@HIDDEN;
 bh=IzkA+Z3qV39mYts/TTx+W1nQG8K6n34jl4jHcPuCOg8=;
 h=X-UI-Sender-Class:Content-Type:Message-ID:Date:MIME-Version:
 Subject:To:Cc:References:From:In-Reply-To:cc:
 content-transfer-encoding:content-type:date:from:message-id:
 mime-version:reply-to:subject:to;
 b=fcbiBOfJupev9y9ZqYSH1k+MV8DHy5gJvRUuJEJyZrmawzaYqj68OKxBf7IKyYtE
 Xpn3E9YnKwZ89ixYMSZXGGTvepwFaV0zK9SjaMmv6hQEQctwFsocmv1yCzKirEqIs
 1RtjRRkUQ57bAB9QAohKqeCPlKCVVTdh5pwsfkG4NQ5z6v15WsWox3j3/JnCU9NyV
 00R0kJNkNBHTvhZB8Bkh5DYUcmyK6R6HX0Of/vqIyvm+tARV4P4V1nZsetivup/Bk
 geevpYqG9tAs+2heUsGIllV00dtIog16/0bD0vXl/JJ+QVnISCUZLv9qO9kRz4adg
 dLj/ju1dJW+G2iP6Mg==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.97.190]) by mail.gmx.net (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M4Jqb-1teEkC0I77-00DiCN; Sun, 02
 Feb 2025 09:53:13 +0100
Content-Type: multipart/mixed; boundary="------------B2qoq2pME5vsFCjCIrAhMNGZ"
Message-ID: <e2bbcb31-c65c-4af7-b787-2125469cb078@HIDDEN>
Date: Sun, 2 Feb 2025 09:53:12 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m2tt9dkl7x.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2tt9dkl7x.fsf@HIDDEN>
X-Provags-ID: V03:K1:737+3bOFz3l6Ue/iGWFt03/QHexOyhBU+6XOCS/vsyhSEw4OsDy
 ip7TK4B21m0tBXCRndWcFNhMKBJmEwld5ilTQTmfTLColqkiFs9lJ7w0+cyvE/wFBPEcsXr
 0NpBFFzGu3BIDBqy7S6WsS16dYiE5FNVghyL8L0q93bS+bA0vae5Eqg98RVcxfXXxDGbtOG
 Zxpxc5ZgDbYT+Nfbnggpg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:Tls/FYHb7Es=;xCf/oB/KlxSXjF+mLUoQ7FYsr7M
 MadviLPZkOzu6+G2WdpAv0bM+tHmxlyz5nVRlyK3s6+s9YLjqYWlQAS3yefXQn0jFDbKzX1dT
 jfcGWIEb93M23RZ0BKdKLYtoDli4Mc6RoyQSiU7mVdndjAF5/vrR60DZyMjeR8gclW2ziZVT3
 rbmkLHrXl+K+pS0d55GWYi+k4oSGhnkf6XjswYoiTQbYd7+FEE2M3C1vlDz15lFul/56dCaru
 7dODzfEP5FnXav3MeSSWsB/Rzxr2YbnZOv48GlDqFoDdluOvzS1Yy0JiOdlRyf1z6S0Ke6EZj
 7pYry35W7oZ0QswHSBy4mjvS3ROlrC0hVUJ6SpPwE6rdiGm/bXDFfDSVE6V0qPhjANF8PHXDr
 r964B+XMmukrXd3avbYAmzG2ZZgi/2UnH391WlNjHgwZ/VVgCctAQHxZ7Ma7DFgoHO8qC0qwc
 VD8xlcCsfsVN2/SZoisUoyb73sNeh7ifJ0pBGraK3eImJFf/ykBkmESrKGQl9xV1lOqnfkmeN
 6VE/9zyyBcnQn4JamJeBi0UYPznOTTbnWNmNN2VX2NmmXtzKIku+Pwm9vkMfYmivIz1wdxhdC
 fDWH7iZ3GNqD9Uk4uKVt9c45vErgj64ExkmAiWCRk7qNxKGM/NzDCAl1HpPtrdjswM51qj5f9
 ONIcdT0Q7DWTTAYzhle0/2zkgldgd1BfQ0LU3h2CPPpLAro7mbIsGWY3/kLLEvaicb/wBVz0f
 YfHyQQ+MfjoWLIovwJLEENJeR2xK3dbI+96bTz5A8rN85/GiA1quWkz8b+lugmFtll3tIZ9LD
 cMDsSG+r5IQy4FfWuSwNHwjcYlYK+iIdH3kMw1ugBpJKLMPxeP9XU//qpGZC/GVmBVVv5eeQi
 sOErTFpq0ESaSR57OOyLyivjwsa5YSrlHHDNZBolfVArCJ7upQON6lz/bHgAe3dvLw0vbo30D
 HDlmpxrgzyjlyhO/uItyxjdA240kr3wtxTZu47A5CiSbkM6GAcdHhUHT351+sOC80GEMj/+Ug
 OC3IRZ7iOpcOYDmVAtjLHq8Chi0ngWjBggE5WFXK7FgHgzfrX1fxJn8gw2t9fpbCBlytjMJSQ
 eLxsYUTzyMPRrXf1CYwntikverCcmFrdaDVNVM6PV0ERKjsvyqUPsMCfSnchVpbMwe59srw73
 LEGh+AxrWnCkvbY89t2k5ialDbWmYVXhHGQdtfUxPbZQ4kEbRjl9SAr+UqcB+DaSNbmhmOqQO
 sNg0zIoFKrmpQfuimy7G3wZYwePAA8XfElm0Hfd0ibeiSp6gFF3+56JvUlWJGyKkfC+M6W/Ne
 /wTs09mg4M3QVjz0zHhA/9rt61uRrrVCRThzWnncI/WovnzrXKlCY8nC3NMIt7C9D5j
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

This is a multi-part message in MIME format.
--------------B2qoq2pME5vsFCjCIrAhMNGZ
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

 > Fix pushed to master.

Confirmed, thanks.

Next issue: Please look at how the mode line of the orange window
overlaps the yellow window in the attached screenshot.  It happened
after I mouse-clicked the mode line of the yellow window to bring it to
foreground.

Schon wieder was passiert, martin
--------------B2qoq2pME5vsFCjCIrAhMNGZ
Content-Type: image/png; name="mode-line.png"
Content-Disposition: attachment; filename="mode-line.png"
Content-Transfer-Encoding: base64

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
4fT6d82GKn3uffV64oY2jaVsbe9O6vfOqtbzn+4oqDOXr4vo+U+36zfag/rZ4QnVhrz639e1
Lrp8Tq9rTspXju8Zp9+XTpS6fE7rfaWuk5LzelXKfIvZX6ffR8W4sC2oxz7Wpp6xjN7sT+vP
fzOmf/uDVfJ7pv/OP7axpuCcSWYO5p+9szYf2EjOrxtO01Wi3mMZNW+60r7tX3L2+Nho/iVp
1uvspoD9kdOr5vzZYtI5ffV99jT7Sx9omPNn/+fjq+zXbl5th3xW/rPf3lBl21vX21eeHik6
r0s7Q7a9db295V0xR+lvuqjWtreut3/0iVW215r987++otHu+a+n2c1V3vxnm1oCdu7zs8vn
81gF7z9+bo2d+/x6O+K3Zm33uU932I9c1zpvuYrJ1+mrmPI5fa2v99v21vX2VWcsXF8e+k+t
9kt/0rFgunuvbLJ337Zm2Y6Lk9d/31xvH/3MaQV15OPn1tiZz62326q9c/7Oifa3K+az7a3r
7Q+vd15mJ8dvoXq1mNdy5ftn76y1u7d02ZLs02J+e/S/rbUfndzmh9dH7Mzn1ttB7+y6Wory
/X+fWGXbW9fbm7vC+c+uPD1i21vX2x9aW7569fbta+x7PtxU0m3+7Uea7O4tXXZjxGv/8flR
O/mX6+wL24IrpnxScdeNUr2cXP+m6sF5LdPHa+o7Zeb15Wd/2mm/deuagu+tv76i0ba3rrd/
58zi98npdc1p+aZepf6eWej7sthXKctXTL1f7utkseetVPk63d/FfB+d6DW1vzOP/3tWh217
63r7k5tq8p9t/8+d9nd+t2XOssz1d+T0urFQukrXe16Fr5df/Im9Y8cO+/Nf+GJRrx07dhTE
Pbf9S85u3nSl7fg2wy97U/rBWwsPQ3Cabqn8HksfWhvW/3p1RBMzhmJ8/80xHRoxd+eL9eHT
qzSRsXXvz4YXTjzDXc8OzjmX5bqzq/Vvb4+rucqrjc0BbWwO5JeavLQzXJA2k7PlsaT2Gp82
tQSUtW1Z1vRyv8UoJl+nSlm+SinHcXHi27+Iq6Xaqw+cNn1X6/qN1frRnnEdGS3+LvqReFb7
hzP60gca9K6Oxd+NO5X8qi+lthqfqgMeXXl6RAOJnH5rXURBr6UzGwPaO5Qu60TZtwbS+vGM
Hp2fHkpKMr1U5VLl95R8iPKf/6hPveNZPXJdq75xRaM++3S/Xj6SXDHlqxSn179f9aX0i57p
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
AMBohCIAAAAARiMUAQAAADAaoQgAAACA0QhFAAAAAIxGKAIAAABgNEIRAAAAAKMRigAAAAAY
jVAEAAAAwGiEIgAAAABGIxQBAAAAMBqhCAAAAIDRCEUAAAAAjEYoAgAAAGA0QhEAAAAAoxGK
AAAAABiNUAQAAADAaIQiAAAAAEYjFAEAAAAwGqEIAAAAgNEIRQAAAACMRigCAAAAYDRCEQAA
AACjEYoAAAAAGI1QBAAAAMBohCIAAAAARiMUAQAAADAaoQgAAACA0QhFAAAAAIxGKAIAAABg
NEIRAAAAAKMRigAAAAAYjVAEAAAAwGiEIgAAAABGIxQBAAAAMBqhCAAAAIDRCEUAAAAAjEYo
AgAAAGA0QhEAAAAAoxGKAAAAABiNUAQAAADAaIQiAAAAAEYjFAEAAAAwGqEIAAAAgNEIRQAA
AACMRigCAAAAYDRCEQAAAACjEYoAAAAAGI1QBAAAAMBohCIAAAAARiMUAQAAADAaoQgAAACA
0QhFAAAAAIxGKAIAAABgNEIRAAAAAKMRigAAAAAYjVAEAAAAwGiEIgAAAABGIxQBAAAAMBqh
CAAAAIDRCEUAAAAAjEYoAgAAAGA0QhEAAAAAoxGKAAAAABiNUAQAAADAaIQiAAAAAEYjFAEA
AAAwGqEIAAAAgNEIRQAAAACMRigCAAAAYDRCEQAAAACjEYoAAAAAGI1QBAAAAMBohCIAAAAA
RiMUAQAAADAaoQgAAACA0QhFAAAAAIxGKAIAAABgNEIRAAAAAKMRigAAAAAYjVAEAAAAwGiE
IgAAAABGIxQBAAAAMBqhCAAAAIDRCEUAAAAAjEYoAgAAAGA0QhEAAAAAoxGKAAAAABiNUAQA
AADAaIQiAAAAAEYjFAEAAAAwGqEIAAAAgNEIRQAAAACMRigCAAAAYDRCEQAAAACjEYoAAAAA
GI1QBAAAAMBohCIAAAAARiMUAQAAADAaoQgAAACA0QhFAAAAAIxGKAIAAABgNEIRAAAAAKMR
igAAAAAYjVAEAAAAwGiEIgAAAABGIxQBAAAAMBqhCAAAAIDRCEUAAAAAjEYoAgAAAGA0QhEA
AAAAoxGKAAAAABiNUAQAAADAaIQiAAAAAEYjFAEAAAAwGqEIAAAAgNEIRQAAAACMRigCAAAA
YDRCEQAAAACjEYoAAAAAGI1QBAAAAMBohCIAAAAARiMUAQAAADAaoQgAAACA0QhFAAAAAIxG
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
kSMlXdgers+2i+sXFham0tJS1dfX+1TntnA6nfLz82syZJeUlDRa3/bazi61tbUdPlpbSEiI
ezRKX9a3Ne3h6sLbXJdGb3XV+Rrlrs5y7anFULR3714dP37cY9qlQ0jW1tbK4XB4zthuV2Bg
oMdJYnuX84U369ER5bzV0NBw1Y9C5uputmPHDo0dO1ZjxoxRTEyM7rrrLj3//PPu56FcV6gu
beOWNNX2drtds2fPlr+/v7Zu3arU1FTV1NRo/vz5Gj58eKvWw9f6efPFrWi9a6+9VufPn9eB
Awfc0/Ly8pSSkqKoqCgjv8iwZ8+e6tevn8LCwnT//fdL+r8TkUWLFikvL6/NAxFcqWpraxtd
Xe9opaWl+tvf/qbo6GhNmDBBixYt0s6dOxs9Y9hUvYKCgjr8Qfz2en7Dsiw1NDRo27Zt2r59
u09/29zJ85QpUzR48GCtWrXKfWEoLi5ODzzwQKO/d13Y6iyu7tBNncQHBQU1+ky/2p6TcQ3s
s2/fPkm+rW9r2sO1/7e1a2tXna9R7uos155aDEV5eXktprJz58559FmV5H5/8dWj9i7nC2/W
oyPKmSQpKUn5+fkqKSnR1q1bdeDAAf3kJz+R3W5XfHy8OxTl5eUpPj5eI0aM0Ndff+2+6tuv
Xz+dOnXKpytTUVFR7mFZ09PTVVNTo+DgYCUmJjZZ/uLvb+nZs2eTQbQ964e2S05OVnp6usdw
xP7+/ho+fLiuvfZa7dixowtr1zVKS0v197//3WNaZGSkYmJilJGRcdVfYLmc0tJSxcbGdsmy
z507p40bN0q6MLDMpaEoLi5Odrvd48JKVFSUDh482Ol1bU59fX2zo15alqWcnBwNHDjQ51DU
nH79+ungwYPuQCRdePbqUmfOnFFKSorXzwpebj28VVNTo8LCQg0YMMBjdLbQ0FDFxsZq7969
bZp/V7vlllsUHBzsXjdf1tfX9pD+705ic89Ce6urztcod3WWa0/t8kzR/v37tXDhQt12223a
v3+/HA6Hpk2bppKSEo+U197lXBwOh5YtW6bDhw8b0S0pMDDQfaXH6XSqsrLyiuhqN27cOA0c
OFAVFRUqLS11HyAbGho8wmxqaqpGjBghh8Oh5cuXq6ioSE6nUw6HQ0899ZR7dKcJEyZ4fOP3
vHnzlJ2drbS0NGVlZUm6cMu/trZWAQEBWrJkiXJzc9W7d+9mu6uUl5ersLBQMTExuv322zVh
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
g4P1zDPP6IMPPlBYWJiCgoLUv39/nwKRJD366KPq0aOHAgMD9dJLL7VYvqamRl988UWjk+yr
za9+9Sv94Q9/aPN8fN1+ne3JJ5/UggULGk1/5plnNH369FbP90rfD6729u3Zs6f+8Ic/6Npr
r71sue52XLuSzZw5U9988402bdqkp556qtOWe8MNNygrK0svvviixo8fr8mTJ+vFF1/U73//
+w5b5pV+XAOA7iqxT4L3ZROaL9ti97mKiopuc7WrV69ecjqdeuedd1RZWSlJOnPmTJvmWe/F
7br6+nrNnj27Tcu5EowZM0b2y9x2bA1vtl93caXvBya1b3c6rl2pbrzxRq1fv14rV67Utm3b
9M///M+dstzIyEht3LhR+/bt08KFC1VcfOHqocPhUFBQUKfU4Urd7wGgO7qmb1+dOHlSJefP
X7ZcRES4+vXt2+zv2+UM6IEHHtDRo0eVn5+vZcuWqU+fPjpy5IieeeYZZWdne5S94YYbdO+9
9yohIUGZmZl6/fXX27TshIQE/eQnP9GIESNUWlqqDRs26O2335ZlWe4y99xzj3r16qUBAwa4
3996662SpI8//lgffvhhm+rQnClTpuj22293v8/KytL//M//NCrny/YLCQnRfffdp4kTJyog
IECffvqpXnrpJZ/vdrnExsZq6dKlGj16tIKCgnT8+HH97W9/0/bt2yVJTqdTP/7xj9WnTx/d
fPPNqqio0AsvvOD++wcffFANDQ3q0aOHHn/8cT377LM6evSoxzKWLVumoKAgPf/88z7Xz5f1
DQwM1AsvvKDt27frjTfe8HlZvvK23bzZD/z8/PTkk08qOzvb4ypzZGSkfvvb3+rvf/+7Nm3a
5HMdu1P7Xs369u2ru+++W9u2bdNPf/pTpaWladWqVfqv//ovSdIjjzyis2fPust7c1x75JFH
lJ+fr1WrVrmnRUdH68knn9Qrr7yi/fv3u6e3tB+4tGd77NixQ9dcc41yc3P18MMPt1i+vf5/
ly5dqvDwcC1evNgdiCSpsrLSfTGsNfvznDlzNG/ePPXs2VNnzpzRli1btGbNGjU0NPhcR1P2
ewDoDP7+fvreuBv0Veo3Ki4pabJMRES4vnfDDfLza76TXLuMPjd37lw9/vjj2rBhg8rLy7Vr
1y7Nnz9fO3bsUGjo//Xdmzp1qnbs2KEbbrhBqampioiI0N/+9rdWL3fo0KHau3evZs2apT17
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
/cDX9rhSj5OS9P7772vBggWaOXNmiyM2erM/p6ena+nSpUpOTtbhw4fbVLerbb8HgKuFZVkt
fh2Cv7+/bDZbs79vsY+Pv7+/pk+f3ujV3BXJy3nttdd0xx136K677lJUVJTGjx+vxx9/3Of5
uPzud7/TD37wAz344IOKjY3V0KFD9eabb6qoqMhjmNqOEBoaqv79+ys2NlZBQUFKSkpq8mpi
WFiY+vfvr8jISDmdTg0cOLDVVx1/+9vf6qabbtILL7ygQYMGKTw8XMOGDdO//Mu/aNiwYT7P
b+zYsbr//vt1zTXXKDQ0VMOGDdP3vvc9ffvtt02WT09P180336xJkybJ6XQqMTFR4eHhjcq9
+OKLmj9/vubMmdNs1ypvtp+v6xsTE6NTp061amjoi7355psaPXq0nnrqKV177bWaOHGi/vjH
P+rkyZP65JNPWjVPb/aDMWPG6Pe//70eeeQRHThwQP/6r/+qnJwcrV69ulXd8bpb+3pr4sSJ
jbr8XhoefLVnzx5lZWV5NYpaW3l7XEtLS9Ott96qqVOnKjw8XBMnTtSjjz7aaH7e7gcd1R6h
oaEKDw+Xn5+fYmNjm92G7fX/u3btWm3fvl2rV6/WQw89pLFjx2rChAl64IEHNHLkyEblW9qf
165dq3Pnzuntt9/W1KlTlZCQoBEjRri73V26rl213wOAyWw2m6qrq1VWXt7kq8qbrzxoafS5
5kycONFd7qOPPrI++ugjjxEhQkNDLcuyrGXLlrmnBQQEWC+//LJVW1trWZZlFRUVWQsXLrTO
nTvXqtHnJFk/+9nPrDNnzrjr9fXXX1sjR45ssmx7jT63cePGZrfL66+/7nM5b7efJGvmzJnW
gQMH3PNpaGiwUlNTrUGDBvm8HmPHjrWOHz/uUa/t27dbAwYMaLJ8jx49rM8++8yqr693L/vG
G29sVC4gIMDKy8trdvQlb7eLr+vbq1cvq6qqylq3bl2bRzT5zW9+Y50/f9693LS0NGv48OEe
ZbxtN2/WNywszDpy5Ii1YcMGj/kNGTLEKi8vtx5//HHj27ell2v0uaZcfLx67LHHrLKyMq/n
GxISYtXX1zequ69tYVmWFRsba0myDh48aD388MOWdGFktr1793qU9+a4Fhsba23bts1dJj8/
35ozZ4519uxZj+OpL/tBe7aHJCszM7NRWzQ0NFhz5szp0P/fsLAw609/+pNVUVHhXm5BQYE1
fvx4n/dnSdaYMWOsr7/+2mM99u3bd0Xs97x48eJl6qup0ee2b99uffLppx6vz7dvt9LS0loc
fc4WP3KmdcdvN+rpqRVycYZcvgtNW4WFhSk2NlY5OTnt8vCqv7+/+vTpo/LychUWFrZDDa98
MTExioiIUH5+fqPnXHwVHR2tiIgIFRQUuJ9puJzg4GD16tVLZ8+eVWlpaZNlMjIytHr1aj35
5JNtqpuLt+sbERGh0tLSVn1/yKUCAgLUu3dvlZeXe3yx5tWmO7VvV7j55pv12WefaerUqdq8
eXOnLdfb41pERISioqJ06tSpy3Yd8GU/6Kr2aM//X+nCNuzVq5fq6+uVn5/f7Hy93Z+jo6MV
GRmps2fP6nwL35zujSt5vweAK13azs9lC2qcWcrLy1X7/5/5ttvtCnE6G3WbGzpksPvnRz92
au2/z1aXhCJ0b5MnT9amTZs0YMAAZWdnd3V10M5Ma99f//rXuu+++zR48ODLjkyIq5Np+zMA
dBfNhSLpQjCypCYDkdR0KOq0gRbQ/d1yyy2KiorSM888o1WrVnGC0c2Y2r7vvPOO3n33XQJR
N2Pq/gwAJnA6nZJ02YEVLkUoQrt5+eWXFRISoi1btuihhx7q6uqgnZnavkePHu3qKqADmLo/
A4AJfAlDLoQitJuhQ4d2dRXQgWhfdCfszwCAi/k+zi8AAAAAdCNN3imqKG95hCoAAAAA6A64
UwQAAADAaH6SVFPZ9HeRAAAAAEB35cpBdknK+maj/sU2VwHBIV1aKQAAAADoDLVV5cr6ZqMk
ySZJ8SNn8gUcAAAAAIxzZv8m2/8DIhWWEolHEfMAAAAASUVORK5CYII=

--------------B2qoq2pME5vsFCjCIrAhMNGZ--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 2 Feb 2025 04:46:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 01 23:46:23 2025
Received: from localhost ([127.0.0.1]:60840 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1teRsE-0000sh-MF
	for submit <at> debbugs.gnu.org; Sat, 01 Feb 2025 23:46:22 -0500
Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]:60864)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1teRsD-0000sR-2t
 for 75056 <at> debbugs.gnu.org; Sat, 01 Feb 2025 23:46:21 -0500
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5d90a5581fcso5810659a12.1
 for <75056 <at> debbugs.gnu.org>; Sat, 01 Feb 2025 20:46:21 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738471574; x=1739076374; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=plIY+3vQdPkru6Sg8qUFd0VX74geYUnau4p7DCRz8yc=;
 b=DoI0rdimCpWztJsiOhttS0dGeoUWJf0Y+qFMnZlXBZcc2aoT1aqju+v5Pz58Ceqm1p
 sPpftB1W/XzuybMU9jqBNI7AcT94IOSwlicse04ZTYMQRw4xxSnm1W+m8rIVfZnbYY7O
 X5GZOpGOz8yF73XSpMFzcgsH/HmpnNXrdNrRBLKiZA+B2Lphj6xmensM/relBsC3aQyt
 sn2rNaczLIoDCxauPsVaUNqJ/n07hYmPG+xML2iTck/CD8QcY5yi4jKhm8A1lRPNef12
 TH9p3ztnga6k26vevuE/+oMWDcOCkNowSPHggRBaOvKSjakmjJvHrqBmvJQ5QOnxDWBm
 TOPg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738471574; x=1739076374;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=plIY+3vQdPkru6Sg8qUFd0VX74geYUnau4p7DCRz8yc=;
 b=fuK94M7Eqo5qPliemQsT8L5VndktMcB7C52AyIAky4429hDNHwNjGGIuZOJ/ns0k+F
 qHcs77n3UYZzeocAxzONWAkQA1gh3RTedtvskb0BHn2V9NjJxE3PP51r11m3AGX/SpTO
 gLY7KEasi830ZQn9Ch05mgpZuoFhZf4TvVk410CEnecIbwunUrLcU76Mv1PqgPNNGMRL
 rq0Tj15yI6sf/Tz9Er/7N3fIvzIpNp5COpWcI5H1ZAL2JqK2pmf1kMMwK+xFFCK6Mupe
 TjDIg8gHMvVj2aJw6sR0RVJXI6fA9eGB/g/vckrqhPeZ6wcaY/fUMTZKiq9wvWNI02Tl
 7h4g==
X-Forwarded-Encrypted: i=1;
 AJvYcCUUHHzsXLXR1EHzAWaLejGK0q2XIP/1XgO4LVB6aqEFoLxJROIUB0qu3hCSiUeV0R9Ocar0Og==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxStsWFdfm547n1q3tgA3J77PK18de+KZayKyUDDner6ls0DNaV
 QOg8cuT8D0O2toYscqWbigQJ94nRZ1Rjcfs6efimbbaZJ7sKv1O70hSVew==
X-Gm-Gg: ASbGncvcoTcw94Q+klnOX9DIgmUylo8DA3RvRPVE67DOUwh6HtKvaZD+uKBVl/H8h15
 XInj/C+9S992kIa+aqOWIgBAoEoFJeeVLPfaIltge3nq9G3l15Ffysc/OLDu5+BVTxXj9UcbRHJ
 /XFYefrHiGboMtgL9PuWKawWXE5H6UcxmG8ti9C8IeNEKznOm85NA/itYfYBISs/K0rTDudseOS
 eTGQCowDJFEiZ7URTZbsJjnDxlOKEAzgl4NQCAOlyULucx6Lhs0OvOyPQnHqwaVvR0PPE0K5Bg0
 nF8LEKTbXtsAoxdo6d54AFV7+EcrXSuvTfoEt54mwZfYp/7Xv4DP9m0vYk7K+HRxiRUMNEM2OH/
 jnR8K0g3BOXyE62YtOGcL/yma
X-Google-Smtp-Source: AGHT+IH2EaQHsiF2AhdIlrV3/LLc+Uiws9/BcRWDF4Yw/aKHXU7g5GrPA+FVIRZsvVeu+5Bxw0J2Yw==
X-Received: by 2002:a17:907:3e0b:b0:ab3:a3b4:f91c with SMTP id
 a640c23a62f3a-ab6cfd0c96amr1786883266b.34.1738471573739; 
 Sat, 01 Feb 2025 20:46:13 -0800 (PST)
Received: from pro2 (p200300e0b71e2e00b17d1337b17de790.dip0.t-ipconnect.de.
 [2003:e0:b71e:2e00:b17d:1337:b17d:e790])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab6e47a7dc4sm524053766b.16.2025.02.01.20.46.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 01 Feb 2025 20:46:12 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> (martin rudalics's
 message of "Thu, 30 Jan 2025 19:00:01 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
Date: Sun, 02 Feb 2025 05:46:10 +0100
Message-ID: <m2tt9dkl7x.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

> One bug I noted now is the following.  Do C-l and M-l and drag the
> yellow and orange frames somehow as in before.png with the cursor in the
> yellow frame right before the left edge of the orange frame.  Do C-f -
> the cursor appears on top of the left edge of the orange frame as in
> middle.png.  Another C-f moves it into the orange frame as in after.png.
>

Fix pushed to master.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 1 Feb 2025 10:23:31 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Feb 01 05:23:31 2025
Received: from localhost ([127.0.0.1]:56478 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1teAex-0006Rg-Hg
	for submit <at> debbugs.gnu.org; Sat, 01 Feb 2025 05:23:31 -0500
Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]:51342)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1teAev-0006RQ-MM
 for 75056 <at> debbugs.gnu.org; Sat, 01 Feb 2025 05:23:30 -0500
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-ab2aea81cd8so497587066b.2
 for <75056 <at> debbugs.gnu.org>; Sat, 01 Feb 2025 02:23:29 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738405403; x=1739010203; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=415b3b6ok3FTbh8VoB2xwBT7ILSw2G3zMVHPgcWNACw=;
 b=RZf8pm8wiDHQ/hHAMuTf7YPBezw3es+WYgrPf8JIEJhm47Zyv3n+aF+4cHSuo8q7lV
 32HhoEEljh7QCNbPnvPn1KZnAwv9qJ6ETPPq2MWZRlc7hSPMAlPCnCz1kYkX8R6XOxH/
 aeNblE5XDBQoLeSWRFJkZQ4xX1CLqddyDYIsjd9yo3RFEwDVyP9hEfrpAG2B68U9KJmN
 Sque1Dr3by/UbEALRpSvyU5wGQWwbDnXqk9hO5kfn5IxlZbT6c6EDNYF6OaridxW4l2c
 JVWBVxF2nXIV5UeZyIi+lNGmVL3YXgNQDOGsiq9Mm6FcxmFzeH2alQd14Sr9lJ7Xp8tX
 q4zg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738405403; x=1739010203;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=415b3b6ok3FTbh8VoB2xwBT7ILSw2G3zMVHPgcWNACw=;
 b=LbjHWapuBFiuvZb7+DPqQb7Hzdarq7YHB91BIah2KHgHSN1Cl12z1JvWWQpX4VhGWt
 YbYMugxzioaIfy95+qnNlOK+Ghr+6gIrn+KXC7ExDqs5aW7IKJY77BccVPeTgS3+b/XS
 PCGBVgh6e2aow+1NR1P2da0J46oov/KF0iAT0g/30kz/iYQEaODwH8oilgW+bQmKNukI
 exwlY3Z5A5QJvO661y9C8S71mhw5/0qgqEQpv1tpSjXx7zWEuif4rrP0BLHen5d6Kr1Z
 4uT9Al/tej9uLLd8LoQJZ4l7huBaQPN3QeGCDXCNWZWy68rkDj3OtLFjSho8We9PwVaU
 LAJg==
X-Forwarded-Encrypted: i=1;
 AJvYcCWC0tvDyd9spO+7nzXBy6NAE/yVzBS+8VFwmT9lPBJqUBZQ1Ryd7b/ubWQTIZ3sIyg4lCceow==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyeNB9V1OWWwOdtskXd0PFrDFwwyZLA0WDARS3e0Lke21miSOoK
 5/KP8uwtX2aC5L8S0+50XP6qyLPUkqLSx32JOsDeQbmxR9d1Zjziet4I3g==
X-Gm-Gg: ASbGncsID5FJtvm7x92kGO20Ktl2S7L4cOhOCY8qGAhQagovD3E8IbdCCw1cJXWilAL
 qBPGk3qpdL3q7VqZzuNAydeI2ufJDUou5XsK1BsVUJ1MB1K8beT7HwOWz1g/2J1VgkQy87gZxf5
 SNSvaOdS03TDOZmE2pTf4aMrbRwccg8ZWPuo8W1Qx3dWAVgdb3MSifYt013QfSTeZzTAE9HlWki
 yxVIc8LAq7t+oett6+9vVk8xXMUZEWhykp3jP1bjGlCFkjFsGnKKCAZLgq46/GtXzdh1G9wB2sm
 7m4jrg3/bHGjvix/f8NGE37TTtfz1r1SdzPQfE5YEBTcdZySSa5el0r+OROp3RbwK/YXWioaGgG
 45TSXxJ559rzqZPVk6rOkTsbo
X-Google-Smtp-Source: AGHT+IEqo0RkaP58r1NU8NI8rXxD5CXxVfLUtvzAsd8BL6XlroczCedZSKPFlfbkTvRxLh/Tb+Hz+A==
X-Received: by 2002:a17:907:1ca7:b0:aa6:becf:b26a with SMTP id
 a640c23a62f3a-ab6cfcc67f1mr1627814166b.9.1738405402745; 
 Sat, 01 Feb 2025 02:23:22 -0800 (PST)
Received: from pro2 (p200300e0b713f400f072b6ab134acb58.dip0.t-ipconnect.de.
 [2003:e0:b713:f400:f072:b6ab:134a:cb58])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab6e4a2fe78sm422689266b.125.2025.02.01.02.23.21
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 01 Feb 2025 02:23:22 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <m2seozjo3c.fsf@HIDDEN> ("Gerd =?utf-8?Q?M=C3=B6llmann=22'?=
 =?utf-8?Q?s?= message of "Fri, 31 Jan 2025 11:04:55 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m28qqrlkyg.fsf@HIDDEN>
 <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
 <m2seozjo3c.fsf@HIDDEN>
Date: Sat, 01 Feb 2025 11:23:21 +0100
Message-ID: <m2msf6ezfq.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:

> I take everything back. I think it would be much much better to do that
> all in Lisp.

FWIW, a proof-of-concept, only showing a frame with a menu. 200 loc with
half of it copied from tty-tip.el.


--=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: attachment; filename=tty-menu.el
Content-Transfer-Encoding: quoted-printable

;; -*- lexical-binding: t -*-

(require 'cl-generic)

(defclass tty-menu--item ()
  ((name :initarg :name :initform nil :type t)
   (key :initarg :key :initform nil :type t)
   (binding :initarg :binding :initform nil :type t)
   (props :initarg :props :initform nil :type t)))

(defclass tty-menu--separator (tty-menu--item)
  ((kind  :initarg :kind :initform nil :type t)))

(defclass tty-menu--button (tty-menu--item)
  ((type  :initarg :type :initform nil :type t)
   (selected  :initarg :selected :initform nil :type t)))

(cl-defmethod cl-print-object ((obj tty-menu--item) stream)
  (princ "<item " stream)
  (with-slots (name) obj
    (cl-print-object name stream))
  (princ ">" stream))

(cl-defmethod cl-print-object ((obj tty-menu--separator) stream)
  (princ "<separator " stream)
  (with-slots (kind) obj
    (cl-print-object kind stream))
  (princ ">" stream))

(cl-defmethod cl-print-object ((obj tty-menu--button) stream)
  (princ "<button " stream)
  (with-slots (type) obj
    (cl-print-object type stream))
  (princ ">" stream))

(cl-defgeneric tty-menu--button-width (item)
  (:method ((item tty-menu--button)) 5)
  0)

(cl-defgeneric tty-menu--width (item)
  (:method ((item tty-menu--separator)) 0)
  (length (slot-value item 'name)))

(cl-defgeneric tty-menu--insert (item button-width max-width)
  (:method ((item tty-menu--separator) button-width max-width)
	   (insert " " (make-string (1- (+ button-width max-width))
				    ?\-)
		   " \n"))
  (:method ((item tty-menu--button) button-width max-width)
	   (with-slots (type selected) item
	     (if (eq type :toggle)
		 (insert " [" (if selected "x" " ") "]")
	       (insert " (" (if selected "*" " ") ")"))
	     (insert " " (slot-value item 'name) " \n")))
  (:method ((item tty-menu--item) button-width max-width)
	   (let ((start (point)))
	     (insert (make-string button-width ?\s))
	     (insert (string-pad (slot-value item 'name) max-width)
		     " \n")
	     (with-slots (props) item
	       (when-let* ((help (plist-get props :help)))
		 (put-text-property start (1- (point)) 'help-echo help)))))
  (:method :around (item button-width max-sidth)
	   (let ((start (point)))
	     (cl-call-next-method)
	     (put-text-property start (1- (point)) 'face 'menu)
	     (put-text-property start (1- (point)) 'mouse-face 'hl-line))))

(defun tty-menu--item-list (keymap)
  (cl-labels
      ((filter-binding (b)
	 (pcase b
	   (`(menu-item ,name ,bind . ,props)
	    (if-let* ((filter (plist-get props :filter)))
		`(menu-item ,name ,(funcall filter bind) . ,props)
	      b))))
       (normalize (b)
	 (pcase b
	   (`(menu-item . ,_) b)
	   (`(,name ,h . ,b) `(menu-item ,name ,b :help ,h))
	   (`(,name . ,b) `(menu-item ,name ,b))))
       (make-separator (name props)
	 (make-instance 'tty-menu--separator :kind name ))
       (make-button (name binding props)
	 (let* ((button (plist-get props :button))
		(type (car button))
		(selected (eval (cdr button))))
	   (make-instance 'tty-menu--button :name name :props props
			  :binding binding :type type :selected selected)))
       (make-item (name binding props)
	 (make-instance 'tty-menu--item :name name
			:props props :binding binding))
       (item (b)
	 (cl-destructuring-bind (kind name &optional binding &rest props) b
	   (cl-assert (eq 'menu-item kind))
	   (cond ((string-prefix-p "--" name)
		  (make-separator name props))
		 ((plist-get props :button)
		  (make-button name binding props))
		 (t
		  (make-item name binding props))))))
  (cl-loop for b being the key-bindings of keymap
	   collect (item (filter-binding (normalize b))))))

(defvar tty-menu-frame-parameters
  `((visibility . nil)
    (background-color . "lightyellow")
    (foreground-color . "black")
    (width . 0) (height . 0)
    (min-width . t) (min-height . t)
    (no-accept-focus . t)
    (no-focus-on-map . t)
    (border-width . 0)
    (child-frame-border-width . 1)
    (left-fringe . 0)
    (right-fringe . 0)
    (vertical-scroll-bars . nil)
    (horizontal-scroll-bars . nil)
    (menu-bar-lines . 0)
    (tool-bar-lines . 0)
    (tab-bar-lines . 0)
    (no-other-frame . t)
    (no-other-window . t)
    (no-delete-other-windows . t)
    (unsplittable . t)
    (undecorated . t)
    (cursor-type . nil)
    (no-special-glyphs . t)
    (desktop-dont-save . t)))

(defun tty-menu--make-buffer (keymap)
  (with-current-buffer (get-buffer-create " *tty-menu*")
    ;; Use an empty keymap.
    ;;(use-local-map (make-keymap))
    (dolist (var '((mode-line-format . nil)
                   (header-line-format . nil)
                   (tab-line-format . nil)
                   (tab-bar-format . nil) ;; Emacs 28 tab-bar-format
                   (frame-title-format . "")
                   (truncate-lines . t)
                   (cursor-in-non-selected-windows . nil)
                   (cursor-type . nil)
                   (show-trailing-whitespace . nil)
                   (display-line-numbers . nil)
                   (left-fringe-width . nil)
                   (right-fringe-width . nil)
                   (left-margin-width . 0)
                   (right-margin-width . 0)
                   (fringes-outside-margins . 0)
                   (buffer-read-only . t)))
      (set (make-local-variable (car var)) (cdr var)))
    (let* ((inhibit-modification-hooks t)
           (inhibit-read-only t)
	   (items (tty-menu--item-list keymap))
	   (button-width (apply #'max (mapcar #'tty-menu--button-width items)))
	   (max-width (apply #'max (mapcar #'tty-menu--width items))))
      (erase-buffer)
      (cl-loop for item in items do
	       (tty-menu--insert item button-width max-width))
      (goto-char (point-min))
      (hl-line-mode 1)
      (list (current-buffer)
	    (count-lines (point-min) (point-max))
	    (+ button-width max-width 2)))))

(defun tty-menu--frame-parameters ()
  (let ((params (copy-sequence tty-menu-frame-parameters))
        (fg (face-attribute 'menu :foreground))
        (bg (face-attribute 'menu :background)))
    (when (stringp fg)
      (setf (alist-get 'foreground-color params) fg))
    (when (stringp bg)
      (setf (alist-get 'background-color params) bg))
    params))

(defvar tty-menu--frame nil)

(defun tty-menu--create-frame (keymap)
  (cl-destructuring-bind (buffer height width)
      (tty-menu--make-buffer keymap)
    (let* ((minibuffer (minibuffer-window (window-frame)))
           (window-min-height 1)
           (window-min-width 1)
           after-make-frame-functions)
      (setq tty-menu--frame
          (make-frame
           `((parent-frame . ,(selected-frame))
             (minibuffer . ,minibuffer)
             ,@(tty-menu--frame-parameters))))
    (let ((win (frame-root-window tty-menu--frame)))
      (set-window-buffer win buffer)
      (set-window-dedicated-p win t)
      (set-frame-size tty-menu--frame width height)
      (set-frame-position tty-menu--frame 10 10)
      (make-frame-visible tty-menu--frame)))))

(tty-menu--create-frame menu-bar-file-menu)
(provide 'tty-menus)

--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 15:14:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 10:14:07 2025
Received: from localhost ([127.0.0.1]:53758 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdsid-0005E8-1M
	for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 10:14:07 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:58934)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tdsia-0005DT-H8
 for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 10:14:05 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tdsiS-0004sw-Tz; Fri, 31 Jan 2025 10:13:58 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=2cvOwNYeeqNQl5REpZnSeFzrVrZueNJKlVo0RQ2dZTE=; b=AAMTW7Mh0AE6
 YJ7X0b0lvd4MrGbS+9Nsa6mFB+JI/X1HUmc3MjUOqIgVoKeXU6X5qSNbYMZXS+T1OOX8YD4UdqtCb
 Ei1i7ve9d0Q++Zush3n0VF90zPlyeg4AavfQpFLKAoa7vItDg6CvvOOr3V5ndfbfxKg5voVc6wulI
 90OIfUnrn0mWiZzFrCaAnERYUPcW8gj0nv1DiY8BKaICAqBILB0tE2OI/75Mz6y2BE9XSvrv8+t45
 z/A/GDF8L0kB41ql3RRexTlvmtapEXY6iynUIvWCPL0YJUlzmAm0xaycXgtxMsQiXlxMa50+Gmx4O
 V6Q9MjZewL+dvPOTbIUSgg==;
Date: Fri, 31 Jan 2025 17:13:55 +0200
Message-Id: <86h65fhv7w.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <4d472bb3-1e3f-4703-b820-2ec6b52ad729@HIDDEN> (message from
 martin rudalics on Fri, 31 Jan 2025 15:41:19 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m234h4oyty.fsf@HIDDEN> <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN> <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN> <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN> <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN> <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
 <m24j1fl6yt.fsf@HIDDEN> <eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN>
 <86seozi4j2.fsf@HIDDEN> <4d472bb3-1e3f-4703-b820-2ec6b52ad729@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Date: Fri, 31 Jan 2025 15:41:19 +0100
> Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
> From: martin rudalics <rudalics@HIDDEN>
> 
>  > What's "a painter's algorithm"?
> 
> I meant what Wikipedia formulates as
> 
>    The name "painter's algorithm" refers to the technique
>    employed by many painters where they begin by painting distant parts of
>    a scene before parts that are nearer, thereby covering some areas of
>    distant parts.
> 
> As for the menu bar it would mean that we draw the (distant) normal
> windows first and then cover them with the (nearer) menu bar items.

The TTY menus are drawn by writing the text directly to the desired
matrix, thus overwriting the characters produced from text displayed
in the frame's windows.  If that means we are using the painter's
algorithm, then yes.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 14:41:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 09:41:33 2025
Received: from localhost ([127.0.0.1]:50692 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdsD6-0008Qm-P4
	for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 09:41:33 -0500
Received: from mout.gmx.net ([212.227.17.20]:48813)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdsD3-0008QT-HV
 for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 09:41:30 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738334482; x=1738939282; i=rudalics@HIDDEN;
 bh=SnwiWPD08SCoMnkxWwLETqQivN24yfKlNztqC1+waZo=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=hxpK6wJvc4UhsJJ0Xwh89UdCK/tYIMo1vDD7Y7kpu+1TJQL1Hh37pkxLVhtIzz/3
 LsEm6ncwTJgAHdgeWZNnoOEgyfzSMSksT1FNeHYJXkGg/YjQKhTVgBvzTPECOAIDM
 dWXoYSET6kbmriW5kDRIKApXdZJuLAR2sQAr6X68N4OfrQXmVjfgkEbjoPjeopBBJ
 Rr9KrsdBAqCWSMX/MUNvnXx3N9dHB2XlvX9v3WGx+vZQEdyiwvaPODXjTWCKDHWYe
 K3OMzUY6DcMTnRRTuMQFQGbfUOmnDTj6cXQGigUuSsCKlQh+fn/IMUa2UlaWV3pYQ
 X4H9KXR6ShcUG0Yoyg==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.96.175]) by mail.gmx.net (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MPGVx-1to0ZL1hiH-00U6zK; Fri, 31
 Jan 2025 15:41:22 +0100
Message-ID: <4d472bb3-1e3f-4703-b820-2ec6b52ad729@HIDDEN>
Date: Fri, 31 Jan 2025 15:41:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: Eli Zaretskii <eliz@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m234h4oyty.fsf@HIDDEN> <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN> <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN> <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN> <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN> <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
 <m24j1fl6yt.fsf@HIDDEN> <eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN>
 <86seozi4j2.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <86seozi4j2.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:+MdmwDNV2SQ/sRqCY3XOLkWTo3rC10dmODKUpY9v0Kzp7Z7uaRw
 ALtKAWq5KjqZsB56u1UkyaReK5Ju5fVdIRkACYAU3Hw95hhQxZtoQqp8j1YaqfnB9CleAG8
 YQCY4hWhvGpZc7OQD9WIFuhJSZhwrcTYKmXf8sjEM+Drd/WtV6aCBSa4ijlVSMYj7GzcWb7
 T8Zq3H/OjvX/K6qfjbHBA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:PiVbXGmxlSE=;p6ggsh28X31PG55Pmgqy1TywoC4
 ZVeWAfY+v2WZuh0oGm2icDGJFlgXcoJkmIq/mtygg8NehTbvDgaabCJU0gKPwaEn9WM6NAxO8
 JIqtZshnuYJsDR/i/5yEuRFBQvV/w8iwCaHdY5KMp07HnZT0nT8deVmSVUoco3ypnvNuf+31m
 zvK6k5dXtl8O410rukyFVnkA5HWmxUP16ZLGaqyVIw6EhBlDd9Tann3zhx8wLKwBDAlaPn/Ra
 v2lIZtEcsAkmoufGR1UQj226DLDERKJbae4jIuGnkWP/6+T1oegDO3HlAGnQbURzU0dbbtbh6
 qGG9omZD/ZP/Xg8ZDeVYSrtSnY5x/D5jtXrjwDDT9GakpSQk++7MIi6EDfA1WyHnVq4PBJIC7
 MatxeDg45aPt/Ob0PIiXnKn3Wux6aqdKNL8nqcwopkK0dVmAEIlX3oNC8ylbnSYLa2pKW6EZZ
 0VuwiHjXYC6qkMe8p3eV8sjmUOOUIBFfy4PKKMoroaL4lgBM1250otqPRPpy1hftSpsBc+2q/
 +GHNeqIHU5nTvxodKBGaOk0/tiyo3P9yt8suHnHn1FXkjkUW7bgCUOx6UkKnCtJVhUfwsn6s7
 2QdV2b9AL1oY798Lo7Xqpk89rJC3ziH+8tMsYhBzWh5s/ayc9GgWHMAmTScTQdvT4w16g997x
 mDoX+tSMXYWRprTd4S5Emzf0HHM/iIVPcSY33c9jGHsMIFFiSaCDSlOrwPxUfyp2K0VCQYAXP
 LR62+GfAarM93T8vi/XZI6vRnfZH4+koFpOZKkFUnZ4QT7RFvyhDcCKh/DvIF5Ba1PNwSdXSx
 O97VQd3C48xvEXUeWi2aeYtcPgUOUVfQTksjpYxKDVVJL840hzN14inyBqaC2jz/wYojPe78U
 NJErV02NOAAWTBVAkrqaCSEcBfj7/8CrLJGYXYmhBDCWvR1a066Gohpj3tC0qADsiSk4dP0O5
 LFBSsm02BPBqwJbZFqYBykXWMgny3tBPaYvIuw2D25MgPzPlVb2/zD3iNCql0nornXTAEFvBq
 oY+I+3YnQewfH7lrwBU2jTB+HwRHM1ZWXXdi2Kr3qQi5f8gW7mmA0TBD/Vw7ltBRP//fNIvYk
 Q2fMGtW7VEVg9Tm/pLOvV/dfDfzFDMJeTei0htPq5Y4IP96pZ+yV/GdS9dqRxAU2k7KVS6aLy
 dUAoahcoZ/swwP1CnRcYA/ICmm5xJKvmA/Lxmq7Khe0kz88jM9k5J4fiptjfAE7c0VkC5yXOP
 qa5RZjlfR/d9SgHZFdi0xPxXUbCq2TbsAEuCCQkma8kAzfkkRvi3aBzm/+J9mrUfg/NCPzWrI
 OxGK55KkeKT89t/Q5fwcMbrkA1zIQCgb3XLKYsoyb7OhjM=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

 > What's "a painter's algorithm"?

I meant what Wikipedia formulates as

   The name "painter's algorithm" refers to the technique
   employed by many painters where they begin by painting distant parts of
   a scene before parts that are nearer, thereby covering some areas of
   distant parts.

As for the menu bar it would mean that we draw the (distant) normal
windows first and then cover them with the (nearer) menu bar items.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 12:03:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 07:03:17 2025
Received: from localhost ([127.0.0.1]:50308 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdpjw-000682-LD
	for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 07:03:17 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:46230)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tdpjt-00067f-SF
 for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 07:03:14 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tdpjn-00077D-O8; Fri, 31 Jan 2025 07:03:07 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=yAMfoYYLHnaBLAXcUUOJBGvNN0OrKR6DPq1m9ANiVbE=; b=bzqlDRz1vzAN0BR+aL81
 sCnOo7qCIxRgikwgapVJK49RitxldTOTX0qoSVy5OxfmMUj9lsDgyVLGLxJFQg00Mkf0xaI1oCCE2
 o7V4hgL2O8woX6FpVZFPPSaKyuZG66SXieLLNpgAViC+BWkJN/MPuu0D256CmljcTGp/io54noJK3
 LwZ3DSDLvYAJyKgLxH+sCSK+9yjST2uZZu7WRWfqJZRygttOzwsAJtY4gUN6tudIVDTo6lxgAd9xn
 BFoJpOtBQ4jdPyfCARLIa24JB0I5IIk3hoM5JZhBJ8rHfRKR+EBjQSMgo353pSKtMJAEeD5Nc/p6y
 mZoexy3z2JAQzw==;
Date: Fri, 31 Jan 2025 14:03:02 +0200
Message-Id: <86r04ji421.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Gerd =?iso-8859-1?Q?M=F6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <m2o6znjn0c.fsf@HIDDEN> (message from Gerd
 =?iso-8859-1?Q?M=F6llmann?= on Fri, 31 Jan 2025 11:28:19 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m28qqrlkyg.fsf@HIDDEN> <m24j1fl6yt.fsf@HIDDEN>
 <eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN> <m2o6znjn0c.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: rudalics@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Cc: Eli Zaretskii <eliz@HIDDEN>,  lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
> Date: Fri, 31 Jan 2025 11:28:19 +0100
> 
> martin rudalics <rudalics@HIDDEN> writes:
> 
> >> Just came to my mind that one could re-implemented tty menus in Lisp
> >> using child frames.
> >
> > I have never looked into the menu bar drawing code.  Does it use a
> > painter's algorithm?
> 
> The menu bar itself, the stripe at the top of a frame is pretty special.
> On GUIs without external, i.e. toolkit, menu bar, a window is used to
> display it, on ttys not IIRC.

It's not a window on TTY frames, indeed.  See the commentary to
display_menu_bar:

  /* Redisplay the menu bar in the frame for window W.

     The menu bar of X frames that don't have X toolkit support is
     displayed in a special window W->frame->menu_bar_window.

     The menu bar of terminal frames is treated specially as far as
     glyph matrices are concerned.  Menu bar lines are not part of
     windows, so the update is done directly on the frame matrix rows
     for the menu bar.  */

And the corresponding code:

    else
  #endif /* not USE_X_TOOLKIT and not USE_GTK */
      {
	/* This is a TTY frame, i.e. character hpos/vpos are used as
	   pixel x/y.  */
	init_iterator (&it, w, -1, -1, f->desired_matrix->rows,
		       MENU_FACE_ID);
	it.first_visible_x = 0;
	it.last_visible_x = FRAME_COLS (f);
      }

> The menus themselves are drawn, simplifying, in these steps
> 
> 1. Save away the frame's whole current matrix
> 
> 2. Produce a desired matrix that contains the menu
> 
> 3. Update the display. Maybe loop for highlighting item.
> 
> 4. In the end, restore the display from the current matrix saved in the
>    first step.
> 
> That's save_and_enable_current_matrix, tty_menu_display,
> restore_desired_matrix and alike. The event loop is somewhere in
> tty_menu_activate IIRC.

Right.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 11:53:01 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 06:53:01 2025
Received: from localhost ([127.0.0.1]:50281 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdpa1-0005ch-EZ
	for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 06:53:01 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:59158)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tdpZy-0005cO-37
 for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 06:52:59 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tdpZs-0003LS-Fp; Fri, 31 Jan 2025 06:52:52 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=Af+3NQr0r7yYRE4jsIXrCW9VJUsY9eQNClaB563Lb9o=; b=XN3XixStDGd1
 DK6bX3oqVEkHIdwvKTRqyb46/m8/DgkFPtlu0ws8cAjKDJQzkBC8VUJEAbF3zgqCJMafQfXMuYKaX
 nF4GDBqGpudk6bQszsTMITY7xQeCLzb6WhlcJIoY8GLHv1wlP7b+IB/gtCo5V4brIW9uWlme0Ebj6
 X+Dvs3f0UYuSIsR1bNY2B5+ggxNU4ECWMkBniwE+vXlCAoO0SNxhoUzFGAChzjKpObjgKAyKfVzGp
 SZwrxjMZ2TYo9o9US0N1wTSUEOGQJFhcAe06zH54vjmMuD/dXpaYowt5sRFzDjli9LH+D5+Ocq6Ip
 /xI99w9lEkpwkZbgydOnIA==;
Date: Fri, 31 Jan 2025 13:52:49 +0200
Message-Id: <86seozi4j2.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN> (message from
 martin rudalics on Fri, 31 Jan 2025 10:44:17 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m234h4oyty.fsf@HIDDEN> <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN> <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN> <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN> <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN> <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
 <m24j1fl6yt.fsf@HIDDEN> <eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Date: Fri, 31 Jan 2025 10:44:17 +0100
> Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
> From: martin rudalics <rudalics@HIDDEN>
> 
>  > Just came to my mind that one could re-implemented tty menus in Lisp
>  > using child frames.
> 
> I have never looked into the menu bar drawing code.  Does it use a
> painter's algorithm?

What's "a painter's algorithm"?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 10:28:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 05:28:30 2025
Received: from localhost ([127.0.0.1]:50112 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdoGD-0001Ul-Uu
	for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 05:28:30 -0500
Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]:46488)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tdoGB-0001UU-3c
 for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 05:28:28 -0500
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-a9e44654ae3so297380666b.1
 for <75056 <at> debbugs.gnu.org>; Fri, 31 Jan 2025 02:28:27 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738319300; x=1738924100; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=lM/kGB4JL4Ov00QQWXvRKa8omrZ3shYiCJVbDtyiVcI=;
 b=Sf6ID3UG18eOpw/daYJFhp/P2Sa1uh2nXQaNzYnE+iJ+/9Wefwsg8SbrurK8bOgiUN
 8Yoqd6JvFnM6M+bvDB5JTDXbgr10Hf3OD+1jHmpq96lLrSwivBxfsC9s4Ejju6lpI/h3
 bJX/NVGaRdd8QAZYW8gU2+8j7ZFhP5smSqa5W+FhjO5rwrdK2DsXMFgLWqM7Dil8+7Ta
 xWmVDMcuJMNAffeKucGUc/uZzHOBFS7EbeUaDZvYx082zxGZ1GMqpfgDTI5M11MXUCeK
 jO9VTN5Em8egJewaHnUxxNJTgeAcKyW0FTuthyTtDF0Y/Sc9cqiHoD4fFS+b2pWocS+k
 2sEQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738319300; x=1738924100;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=lM/kGB4JL4Ov00QQWXvRKa8omrZ3shYiCJVbDtyiVcI=;
 b=N48e10u3mBZVObWBiJWSaFh7CJlZpfQ3w3H73+iYclYzA+7VVIZMkmjDcjNJvZqenf
 fHNNAXoxkwhn/48nz0XP77JzkmgLDksS+vp1K+JN7tO1IE63NbW2/2MzH+ngT36ffhKu
 bcV92PcaT5dGT4EC6PggxZaO5cFaDQQXwpV5hCyfKpbhK3xYP2kBwa0oFZjV8SJ28a3x
 uA4t2M5mqU+JwiRPEjYQa7a7HFH5iUwYvZqfzL3MeFMKKdm54L0yQISHKN5xe7q/+9AQ
 dxgoOJDWHxEHJjrquady5oTZpXjHclYAqY3BVzqmDl1YYg3CR3XxU9UF4gVoB8oK6yX5
 9GQw==
X-Forwarded-Encrypted: i=1;
 AJvYcCW9MB3bwuahPylmtDQoC9pUgzdBQrKnLUIOwjW6A0RDJpDR7TpTCXUpHFyHZ13pzJburAKh0w==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yx+sLSyL+rAhjzEdyvvRMyfbsmh0v1gz0DklrBzIMun+yCTC2JH
 F6USkFEKp83EKXhG0GfIWOAVKw9/s1vDW8/I+6a1J2C9UQCgr3/4KUlx1A==
X-Gm-Gg: ASbGncuhukIz75raMN8hWqOYdPl+vJxdC335IiAWEUga5OEx7EUDN+RZDZA1Tx365np
 3Q2iBTJNcC2W1OTMk2wASxkfW0FMF/MK0yua3GLkFaed8oTRsYqwhVamyTFHUD1wxjzy0zHwztp
 zUS9RipA7p+4s5VPPcUSjzTNBOqzyCLAtJGjDapKCTEP1lYjdGqXC5zlGJT0wXQq7p4YNzVQn5J
 QDZLXpHdvt71rl+RqNfCBDUJ0rG0ASuOCN4GSdLMVjn5NNyWXoaTROQ+CfwlDZd+aeFmc9FiX/N
 pk/jBCvgXH1fo+W7gXd89gAxefrDAaoSCIo7ONc2cEcb7Gx+PSbKgGujdonCCedFX4I/LNpqRYX
 qe2xdDQbZgdjdAl5LkrPhYr03
X-Google-Smtp-Source: AGHT+IH8UsW+gSWU0gDMLuJ9paO/ah+WblA0BlM2Fca1L8W88NMVW8PfK3DpHL87uT1d+9L48hd2kg==
X-Received: by 2002:a17:906:e218:b0:ab6:dd6b:2a3 with SMTP id
 a640c23a62f3a-ab6dd6b0549mr587430966b.22.1738319300290; 
 Fri, 31 Jan 2025 02:28:20 -0800 (PST)
Received: from pro2 (p200300e0b70975002d7f5749bbacbd35.dip0.t-ipconnect.de.
 [2003:e0:b709:7500:2d7f:5749:bbac:bd35])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab6e47d0f7fsm273798366b.56.2025.01.31.02.28.19
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 31 Jan 2025 02:28:19 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN> (martin rudalics's
 message of "Fri, 31 Jan 2025 10:44:17 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m28qqrlkyg.fsf@HIDDEN> <m24j1fl6yt.fsf@HIDDEN>
 <eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN>
Date: Fri, 31 Jan 2025 11:28:19 +0100
Message-ID: <m2o6znjn0c.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>> Just came to my mind that one could re-implemented tty menus in Lisp
>> using child frames.
>
> I have never looked into the menu bar drawing code.  Does it use a
> painter's algorithm?

The menu bar itself, the stripe at the top of a frame is pretty special.
On GUIs without external, i.e. toolkit, menu bar, a window is used to
display it, on ttys not IIRC. Let's ignore that for a moment.

The menus themselves are drawn, simplifying, in these steps

1. Save away the frame's whole current matrix

2. Produce a desired matrix that contains the menu

3. Update the display. Maybe loop for highlighting item.

4. In the end, restore the display from the current matrix saved in the
   first step.

That's save_and_enable_current_matrix, tty_menu_display,
restore_desired_matrix and alike. The event loop is somewhere in
tty_menu_activate IIRC.

I think we could save a lot of complexity with an implementation in
Lisp: Prepare a buffer displaying a menu keymap in a suitable form, with
help-echo, local-map properties and so on, show the buffer in a child
frame, enter an event loop or something and so on.

But it's just an idea I had when thinking of how easy tooltips were to
add in pure Lisp using child frames. 




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 10:05:05 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 05:05:05 2025
Received: from localhost ([127.0.0.1]:50072 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdntZ-0000Jw-6I
	for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 05:05:05 -0500
Received: from mail-ej1-x629.google.com ([2a00:1450:4864:20::629]:54726)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tdntX-0000JF-2U
 for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 05:05:03 -0500
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-ab6f636d821so174218566b.1
 for <75056 <at> debbugs.gnu.org>; Fri, 31 Jan 2025 02:05:03 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738317897; x=1738922697; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=C4PSnN6xnCWWn75leX+HE95JEmwn8FkBYObwqNiD35c=;
 b=nOX8k8mzk3HtM9oNbDlTsj9RUq4450ylOjfqjNJSbFWIbgQBXcrF7/OGqXFzkWvXB6
 APbNkSkc+DweRQAfjXhpjpbxgpa3NFcLYZuAne07Of8CusqpsUp3lQasWP2v1vQMfKx/
 vsgZoL4UEkio6gNvWzrZp3BGwVdJUTtNwMaOJ95rx2jD0HVH9Lbn4B5BGmBnC110okrl
 cwFvRb/kxHNOlkWWFKgQi/Adv6ThoL5cqhR/3nZW7haj1QFPCMhfy9SLzcBBzwD55CgL
 AOgc3DZySH7Be7o8CaSv4+97h6uw3a4IOX73s4byi5mxhMCsT5cwoTuwGCKaX5zDP7IL
 ZOkg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738317897; x=1738922697;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=C4PSnN6xnCWWn75leX+HE95JEmwn8FkBYObwqNiD35c=;
 b=MsRAi/eC9Ma/grZJfNy8Pwr/c5shCyl7YfPGs75Rc8zFOSIFcacqbTg6zQH09hUAO4
 OWYMokyXy41L49mMSMEaGqG+NQfSGQkscfvKjpQTRJfWY+Y1idULxtAQZqpFJ9SxtRsl
 FS+uC5A59gFFMjKkSdFlpDYF9PZ42uNuI2cm7kv73EX2dvSIBO1C2UTsBkfuYlVTjyFW
 PqLvCo4VLiZuj9UsRXdMGTKSu8ZeVuZkjzB1hjKlvhcYSqgtVA2hwN6gVrL1cL+7ln9U
 L25IuwDowrrhP+gm9z/YHPYsIIMAd1WEPr85iuuFgjYxhHIB8+lFRG02sAaZ5yIvCD4W
 5c0A==
X-Forwarded-Encrypted: i=1;
 AJvYcCU01IJ8usVnps+jvIpvrbDVj7bfT8vgH7NFqO99dD4JiMYxqECkj+d0mTQkNKuenoRKkDpyXg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyMwO/9Tyq5DHDepmjd2NrxbVgHoRse0Yim3aw0l5xQSuwYJVv6
 Gl9Wqehvr7uK1ns0KQKfa+nWLsxjd4s85snJVYzAqQaha1CJhtPfR/wONA==
X-Gm-Gg: ASbGncuhX355P7zTPfhtD4CBPHc9k4dZ+MZ7DYcjYKfgezZnORV9NoEPkfQc9/yu/4V
 9jIw0tgTvkeA5Dz9B9CadW7JNVMKE3aIcyBnUQLFdURaYrJ6HuKGGUxUNcoZS5x+2rHMDlWu4xi
 xfi3rHmD3R9NmyqQ+JZ9nL4IfyseZeuPfb9xvhyB6WWGaKjoQK3feyXPcFenny+dWMmPhASjXJF
 EAkcGSpH5qLC5oJgCncesxBJzqGE5cFQQG5xDB7mImYpDuc3i18fzVkxQfZdLSGm6Rju5N7hGdh
 KidcvpMrOITZesrj0ESfAOymP24Qib+RhRVB1lWi6ovs9fPLXrNSn23pkKKpLOceS2XUoCFCJG7
 tr7bReAZX5s0EhshVDV+jngsS
X-Google-Smtp-Source: AGHT+IFWBtnOlZagy+XKT+jcuEpgCTPWdZQugPnkmHpLQ1ViD/CuNlDwI3CRd3LwQlwiIwsgZCSL/A==
X-Received: by 2002:a17:907:7f90:b0:aa6:9461:a186 with SMTP id
 a640c23a62f3a-ab6cfda43e1mr1035067166b.46.1738317896432; 
 Fri, 31 Jan 2025 02:04:56 -0800 (PST)
Received: from pro2 (p200300e0b70975002d7f5749bbacbd35.dip0.t-ipconnect.de.
 [2003:e0:b709:7500:2d7f:5749:bbac:bd35])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab6e47a8485sm266824066b.9.2025.01.31.02.04.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 31 Jan 2025 02:04:56 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN> (martin rudalics's
 message of "Fri, 31 Jan 2025 10:44:09 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m28qqrlkyg.fsf@HIDDEN>
 <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
Date: Fri, 31 Jan 2025 11:04:55 +0100
Message-ID: <m2seozjo3c.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>> Could you make sub-menus display and behave more like on a GUI? For
>> example, when I choose Tools -> Spell from the menu bar, the Spell menu
>> replaces the Tools menu on the screen. On a GUI it would display on top
>> of the parent and one could navigate back to the parent with the mouse.
>
> That would be nice but cascading menus on a tty is non-trivial - there
> are already some some very clever hacks to make sure that each menu is
> always drawn in its containing frame.  BTW, GTK builds can even enlarge
> the Emacs frame when the menubar gets longer.  Note also that GUI builds
> without toolkit cannot cascade menus either.
>
>> Similarly for context menus.
>
> Same difficulties - one might have to move the menu to fit it into its
> frame.  Not that it cannot be done but on a GUI context menus (or a
> tooltip) can be easily drawn outside their owning frame when they get
> too large.
>
>> Also the first line of the menu "Spell >" looks weird.
>
> In what sense?
>
>> And keyboard navigation back from a sub-menu to its parent would be
>> nice.
>
> Hmm... via backspace?

I take everything back. I think it would be much much better to do that
all in Lisp.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 10:02:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 05:02:12 2025
Received: from localhost ([127.0.0.1]:50067 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdnqm-0000E2-7f
	for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 05:02:12 -0500
Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]:52327)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tdnqj-0000De-Nu
 for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 05:02:10 -0500
Received: by mail-wr1-x435.google.com with SMTP id
 ffacd0b85a97d-3862ca8e0bbso1504275f8f.0
 for <75056 <at> debbugs.gnu.org>; Fri, 31 Jan 2025 02:02:09 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738317723; x=1738922523; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=F9Fwx/Ga/pjbL6AKhKelvsnbyCZiKXtzLZ6ieKmTPZo=;
 b=BCCoySpliQwqru/qU5DRSwL82JjthKVUqHmDyAKxuOTau0hXyg3D0prOLbHDu6Iovl
 fG2DIvEnUPLAYeO6B4AqBqkwv9Cf6JiPkAp7oKtXq/GT68wN/KHT/OPbDknqS/yKX6X6
 pcz1bJ+cKePcLOiCKo89arXDHgWP7OaCiKV4JNcgQV6tX/6OMjxJ9iAzFXavTPA860v6
 y5/FxMsDboiey1jDIESNlx1c+YhgYott0ZNqDhZ+ACOT/OGUOQSnOZvYzkt902B8hpbo
 keFhoUO0NKP741DMvrAlq9Na9ont3+NTTzsgkebPh0BMvsQ7Zfxm/GLdTdD1yha1e7B1
 QYQQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738317723; x=1738922523;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=F9Fwx/Ga/pjbL6AKhKelvsnbyCZiKXtzLZ6ieKmTPZo=;
 b=hnnC5lFuFEYNjhXsK5VIye4B5/myReM98yvqwwJQJ/SCoXlYkuDmSqe07ZmyN3za6/
 uwvknFnotOzlThAid71MunLZluli63cPEiHtxApGRVO1xw9lfooyiLuNQEH4yEnlAqyf
 jTKU64RRdjfCsTqYqBf21/vlE4EQ2et/6v1mpDYHN9LLaeqWftbGRGz+q8EGrW/js7YB
 V9q3A0ioQja/mFb3qgtvar1XY11SUE6Lq0jjv85ZKhtCUSo5yFyy9h2vq77o8pYM4nO/
 tNThs6Nhi0IKGj8XkF5RnhBhPoKq4uTbBC2ENCHDwOP2JS5NDrTfMeFZ81zYXYzzfhi4
 WhOw==
X-Forwarded-Encrypted: i=1;
 AJvYcCUEpDnopSQtFCAPki+4e87qWZue4SNAspf7bqzcWMcnx3rs+QC35s4M9ok9gHhUbkQxX2W+YA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzyEU/SO+sCr7yccd4iEvq39NVWP3zi3qGGhncnXaWq+gMlgXns
 IZjVA5+SZDqCTQmn3HqVt/m3sSw/ftuaZebOtscw8zbbr95n07+btEuQZQ==
X-Gm-Gg: ASbGncvTFqf3sQYQi2LQOifNuwVqc8F+nAfVGM3SMWptPYo4S6MBQAvP+IFktJ0qnT5
 PqTiWJIYN2kJZoaC5LpeZEjclE+MHLkJqof9eUqcQJhwIWjEat7QneZ6xhewfE3ZDGg60mC08sk
 tncVvYjX+wexaOn/6MAR8zfWsSGWnF6hJh/wS6LlplsBKYbZ6HG9Z2sn9T+how6GBXby4Ita95f
 5kYNp4/Q8QvjyernTc+KkHEqOJck0Z9pmg8Tzoc/+si8uqBCDzKNjpAmQr8iLB6pd/SEYbpIpNc
 nR1CNt/BZY6AMxgpM3x7ubTEyliE3VZc4JhNl9c+HUUvRN9zkFKbEo6CYK2UZhT7jeOJHogAGSQ
 7pXUOXVfuUaD68SyRf4my0a+/
X-Google-Smtp-Source: AGHT+IGRcUBboGo4dvgVeMUFz2UnROEGse85zZRKbnONxt6FRJRs3dA8gN826JysdgJpK+XfVS0eQQ==
X-Received: by 2002:a5d:6da8:0:b0:38c:5d42:1501 with SMTP id
 ffacd0b85a97d-38c5d4217eemr5236569f8f.9.1738317722913; 
 Fri, 31 Jan 2025 02:02:02 -0800 (PST)
Received: from pro2 (p200300e0b70975002d7f5749bbacbd35.dip0.t-ipconnect.de.
 [2003:e0:b709:7500:2d7f:5749:bbac:bd35])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab6e47a7fd9sm268461066b.34.2025.01.31.02.02.02
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 31 Jan 2025 02:02:02 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <3b83f1e5-1f42-42b5-9dbf-db74a5503456@HIDDEN> (martin rudalics's
 message of "Fri, 31 Jan 2025 10:43:01 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m2jzackufc.fsf@HIDDEN>
 <3b83f1e5-1f42-42b5-9dbf-db74a5503456@HIDDEN>
Date: Fri, 31 Jan 2025 11:02:01 +0100
Message-ID: <m2zfj7jo86.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>> There is little chance that I can change how the borders are drawn, I'm
>> afraid. I started with trying to give tty frames a border_width, and
>> failed spectacularly. It was so bad that I git reset --hard in a rage,
>> which is a really rare event.
>
> What were the problems?

TTY frames not having borders seems to be an implicit assumption
"everywhere", frame matrix sub-allocation, mouse, menus, you name it.
That was simply too much for me after hours of trying. Maybe someone
else with more patience could try again.

>>> Looks good.  But _where_ on earth (that is, in the code) do you that and
>>> how is it related to the width of the internal border?
>>
>> See copy_child_glyphs.
> [...]
>> The code is not related to an internal border, and I'm relatively sure
>> tty frames don't have one right now. At least as far as redisplay is
>> concerned, don't know about the frame parameters/values. It's like for
>> border_width.
>
> I see.  Your approach is simple but relies on the fact that you draw
> frames using a painter's algorithm.  The decoration of a frame above (in
> z-order) obscures the contents (and maybe also decorations) of the
> frames beneath.

Right. Simple. dumb, good :-)

> Basically, what you do is to draw an outer border.  

Yes, I'm playing the window manager.

> For mouse-resizing frames we can easily expose that outer border to
> Elisp. But the problem is with the coordinates. An outer border should
> belong to its frame and not the parent. Clicking an outer border with
> the mouse should activate its frame and not the parent. We can fix
> these as well but it will be a bit contrived.

No comparison with introducing borders for tty frames :-).

>>> One bug I noted now is the following.  Do C-l and M-l and drag the
>>> yellow and orange frames somehow as in before.png with the cursor in the
>>> yellow frame right before the left edge of the orange frame.  Do C-f -
>>> the cursor appears on top of the left edge of the orange frame as in
>>> middle.png.  Another C-f moves it into the orange frame as in
>>> after.png.
>
> Note that this is a bug in the cursor setting method.  I'm not sure
> whether it's been there ever since or was introduced by your recent
> changes.  In either case, please have a look.  You don't need my changes
> to reproduce it but it's much easier when you can drag child frames
> around.

I'll take a look, need to find some time.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 09:44:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 04:44:29 2025
Received: from localhost ([127.0.0.1]:50032 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdnZd-0007j3-Bh
	for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:44:29 -0500
Received: from mout.gmx.net ([212.227.17.22]:56835)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdnZb-0007ii-GG
 for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:44:28 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738316659; x=1738921459; i=rudalics@HIDDEN;
 bh=OSHuGhseV55F12/1QqJhLASXq1TFCxGJtj/dJTGa2Z8=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=BqJW3spgnCWJj/YtiCMKwgd66fQvcB214/navj3HxnfQ9fI92JQ7hKbcbXDdu3lT
 QTIeUPxLDE5ifIeCDUlJ/Xr3/5PS0W5xH64XT2S+Usv5RK1JJX4Ii3MNsbwgWrYt+
 LpcVh9kJjjPgB7kcFYKuIZRdcqNp/6kkmXpLrKtOda1mHQVOLjNLilSa7X8uEsui/
 +njmsYXApzHS2LSEQ5yKT/2QK/J5N+yGD0WKiSzhl3kN6FXlLEVWs2ZVZHYTS7f99
 cR1dt82x0ZiuiTQzC+5hKj6yjS10TH2rGcX0SMOWr9rpAHIMWAwhNHMEOjRYlfn0l
 jwOW2/i969r5BgcWOw==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.157]) by mail.gmx.net (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MkYbu-1tAXca36Vi-00lBOX; Fri, 31
 Jan 2025 10:44:18 +0100
Message-ID: <eaf6a496-3877-4222-94d8-98c6d24dc9c9@HIDDEN>
Date: Fri, 31 Jan 2025 10:44:17 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m234h4oyty.fsf@HIDDEN> <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN> <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN> <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN> <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN> <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
 <m24j1fl6yt.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m24j1fl6yt.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:1UUJqLG7JtGYqUCjjyIj7AKi/maOb3wdDJxfD/HICa52KdgRovN
 7f4sBoB/k4JRSdmAV5Xc2WZ5O1X0EmIRVJWNxtLHYq1cgyEluHsYOTheyz3lqs2bVdmkdG+
 ExIV7HFpGWKvzEsa6NEW4r4byKZq1ZP6G2Lfr+oc2wWHW3j7FsJ4Or6xt7OEDmnfAT0HRn/
 pKj6m9VQ7/aJC0U/rG9Yg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:0es37IlEfaE=;OS3N87pyRSp/vXGetGv1AdUI0Xv
 ZApFqHcKfVdF8Deo+UJKmFdNerVjTCpLZoQO+2YGtdVfhI33rFpZ5ZBBJ9+9s5QTQhfzrjP1D
 UNc8jinxgmtAN4FiZL5jRmnIOktkerjfVWQZdATqTkw9HJ4Ad5z9+hGE6gK+Ki/onJYb/jfEe
 3fHey5tZ31whEPS0223tn3l2ZAmK9+67Ph3vyyzTEK2iCKW3tsqXD2D5yLDPGB6v/5ErH8YGJ
 JUM5GGk/CoN+IUaZ6HTZiAukz7RNlblyk7juDBg/Bms/vO2/esE9KSy0SY00oMsJSY5DzTlXw
 eoRuDYNI5CAA8JE93qJcCSVMKLuaEsLUsvkHon6zReYxFSBvNix6P6URivREdTTqmKhqMjzrb
 wwqrhLHLtwxD+YucpEIp8x5wCFcTJOFngSjbgMOC0g8a4nlx0jt/Cs5753dnCAPmYCpwzSC33
 lI5pQbCaC5r9/pewIvKnjp0wz+LhvD0M1Pmnhl7TfG3N4wOk9TWCa8UMBJv1T8aLzJg+BKFB0
 EIlExIgazQTcz2znKly0xausKKqFRhJ+NshEQiGclXmeBQBmuWUV6X6hyn5dt6HIwquWAOCV0
 SblxhYzAR6sSh6bj11a5vPz5DqQg/qrNxzU6YzzKkgrNyss6bLI4ldb0ClarOcYt5BXctZwvf
 i9cR9nWSVYP+z1FerolOeTQeM1077xi6PHTGoLT+sAzRI3V8LUu52tQmuw3DB3G+uRLMuyqE+
 5grQjadpS0wp2Z5FuiYO7ln9wrom32VNtACnJ8EUTTGfT8TGihcmBm7lBfUBkqvf78bShXynE
 zFteVS7+vUcZuxoiO6pUrKbin1kQwz1KSvzSTX6Djl8ahPKCrKGtTSiSotben3CpzU03c7Ct6
 m9Rstu71TS3FSWXCfnyB+gJGDkypifWjla9VrMlrUIvbMR7ixVyinvZ1IO6bOrLBwX7YpJfPb
 uvm0UT2duekXiWk1Sq5b49M4AmFmF7xXnA7fmPZs5re4Lov+wnis1nteZ+xhBE6oV5xarq6Ob
 LhHI/ZPaSBpgF+ziOvuFDmTJ5XOWh8fcM0PNl+R8gByhNGpN4djhzr+SA6cdOBiJme2ngKLde
 H4fb0Kyx36HAhPCZ1eMSaYXSxuIiU55KEHsSQ1oVVXDrLB5QaXUwiD3f4ax3e1KVKHsV4143T
 wItHEQWqtPjdlqC/iJIDSKSBfFlmBmG3cgea9NBJjXCv9wN8lO9re7hA9BRgrKUTiu/xTXFBa
 qvZWuGd09Gkes+10WxMWKpMCU6ynLx6RMukFQ+apcTIVBhLvIv/xyfxQ6cjXoVuaHlIqPyVrh
 JKcd0Y/o0FqzYNCjD1BgfNpUAoe4xJ2uZqPrIxDtCrwvzs=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

 > Just came to my mind that one could re-implemented tty menus in Lisp
 > using child frames.

I have never looked into the menu bar drawing code.  Does it use a
painter's algorithm?

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 09:44:19 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 04:44:19 2025
Received: from localhost ([127.0.0.1]:50029 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdnZS-0007iX-T0
	for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:44:19 -0500
Received: from mout.gmx.net ([212.227.17.21]:50171)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdnZR-0007iI-4W
 for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:44:17 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738316650; x=1738921450; i=rudalics@HIDDEN;
 bh=7NprMe+nQi0qv1jo2wexNhy8ucMw17cb9v/lnkFUHV8=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=Q2HpsHE8XOPWHJq4SJEnhGr8c/DgkhvCql+tAJ+49xgpLPkWlrzLz0716YbR70BU
 MYECgYN9ZUMVzjRTnHUq/DvGZUWr5wRiSb/G6e5RPZEc1WT2RvL5aclJUr7wstK8f
 zWSKjENXw+qnRs5b+s24lHnSjuLb/9jdVJgbXWeUptu96Cwq2wXqrbnoxWmH45UXK
 M5s2ssyzODULadfRkp/gfpIhfZPdCs6K4maGMTF9d9DWTxIjAyZT1od0maKwr7S9o
 g2cGkwkQJCK3uVY9AelYgG6pRnHhHUEDS1uueLbhL6PdSwjSP6rj9Euc+64fx8xQ+
 mjCtfzbJNuQViAaVwA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.157]) by mail.gmx.net (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mj8qj-1szE1n2Wo9-00jRwD; Fri, 31
 Jan 2025 10:44:10 +0100
Message-ID: <9e4b43eb-3021-4d21-a154-8ea857dd9aed@HIDDEN>
Date: Fri, 31 Jan 2025 10:44:09 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m28qqrlkyg.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m28qqrlkyg.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:xGr4xmSQYxXp6csqdYYHWXRl8/jZz0P0F8DrqYn8af5o2Kkr5PP
 I8hyGozpYjLDJBgMqRApQkSwCwnKG52ZeKbapk4S+w4I2UrqfkZex9uBf/7PuDoISf/F5U/
 4zgqV+mpZNqZmfYszuHCg6RfhvhW6XW6w1sK4FQp7oUP4X/DEFkBXPhK1svE/GPn03VrnNS
 iXVsAN96hMlCYVYs4ua6Q==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:CpEXbzKPvM8=;PB+h2aEZhYPal04z1ArUI9g6m5x
 /mAZyORlGARxdCs0WGHknawhdb1DC4YeS1miK0mUR49IrPL5F+fhq1IepRwr8i01O7b8UvXYo
 3hJjAdJsTXAZPQNd1babUfl7nLfUCIxd6vBP19pAtc1B984JfVmOrLvC8QjDTT88X2w9wkSQb
 moVoZ2ggcuthNkl9/bEZMYkYoxvUpIE2wKkqY3os+dcjkO49Qck+LL8YWk4ONYg7h9qy4HjaD
 RZe0U6p9MiKv5Q/bkcG/+xK1jqxJVUmU60Z37dhK/mCVq6r5uP4SM6FjTK0JRCf7leD7n1yIA
 tZDVV4Vr4szAGCT7RZgtD/9yYzjo8huM4MKVLmAcxBX/BFWxM7+hZHMItOLv6+4aqX3q4ZYmp
 LfKffVqBoDbT2duTlTVhczjl+Ay1S2E7z+e49n/FA9o7RaeWNYxZvaJeumpf7Xc8JTqzlANic
 mgM8E4/RJDuPfxgRgE7P2Q8Llj6arauI4vEKJdV/FjTkiwlo759k90E7Hocxb/YzgHQmk5aNB
 eu8Suq+Y3bo1ReFy3dtMI0yPJQNx6/JKCcbJ0xxpE8OPOnHFjtmj6Rg2XMASYCLrUzRs7r3TW
 i5ORKySXyZ+nzXIwV5JW5FZE36ZzUPWcAfjNYsIf1TfAiYsKqbH4D80s9d4PgyWoVOTu5u8lY
 EhI+IvjwJjZFeKx3/9lrem8oEZzY/XXM0OW/dYxM0NUsKWfNnYoQJR5Z8bja4/FuwmkfY6oOw
 eNGWbh1rTejWQhVfVHA8CfEEuIAdegFw0sUKE8lvIc8vWzXokta6gtn1TnedqLR5MFH5ADRq0
 Yqg8/bDk56cG5aJ4h1Qy6HFRzHBB39F7kmqdzAL2HiEq8T3PX/PxGF9O3pCLzjBXfMuYOov9f
 pPfsAeEtiHuwYfBLSpocnXfRrnJw/WaMr4d+g+cOm8R8DqzuC2npEECFTNuRKCZyWLb6OrdyS
 /6IIaUQmHyTl0Hv1eMjYBfACtxF+BiGh22ae57Uiw0Rz5+TFAYBn0C4RHo1ygvOKm67u3WBHc
 7iIqZTvGUZcTuOgrxU4/aaHguYqC/tp8RDdMj5gFd7jEzJTmTruwuhhRLIdKqhRHzSqPuYUwB
 uFmsuigRTx1i2veT/7d/4A0lHx7yG18eBC/Qf3ufZ7ub90W21TAWkViw7PSmQJD+iOq6Jhf09
 kC0Pugd+EU1Dl9QxZFn1salu9Cv2hz+IURICsw1q8DeqL1KLEQnl76iwGyvL4yepIpcU/AZCS
 ZJ3RqS40t1L9/rLGNRl65eEkiG66YmHNZgCM+WimhdQDyhKucl+hBpem/CxlALSCpoDSruDRz
 0Xl8U6y8sDbq7EDEPZU3Q+XtB2W+a4nppBcTOspRIPtgzw=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

 > Could you make sub-menus display and behave more like on a GUI? For
 > example, when I choose Tools -> Spell from the menu bar, the Spell menu
 > replaces the Tools menu on the screen. On a GUI it would display on top
 > of the parent and one could navigate back to the parent with the mouse.

That would be nice but cascading menus on a tty is non-trivial - there
are already some some very clever hacks to make sure that each menu is
always drawn in its containing frame.  BTW, GTK builds can even enlarge
the Emacs frame when the menubar gets longer.  Note also that GUI builds
without toolkit cannot cascade menus either.

 > Similarly for context menus.

Same difficulties - one might have to move the menu to fit it into its
frame.  Not that it cannot be done but on a GUI context menus (or a
tooltip) can be easily drawn outside their owning frame when they get
too large.

 > Also the first line of the menu "Spell >" looks weird.

In what sense?

 > And keyboard navigation back from a sub-menu to its parent would be
 > nice.

Hmm... via backspace?

 > Also, moving child frames is pretty nice too!

In particular when debugging child frame behavior.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 09:43:26 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 04:43:26 2025
Received: from localhost ([127.0.0.1]:50024 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdnYc-0007gU-9l
	for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:43:26 -0500
Received: from mout.gmx.net ([212.227.17.22]:42607)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdnYa-0007gE-3l
 for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:43:24 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738316594; x=1738921394; i=rudalics@HIDDEN;
 bh=P4k0FyLDuGemityU4p1SG9qSoOPdLzJYY7Y+C4BuySA=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=kQx+12wCuSrhTFMcJ1JaMm5x7p2vIxeXAW2pUv22WfNBLeewx8R8Rs0mOZ/6aQQF
 7VpJCku57wqnmUgZPfuLJx/F+V7RDacpMzMRXm09c3RbBq8w8qYrWXkqE/3A1b0F0
 qLsh3K3bAAtQ5jLp82VgiQwimVEgWFpxxhT6KPPoHiKaMWeSHufP3olwsc94A1gPN
 G8xzdl58btXTHxKiLJ8lKlpCvtXYNuLc4SGaqVBY868jP337acvJ13jo9zmrC13Fl
 x2Kpd5kuRTOu0AdYdn+SonAFZtxAfLko3Ql48rNcCgggodTPpnqpN0QEzJMF/LHHi
 kNZyaJh+7xkwcPS/cA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.157]) by mail.gmx.net (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MCKBm-1tnBCq2F86-005Duf; Fri, 31
 Jan 2025 10:43:14 +0100
Message-ID: <acc56a39-c247-4d92-8428-e56a5e9fea4a@HIDDEN>
Date: Fri, 31 Jan 2025 10:43:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m2cyg4kou2.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2cyg4kou2.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:RbQWI6/bxvKIWlv7x0YKEpXYAbJ8+CzXeNp1C8vrR9EZCpkFCN7
 /LMmVmMnJTjeEz7EWUkDrkGaetHyeVhknvp18RKNWTalIA96khnWH9ioXHbGgZgGAadLuZk
 v9hwu45ZhZvG74I5vbWEq4iiq4bFMFKE6PzrZHFLQ+SAU33VaQosAEhywL6KRl8jx6BZ8zw
 vTblg7KJCOe9ov5nW/a0g==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:FrplHoOwxn0=;yPzFbHm3Fdmt9+guhhn0bsbv9GR
 /4jP0O73GnLlbRqfiyS4SCNgPNxuJoS02d57AdET/1HnAfrIsxZ3tANALjr2N4MC7Mcdw4yeI
 4cJYqCukzdKzg2ulaPgiEZDJJ0K7+4ZAmG9QK/r6/TZDF/ArY7ED2C8f7/tjM8pTfhnmQbn2N
 oJD3uzSy7TGqXrHMhsoULp8ja1Y6HBg1Xd/o/avmYDK8ZItP39BlecFgE6m+3XnzLggLA1ZTI
 OJwyhJ8kuXNcgTAt0PSgEG3vXjQqZlaTCpJcsf4jrPa0/Cz7yd+oG6zMTLwYkTd/WX9IZ7d3p
 h6txHtrPo0jiq/NJFqyq/1Hwqs/I6y/wxJJK4hKuT3xdf6Qt7XFqOOJBUrBNIHUjF1bKNtPF6
 2+WXv5CneMEhIMHEpPeb6C0saAW7VCZ8M3UaN3hBVun/DEKeDowvkgnS03C3eDUS7T3gd8MR1
 EZ64rC6qkNZgePfs/RcALzNsvk+p7iNH6C+wZMZm6o1dBRCa7ABxhDB1J2CGmdPbIvxzDbg0e
 L9ThXVvXUQij4Y9zjg0TNsB8WiUrFmvAA3OAhBq52G+wVOTXVC6aK/wMSqsgbytm/NKntEBL/
 zlWvry4P6ZPsOgOy35mhxqzVUmv/g2Ut10FkEUDzdb0WRm+ZA5DJuGJn/otgaIaodqKYaF+FZ
 gXlujC8GyhN0BQVmtXHXN26DHdBJDHPPKOgJAcYjcyiOY+C8W2aYIPzCNP23KrUcggDr0+FxG
 dQ/tdebwGt71lJN/1RMrz5UVj08KUDBvVgegx6pT+Ixk5MvRQZkxINM1Cfw1hDvvIY8XhCgxL
 YXgTKXjSVc2nOhX4A43/PQhn/GfEC6tKSXbE+1eRJvbYpvnB8HFds2Q1Lb2GP8JLtYWiz+JEX
 kJHgyCwvIykGU1lqcbF8aI4Wwgdg+h25NRUx8cAKH28JEdnZMX+lEGJW3rCbqJ+bV5lgfayEj
 Yt69FsCXicGdDxQ6kVkFZNx/HMMxf2tXpT7Pk5mlxTP1oyxQNSX2fHIv5ErSQ+Q44WQH7UooI
 21Pp0AfPaq31tR9ECKLTSW+OLYWs/rAqpWkJQrR5yD8vd9AmboQm9z+2TR2EClX8BVAXWunDR
 twaJ9Y2TPAXsvOZTxO5TnU4uhbqrNR42rbezhUKMt1aAk003BCbWBWvYspqYwiY1s1AtCuWxS
 OuQ3rN/B+iMyOa9ASm/o955Pya8MXdzwaxcZo0sL2MNPvFtUr06SK+Fp/QWomhc9YU7n/+yEa
 Z1J+N7Q5xYHcuWbCEwMmR0BCGP6c/lOHwOEgieGWKVKUR4oLFEvv3nTR0pJNHXa7Dzd1Uth7j
 jbVRZcWo1W7yYBRn2mrM3lrK8eNzJNm6iMTvqsSYFJ00bY=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

 >> I attach my latest achievements both in the menu bar and mouse drag
 >> child frame departments.
 >
 > Please find a patch attached that makes it build without window-system,
 > which also shows that internal borders are new in the tty world.

Thanks.  I tried my recent changes with a GTK build only so I can check
immediately whether they negatively affect the behavior on the GUI.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 09:43:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 04:43:13 2025
Received: from localhost ([127.0.0.1]:50021 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdnYO-0007g0-QT
	for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:43:13 -0500
Received: from mout.gmx.net ([212.227.17.20]:34793)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdnYM-0007fh-OU
 for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 04:43:11 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738316583; x=1738921383; i=rudalics@HIDDEN;
 bh=nNBF/JvD5K4rDIDp5rVWb6HeVtibyk5DzVnIrWHmHxk=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=dZb+i3Ti/KLbJiZBsHmQO/VoMezQ3NE3pWmi9WkfM8iUb9ybT8O8wzM85A6yB5Wy
 RhEkzOdAqyk/i1eubbz/jZpw795/6aq/LnlmWBdOlNkTUCwmuHvsTkrlF8Mko25Un
 4tkm4Q4xRb3d1xrEtjcQ1vLfNHKA6q983AiwBK+kqwu6e+ozF8dIKYEko3sMikFpT
 qkdc5lOjGikB5cMQcyh+6wK1Ik9cil6QdyYdWm5hlG19LeBSxZyD5Csw1LaYEpDLt
 g+fEjzL2ItTdOzWwWF/tI0wm/y+Ynqkq4UhJJVmWQv5oHUb4kPdNTM5qTmiTaVRLv
 023VxdCvflyleDaxkA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.157]) by mail.gmx.net (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MJVHU-1ttG2R1I08-00LJCi; Fri, 31
 Jan 2025 10:43:03 +0100
Message-ID: <3b83f1e5-1f42-42b5-9dbf-db74a5503456@HIDDEN>
Date: Fri, 31 Jan 2025 10:43:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> <m2jzackufc.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2jzackufc.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:q4kgKyo31cVn4egArAWHBw89pdViThuC8kMj18GpX0pSm6rDsbZ
 HA9lDPGDwFCns8mvHoUAG872nsQFwndWk5zGx+BeM+YvPZjlFp40uX49OO0imEKcWhLlzIn
 hixbFQ0BQ+SJIo85BTWNtaB0r3qAxBA5gj077hJZcVBR040eYPuYHF8dROMuhqHtYYWWBOW
 ToYlnk0dvAt+wRZHNvkhw==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:4gXaQqFGSKE=;wDIVz9RL2OzxclXfoz83bECE2cs
 ziqIc2oFmdpTfFu9I87ZVhFlACfKysUQW0IBqIu7KjCGBZh8LMjtpwka56VfKx3OCp9C+TsfX
 A6ff9CoZi25I4xtArE+nnzE0abOIsPvrSJRZuTwngC38N7GIx9vQyt4V0G+OI0OrbkaDSpWq7
 rJrPvJNCD+WKM3h1KOuX1AAk2rJPytGuDxV8CVxMslN3uS8RO5Gqwkivfp0N7FAxoxAq1Vk3C
 54N5Z1a4+NCcqLoRmH7UylEG243TupR2mYnpxQrCTAZqT/ulx9044FeTp9vm9doq5D0b0O4yX
 nQ3yahRXicpX8plBcuOqdJU728S76hgmYd8OlTg53rLp4tOOtWFA9rAVyOrMx19+aNsYBwm6l
 vJAlA6VbHjWb84mI1+YxAqVQPI+G3FkU3Dx0eCUQ+NE5J2drte9oGl4HDJkdtX+EE+SR+l0ZL
 BWeu7aJL2VjRmyozkp6BI7Pr4igfHdF4G6nRk8ngBJsymPLojDEaed50iCI32bxFGTPTaH3f9
 kPJInVVD7VjhPCbYd3HBtuNUGhRzdYUxuLGPfDrvggVNmqLBkFlSNoNGXnoj8gqzwBPtbmoS/
 fIkIwZBHGTX0tFsvZ+pRViTqeLEDLRiZp9GianSVhSJTf9jcmsq8P46T3WGwqPiG/eSUb8+3I
 V/8WTiQpzy6/GrnxUdNcBnrwZVJhjhS3cd7TA1CvdH6ksFm5iDMPZnT8pP9EKAHvuANCbvtpW
 LbrtDp5k7/EuEBXk8x0mRBgeDjP7oau+mmFGO8nUcRuSH5hUEYXrXGXNw4pI63I+J/FvoMqZj
 5hYolykH7cM7ZlD1xN33pbBNgzxGZjO6eRTw2oMG25K4UZ5aaz4ii+FADbHF2KjCGRUr39yto
 tQrKmleyibVOlsOOJ55Yocjs/RXV3tosHUsGVVwd5kht7Dt2K9/ZZSJHJ7lmN8eBk/AdCaqN/
 hcsLR62GNYDtVWjX+0/Fh/pMMUGt8IU+NgjTIIgFYAc2gbQy+38bpZyXikL3rPDcVnXjRpNAI
 uPHF08CJvk6akDDMjfuRoaYIhw7pPYmzhrlpGfT1nNuwdc9VB5WHGUVP1cQkrwYgkDr9OZcIG
 sSGaUY7Jm4JrgafB1OtTDoc+8eMWA8DzIMl8bFAMZjqE04RIqK7wA8PYA+k4JSISYqPgeMZps
 t9xDCZjaxNtjQn6LKXFJspSgDdlpEi9gWUgtTeT62Nl7XgodhNRX/on6l7yfZ5YaxrnA51W8s
 nMHRfxZkiK+uuEKmHWX0O56bPyGUX1x+XFI6ERUmOWH4Aa+ZnPdPn+ZScTmrXui5aOMn3Y0nQ
 pgVd83L8HCS6alHz7jyZa4+vyIy6fI3CSutZwCi9jacyWs=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

 > There is little chance that I can change how the borders are drawn, I'm
 > afraid. I started with trying to give tty frames a border_width, and
 > failed spectacularly. It was so bad that I git reset --hard in a rage,
 > which is a really rare event.

What were the problems?

 >> Looks good.  But _where_ on earth (that is, in the code) do you that and
 >> how is it related to the width of the internal border?
 >
 > See copy_child_glyphs.
[...]
 > The code is not related to an internal border, and I'm relatively sure
 > tty frames don't have one right now. At least as far as redisplay is
 > concerned, don't know about the frame parameters/values. It's like for
 > border_width.

I see.  Your approach is simple but relies on the fact that you draw
frames using a painter's algorithm.  The decoration of a frame above (in
z-order) obscures the contents (and maybe also decorations) of the
frames beneath.

Basically, what you do is to draw an outer border.  For mouse-resizing
frames we can easily expose that outer border to Elisp.  But the problem
is with the coordinates.  An outer border should belong to its frame and
not the parent.  Clicking an outer border with the mouse should activate
its frame and not the parent.  We can fix these as well but it will be a
bit contrived.

 >> One bug I noted now is the following.  Do C-l and M-l and drag the
 >> yellow and orange frames somehow as in before.png with the cursor in the
 >> yellow frame right before the left edge of the orange frame.  Do C-f -
 >> the cursor appears on top of the left edge of the orange frame as in
 >> middle.png.  Another C-f moves it into the orange frame as in
 >> after.png.

Note that this is a bug in the cursor setting method.  I'm not sure
whether it's been there ever since or was introduced by your recent
changes.  In either case, please have a look.  You don't need my changes
to reproduce it but it's much easier when you can drag child frames
around.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 08:32:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 31 03:32:11 2025
Received: from localhost ([127.0.0.1]:49858 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdmRf-00043k-1C
	for submit <at> debbugs.gnu.org; Fri, 31 Jan 2025 03:32:11 -0500
Received: from mail-ed1-x532.google.com ([2a00:1450:4864:20::532]:54555)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tdmRX-00042p-PS
 for 75056 <at> debbugs.gnu.org; Fri, 31 Jan 2025 03:32:04 -0500
Received: by mail-ed1-x532.google.com with SMTP id
 4fb4d7f45d1cf-5dc10fe4e62so3219445a12.1
 for <75056 <at> debbugs.gnu.org>; Fri, 31 Jan 2025 00:32:03 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738312317; x=1738917117; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=PlN+4lLvCZ8EaPlw0XsePn/hGvlCNxbaOIV+WwRbKPY=;
 b=dG1673fNZUGV9mK5ptsJhSWcG72UwdeQa0XLUWnmDrrT0+lezQk9QO0et5iETnSA5H
 DOTXe+A7jw5Te8VOUj65Z1NM4guqKIR+YuWNGDw3YudoPXH8V3tnwISZziEy5BQrDb14
 Rj0IpbDJlibVTU4iGupa9xySaAHSTI8jEQ6GV96gKfTtrYkqi+YJEBSDq7bqdTeCnp9U
 rSP7dTxo+2I4ZbF/gPuI1oXO9uMlwzDX7EfkDiVRy38GkdNWkn8oR7Zsq1QlUgrOWTWb
 oMrDqTpGjA8TkPibm/CbvF4WHtnUh6NCu1t0Jd7PpLspokcNfvITKZ2Y9JX8SkvZrgJ2
 xF0g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738312317; x=1738917117;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=PlN+4lLvCZ8EaPlw0XsePn/hGvlCNxbaOIV+WwRbKPY=;
 b=USdpk1Hq07+NTGEDBh8gA6ZwR7wuohHZiYiZ1GZpsOFDrP0fBxN3/CNANXN/+nx6yn
 i663gaMlNWr15cIh6YGQ2Wn7MBwGSR8SnVlV6OQyfC/mpx48IvVW5GxVIQI9Ws1TxwxT
 eUGgoOTMeV3CRleknEwgarJoxA3ZUdTY4TZvmJ3U0Yrcn59XqFTBSJrqZ8ZSarGEolwR
 hmMbFwI8mJHCT0PCRpehHRy9THtN/XFh/1DFwyfo4RCAp6SXRyVVz+pfWW67gVOmis/m
 fywCkbc734WN0RhIY1jqqBqb5GiBbvpxUjcxQAMG38Lz9tCHmc5mzNheUD2jgUnuzHbZ
 oSxw==
X-Forwarded-Encrypted: i=1;
 AJvYcCUUqa6K1Uf7F9qZ28DOnFrhMlm0WJXSeKYyMjYTDpbvppmrTDcLyF8XSGU7PgBiZtFL+YXm9g==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yx+GMviCSzCPdBkIKwrA7D781vSkGSvKBMxMuRwYf8ByEUrNXJR
 iawgWjT3hcWvugNU7TVXc0jp3IzzqD0wkzUZy6TVQ7kzjIfKF+NzafZegQ==
X-Gm-Gg: ASbGncs9oygnpBW6dJNO5PwgQCuDTeWPqcV4ux37vWs2qXvTcZrAW4axq0tcGRJEKKt
 LbBOKBsij4htZImqfMplh4fs3F3+oeHVzd959GOFhEXJesV1YCHsotUUGpY9rEgNKM0Yrx9P5au
 ThsfxSHQrHrtSaoJu7Mxg5+0XAxk/n4Y1AUKTc/zey36qCUOmtuz/dOHIMWGYB45lauMEkjJVO/
 JG+FUbB/jAn0eprd3oMC09qnoDWcHclD+wb8S74VigYYCDlhI/JdlD3Bg0I/y5/GEBG70yn/c01
 LZhaWI4v+s3gywHo6lBRNInM6BU3ll+6Qd7h/m3T5QcLWOLGXzPaSWzNXPX9+cXFR/TWUAExbDy
 Dni2NnGgPsv4n1q5AzOaQ1C7u
X-Google-Smtp-Source: AGHT+IE2nfdWNoQr5houEHcNNjyoNd7eQV9xUkPWmUiHfOIAuLnblnOMEvbq+HDAlXNOqa0Dgrd9Gw==
X-Received: by 2002:a05:6402:5023:b0:5dc:7b59:445b with SMTP id
 4fb4d7f45d1cf-5dc7b594606mr3622276a12.28.1738312316631; 
 Fri, 31 Jan 2025 00:31:56 -0800 (PST)
Received: from pro2 (p200300e0b70975002d7f5749bbacbd35.dip0.t-ipconnect.de.
 [2003:e0:b709:7500:2d7f:5749:bbac:bd35])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5dc724aa0a8sm2353430a12.55.2025.01.31.00.31.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 31 Jan 2025 00:31:55 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <m28qqrlkyg.fsf@HIDDEN> ("Gerd =?utf-8?Q?M=C3=B6llmann=22'?=
 =?utf-8?Q?s?= message of "Fri, 31 Jan 2025 04:29:43 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
 <m28qqrlkyg.fsf@HIDDEN>
Date: Fri, 31 Jan 2025 09:31:54 +0100
Message-ID: <m24j1fl6yt.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:

> If you are looking for ideas:

Just came to my mind that one could re-implemented tty menus in Lisp
using child frames.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 31 Jan 2025 03:29:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 22:29:57 2025
Received: from localhost ([127.0.0.1]:48778 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdhjB-00085F-1d
	for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 22:29:57 -0500
Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]:53599)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tdhj7-000850-Do
 for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 22:29:54 -0500
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-4361f796586so16633965e9.3
 for <75056 <at> debbugs.gnu.org>; Thu, 30 Jan 2025 19:29:53 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738294186; x=1738898986; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=GOVZu42/re+XXRGeObBAwE0nQC4hX5SVZHKNzdkjGPQ=;
 b=W2XgtDPHr49VXNqhlyVbq+jfEwOMDB6kgIdf2VVCzmCBSPq+TH6lcbxSsuzRDSOLub
 Zmiy7Uml54b+2RgkhD87Iyb6ipJGMe5o+YSUst3tzGZULn6ttLINeLUnC/8O/YfHTcOA
 9P3XB12dANqlmWph956Jq/9tXyvCkd5oJ2pcVad8ONpkYwtCMDbhGq+sgoC703lQ3xrh
 bNK0e6foSt0qizcJHWF+r2Eb/9ZQeFRBZ+euXE8icI0jcIegZpOeJ1/85bDWo3XnVTp2
 hKy5GU6OYdgd8ty61W6RrPBvMnOkvb+BxgyCMnEFbFx1MJl/SjcsRAzgY6KPBeGdteTN
 55Cw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738294186; x=1738898986;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=GOVZu42/re+XXRGeObBAwE0nQC4hX5SVZHKNzdkjGPQ=;
 b=mK79BbmxDfOY/EXtYRAb2whxR5DatNpoT+SZ2vUvVxPs/ZahoXj98Pgwqogn38KIzo
 DGcqQuj7SjMqVB8JCmbxcnosg53yzZVBygLRla2MgGxbPVtJFi5CBHxyyRjekSunTW9u
 cZiIhWjjMq78UB3FdC63263M1jYTJp+MkR6aDv/OHRpeYcEHUshsrizE40sgcce8rdTL
 GoXVRlGiKhHXu1AhuhWvUN77sNSe8wkjqhKftun6zzI1iiyByYo7ItwbmJjhb734//Cw
 w7QBpmUX9sQQjFOdbPCb2dd6mFaq6oeNTLVFIx/UfQzfsnFZ7ETYEWB0/TV7l83OH2Bf
 ezrQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCVjtqfN1uHzFni8acIONZisMG1XfOnnJG+Q8cb5x84PULC3dVv4koYIAD/x1khSWSou5am/XA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxkRe5Kx2/UoyM8VKhvKFSrTHIoJDYh7JA/+VQTjryJx1Cmn7W+
 Tcf0+7yJdKTYd1Ue2zYDN9766B4CNSyuyBjeNWxveQRznnjdT3HC4o8nUQ==
X-Gm-Gg: ASbGncsjo+yaEcEfhqnFOKGQd8A6VrVqnek2MVf3mllciAHv2xHX5Qva7pyD/J1Dwji
 9C5C4jVd5synYeoDrsuSBjjSUcqEkiptoSlKKNB1+awYN4aBr2ilVeqCj6MhDfI6nQb0f/1Vpz3
 ZBIv2jF170oTL0GwlHv6S/W4ETIQQoBJylFN8fa9xETCMqGs5Jyyj9h75y92T2C9p5n0QIZRmWB
 LeiXsCsI0tSxRrmcPx9z3e0DPrMq8ofKhwwHrTCXHvdIKIZ+ex/zNDv4FwUfzub/5FTfQcNNMxI
 6HdW/cj/oZIt03kx4yjhMNSB+nYW5ch2aO8HG5v1aNUaJ0IZBsVpUB3Ia8gup7d9lowmtnhob6r
 mb9nG+fa9CHEGzvYDywug4i5S
X-Google-Smtp-Source: AGHT+IGMhz54z+ON+mr8DQ2KelOce/6Pf6R4/O6ImWtoXQuxKApeaE1nvixafdLtBz9irNtDQvKkMw==
X-Received: by 2002:a05:600c:3488:b0:434:f5c0:329f with SMTP id
 5b1f17b1804b1-438dc3cb2a8mr104210805e9.14.1738294186043; 
 Thu, 30 Jan 2025 19:29:46 -0800 (PST)
Received: from pro2 (p200300e0b70975002d7f5749bbacbd35.dip0.t-ipconnect.de.
 [2003:e0:b709:7500:2d7f:5749:bbac:bd35])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438dcc2e239sm76214885e9.18.2025.01.30.19.29.44
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 30 Jan 2025 19:29:44 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> (martin rudalics's
 message of "Thu, 30 Jan 2025 19:00:01 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
Date: Fri, 31 Jan 2025 04:29:43 +0100
Message-ID: <m28qqrlkyg.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

> I attach my latest achievements both in the menu bar and mouse drag
> child frame departments.  Menu bars now accept navigation with the
> keyboard which was pretty non-trivial to do.  Mouse dragging works with
> header and mode lines - the attached tty-child-frames.el should provide
> the necessary ingredients via C-l and M-l.

Congratulations, impressive! And quite funny to see something like that
on a terminal =F0=9F=98=82.

If you are looking for ideas:

Could you make sub-menus display and behave more like on a GUI? For
example, when I choose Tools -> Spell from the menu bar, the Spell menu
replaces the Tools menu on the screen. On a GUI it would display on top
of the parent and one could navigate back to the parent with the mouse.

Similarly for context menus.=20

Also the first line of the menu "Spell >" looks weird.

And keyboard navigation back from a sub-menu to its parent would be
nice.

Unbelievable =F0=9F=98=82 Nice!

Also, moving child frames is pretty nice too!




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 30 Jan 2025 20:51:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 15:51:30 2025
Received: from localhost ([127.0.0.1]:48137 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdbVZ-00049D-Oh
	for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 15:51:30 -0500
Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]:50681)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tdbVW-00048y-TH
 for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 15:51:27 -0500
Received: by mail-wm1-x333.google.com with SMTP id
 5b1f17b1804b1-436a39e4891so9116565e9.1
 for <75056 <at> debbugs.gnu.org>; Thu, 30 Jan 2025 12:51:26 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738270280; x=1738875080; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=oBwyAJX/hb7B5Qof28FPKqUGAZZqG+Z19CgtlNY/hHU=;
 b=E+1X15X5Ndgbwk7QCls6hMaGgxbsl8NZwT7G6lKxvfUIb8Ax68lmF4IAgQgYqVRFqJ
 laFC2PdH+0YZtKtBMmE4nFg9MM3B1phXt6S1IfzGBEZ1YYOqEYOctZFivD3COHpY0aFf
 CmqD9cSiXjdPYtdRZDHdz3MnJldhuQbiSjZBb4SR74ouGYKOhr/I+KvqRNVNVX2LU951
 bs/DeNUEn7xBFlte1s50LcnwQgJn9o1obzHOSZbHmVSkNO3XHPbX4S1/U+qbS2ENQ7QU
 CSg4CRH2vantAJaMryc4tTRCl+UjKlphvwdctj0cbqoLN5QJhcpF7otCLJDW40J2igUK
 mQGA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738270280; x=1738875080;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=oBwyAJX/hb7B5Qof28FPKqUGAZZqG+Z19CgtlNY/hHU=;
 b=IBKPVXhQRmJintjijr6QaS8naH7vCNspsVR4D2Tul4Olnge9v3++5/V7J/VIy0zxgy
 Aye27m60olPeOnFAVlcwMiOWKgHknyzRHVDtpl6q5lpqS2ovPoD3BFfU2WUHDu/Ghihd
 6ae2lddhU4WO1UzxJbkO1/uQeA6zaZj4OjPhqLNGD8CWp7HWxmfq0laqXacbVlWiSaop
 xk+lPGw/8t8WyVYQR9VNQscYuUCFg9t13bdCCSpIvBjaX+nXKOzAC8PGVDPxZGQia+NN
 kaPn8mLh/LmYN60XKdv4n+h1Y4O2Tcb/lGKyeAOsYFOToV/02elGXTIntjgJWeXacGbx
 53IA==
X-Forwarded-Encrypted: i=1;
 AJvYcCXb6ZxxmEIbvkbOe8LHJC/xc36vNWzeqLPOJb8ZC6He/RzGTYm2dCIsYgyPgWEe1uVY9x22NA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzewErddZtJwqHUWi6nFqLoeA2fSZ5t0HiHFO9dzQdXTa+FoB7a
 erACTqHOuZNrB4gN4h9XcFdqAV4j+ifP9nfUdgUlJpciaRa/skoQChabQg==
X-Gm-Gg: ASbGncu5tuLanf5so7PEa0o2T6PdrmYklRQqyofFBjSHx3gwXJu24T2cYsewzaLPWni
 mraAb4Clpka3wD0DFc0MAWGm6w+d8ndnJ50GEnHWWm1i/wzL0tFL7Mpzl3h0+npMvFkYyrUbVIo
 pzL2PCqBCC2dhKdB1+UoLQ5vRnAhnF32l62GLsP/stnVUyrUvGyx7EnvCLHynU+TK05ZELlZ0h6
 Rlj9zW0bi3e6ahum8m55dplSrC0AjWq7IpE8yuNn7UrJcl7xtHON6e2PO2FEw3jJZ8Xc7pJjgIj
 64lKBYB2SyHExdTG+yC1c+BTU/ghQMvgOJ2BrTr63FC24c+CcNkCWyY29PtEPgZ8f844L6mkYJa
 P+DVHbbkGT1/JQe6IxrUChxwI
X-Google-Smtp-Source: AGHT+IGF+/bzo5gdGLL0DoHLOVSbOZeooZHRvJIDUZGeUdkA4buxLvMl0nYxSizOPaBXwS4hmS/nTQ==
X-Received: by 2002:a05:6000:1563:b0:385:ee40:2d75 with SMTP id
 ffacd0b85a97d-38c51960d9amr7412880f8f.20.1738270279813; 
 Thu, 30 Jan 2025 12:51:19 -0800 (PST)
Received: from pro2 (p200300e0b720a900dc01849cb197321a.dip0.t-ipconnect.de.
 [2003:e0:b720:a900:dc01:849c:b197:321a])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38c5c1cf571sm2883277f8f.82.2025.01.30.12.51.17
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 30 Jan 2025 12:51:19 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> (martin rudalics's
 message of "Thu, 30 Jan 2025 19:00:01 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
Date: Thu, 30 Jan 2025 21:51:17 +0100
Message-ID: <m2cyg4kou2.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

martin rudalics <rudalics@HIDDEN> writes:

> I attach my latest achievements both in the menu bar and mouse drag
> child frame departments.  

Please find a patch attached that makes it build without window-system,
which also shows that internal borders are new in the tty world.


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0001-Make-it-compile-without-window-system.patch

From 3300c540eb4d94701af9f7dedb1b3bf7f9100553 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gerd=20M=C3=B6llmann?= <gerd@HIDDEN>
Date: Thu, 30 Jan 2025 21:45:03 +0100
Subject: [PATCH] Make it compile without window system

---
 src/frame.c |  4 ++--
 src/frame.h | 29 +++++++++++++++--------------
 2 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/src/frame.c b/src/frame.c
index 23cf096ed30..022936c5699 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -2859,7 +2859,7 @@ DEFUN ("delete-frame", Fdelete_frame, Sdelete_frame, 0, 2, "",
   return delete_frame (frame, !NILP (force) ? Qt : Qnil);
 }
 
-#ifdef HAVE_WINDOW_SYSTEM
+
 /**
  * frame_internal_border_part:
  *
@@ -2951,7 +2951,7 @@ frame_internal_border_part (struct frame *f, int x, int y)
 
   return part;
 }
-#endif
+
 
 /* Return mouse position in character cell units.  */
 
diff --git a/src/frame.h b/src/frame.h
index 90524e5eb2b..e2f0a2dd754 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -31,6 +31,19 @@ #define EMACS_FRAME_H
   vertical_scroll_bar_right
 };
 
+enum internal_border_part
+  {
+   INTERNAL_BORDER_NONE,
+   INTERNAL_BORDER_LEFT_EDGE,
+   INTERNAL_BORDER_TOP_LEFT_CORNER,
+   INTERNAL_BORDER_TOP_EDGE,
+   INTERNAL_BORDER_TOP_RIGHT_CORNER,
+   INTERNAL_BORDER_RIGHT_EDGE,
+   INTERNAL_BORDER_BOTTOM_RIGHT_CORNER,
+   INTERNAL_BORDER_BOTTOM_EDGE,
+   INTERNAL_BORDER_BOTTOM_LEFT_CORNER,
+  };
+
 #ifdef HAVE_WINDOW_SYSTEM
 
 enum fullscreen_type
@@ -53,19 +66,6 @@ #define EMACS_FRAME_H
   z_group_above_suspended,
 };
 
-enum internal_border_part
-  {
-   INTERNAL_BORDER_NONE,
-   INTERNAL_BORDER_LEFT_EDGE,
-   INTERNAL_BORDER_TOP_LEFT_CORNER,
-   INTERNAL_BORDER_TOP_EDGE,
-   INTERNAL_BORDER_TOP_RIGHT_CORNER,
-   INTERNAL_BORDER_RIGHT_EDGE,
-   INTERNAL_BORDER_BOTTOM_RIGHT_CORNER,
-   INTERNAL_BORDER_BOTTOM_EDGE,
-   INTERNAL_BORDER_BOTTOM_LEFT_CORNER,
-  };
-
 #ifdef NS_IMPL_COCOA
 enum ns_appearance_type
   {
@@ -1848,6 +1848,8 @@ #define FRAME_SMALLEST_FONT_HEIGHT(f)		\
 				Frame Parameters
  ***********************************************************************/
 
+extern enum internal_border_part frame_internal_border_part (struct frame *f, int x, int y);
+
 #ifdef HAVE_WINDOW_SYSTEM
 
 /* The class of this X application.  */
@@ -1893,7 +1895,6 @@ #define EMACS_CLASS "Emacs"
 extern void set_frame_menubar (struct frame *f, bool deep_p);
 extern void frame_set_mouse_pixel_position (struct frame *f, int pix_x, int pix_y);
 extern void free_frame_menubar (struct frame *);
-extern enum internal_border_part frame_internal_border_part (struct frame *f, int x, int y);
 
 #if defined HAVE_X_WINDOWS
 extern void x_wm_set_icon_position (struct frame *, int, int);
-- 
2.48.1


--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 30 Jan 2025 18:50:45 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 13:50:45 2025
Received: from localhost ([127.0.0.1]:47811 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdZci-0003mb-Qf
	for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 13:50:45 -0500
Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]:44367)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tdZce-0003mF-M6
 for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 13:50:42 -0500
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-43618283d48so9243455e9.1
 for <75056 <at> debbugs.gnu.org>; Thu, 30 Jan 2025 10:50:40 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738263034; x=1738867834; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=plflhmZn8jeHHkPp1Rcr0EoMsy/Elm4e+Lo0ctwjASk=;
 b=Ka1ceAijQXics9C7oTPLgjfyKi55VQjp0S9Yy4ZqEeiim7mHHK5KFWSxjj/X98BnLg
 WH2O7fZ/GlAv4ao3nZWrPB6dm+lE3YlflHeUIzpqeq1BaTBxrpYS5OqORVoRu3IsR1YG
 3K5d7qEgYmViS0Esv/u9nH4jeIj/DjSU83tdHdFSQly3/Q8jXYei2JR0AkTqDf+l3uPI
 oV8lfCtbdn7LbtIf+JwMsZRdDYY7EtXCAtG2Pd3AOBXNeFbIp2nbPUXwt35jsyIwE2sv
 6XAgDICTDpTxGabyh0MAxM0bQqECG3Ya36W5oQrsJT95vYMXicCEMoVUiTIY5DRE1KhH
 Q2uw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738263034; x=1738867834;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=plflhmZn8jeHHkPp1Rcr0EoMsy/Elm4e+Lo0ctwjASk=;
 b=hAOg1IIgLMKgG7CCpMdsbOhzdawNYN1c12nUL4IlFoiG0Z17aCakuBeEXahyqprv83
 G8y/GxmifLxbO17V4WY0iAPPMNkyC0GPorc/IXyX05aeDpQS7kXrpgfv9l6g6CslCybX
 wxY3D+VHYBrfZb5rH+PUa1ak2X/x1cC6+hv/ztDKU1XPvCUdLkGDdGPuNNA/vAqBaqBt
 UCZAqTq1wMK6fUxvtivrsJ95Y6BJGB4HUOVgpP/rzHkGcFERsrFhM3HzZMoRgGjLUyRj
 rr9FFwEyOWwQjweB8lfZMwDtCDla3OM2cr6eJh1step3QQWjL8BYzMj02FhG+SqafIxK
 MgSA==
X-Forwarded-Encrypted: i=1;
 AJvYcCU00CEdEgSSQVkrXPK8hKfhNhjoDP4G/fojP935kyAvky2HNWwqRH2O9qFHHKFxvRMg+38d9w==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxedZM32Ky5AvX8+MIha0HksoqE+5cM3AI2KMwEErdBZ7FMYiCU
 /YrW5tRvkX0gUao3B3YcGVKbJAp88r7/Gf2atY18iA8hxqcZeGEhYa5B0WGZ
X-Gm-Gg: ASbGncv8sksgzYSk0v+qvuYEjpvv1jtX1ZkBzDAy6KYL6WYz8fIahwaMt89mANKbA9d
 d0XDdd3zVKIbAK34nD3/IR1fX9hGinhIQw4NC+uixplOkFCEVZPxOZ2KDJxDAoYnU1iqueOk3Pb
 dqWm2NUEVBtsbIItYjWLgiTzxD9Sr9JSaa3BcDk8URG0owE98tnug4wOHGT6zm7r4/pTcTpkE3v
 PbLhfTEmzAvtNkOQgsN5j7Wm4+deSRTHP8fxu9q3vpuEKob2fCavHOW/zP9sql1Y8d4EotBMr+T
 sX1C/iVqQNbRzeJCg5EgTWkhf+P4MjBXfdBm614JcQRmvxr51S9UWjh88GioBDO0rbgR2+7PMqG
 6ENbZZTbUuwCQFoian4jAVhG7
X-Google-Smtp-Source: AGHT+IFqK2PMUK6l0cqyiNXED9rA/5+2nrDPLLR6YPIc9ysxE85o9eolGIUyZKD2bXYWsVVAjVj0Ag==
X-Received: by 2002:a05:600c:1f18:b0:436:1b08:4c78 with SMTP id
 5b1f17b1804b1-438dc43093cmr81980365e9.31.1738263033498; 
 Thu, 30 Jan 2025 10:50:33 -0800 (PST)
Received: from pro2 (p200300e0b720a900dc01849cb197321a.dip0.t-ipconnect.de.
 [2003:e0:b720:a900:dc01:849c:b197:321a])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438dcc26b15sm67454655e9.11.2025.01.30.10.50.32
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 30 Jan 2025 10:50:32 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN> (martin rudalics's
 message of "Thu, 30 Jan 2025 19:00:01 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
 <m2ed0k8zkw.fsf@HIDDEN>
 <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
Date: Thu, 30 Jan 2025 19:50:31 +0100
Message-ID: <m2jzackufc.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>>>>> Also when I want to move a child frame to the left of its parent via
>>>>>
>>>>>     (modify-frame-parameters nil '((left . 0)))
>>>>>
>>>>> the left border disappears.  Is that intended?
>>>>
>>>> If I understand that correctly, then probably yes. The borders are dra=
wn
>>>> around the frame, so the left border is at left - 1, the right at left=
 +
>>>> width + 1, and so on.
>>>
>>> I see.
>>>
>>>> Whatever is outside of the terminal is clipped.
>
> Troublesome.  Please revise that.  When I want to resize a child frame
> with the mouse, I have to drag its internal border.  But as it stands,
> the internal border is part of the underlying or root frame and the
> whole make_lispy_position mechanism is broken on ttys.

You drag a child frame with the mouse, what the heck? :-)

There is little chance that I can change how the borders are drawn, I'm
afraid. I started with trying to give tty frames a border_width, and
failed spectacularly. It was so bad that I git reset --hard in a rage,
which is a really rare event.

>> _Much_ nicer than the default IMO. I still wished Emacs would do that by
>> default, but here were objections.
>
> Looks good.  But _where_ on earth (that is, in the code) do you that and
> how is it related to the width of the internal border?

See copy_child_glyphs.

dispnew.c:
 3729   /* Draw borders around the child frame.  */
 3730   if (!FRAME_UNDECORATED (child))
 3731     {
 3732       /* Horizontal line above.  */
 3733       if (r.y > 0)
 3734         produce_box_line (root, child, r.x, r.y - 1, r.w, true);
 3735=20
 3736       for (int y =3D r.y; y < r.y + r.h; ++y)
 3737         {
 3738           struct glyph_row *root_row =3D prepare_desired_root_row (ro=
ot, y);
 3739           if (root_row)
 3740             produce_box_sides (BOX_VERTICAL, BOX_VERTICAL, root_row, =
r.x, r.w,
 3741                                root, child);
 3742         }
 3743=20
 3744       /* Horizontal line below.  */
 3745       if (r.y + r.h < root->desired_matrix->matrix_h)
 3746         produce_box_line (root, child, r.x, r.y + r.h, r.w, false);
 3747     }

The code is not related to an internal border, and I'm relatively sure
tty frames don't have one right now. At least as far as redisplay is
concerned, don't know about the frame parameters/values. It's like for
border_width.

> I attach my latest achievements both in the menu bar and mouse drag
> child frame departments. Menu bars now accept navigation with the
> keyboard which was pretty non-trivial to do. Mouse dragging works with
> header and mode lines - the attached tty-child-frames.el should
> provide the necessary ingredients via C-l and M-l.

=F0=9F=91=8D

> One bug I noted now is the following.  Do C-l and M-l and drag the
> yellow and orange frames somehow as in before.png with the cursor in the
> yellow frame right before the left edge of the orange frame.  Do C-f -
> the cursor appears on top of the left edge of the orange frame as in
> middle.png.  Another C-f moves it into the orange frame as in
> after.png.

Thanks.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 30 Jan 2025 18:00:14 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 13:00:14 2025
Received: from localhost ([127.0.0.1]:47679 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdYpq-0006tB-J7
	for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 13:00:14 -0500
Received: from mout.gmx.net ([212.227.15.15]:34201)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdYpn-0006nB-HY
 for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 13:00:12 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738260004; x=1738864804; i=rudalics@HIDDEN;
 bh=6JPlwbHVZ6Jk3ulxNZjGb9hQH6o8SKz8/PQHJcMvGZs=;
 h=X-UI-Sender-Class:Content-Type:Message-ID:Date:MIME-Version:
 Subject:To:Cc:References:From:In-Reply-To:cc:
 content-transfer-encoding:content-type:date:from:message-id:
 mime-version:reply-to:subject:to;
 b=YqOpGYPZi+8y+d4Sj5AX1ZYwzYjrJy9ZawaHlmEY6o/gwc+oPPD5SnQ8Et9cZIzN
 5VM5kO+cHBOZ9actNhTa8RSv55gQnWfYkrqQo3huL7PLJBirGto3LBU8I9vAARG8x
 ZQkNkmzSqSscup6fCU5lvHL7z3zZOfxY0itVrOh93RQdGqcDxD4UAc7zusRaTGhuj
 3Dzx+gXpnz0R+GZsGmkbLTW8ng1/MofaW/HKhuOGT6ejns4LZdhJe9cpxViyMaBdt
 ZfxmREOhaiLoeDICVzRWK8ICjDXf+Hv63J31LzsXdCqjk75PxmMisrP7gRqk9Y91b
 1wXPnLnLYSwFWdLHQA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.131]) by mail.gmx.net (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MJE6L-1tsC6b2Yv5-00Seg7; Thu, 30
 Jan 2025 19:00:03 +0100
Content-Type: multipart/mixed; boundary="------------pcXrWObKEpuSLXjwgerBofRu"
Message-ID: <ac43577a-2401-4af9-872d-7e32a67a0d76@HIDDEN>
Date: Thu, 30 Jan 2025 19:00:01 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> <m2ed0k8zkw.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2ed0k8zkw.fsf@HIDDEN>
X-Provags-ID: V03:K1:5Tvluu+nXbzsdtyR52V8c+UkpvJpQ/mIULQy/71rJ48jpWkd6Hs
 II5Rasgh9mRORrOwC3N61AjsR1FOkgpW28VB0iAkwrBrnk3I67cba/451148mXd2iNwnPOy
 f9szr8VW4T628/SJDoeu5Ef2VssUUMX8qcHJXumT7y5KtmUgMi2c64ia6iUlGqRaX7JBfAp
 8sCJCOoq6zog/Po6M4D/A==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:qjjDpr7NV+0=;yyO3PNQbJUr4eAcO+rYG+dJNfF/
 tm8NT/BFfVGwL7Z+IsTYuVlKr121IDDheLkMgs9YXuQbKC11IcC4xvL2TFlwdE0ojQl0rE1BR
 R2qmZ3Zm73aMPRefFEP0V1XFVwdWhBT8iLlho28TgqK6SVF9ngRhOXvhC2QBKtLSH9nD4EpvH
 KKY/dBFfKSOyUmgqUJw01pMGosydhgDuk8t+k1eVE4J/5Xv1qwQBXFYT/XFL6P1Gdbc6Oq1s9
 5A5T5jgcoPf/MvtQVo2SqlqhfC3r2OfCrbc1mpVMjKneVs4BIHmxKnhNs4zUK9Cs318NjmkVe
 ArqVGQ3SZNGmLFso6WuNolXX5qGLrGEx9IxXKnCoyiwaQ7ZXJ+c1A1tExQPDmlap8Ktyv2StD
 tCv8QO2OB9oCfffZ3+0HhLk9B8yQSqUHkvR+G/C6jsuv/C3Fhe2c0aa+duLDEbLVKSjHXxgP6
 MMiqb/VoM2OI29J5NOoRWpLWvmA8/MvKnvDp9q0ut7YtLNxiwosee6MxfhsS1ZVUMHpoGEkxR
 VSAoEm1Xqzz06caaqBVBqeqyAOkzw/ri2y88wJP03MejdNzynEr/FbNui0GOl35YFxwru0g+O
 qDHJMfLMuYUvafQOhLrXVWlZY2LhnkjR3IMDGfmDOZG0jWkiuxmIh0JFFeAA4mW7CrnEsLGxQ
 ZJ9n3dYw5XoC88lNa5RJClshSxXWFyr4136IY7Woge7ET6r7hAec9P74KvigncEJBe00E5d/b
 9i7f6N0GueLYg2Ddzd29qA8U8KD7/X+dk3Eff58Rh9wP3urARJDBGdHZ1e1//CKkLLtFtEtXs
 79WWd7fjw1hm1JHAcJXorzGWXmPDli9JCOV4/qOkyEuBJ8JvEp107ddqxV0FvaClllvB4le0q
 sWBAIaMOHtje/YWwHg/YhdXUrSWwLik5qMpMXF5/RG/6+JXKFC9XmtdnKll4ZjT5NlEDEUzmF
 kxB2cIEuyQl8Lb4oeJU5C4RP+5P0KO425oFUQvuIlxWf/GLgU8kW9WQpVTL/Bh+YYOKud39aZ
 NZtetl7vrq3SouzyboGCFD5yeUEqU8DlCq5TXbOULjRHA2+GsxAm2Q1j66dRh5nSOPhIkKvOK
 KaHMrwHZncme8YsEPLjxLONDanTGxYcaklhbkydnELkzG5WPjCFAV87PaoZfdSJ0DHJiryUpn
 2m4S41EGYKRgH6iIO5v5VIRee7TCq+BR8+TgBRTq1jGQ6lW11XDrOsz8iroztbTeVF0yYhOJz
 3lmTY8YyKISVl9oS7T+2kRzmDBPEkJ3hePTqOXU9YVHl+P+47NcMlkOL4fKCD06B10c8ierSo
 6h8pX/39pQ6Cni1L3EDwvCluowKq2vqeTkK1a2moZS4MMo=
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>

This is a multi-part message in MIME format.
--------------pcXrWObKEpuSLXjwgerBofRu
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

 >>>> Also when I want to move a child frame to the left of its parent via
 >>>>
 >>>>     (modify-frame-parameters nil '((left . 0)))
 >>>>
 >>>> the left border disappears.  Is that intended?
 >>>
 >>> If I understand that correctly, then probably yes. The borders are drawn
 >>> around the frame, so the left border is at left - 1, the right at left +
 >>> width + 1, and so on.
 >>
 >> I see.
 >>
 >>> Whatever is outside of the terminal is clipped.

Troublesome.  Please revise that.  When I want to resize a child frame
with the mouse, I have to drag its internal border.  But as it stands,
the internal border is part of the underlying or root frame and the
whole make_lispy_position mechanism is broken on ttys.

 > _Much_ nicer than the default IMO. I still wished Emacs would do that by
 > default, but here were objections.

Looks good.  But _where_ on earth (that is, in the code) do you that and
how is it related to the width of the internal border?

I attach my latest achievements both in the menu bar and mouse drag
child frame departments.  Menu bars now accept navigation with the
keyboard which was pretty non-trivial to do.  Mouse dragging works with
header and mode lines - the attached tty-child-frames.el should provide
the necessary ingredients via C-l and M-l.

One bug I noted now is the following.  Do C-l and M-l and drag the
yellow and orange frames somehow as in before.png with the cursor in the
yellow frame right before the left edge of the orange frame.  Do C-f -
the cursor appears on top of the left edge of the orange frame as in
middle.png.  Another C-f moves it into the orange frame as in after.png.

martin

--------------pcXrWObKEpuSLXjwgerBofRu
Content-Type: text/x-patch; charset=UTF-8; name="tty-menubar-and-drag.diff"
Content-Disposition: attachment; filename="tty-menubar-and-drag.diff"
Content-Transfer-Encoding: base64

ZGlmZiAtLWdpdCBhL2xpc3AvbWVudS1iYXIuZWwgYi9saXNwL21lbnUtYmFyLmVsCmluZGV4
IDI4YWI2MGYxZDJkLi5mMWY2N2NjMGJmYyAxMDA2NDQKLS0tIGEvbGlzcC9tZW51LWJhci5l
bAorKysgYi9saXNwL21lbnUtYmFyLmVsCkBAIC0yNjkxLDUzICsyNjkxLDc0IEBAIHBvcHVw
LW1lbnUKIAkJCSAoZmlsdGVyICh3aGVuIChzeW1ib2xwIG1hcCkKIAkJCQkgICAocGxpc3Qt
Z2V0IChnZXQgbWFwICdtZW51LXByb3ApIDpmaWx0ZXIpKSkpCiAJCSAgICAoaWYgZmlsdGVy
IChmdW5jYWxsIGZpbHRlciAoc3ltYm9sLWZ1bmN0aW9uIG1hcCkpIG1hcCkpKSkpCi0JIChm
cmFtZSAoc2VsZWN0ZWQtZnJhbWUpKQorCSAoc2VsZWN0ZWQtZnJhbWUgKHNlbGVjdGVkLWZy
YW1lKSkKKwkgKGZyYW1lIChpZiAoYW5kIChlcSAoZnJhbWVwIHNlbGVjdGVkLWZyYW1lKSB0
KSAoZnJhbWUtcGFyZW50KQorCQkJIGZyb20tbWVudS1iYXIKKwkJCSAoemVyb3AgKG9yIChm
cmFtZS1wYXJhbWV0ZXIgbmlsICdtZW51LWJhci1saW5lcykgMCkpKQorCQkgICAgOzsgSWYg
dGhlIHNlbGVjdGVkIGZyYW1lIGlzIGEgdHR5IGNoaWxkIGZyYW1lCisJCSAgICA7OyB3aXRo
b3V0IGl0cyBvd24gbWVudSBiYXIgYW5kIHdlIGFyZSBjYWxsZWQgZnJvbQorCQkgICAgOzsg
dGhlIG1lbnUgYmFyLCB0aGUgbWVudSBiYXIgbXVzdCBiZSBvbiB0aGUgcm9vdAorCQkgICAg
OzsgZnJhbWUgb2YgdGhlIHNlbGVjdGVkIGZyYW1lLgorCQkgICAgKGZyYW1lLXJvb3QtZnJh
bWUpCisJCSAgKHNlbGVjdGVkLWZyYW1lKSkpCiAJIGV2ZW50IGNtZCkKLSAgICAoaWYgZnJv
bS1tZW51LWJhcgotCShsZXQqICgoeHkgKHBvc24teC15IHBvc2l0aW9uKSkKLQkgICAgICAg
KG1lbnUtc3ltYm9sIChtZW51LWJhci1tZW51LWF0LXgteSAoY2FyIHh5KSAoY2RyIHh5KSkp
KQotCSAgKHNldHEgcG9zaXRpb24gKGxpc3QgbWVudS1zeW1ib2wgKGxpc3QgZnJhbWUgJyht
ZW51LWJhcikKLQkJCQkJCSB4eSAwKSkpKQotICAgICAgKHNldHEgcG9zaXRpb24gKHBvcHVw
LW1lbnUtbm9ybWFsaXplLXBvc2l0aW9uIHBvc2l0aW9uKSkpCi0gICAgOzsgVGhlIGxvb3Bp
bmcgYmVoYXZpb3Igd2FzIHRha2VuIGZyb20gbG1lbnUncyBwb3B1cC1tZW51LXBvcHVwCi0g
ICAgKHdoaWxlIChhbmQgbWFwIChzZXRxIGV2ZW50Ci0JCQkgIDs7IG1hcCBjb3VsZCBiZSBh
IHByZWZpeCBrZXksIGluIHdoaWNoIGNhc2UKLQkJCSAgOzsgd2UgbmVlZCB0byBnZXQgaXRz
IGZ1bmN0aW9uIGNlbGwKLQkJCSAgOzsgZGVmaW5pdGlvbi4KLQkJCSAgKHgtcG9wdXAtbWVu
dSBwb3NpdGlvbiAoaW5kaXJlY3QtZnVuY3Rpb24gbWFwKSkpKQotICAgICAgOzsgU3RyYW5n
ZWx5IHgtcG9wdXAtbWVudSByZXR1cm5zIGEgbGlzdC4KLSAgICAgIDs7IG1vdXNlLW1ham9y
LW1vZGUtbWVudSB3YXMgdXNpbmcgYSB3ZWlyZDoKLSAgICAgIDs7IChrZXktYmluZGluZyAo
YXBwbHkgJ3ZlY3RvciAoYXBwZW5kICcobWVudS1iYXIpIG1lbnUtcHJlZml4IGV2ZW50cykp
KQotICAgICAgKHNldHEgY21kCi0JICAgIChjb25kCi0JICAgICAoKGFuZCBmcm9tLW1lbnUt
YmFyCi0JCSAgIChjb25zcCBldmVudCkKLQkJICAgKG51bWJlcnAgKGNhciBldmVudCkpCi0J
CSAgIChudW1iZXJwIChjZHIgZXZlbnQpKSkKLQkgICAgICAobGV0ICgoeCAoY2FyIGV2ZW50
KSkKLQkJICAgICh5IChjZHIgZXZlbnQpKQotCQkgICAgbWVudS1zeW1ib2wpCi0JCShzZXRx
IG1lbnUtc3ltYm9sIChtZW51LWJhci1tZW51LWF0LXgteSB4IHkpKQotCQkoc2V0cSBwb3Np
dGlvbiAobGlzdCBtZW51LXN5bWJvbCAobGlzdCBmcmFtZSAnKG1lbnUtYmFyKQotCQkJCQkJ
IGV2ZW50IDApKSkKLQkJKHNldHEgbWFwCi0JCSAgICAgIChrZXktYmluZGluZyAodmVjdG9y
ICdtZW51LWJhciBtZW51LXN5bWJvbCkpKSkpCi0JICAgICAoKGFuZCAobm90IChrZXltYXBw
IG1hcCkpIChsaXN0cCBtYXApKQotCSAgICAgIDs7IFdlIHdlcmUgZ2l2ZW4gYSBsaXN0IG9m
IGtleW1hcHMuICBTZWFyY2ggdGhlbSBhbGwKLQkgICAgICA7OyBpbiBzZXF1ZW5jZSB1bnRp
bCBhIGZpcnN0IGJpbmRpbmcgaXMgZm91bmQuCi0JICAgICAgKGxldCAoKG1vdXNlLWNsaWNr
IChhcHBseSAndmVjdG9yIGV2ZW50KSkKLQkJICAgIGJpbmRpbmcpCi0JCSh3aGlsZSAoYW5k
IG1hcCAobnVsbCBiaW5kaW5nKSkKLQkJICAoc2V0cSBiaW5kaW5nIChsb29rdXAta2V5LWln
bm9yZS10b28tbG9uZyAoY2FyIG1hcCkgbW91c2UtY2xpY2spKQotCQkgIChzZXRxIG1hcCAo
Y2RyIG1hcCkpKQotICAgICAgICAgICAgICAgIGJpbmRpbmcpKQotCSAgICAgKHQKLQkgICAg
ICA7OyBXZSB3ZXJlIGdpdmVuIGEgc2luZ2xlIGtleW1hcC4KLQkgICAgICAobG9va3VwLWtl
eSBtYXAgKGFwcGx5ICd2ZWN0b3IgZXZlbnQpKSkpKQotICAgICAgOzsgQ2xlYXIgb3V0IGVj
aG9pbmcsIHdoaWNoIHBlcmhhcHMgc2hvd3MgYSBwcmVmaXggYXJnLgotICAgICAgKG1lc3Nh
Z2UgIiIpCi0gICAgICA7OyBNYXliZSB0cnkgYWdhaW4gYnV0IHdpdGggdGhlIHN1Ym1hcC4K
LSAgICAgIChzZXRxIG1hcCAoaWYgKGtleW1hcHAgY21kKSBjbWQpKSkKKyAgICAod2l0aC1z
ZWxlY3RlZC1mcmFtZSBmcmFtZQorICAgICAgKGlmIGZyb20tbWVudS1iYXIKKwkgIChsZXQq
ICgoeHkgKHBvc24teC15IHBvc2l0aW9uKSkKKwkJIChtZW51LXN5bWJvbCAobWVudS1iYXIt
bWVudS1hdC14LXkgKGNhciB4eSkgKGNkciB4eSkpKSkKKwkgICAgKHNldHEgcG9zaXRpb24g
KGxpc3QgbWVudS1zeW1ib2wgKGxpc3QgZnJhbWUgJyhtZW51LWJhcikKKwkJCQkJCSAgIHh5
IDApKSkpCisJKHNldHEgcG9zaXRpb24gKHBvcHVwLW1lbnUtbm9ybWFsaXplLXBvc2l0aW9u
IHBvc2l0aW9uKSkpCisKKyAgICAgIDs7IFRoZSBsb29waW5nIGJlaGF2aW9yIHdhcyB0YWtl
biBmcm9tIGxtZW51J3MgcG9wdXAtbWVudS1wb3B1cAorICAgICAgKHdoaWxlIChhbmQgbWFw
IChzZXRxIGV2ZW50CisJCQkgICAgOzsgbWFwIGNvdWxkIGJlIGEgcHJlZml4IGtleSwgaW4g
d2hpY2ggY2FzZQorCQkJICAgIDs7IHdlIG5lZWQgdG8gZ2V0IGl0cyBmdW5jdGlvbiBjZWxs
CisJCQkgICAgOzsgZGVmaW5pdGlvbi4KKwkJCSAgICAoeC1wb3B1cC1tZW51IHBvc2l0aW9u
IChpbmRpcmVjdC1mdW5jdGlvbiBtYXApKSkpCisJOzsgU3RyYW5nZWx5IHgtcG9wdXAtbWVu
dSByZXR1cm5zIGEgbGlzdC4KKwk7OyBtb3VzZS1tYWpvci1tb2RlLW1lbnUgd2FzIHVzaW5n
IGEgd2VpcmQ6CisJOzsgKGtleS1iaW5kaW5nIChhcHBseSAndmVjdG9yIChhcHBlbmQgJyht
ZW51LWJhcikgbWVudS1wcmVmaXggZXZlbnRzKSkpCisJKHNldHEgY21kCisJICAgICAgKGNv
bmQKKwkgICAgICAgKChhbmQgZnJvbS1tZW51LWJhcgorCQkgICAgIChjb25zcCBldmVudCkK
KwkJICAgICAobnVtYmVycCAoY2FyIGV2ZW50KSkKKwkJICAgICAobnVtYmVycCAoY2RyIGV2
ZW50KSkpCisJCShsZXQgKCh4IChjYXIgZXZlbnQpKQorCQkgICAgICAoeSAoY2RyIGV2ZW50
KSkKKwkJICAgICAgbWVudS1zeW1ib2wpCisJCSAgKHNldHEgbWVudS1zeW1ib2wgKG1lbnUt
YmFyLW1lbnUtYXQteC15IHggeSkpCisJCSAgKHNldHEgcG9zaXRpb24gKGxpc3QgbWVudS1z
eW1ib2wgKGxpc3QgZnJhbWUgJyhtZW51LWJhcikKKwkJCQkJCQkgZXZlbnQgMCkpKQorCQkg
IChpZiAobm90IChlcSBmcmFtZSBzZWxlY3RlZC1mcmFtZSkpCisJCSAgICAgIDs7IElmIHdl
IGFyZSB1c2luZyB0aGUgbWVudSBiYXIgZnJvbSB0aGUgcm9vdAorCQkgICAgICA7OyBmcmFt
ZSwgbG9vayB1cCB0aGUga2V5IGJpbmRpbmcgaW4gdGhlIGtleW1hcHMKKwkJICAgICAgOzsg
b2YgdGhlIGluaXRpYWxseSBzZWxlY3RlZCB3aW5kb3cncyBidWZmZXIgdG8KKwkJICAgICAg
OzsgbWFrZSBzdXJlIHRoYXQgbmF2aWdhdGluZyB0aGUgbWVudSBiYXIgd2l0aCB0aGUKKwkJ
ICAgICAgOzsga2V5Ym9hcmQgd29ya3MgYXMgaW50ZW5kZWQuCisJCSAgICAgIChzZXRxIG1h
cAorCQkJICAgIChrZXktYmluZGluZyAodmVjdG9yICdtZW51LWJhciBtZW51LXN5bWJvbCkg
bmlsIG5pbAorCQkJCQkgKGZyYW1lLXNlbGVjdGVkLXdpbmRvdyBzZWxlY3RlZC1mcmFtZSkp
KQorCQkgICAgKHNldHEgbWFwCisJCQkgIChrZXktYmluZGluZyAodmVjdG9yICdtZW51LWJh
ciBtZW51LXN5bWJvbCkpKSkpKQorCSAgICAgICAoKGFuZCAobm90IChrZXltYXBwIG1hcCkp
IChsaXN0cCBtYXApKQorCQk7OyBXZSB3ZXJlIGdpdmVuIGEgbGlzdCBvZiBrZXltYXBzLiAg
U2VhcmNoIHRoZW0gYWxsCisJCTs7IGluIHNlcXVlbmNlIHVudGlsIGEgZmlyc3QgYmluZGlu
ZyBpcyBmb3VuZC4KKwkJKGxldCAoKG1vdXNlLWNsaWNrIChhcHBseSAndmVjdG9yIGV2ZW50
KSkKKwkJICAgICAgYmluZGluZykKKwkJICAod2hpbGUgKGFuZCBtYXAgKG51bGwgYmluZGlu
ZykpCisJCSAgICAoc2V0cSBiaW5kaW5nIChsb29rdXAta2V5LWlnbm9yZS10b28tbG9uZyAo
Y2FyIG1hcCkgbW91c2UtY2xpY2spKQorCQkgICAgKHNldHEgbWFwIChjZHIgbWFwKSkpCisJ
CSAgYmluZGluZykpCisJICAgICAgICh0CisJCTs7IFdlIHdlcmUgZ2l2ZW4gYSBzaW5nbGUg
a2V5bWFwLgorCQkobG9va3VwLWtleSBtYXAgKGFwcGx5ICd2ZWN0b3IgZXZlbnQpKSkpKQor
CTs7IENsZWFyIG91dCBlY2hvaW5nLCB3aGljaCBwZXJoYXBzIHNob3dzIGEgcHJlZml4IGFy
Zy4KKwkobWVzc2FnZSAiIikKKwk7OyBNYXliZSB0cnkgYWdhaW4gYnV0IHdpdGggdGhlIHN1
Ym1hcC4KKwkoc2V0cSBtYXAgKGlmIChrZXltYXBwIGNtZCkgY21kKSkpKQorCiAgICAgOzsg
SWYgdGhlIHVzZXIgZGlkIG5vdCBjYW5jZWwgYnkgcmVmdXNpbmcgdG8gc2VsZWN0LAogICAg
IDs7IGFuZCBpZiB0aGUgcmVzdWx0IGlzIGEgY29tbWFuZCwgcnVuIGl0LgogICAgICh3aGVu
IChhbmQgKG51bGwgbWFwKSAoY29tbWFuZHAgY21kKSkKQEAgLTI4MDgsMTQgKzI4MjksMjcg
QEAgbWVudS1iYXItb3BlbgogSWYgRlJBTUUgaXMgbmlsIG9yIG5vdCBnaXZlbiwgdXNlIHRo
ZSBzZWxlY3RlZCBmcmFtZS4iCiAgIChpbnRlcmFjdGl2ZQogICAgKGxpc3QgbmlsIChwcmVm
aXgtbnVtZXJpYy12YWx1ZSBjdXJyZW50LXByZWZpeC1hcmcpKSkKLSAgKGxldCAoKHR5cGUg
KGZyYW1lcCAob3IgZnJhbWUgKHNlbGVjdGVkLWZyYW1lKSkpKSkKKyAgKGxldCogKCh0eXBl
IChmcmFtZXAgKG9yIGZyYW1lIChzZWxlY3RlZC1mcmFtZSkpKSkKKwkgcm9vdAorCSAoZnJh
bWUgKGlmIChhbmQgKGVxIHR5cGUgdCkgKGZyYW1lLXBhcmVudCBmcmFtZSkKKwkJCSAobnVs
bCB0dHktbWVudS1vcGVuLXVzZS10bW0pCisJCQkgKHplcm9wIChvciAoZnJhbWUtcGFyYW1l
dGVyIGZyYW1lICdtZW51LWJhci1saW5lcykgMCkpCisJCQkgKHNldHEgcm9vdCAoZnJhbWUt
cm9vdC1mcmFtZSkpCisJCQkgKG5vdCAoemVyb3AKKwkJCSAgICAgICAob3IgKGZyYW1lLXBh
cmFtZXRlciByb290ICdtZW51LWJhci1saW5lcykgMCkpKSkKKwkJICAgIDs7IElmIEZSQU1F
IGlzIGEgdHR5IGNoaWxkIGZyYW1lIHdpdGhvdXQgaXRzIG93bgorCQkgICAgOzsgbWVudSBi
YXIsICd0dHktbWVudS1vcGVuLXVzZS10bW0nIGlzIGZhbHNlIGFuZAorCQkgICAgOzsgRlJB
TUUncyByb290IGZyYW1lIGhhcyBhIG1lbnUgYmFyLCB1c2UgdGhhdCByb290CisJCSAgICA7
OyBmcmFtZSdzIG1lbnUgYmFyLgorCQkgICAgcm9vdAorCQkgIGZyYW1lKSkpCiAgICAgKGNv
bmQKICAgICAgKChlcSB0eXBlICd4KSAoeC1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAg
KChlcSB0eXBlICd3MzIpICh3MzItbWVudS1iYXItb3BlbiBmcmFtZSkpCiAgICAgICgoZXEg
dHlwZSAnaGFpa3UpIChoYWlrdS1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAgKChlcSB0
eXBlICdwZ3RrKSAocGd0ay1tZW51LWJhci1vcGVuIGZyYW1lKSkKICAgICAgKChhbmQgKG51
bGwgdHR5LW1lbnUtb3Blbi11c2UtdG1tKQotCSAgIChub3QgKHplcm9wIChvciAoZnJhbWUt
cGFyYW1ldGVyIG5pbCAnbWVudS1iYXItbGluZXMpIDApKSkpCisJICAgKG5vdCAoemVyb3Ag
KG9yIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ21lbnUtYmFyLWxpbmVzKSAwKSkpKQogICAg
ICAgOzsgTWFrZSBzdXJlIHRoZSBtZW51IGJhciBpcyB1cCB0byBkYXRlLiAgT25lIHNpdHVh
dGlvbiB3aGVyZQogICAgICAgOzsgdGhpcyBpcyBpbXBvcnRhbnQgaXMgd2hlbiB0aGlzIGZ1
bmN0aW9uIGlzIGludm9rZWQgYnkgbmFtZQogICAgICAgOzsgdmlhIE0teCwgaW4gd2hpY2gg
Y2FzZSB0aGUgbWVudSBiYXIgaW5jbHVkZXMgdGhlICJNaW5pYnVmIgpAQCAtMjgzMSw3ICsy
ODY1LDcgQEAgbWVudS1iYXItb3BlbgogICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50
LWxvY2FsLW1hcCkgKHZlY3RvciAnbWVudS1iYXIgbWVudSkpCiAJCSAgICAgKGNkYXIgKG1p
bm9yLW1vZGUta2V5LWJpbmRpbmcgKHZlY3RvciAnbWVudS1iYXIgbWVudSkpKQogICAgICAg
ICAgICAgICAgICAgICAgKG1vdXNlLW1lbnUtYmFyLW1hcCkpCi0JCSAgICAocG9zbi1hdC14
LXkgeCAwIG5pbCB0KSBuaWwgdCkpKQorCQkgICAgKHBvc24tYXQteC15IHggMCBmcmFtZSB0
KSBuaWwgdCkpKQogICAgICAodCAod2l0aC1zZWxlY3RlZC1mcmFtZSAob3IgZnJhbWUgKHNl
bGVjdGVkLWZyYW1lKSkKICAgICAgICAgICAodG1tLW1lbnViYXIpKSkpKSkKIApkaWZmIC0t
Z2l0IGEvbGlzcC9tb3VzZS5lbCBiL2xpc3AvbW91c2UuZWwKaW5kZXggNmZlNjkxNjkzYjQu
LmVhNjg5MDkxNDZlIDEwMDY0NAotLS0gYS9saXNwL21vdXNlLmVsCisrKyBiL2xpc3AvbW91
c2UuZWwKQEAgLTExMDYsNyArMTEwNiwxMCBAQCBtb3VzZS1kcmFnLWZyYW1lLXJlc2l6ZQog
CSAoZHJhZy1ib3R0b20gKG1lbXEgcGFydCAnKGJvdHRvbS1yaWdodCBib3R0b20gYm90dG9t
LWxlZnQpKSkKIAkgOzsgSW5pdGlhbCAiZmlyc3QiIG1vdXNlIHBvc2l0aW9uLiAgV2hpbGUg
ZHJhZ2dpbmcgd2UgYmFzZSBhbGwKIAkgOzsgY2FsY3VsYXRpb25zIGFnYWluc3QgdGhhdCBw
b3NpdGlvbi4KLQkgKGZpcnN0LXgteSAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24p
KQorCSAodHR5ICh0dHktdHlwZSBmcmFtZSkpCisJIChmaXJzdC14LXkgKGlmIHR0eQorCQkJ
KG1vdXNlLXBvc2l0aW9uLWluLXJvb3QtZnJhbWUpCisJCSAgICAgIChtb3VzZS1hYnNvbHV0
ZS1waXhlbC1wb3NpdGlvbikpKQogICAgICAgICAgKGZpcnN0LXggKGNhciBmaXJzdC14LXkp
KQogICAgICAgICAgKGZpcnN0LXkgKGNkciBmaXJzdC14LXkpKQogICAgICAgICAgKGV4aXRm
dW4gbmlsKQpAQCAtMTExNCw3ICsxMTE3LDkgQEAgbW91c2UtZHJhZy1mcmFtZS1yZXNpemUK
ICAgICAgICAgICAobGFtYmRhIChldmVudCkKICAgICAgICAgICAgIChpbnRlcmFjdGl2ZSAi
ZSIpCiAgICAgICAgICAgICAod2hlbiAoY29uc3AgZXZlbnQpCi0gICAgICAgICAgICAgIChs
ZXQqICgobGFzdC14LXkgKG1vdXNlLWFic29sdXRlLXBpeGVsLXBvc2l0aW9uKSkKKyAgICAg
ICAgICAgICAgKGxldCogKChsYXN0LXgteSAoaWYgdHR5CisJCQkJICAgKG1vdXNlLXBvc2l0
aW9uLWluLXJvb3QtZnJhbWUpCisJCQkJIChtb3VzZS1hYnNvbHV0ZS1waXhlbC1wb3NpdGlv
bikpKQogCQkgICAgIChsYXN0LXggKGNhciBsYXN0LXgteSkpCiAJCSAgICAgKGxhc3QteSAo
Y2RyIGxhc3QteC15KSkKIAkJICAgICAobGVmdCAoLSBsYXN0LXggZmlyc3QteCkpCkBAIC0x
MjIzLDEwICsxMjI4LDEzIEBAIG1vdXNlLWRyYWctZnJhbWUtbW92ZQogICAgICAgICAgKHBh
cmVudC1ib3R0b20gKGFuZCBwYXJlbnQtZWRnZXMgKG50aCAzIHBhcmVudC1lZGdlcykpKQog
CSA7OyBJbml0aWFsICJmaXJzdCIgbW91c2UgcG9zaXRpb24uICBXaGlsZSBkcmFnZ2luZyB3
ZSBiYXNlIGFsbAogCSA7OyBjYWxjdWxhdGlvbnMgYWdhaW5zdCB0aGF0IHBvc2l0aW9uLgot
CSAoZmlyc3QteC15IChtb3VzZS1hYnNvbHV0ZS1waXhlbC1wb3NpdGlvbikpCi0gICAgICAg
ICAoZmlyc3QteCAoY2FyIGZpcnN0LXgteSkpCi0gICAgICAgICAoZmlyc3QteSAoY2RyIGZp
cnN0LXgteSkpCi0gICAgICAgICA7OyBgc25hcC13aWR0aCcgKG1heWJlIGFsc28gYSB5ZXQg
dG8gYmUgcHJvdmlkZWQgYHNuYXAtaGVpZ2h0JykKKwkgKHR0eSAodHR5LXR5cGUgZnJhbWUp
KQorCSAoZmlyc3QteC15IChpZiB0dHkKKwkJCShtb3VzZS1wb3NpdGlvbi1pbi1yb290LWZy
YW1lKQorCQkgICAgICAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24pKSkKKwkgKGZp
cnN0LXggKGNhciBmaXJzdC14LXkpKQorCSAoZmlyc3QteSAoY2RyIGZpcnN0LXgteSkpCisJ
IDs7IGBzbmFwLXdpZHRoJyAobWF5YmUgYWxzbyBhIHlldCB0byBiZSBwcm92aWRlZCBgc25h
cC1oZWlnaHQnKQogICAgICAgICAgOzsgY291bGQgYmVjb21lIGZsb2F0cyB0byBoYW5kbGUg
cHJvcG9ydGlvbmFsaXR5IHdydCBQQVJFTlQuCiAgICAgICAgICA7OyBXZSBkb24ndCBkbyBh
bnkgY2hlY2tzIG9uIHRoaXMgcGFyYW1ldGVyIHNvIGZhci4KICAgICAgICAgIChzbmFwLXdp
ZHRoIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ3NuYXAtd2lkdGgpKQpAQCAtMTI0Miw3ICsx
MjUwLDkgQEAgbW91c2UtZHJhZy1mcmFtZS1tb3ZlCiAgICAgICAgICAgKGxhbWJkYSAoZXZl
bnQpCiAgICAgICAgICAgICAoaW50ZXJhY3RpdmUgImUiKQogICAgICAgICAgICAgKHdoZW4g
KGNvbnNwIGV2ZW50KQotICAgICAgICAgICAgICAobGV0KiAoKGxhc3QteC15IChtb3VzZS1h
YnNvbHV0ZS1waXhlbC1wb3NpdGlvbikpCisgICAgICAgICAgICAgIChsZXQqICgobGFzdC14
LXkgKGlmIHR0eQorCQkJCSAgIChtb3VzZS1wb3NpdGlvbi1pbi1yb290LWZyYW1lKQorCQkJ
CSAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24pKSkKIAkJICAgICAobGFzdC14IChj
YXIgbGFzdC14LXkpKQogCQkgICAgIChsYXN0LXkgKGNkciBsYXN0LXgteSkpCiAJCSAgICAg
KGxlZnQgKC0gbGFzdC14IGZpcnN0LXgpKQpAQCAtMTM3Myw3ICsxMzgzLDggQEAgbW91c2Ut
ZHJhZy1mcmFtZS1tb3ZlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgt
IHBhcmVudC1ib3R0b20gbmF0aXZlLWhlaWdodCkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKG1pbiAobWF4IHRvcCBwYXJlbnQtdG9wKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKC0gcGFyZW50LWJvdHRvbSBwYXIpKSkpKSkKLSAgICAgICAgICAgICAg
ICA7OyBVc2UgYG1vZGlmeS1mcmFtZS1wYXJhbWV0ZXJzJyBzaW5jZSBgbGVmdCcgYW5kIGB0
b3AnCisKKwkJOzsgVXNlIGBtb2RpZnktZnJhbWUtcGFyYW1ldGVycycgc2luY2UgYGxlZnQn
IGFuZCBgdG9wJwogICAgICAgICAgICAgICAgIDs7IG1heSB3YW50IHRvIG1vdmUgRlJBTUUg
b3V0IG9mIGl0cyBQQVJFTlQuCiAgICAgICAgICAgICAgICAgKG1vZGlmeS1mcmFtZS1wYXJh
bWV0ZXJzIGZyYW1lIGAoKGxlZnQgLiAoKyAsbGVmdCkpICh0b3AgLiAoKyAsdG9wKSkpKSkp
KSkKIAkgKG9sZC10cmFjay1tb3VzZSB0cmFjay1tb3VzZSkpCmRpZmYgLS1naXQgYS9zcmMv
ZnJhbWUuYyBiL3NyYy9mcmFtZS5jCmluZGV4IDRmM2MxZWZjNGE3Li5jODRkYTNiYjQ5OCAx
MDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmMKKysrIGIvc3JjL2ZyYW1lLmMKQEAgLTE0NDksMTcg
KzE0NDksMzggQEAgZ2V0X2Z1dHVyZV9mcmFtZV9wYXJhbSAoTGlzcF9PYmplY3QgcGFyYW1l
dGVyLAogI2VuZGlmCiAKIGludAotdHR5X2NoaWxkX3Bvc19wYXJhbSAoc3RydWN0IGZyYW1l
ICpjaGlsZCwgTGlzcF9PYmplY3Qga2V5LAotCQkgICAgIExpc3BfT2JqZWN0IHBhcmFtcywg
aW50IGRmbHQpCit0dHlfY2hpbGRfcG9zX3BhcmFtIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3Bf
T2JqZWN0IGtleSwKKwkJICAgICBMaXNwX09iamVjdCBwYXJhbXMsIGludCBwb3MpCiB7Cisg
IHN0cnVjdCBmcmFtZSAqcCA9IFhGUkFNRSAoZi0+cGFyZW50X2ZyYW1lKTsKICAgTGlzcF9P
YmplY3QgdmFsID0gRmFzc3EgKGtleSwgcGFyYW1zKTsKKwogICBpZiAoQ09OU1AgKHZhbCkp
CiAgICAgewogICAgICAgdmFsID0gWENEUiAodmFsKTsKLSAgICAgIGlmIChGSVhOVU1QICh2
YWwpKQotCXJldHVybiBYRklYTlVNICh2YWwpOworCisgICAgICBpZiAoVFlQRV9SQU5HRURf
RklYTlVNUCAoaW50LCB2YWwpKQorCXsKKwkgIHBvcyA9IFhGSVhOVU0gKHZhbCk7CisKKwkg
IGlmIChwb3MgPCAwKQorCSAgICAvKiBIYW5kbGUgbmVnYXRpdmUgdmFsdWUuICovCisJICAg
IHBvcyA9IG1heCAoRVEgKGtleSwgUXRvcCkKKwkJICAgICAgID8gcC0+cGl4ZWxfaGVpZ2h0
IC0gZi0+cGl4ZWxfaGVpZ2h0IC0gcG9zCisJCSAgICAgICA6IHAtPnBpeGVsX3dpZHRoIC0g
Zi0+cGl4ZWxfd2lkdGggLSBwb3MsCisJCSAgICAgICAwKTsKKwl9CisgICAgICBlbHNlIGlm
IChDT05TUCAodmFsKSAmJiBFUSAoWENBUiAodmFsKSwgUXBsdXMpCisJICAgICAgICYmIENP
TlNQIChYQ0RSICh2YWwpKQorCSAgICAgICAmJiBUWVBFX1JBTkdFRF9GSVhOVU1QIChpbnQs
IFhDQVIgKFhDRFIgKHZhbCkpKSkKKwlwb3MgPSBYRklYTlVNIChYQ0FSIChYQ0RSICh2YWwp
KSk7CisgICAgICBlbHNlIGlmIChDT05TUCAodmFsKSAmJiBFUSAoWENBUiAodmFsKSwgUW1p
bnVzKQorCSAgICAgICAmJiBDT05TUCAoWENEUiAodmFsKSkKKwkgICAgICAgJiYgUkFOR0VE
X0ZJWE5VTVAgKC1JTlRfTUFYLCBYQ0FSIChYQ0RSICh2YWwpKSwgSU5UX01BWCkpCisJcG9z
ID0gLSBYRklYTlVNIChYQ0FSIChYQ0RSICh2YWwpKSk7CiAgICAgfQotICByZXR1cm4gZGZs
dDsKKworICByZXR1cm4gcG9zOwogfQogCiBpbnQKQEAgLTY0NzgsNiArNjQ5OSwzNyBAQCBE
RUZVTiAoImZyYW1lLXBvaW50ZXItdmlzaWJsZS1wIiwgRmZyYW1lX3BvaW50ZXJfdmlzaWJs
ZV9wLAogICByZXR1cm4gZGVjb2RlX2FueV9mcmFtZSAoZnJhbWUpLT5wb2ludGVyX2ludmlz
aWJsZSA/IFFuaWwgOiBRdDsKIH0KIAorREVGVU4gKCJtb3VzZS1wb3NpdGlvbi1pbi1yb290
LWZyYW1lIiwgRm1vdXNlX3Bvc2l0aW9uX2luX3Jvb3RfZnJhbWUsCisgICAgICAgU21vdXNl
X3Bvc2l0aW9uX2luX3Jvb3RfZnJhbWUsIDAsIDAsIDAsCisgICAgICAgZG9jOiAvKiBSZXR1
cm4gbW91c2UgcG9zaXRpb24gaW4gc2VsZWN0ZWQgZnJhbWUncyByb290IGZyYW1lLgorCitS
ZXR1cm4gdGhlIHBvc2l0aW9uIG9mIGBtb3VzZS1wb3NpdGlvbicgaW4gY29vcmRpbmF0ZXMg
b2YgdGhlIHJvb3QgZnJhbWUKK29mIHRoZSBmcmFtZSByZXR1cm5lZCBieSAnbW91c2UtcG9z
aXRpb24nLiAgKi8pCisgICh2b2lkKQoreworICBMaXNwX09iamVjdCBwb3MgPSBtb3VzZV9w
b3NpdGlvbiAodHJ1ZSk7CisgIExpc3BfT2JqZWN0IGZyYW1lID0gWENBUiAocG9zKTsKKyAg
c3RydWN0IGZyYW1lICpmID0gWEZSQU1FIChmcmFtZSk7CisgIGludCB4ID0gWEZJWE5VTSAo
WENBUiAoWENEUiAocG9zKSkpICsgZi0+bGVmdF9wb3M7CisgIGludCB5ID0gWEZJWE5VTSAo
WENEUiAoWENEUiAocG9zKSkpICsgZi0+dG9wX3BvczsKKworICBpZiAoIUZSQU1FUCAoZnJh
bWUpKQorICAgIHJldHVybiBRbmlsOworICBlbHNlCisgICAgeworICAgICAgZiA9IEZSQU1F
X1BBUkVOVF9GUkFNRSAoZik7CisKKyAgICAgIHdoaWxlIChmKQorCXsKKwkgIHggPSB4ICsg
Zi0+bGVmdF9wb3M7CisJICB5ID0geSArIGYtPnRvcF9wb3M7CisJICBmID0gRlJBTUVfUEFS
RU5UX0ZSQU1FIChmKTsKKwl9CisKKyAgICAgIHJldHVybiBGY29ucyAobWFrZV9maXhudW0g
KHgpLCBtYWtlX2ZpeG51bSAoeSkpOworICAgIH0KK30KKwogREVGVU4gKCJmcmFtZS0tc2V0
LXdhcy1pbnZpc2libGUiLCBGZnJhbWVfX3NldF93YXNfaW52aXNpYmxlLAogICAgICAgIFNm
cmFtZV9fc2V0X3dhc19pbnZpc2libGUsIDIsIDIsIDAsCiAgICAgICAgZG9jOiAvKiBTZXQg
RlJBTUUncyB3YXMtaW52aXNpYmxlIGZsYWcgaWYgV0FTLUlOVklTSUJMRSBpcyBub24tbmls
LgpAQCAtNzI1MCw2ICs3MzAyLDcgQEAgZm9jdXMgKHdoZXJlIGEgZnJhbWUgaW1tZWRpYXRl
bHkgbG9zZXMgZm9jdXMgd2hlbiBpdCdzIGxlZnQgYnkgdGhlIG1vdXNlCiAgIGRlZnN1YnIg
KCZTZnJhbWVfcG9zaXRpb24pOwogICBkZWZzdWJyICgmU3NldF9mcmFtZV9wb3NpdGlvbik7
CiAgIGRlZnN1YnIgKCZTZnJhbWVfcG9pbnRlcl92aXNpYmxlX3ApOworICBkZWZzdWJyICgm
U21vdXNlX3Bvc2l0aW9uX2luX3Jvb3RfZnJhbWUpOwogICBkZWZzdWJyICgmU2ZyYW1lX19z
ZXRfd2FzX2ludmlzaWJsZSk7CiAgIGRlZnN1YnIgKCZTZnJhbWVfd2luZG93X3N0YXRlX2No
YW5nZSk7CiAgIGRlZnN1YnIgKCZTc2V0X2ZyYW1lX3dpbmRvd19zdGF0ZV9jaGFuZ2UpOwpk
aWZmIC0tZ2l0IGEvc3JjL2tleWJvYXJkLmMgYi9zcmMva2V5Ym9hcmQuYwppbmRleCA4NTBi
NWUwNjQ4MC4uOGRlNjFmOGMwMmEgMTAwNjQ0Ci0tLSBhL3NyYy9rZXlib2FyZC5jCisrKyBi
L3NyYy9rZXlib2FyZC5jCkBAIC01NTUyLDcgKzU1NTIsNiBAQCAjZGVmaW5lIElTT19GVU5D
VElPTl9LRVlfT0ZGU0VUIDB4ZmUwMAogICBTWU1CT0xfSU5ERVggKFFyaWdodG1vc3QpLCBT
WU1CT0xfSU5ERVggKFFlbmRfc2Nyb2xsKSwgU1lNQk9MX0lOREVYIChRcmF0aW8pCiB9Owog
Ci0jaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCiAvKiBBbiBhcnJheSBvZiBzeW1ib2wgaW5k
ZXhlcyBvZiBpbnRlcm5hbCBib3JkZXIgcGFydHMsIGluZGV4ZWQgYnkgYW4gZW51bQogICAg
aW50ZXJuYWxfYm9yZGVyX3BhcnQgdmFsdWUuICBOb3RlIHRoYXQgUW5pbCBjb3JyZXNwb25k
cyB0bwogICAgaW50ZXJuYWxfYm9yZGVyX3BhcnRfbm9uZSBhbmQgc2hvdWxkIG5vdCBhcHBl
YXIgaW4gTGlzcCBldmVudHMuICAqLwpAQCAtNTU2Myw3ICs1NTYyLDYgQEAgI2RlZmluZSBJ
U09fRlVOQ1RJT05fS0VZX09GRlNFVCAweGZlMDAKICAgU1lNQk9MX0lOREVYIChRYm90dG9t
X3JpZ2h0X2Nvcm5lciksIFNZTUJPTF9JTkRFWCAoUWJvdHRvbV9lZGdlKSwKICAgU1lNQk9M
X0lOREVYIChRYm90dG9tX2xlZnRfY29ybmVyKQogfTsKLSNlbmRpZgogCiAvKiBBIHZlY3Rv
ciwgaW5kZXhlZCBieSBidXR0b24gbnVtYmVyLCBnaXZpbmcgdGhlIGRvd24tZ29pbmcgbG9j
YXRpb24KICAgIG9mIGN1cnJlbnRseSBkZXByZXNzZWQgYnV0dG9ucywgYm90aCBzY3JvbGwg
YmFyIGFuZCBub24tc2Nyb2xsIGJhci4KQEAgLTU4NzksOSArNTg3Nyw3IEBAIG1ha2VfbGlz
cHlfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmplY3QgeCwgTGlzcF9PYmpl
Y3QgeSwKICAgICAgIHhyZXQgPSBteDsKICAgICAgIHlyZXQgPSBteTsKIAotI2lmZGVmIEhB
VkVfV0lORE9XX1NZU1RFTQotICAgICAgaWYgKEZSQU1FX1dJTkRPV19QIChmKQotCSAgJiYg
RlJBTUVfTElWRV9QIChmKQorICAgICAgaWYgKEZSQU1FX0xJVkVfUCAoZikKIAkgICYmIE5J
TFAgKHBvc24pCiAJICAmJiBGUkFNRV9JTlRFUk5BTF9CT1JERVJfV0lEVEggKGYpID4gMAog
CSAgJiYgIU5JTFAgKGdldF9mcmFtZV9wYXJhbSAoZiwgUWRyYWdfaW50ZXJuYWxfYm9yZGVy
KSkpCkBAIC01ODkxLDcgKzU4ODcsNiBAQCBtYWtlX2xpc3B5X3Bvc2l0aW9uIChzdHJ1Y3Qg
ZnJhbWUgKmYsIExpc3BfT2JqZWN0IHgsIExpc3BfT2JqZWN0IHksCiAKIAkgIHBvc24gPSBi
dWlsdGluX2xpc3Bfc3ltYm9sIChpbnRlcm5hbF9ib3JkZXJfcGFydHNbcGFydF0pOwogCX0K
LSNlbmRpZgogICAgIH0KICAgZWxzZQogICAgIHsKZGlmZiAtLWdpdCBhL3NyYy9rZXltYXAu
YyBiL3NyYy9rZXltYXAuYwppbmRleCA5OTI5MWU3MmIzZi4uNmNiZTJmZWJkZDEgMTAwNjQ0
Ci0tLSBhL3NyYy9rZXltYXAuYworKysgYi9zcmMva2V5bWFwLmMKQEAgLTE2NTksNyArMTY1
OSw4IEBAIERFRlVOICgiY3VycmVudC1hY3RpdmUtbWFwcyIsIEZjdXJyZW50X2FjdGl2ZV9t
YXBzLCBTY3VycmVudF9hY3RpdmVfbWFwcywKICAgICAgICBkb2M6IC8qIFJldHVybiBhIGxp
c3Qgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUga2V5bWFwcy4KIE9MUCBpZiBub24tbmlsIGlu
ZGljYXRlcyB0aGF0IHdlIHNob3VsZCBvYmV5IGBvdmVycmlkaW5nLWxvY2FsLW1hcCcgYW5k
CiBgb3ZlcnJpZGluZy10ZXJtaW5hbC1sb2NhbC1tYXAnLiAgUE9TSVRJT04gY2FuIHNwZWNp
ZnkgYSBjbGljayBwb3NpdGlvbgotbGlrZSBpbiB0aGUgcmVzcGVjdGl2ZSBhcmd1bWVudCBv
ZiBga2V5LWJpbmRpbmcnLiAgKi8pCitsaWtlIGluIHRoZSByZXNwZWN0aXZlIGFyZ3VtZW50
IG9mIGBrZXktYmluZGluZycgb3IgYSBsaXZlIHdpbmRvdyB3aGljaAorbWVhbnMgdG8gcmV0
dXJuIHRoZSBhY3RpdmUgbWFwcyBmb3IgdGhhdCB3aW5kb3cncyBidWZmZXIuICAqLykKICAg
KExpc3BfT2JqZWN0IG9scCwgTGlzcF9PYmplY3QgcG9zaXRpb24pCiB7CiAgIHNwZWNwZGxf
cmVmIGNvdW50ID0gU1BFQ1BETF9JTkRFWCAoKTsKQEAgLTE2ODksNiArMTY5MCwxNiBAQCBE
RUZVTiAoImN1cnJlbnQtYWN0aXZlLW1hcHMiLCBGY3VycmVudF9hY3RpdmVfbWFwcywgU2N1
cnJlbnRfYWN0aXZlX21hcHMsCiAJICBzZXRfYnVmZmVyX2ludGVybmFsIChYQlVGRkVSIChY
V0lORE9XICh3aW5kb3cpLT5jb250ZW50cykpOwogCX0KICAgICB9CisgIGVsc2UgaWYgKFdJ
TkRPV19MSVZFX1AgKHBvc2l0aW9uKSkKKyAgICB7CisgICAgICBpZiAoQlVGRkVSUCAoWFdJ
TkRPVyAocG9zaXRpb24pLT5jb250ZW50cykKKwkgICYmIFhCVUZGRVIgKFhXSU5ET1cgKHBv
c2l0aW9uKS0+Y29udGVudHMpICE9IGN1cnJlbnRfYnVmZmVyKQorCXsKKwkgIC8qIFNlZSBj
b21tZW50IGFib3ZlLiAgKi8KKwkgIHJlY29yZF91bndpbmRfY3VycmVudF9idWZmZXIgKCk7
CisJICBzZXRfYnVmZmVyX2ludGVybmFsIChYQlVGRkVSIChYV0lORE9XIChwb3NpdGlvbikt
PmNvbnRlbnRzKSk7CisJfQorICAgIH0KIAogICBpZiAoIU5JTFAgKG9scCkKICAgICAgIC8q
IFRoZSBkb2Mgc2FpZCB0aGF0IG92ZXJyaWRpbmctdGVybWluYWwtbG9jYWwtbWFwIHNob3Vs
ZApkaWZmIC0tZ2l0IGEvc3JjL3hkaXNwLmMgYi9zcmMveGRpc3AuYwppbmRleCBhODAxY2Fh
ZTA2Zi4uYjQ0ZmYzZDU2MmMgMTAwNjQ0Ci0tLSBhL3NyYy94ZGlzcC5jCisrKyBiL3NyYy94
ZGlzcC5jCkBAIC0xMTQ3LDcgKzExNDcsNyBAQCAjZGVmaW5lIFRISU5fU1BBQ0VfV0lEVEgg
MQogCQkJCSBzdHJ1Y3QgZ2x5cGhfbWF0cml4ICosIHB0cmRpZmZfdCwgcHRyZGlmZl90LAog
CQkJCSBpbnQsIGludCk7CiBzdGF0aWMgYm9vbCBjdXJzb3Jfcm93X2Z1bGx5X3Zpc2libGVf
cCAoc3RydWN0IHdpbmRvdyAqLCBib29sLCBib29sLCBib29sKTsKLXN0YXRpYyBib29sIHVw
ZGF0ZV9tZW51X2JhciAoc3RydWN0IGZyYW1lICosIGJvb2wsIGJvb2wpOworc3RhdGljIGJv
b2wgdXBkYXRlX21lbnVfYmFyIChzdHJ1Y3QgZnJhbWUgKiwgYm9vbCwgYm9vbCwgc3RydWN0
IHdpbmRvdyAqKTsKIHN0YXRpYyBib29sIHRyeV93aW5kb3dfcmV1c2luZ19jdXJyZW50X21h
dHJpeCAoc3RydWN0IHdpbmRvdyAqKTsKIHN0YXRpYyBpbnQgdHJ5X3dpbmRvd19pZCAoc3Ry
dWN0IHdpbmRvdyAqKTsKIHN0YXRpYyB2b2lkIG1heWJlX3Byb2R1Y2VfbGluZV9udW1iZXIg
KHN0cnVjdCBpdCAqKTsKQEAgLTE0MDYyLDEzICsxNDA2MiwzMiBAQCBwcmVwYXJlX21lbnVf
YmFycyAodm9pZCkKICAgICAgIC8qIFRydWUgbWVhbnMgdGhhdCB1cGRhdGVfbWVudV9iYXIg
aGFzIHJ1biBpdHMgaG9va3MKIAkgc28gYW55IGZ1cnRoZXIgY2FsbHMgdG8gdXBkYXRlX21l
bnVfYmFyIHNob3VsZG4ndCBkbyBzbyBhZ2Fpbi4gICovCiAgICAgICBib29sIG1lbnVfYmFy
X2hvb2tzX3J1biA9IGZhbHNlOworICAgICAgc3RydWN0IHdpbmRvdyAqc3cgPSBYV0lORE9X
IChzZWxlY3RlZF93aW5kb3cpOworICAgICAgc3RydWN0IGZyYW1lICpzZiA9IFdJTkRPV19Y
RlJBTUUgKHN3KTsKKyAgICAgIHN0cnVjdCBmcmFtZSAqcmYgPSBOVUxMOworCisgICAgICBp
ZiAoRlJBTUVfUEFSRU5UX0ZSQU1FIChzZikgJiYgIUZSQU1FX1dJTkRPV19QIChzZikKKwkg
ICYmIEZSQU1FX01FTlVfQkFSX0xJTkVTIChzZikgPT0gMAorCSAgJiYgRlJBTUVfTUVOVV9C
QVJfTElORVMgKHJmID0gcm9vdF9mcmFtZSAoc2YpKSAhPSAwCisJICAmJiBOSUxQIChGZGVm
YXVsdF92YWx1ZSAoUXR0eV9tZW51X29wZW5fdXNlX3RtbSkpKQorCS8qIElmIHRoZSBzZWxl
Y3RlZCB3aW5kb3cncyBmcmFtZSBpcyBhIHR0eSBjaGlsZCBmcmFtZSB3aXRob3V0CisJICAg
bWVudSBiYXIsIHRoYXQgZnJhbWUncyByb290IGZyYW1lIGhhcyBhIG1lbnUgYmFyIGFuZAor
CSAgICd0dHktbWVudS1vcGVuLXVzZS10bW0nIGlzIG5pbCwgdXBkYXRlIHRoZSBtZW51IGJh
ciBvZiB0aGUKKwkgICByb290IGZyYW1lIGZyb20gdGhlIHNlbGVjdGVkIHdpbmRvdy4gICov
CisJc2YgPSByZjsKKyAgICAgIGVsc2UKKwl7CisJICBzZiA9IE5VTEw7CisJICBzdyA9IE5V
TEw7CisJfQogCiAgICAgICByZWNvcmRfdW53aW5kX3NhdmVfbWF0Y2hfZGF0YSAoKTsKIAog
ICAgICAgRk9SX0VBQ0hfRlJBTUUgKHRhaWwsIGZyYW1lKQogCXsKIAkgIHN0cnVjdCBmcmFt
ZSAqZiA9IFhGUkFNRSAoZnJhbWUpOwotCSAgc3RydWN0IHdpbmRvdyAqdyA9IFhXSU5ET1cg
KEZSQU1FX1NFTEVDVEVEX1dJTkRPVyAoZikpOworCSAgc3RydWN0IHdpbmRvdyAqdworCSAg
ICA9IHNmID09IGYgPyBzdyA6IFhXSU5ET1cgKEZSQU1FX1NFTEVDVEVEX1dJTkRPVyAoZikp
OwogCiAJICAvKiBJZ25vcmUgdG9vbHRpcCBmcmFtZS4gICovCiAJICBpZiAoRlJBTUVfVE9P
TFRJUF9QIChmKSkKQEAgLTE0MDgwLDggKzE0MDk5LDggQEAgcHJlcGFyZV9tZW51X2JhcnMg
KHZvaWQpCiAJICAgICAgJiYgIVhCVUZGRVIgKHctPmNvbnRlbnRzKS0+dGV4dC0+cmVkaXNw
bGF5KQogCSAgICBjb250aW51ZTsKIAotCSAgaWYgKCFGUkFNRV9QQVJFTlRfRlJBTUUgKGYp
KQotCSAgICBtZW51X2Jhcl9ob29rc19ydW4gPSB1cGRhdGVfbWVudV9iYXIgKGYsIGZhbHNl
LCBtZW51X2Jhcl9ob29rc19ydW4pOworCSAgbWVudV9iYXJfaG9va3NfcnVuCisJICAgID0g
dXBkYXRlX21lbnVfYmFyIChmLCBmYWxzZSwgbWVudV9iYXJfaG9va3NfcnVuLCB3KTsKIAog
CSAgdXBkYXRlX3RhYl9iYXIgKGYsIGZhbHNlKTsKICNpZmRlZiBIQVZFX1dJTkRPV19TWVNU
RU0KQEAgLTE0MDkzLDEwICsxNDExMiwyMSBAQCBwcmVwYXJlX21lbnVfYmFycyAodm9pZCkK
ICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBzdHJ1Y3QgZnJhbWUgKnNmID0gU0VMRUNU
RURfRlJBTUUgKCk7CisgICAgICBzdHJ1Y3Qgd2luZG93ICpzdyA9IFhXSU5ET1cgKHNlbGVj
dGVkX3dpbmRvdyk7CisgICAgICBzdHJ1Y3QgZnJhbWUgKnNmID0gV0lORE9XX1hGUkFNRSAo
c3cpOworICAgICAgc3RydWN0IGZyYW1lICpyZiA9IE5VTEw7CiAKLSAgICAgIGlmICghRlJB
TUVfUEFSRU5UX0ZSQU1FIChzZikpCi0JdXBkYXRlX21lbnVfYmFyIChzZiwgdHJ1ZSwgZmFs
c2UpOworICAgICAgaWYgKEZSQU1FX1BBUkVOVF9GUkFNRSAoc2YpICYmICFGUkFNRV9XSU5E
T1dfUCAoc2YpCisJICAmJiBGUkFNRV9NRU5VX0JBUl9MSU5FUyAoc2YpID09IDAKKwkgICYm
IEZSQU1FX01FTlVfQkFSX0xJTkVTIChyZiA9IHJvb3RfZnJhbWUgKHNmKSkgIT0gMAorCSAg
JiYgTklMUCAoRmRlZmF1bHRfdmFsdWUgKFF0dHlfbWVudV9vcGVuX3VzZV90bW0pKSkKKwkv
KiBJZiB0aGUgc2VsZWN0ZWQgd2luZG93J3MgZnJhbWUgaXMgYSB0dHkgY2hpbGQgZnJhbWUg
d2l0aG91dAorCSAgIG1lbnUgYmFyLCB0aGF0IGZyYW1lJ3Mgcm9vdCBmcmFtZSBoYXMgYSBt
ZW51IGJhciBhbmQKKwkgICAndHR5LW1lbnUtb3Blbi11c2UtdG1tJyBpcyBuaWwsIHVwZGF0
ZSB0aGUgbWVudSBiYXIgb2YgdGhlCisJICAgcm9vdCBmcmFtZSBmcm9tIHRoZSBzZWxlY3Rl
ZCB3aW5kb3cuICAqLworCXNmID0gcmY7CisKKyAgICAgIHVwZGF0ZV9tZW51X2JhciAoc2Ys
IHRydWUsIGZhbHNlLCBzdyk7CiAKICAgICAgIHVwZGF0ZV90YWJfYmFyIChzZiwgdHJ1ZSk7
CiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCkBAIC0xNDExOCwyMCArMTQxNDgsMTQgQEAg
cHJlcGFyZV9tZW51X2JhcnMgKHZvaWQpCiAgICB1cGRhdGVkIHZhbHVlIG9mIHRoaXMgZmxh
ZywgdG8gcGFzcyB0byB0aGUgbmV4dCBjYWxsLiAgKi8KIAogc3RhdGljIGJvb2wKLXVwZGF0
ZV9tZW51X2JhciAoc3RydWN0IGZyYW1lICpmLCBib29sIHNhdmVfbWF0Y2hfZGF0YSwgYm9v
bCBob29rc19ydW4pCit1cGRhdGVfbWVudV9iYXIgKHN0cnVjdCBmcmFtZSAqZiwgYm9vbCBz
YXZlX21hdGNoX2RhdGEsIGJvb2wgaG9va3NfcnVuLCBzdHJ1Y3Qgd2luZG93ICp3KQogewot
ICBMaXNwX09iamVjdCB3aW5kb3c7Ci0gIHN0cnVjdCB3aW5kb3cgKnc7Ci0KICAgLyogSWYg
Y2FsbGVkIHJlY3Vyc2l2ZWx5IGR1cmluZyBhIG1lbnUgdXBkYXRlLCBkbyBub3RoaW5nLiAg
VGhpcyBjYW4KICAgICAgaGFwcGVuIHdoZW4sIGZvciBpbnN0YW5jZSwgYW4gYWN0aXZhdGUt
bWVudWJhci1ob29rIGNhdXNlcyBhCiAgICAgIHJlZGlzcGxheS4gICovCiAgIGlmIChpbmhp
Yml0X21lbnViYXJfdXBkYXRlKQogICAgIHJldHVybiBob29rc19ydW47CiAKLSAgd2luZG93
ID0gRlJBTUVfU0VMRUNURURfV0lORE9XIChmKTsKLSAgdyA9IFhXSU5ET1cgKHdpbmRvdyk7
Ci0KICAgaWYgKEZSQU1FX1dJTkRPV19QIChmKQogICAgICAgPwogI2lmZGVmIEhBVkVfRVhU
X01FTlVfQkFSCkBAIC0yMTA4OCwyNCArMjExMTIsMzMgQEAgcmVkaXNwbGF5X3dpbmRvdyAo
TGlzcF9PYmplY3Qgd2luZG93LCBib29sIGp1c3RfdGhpc19vbmVfcCkKIAogICAvKiBXaGVu
IHdlIHJlYWNoIGEgZnJhbWUncyBzZWxlY3RlZCB3aW5kb3csIHJlZG8gdGhlIGZyYW1lJ3Mg
bWVudQogICAgICBiYXIsIHRvb2wgYmFyLCB0YWItYmFyLCBhbmQgdGhlIGZyYW1lJ3MgdGl0
bGUuICAqLwotICBpZiAodXBkYXRlX21vZGVfbGluZQotICAgICAgJiYgRVEgKEZSQU1FX1NF
TEVDVEVEX1dJTkRPVyAoZiksIHdpbmRvdykpCisgIGlmICh1cGRhdGVfbW9kZV9saW5lICYm
IEVRIChGUkFNRV9TRUxFQ1RFRF9XSU5ET1cgKGYpLCB3aW5kb3cpKQogICAgIHsKLSAgICAg
IGJvb2wgcmVkaXNwbGF5X21lbnVfcDsKLQogICAgICAgaWYgKEZSQU1FX1dJTkRPV19QIChm
KSkKIAl7CiAjaWZkZWYgSEFWRV9FWFRfTUVOVV9CQVIKLQkgIHJlZGlzcGxheV9tZW51X3Ag
PSBGUkFNRV9FWFRFUk5BTF9NRU5VX0JBUiAoZik7CisJICBpZiAoRlJBTUVfRVhURVJOQUxf
TUVOVV9CQVIgKGYpKQorCSAgICBkaXNwbGF5X21lbnVfYmFyICh3KTsKICNlbHNlCi0JICBy
ZWRpc3BsYXlfbWVudV9wID0gRlJBTUVfTUVOVV9CQVJfTElORVMgKGYpID4gMDsKKwkgIGlm
IChGUkFNRV9NRU5VX0JBUl9MSU5FUyAoZikgPiAwKQorCSAgICBkaXNwbGF5X21lbnVfYmFy
ICh3KTsKICNlbmRpZgogCX0KICAgICAgIGVsc2UKLSAgICAgICAgcmVkaXNwbGF5X21lbnVf
cCA9IEZSQU1FX01FTlVfQkFSX0xJTkVTIChmKSA+IDA7CisJeworCSAgc3RydWN0IGZyYW1l
ICpyZiA9IE5VTEw7CiAKLSAgICAgIGlmIChyZWRpc3BsYXlfbWVudV9wKQotICAgICAgICBk
aXNwbGF5X21lbnVfYmFyICh3KTsKKwkgIGlmIChGUkFNRV9QQVJFTlRfRlJBTUUgKGYpCisJ
ICAgICAgJiYgRlJBTUVfTUVOVV9CQVJfTElORVMgKGYpID09IDAKKwkgICAgICAmJiBGUkFN
RV9NRU5VX0JBUl9MSU5FUyAocmYgPSByb290X2ZyYW1lIChmKSkgIT0gMAorCSAgICAgICYm
IE5JTFAgKEZkZWZhdWx0X3ZhbHVlIChRdHR5X21lbnVfb3Blbl91c2VfdG1tKSkpCisJICAg
IC8qIElmIEYgaXMgYSB0dHkgY2hpbGQgZnJhbWUgd2l0aG91dCBtZW51IGJhciwgdGhhdCBm
cmFtZSdzIHJvb3QKKwkgICAgICAgZnJhbWUgaGFzIGEgbWVudSBiYXIgYW5kICd0dHktbWVu
dS1vcGVuLXVzZS10bW0nIGlzIG5pbCwKKwkgICAgICAgZGlzcGxheSB0aGUgbWVudSBiYXIg
b2YgdGhlIHJvb3QgZnJhbWUncyBzZWxlY3RlZCB3aW5kb3cuICAqLworCSAgICBkaXNwbGF5
X21lbnVfYmFyIChYV0lORE9XIChGUkFNRV9TRUxFQ1RFRF9XSU5ET1cgKHJmKSkpOworCSAg
ZWxzZSBpZiAoRlJBTUVfTUVOVV9CQVJfTElORVMgKGYpID4gMCkKKwkgICAgZGlzcGxheV9t
ZW51X2JhciAodyk7CisJfQogCiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCiAgICAgICBp
ZiAoRlJBTUVfV0lORE9XX1AgKGYpKQpAQCAtMjczNDcsMTAgKzI3MzgwLDE5IEBAIGRpc3Bs
YXlfdHR5X21lbnVfaXRlbSAoY29uc3QgY2hhciAqaXRlbV90ZXh0LCBpbnQgd2lkdGgsIGlu
dCBmYWNlX2lkLAogewogICBzdHJ1Y3QgaXQgaXQ7CiAgIHN0cnVjdCBmcmFtZSAqZiA9IFNF
TEVDVEVEX0ZSQU1FICgpOwotICBzdHJ1Y3Qgd2luZG93ICp3ID0gWFdJTkRPVyAoZi0+c2Vs
ZWN0ZWRfd2luZG93KTsKICAgc3RydWN0IGdseXBoX3JvdyAqcm93OwogICBzaXplX3QgaXRl
bV9sZW4gPSBzdHJsZW4gKGl0ZW1fdGV4dCk7CiAKKyAgc3RydWN0IGZyYW1lICpyZiA9IE5V
TEw7CisKKyAgaWYgKEZSQU1FX1BBUkVOVF9GUkFNRSAoZikgJiYgIUZSQU1FX1dJTkRPV19Q
IChmKQorICAgICAgJiYgRlJBTUVfTUVOVV9CQVJfTElORVMgKGYpID09IDAKKyAgICAgICYm
IEZSQU1FX01FTlVfQkFSX0xJTkVTIChyZiA9IHJvb3RfZnJhbWUgKGYpKSAhPSAwCisgICAg
ICAmJiBOSUxQIChGZGVmYXVsdF92YWx1ZSAoUXR0eV9tZW51X29wZW5fdXNlX3RtbSkpKQor
ICAgIGYgPSByZjsKKworICBzdHJ1Y3Qgd2luZG93ICp3ID0gWFdJTkRPVyAoZi0+c2VsZWN0
ZWRfd2luZG93KTsKKwogICBlYXNzZXJ0IChGUkFNRV9URVJNQ0FQX1AgKGYpKTsKIAogICAv
KiBEb24ndCB3cml0ZSBiZXlvbmQgdGhlIG1hdHJpeCdzIGxhc3Qgcm93LiAgVGhpcyBjYW4g
aGFwcGVuIGZvcgpAQCAtMzg0NjUsNiArMzg1MDcsNyBAQCBzeW1zX29mX3hkaXNwICh2b2lk
KQogICBERUZTWU0gKFFuaGRyYWcsICJuaGRyYWciKTsKICAgREVGU1lNIChRdmRyYWcsICJ2
ZHJhZyIpOwogICBERUZTWU0gKFFob3VyZ2xhc3MsICJob3VyZ2xhc3MiKTsKKyAgREVGU1lN
IChRdHR5X21lbnVfb3Blbl91c2VfdG1tLCAidHR5LW1lbnUtb3Blbi11c2UtdG1tIik7CiB9
CiAKIAo=
--------------pcXrWObKEpuSLXjwgerBofRu
Content-Type: text/x-emacs-lisp; charset=UTF-8; name="tty-child-frames.el"
Content-Disposition: attachment; filename="tty-child-frames.el"
Content-Transfer-Encoding: base64

Ozs7ICAtKi0gbGV4aWNhbC1iaW5kaW5nOnQgLSotCihzdGFuZGFyZC1kaXNwbGF5LXVuaWNv
ZGUtc3BlY2lhbC1nbHlwaHMpCjs7IChzZXRxICB0dHktbWVudS1vcGVuLXVzZS10bW0gdCkK
KHVubGVzcyB3aW5kb3ctc3lzdGVtICh4dGVybS1tb3VzZS1tb2RlIDEpKQoKOzsgKHRhYi1i
YXItbW9kZSAxKQo7OyAoc2V0cSBkaXNwbGF5LWxpbmUtbnVtYmVycyB0KQo7OyAoc2V0cSB0
cnVuY2F0ZS1saW5lcyB0KQo7OyAoc2V0cSBhdXRvLWhzY3JvbGwtbW9kZSB0KQo7OyAoc2V0
cSBhdXRvLWhzY3JvbGwtbW9kZSAnY3VycmVudC1saW5lKQoKKGRlZnZhciByb290LWZyYW1l
IChzZWxlY3RlZC1mcmFtZSkpCihkZWZ2YXIgdHR5LTEgbmlsKQooZGVmdmFyIHR0eS0yIG5p
bCkKCihkZWZ1biB0dHktMSAoKQogIChpbnRlcmFjdGl2ZSkKICAoc2V0cSB0dHktMQoJKG1h
a2UtZnJhbWUKCSBgKChwYXJlbnQtZnJhbWUgLiAscm9vdC1mcmFtZSkKCSAgIChsZWZ0IC4g
NDApICh0b3AgLiAxMCkKCSAgICh3aWR0aCAuIDAuMykgKGhlaWdodCAuIDAuNSkKCSAgICh0
b29sLWJhci1saW5lcyAuIDApCgkgICAobWVudS1iYXItbGluZXMgLiAwKQoJICAgKG1pbmli
dWZmZXIgLiBuaWwpCgkgICAoZHJhZy1pbnRlcm5hbC1ib3JkZXIgLiB0KQoJICAgKGRyYWct
d2l0aC1oZWFkZXItbGluZSAuIHQpCgkgICAoZHJhZy13aXRoLW1vZGUtbGluZSAuIHQpCgkg
ICAoaW50ZXJuYWwtYm9yZGVyLXdpZHRoIC4gMikKCSAgIChib3JkZXItd2lkdGggLiAwKQoJ
ICAgKGJhY2tncm91bmQtY29sb3IgLiAieWVsbG93IikpKSkKICAobGV0ICgod2luZG93IChm
cmFtZS1yb290LXdpbmRvdyB0dHktMSkpKQogICAgKHNldC13aW5kb3ctcGFyYW1ldGVyCiAg
ICAgd2luZG93ICdoZWFkZXItbGluZS1mb3JtYXQgJygiICIgKDpldmFsIChidWZmZXItbmFt
ZSkpKSkpCiAgKHNlbGVjdC1mcmFtZS1zZXQtaW5wdXQtZm9jdXMgdHR5LTEpKQoKKGRlZnVu
IHR0eS0yICgpCiAgKGludGVyYWN0aXZlKQogIChzZXRxIHR0eS0yCgkobWFrZS1mcmFtZQoJ
IGAoKHBhcmVudC1mcmFtZSAuICxyb290LWZyYW1lKQoJICAgKGxlZnQgLiAxMCkgKHRvcCAu
IDEwKQoJICAgKHdpZHRoIC4gMC42KSAoaGVpZ2h0IC4gMC4zKQoJICAgKHRvb2wtYmFyLWxp
bmVzIC4gMCkKCSAgIChtZW51LWJhci1saW5lcyAuIDApCgkgICAobWluaWJ1ZmZlciAuIG5p
bCkKCSAgIChkcmFnLWludGVybmFsLWJvcmRlciAuIHQpCgkgICAoZHJhZy13aXRoLWhlYWRl
ci1saW5lIC4gdCkKCSAgIChkcmFnLXdpdGgtbW9kZS1saW5lIC4gdCkKCSAgIChpbnRlcm5h
bC1ib3JkZXItd2lkdGggLiAyKQoJICAgKGJvcmRlci13aWR0aCAuIDApCgkgICAoYmFja2dy
b3VuZC1jb2xvciAuICJvcmFuZ2UiKSkpKQogIChsZXQgKCh3aW5kb3cgKGZyYW1lLXJvb3Qt
d2luZG93IHR0eS0yKSkpCiAgICAoc2V0LXdpbmRvdy1wYXJhbWV0ZXIKICAgICB3aW5kb3cg
J2hlYWRlci1saW5lLWZvcm1hdCAnKCIgIiAoOmV2YWwgKGJ1ZmZlci1uYW1lKSkpKSkKICAo
c2VsZWN0LWZyYW1lLXNldC1pbnB1dC1mb2N1cyB0dHktMikpCgooZGVmdW4gdHR5LXRvZ2ds
ZS0xICgpCiAgKGludGVyYWN0aXZlKQogIChpZiAoZnJhbWUtbGl2ZS1wIHR0eS0xKQogICAg
ICAoaWYgKGZyYW1lLXZpc2libGUtcCB0dHktMSkKCSAgKG1ha2UtZnJhbWUtaW52aXNpYmxl
IHR0eS0xKQoJKG1ha2UtZnJhbWUtdmlzaWJsZSB0dHktMSkpCiAgICAodHR5LTEpKSkKCihk
ZWZ1biB0dHktdG9nZ2xlLTIgKCkKICAoaW50ZXJhY3RpdmUpCiAgKGlmIChmcmFtZS1saXZl
LXAgdHR5LTIpCiAgICAgIChpZiAoZnJhbWUtdmlzaWJsZS1wIHR0eS0yKQoJICAobWFrZS1m
cmFtZS1pbnZpc2libGUgdHR5LTIpCgkobWFrZS1mcmFtZS12aXNpYmxlIHR0eS0yKSkKICAg
ICh0dHktMikpKQoKKGdsb2JhbC1zZXQta2V5IFsoY29udHJvbCBsKV0gJ3R0eS10b2dnbGUt
MSkKKGdsb2JhbC1zZXQta2V5IFsobWV0YSBsKV0gJ3R0eS10b2dnbGUtMikK
--------------pcXrWObKEpuSLXjwgerBofRu
Content-Type: image/png; name="before.png"
Content-Disposition: attachment; filename="before.png"
Content-Transfer-Encoding: base64

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
CBaLhZzcXEJDQpwjqCXupnqBvVnrcw15bEidrQ9vb28MBgNjr76ahYuX8NHcT3j0oQebrp6f
A86nvAghhBDnqgZNOWW1WjGVl5OWns7vq9dyz/QHiYmO4aYbrgegvNyEXqdDo6nYzfoNGzh+
4oR9+0BDIMdPnrR/jo9rRdfOnfnP7A8pLy8HoKSklJTUtIYks1Y2m1KRD5OJg4eS+O7H/zGw
fz9V6akrf7VZuHQZRSUlACz77TeKCgvpl9jX7TJoCWVY1bIVK2nXti1dOnfC39/P/jf+mtEs
XvYrVmvdd2uysrLIzc0DICAggK6dO1Nmcnw0KSE+nvbt2vLRp59jPfMuUUbGKVVprF5mjaW5
j4UrDamzDfX4ww/z088LSDp8+Jyv5550PuVFCCGEOFc1aFD02ZdfcelVo7j59jv55IsvGDni
Sua8+5b9Zf2B/fvTuWNHrr1pEtdPuoVFS39l7OjR9u0nTbieBYuXMmHyrXz5zbcA/POlF8g4
dYqrxoxn7A03Mfb6CWz/66+GJLNWn86bx5DhV3HZyNE88benSUzs6/Byc23pqSt/NdLAhGvH
MfHW27nm+ht56933eeHZv9sfl3KnDFpCGVa1YPESxo0e5bR86MWDUWw2NmzaVGccaekZTLzt
dq6bOJnrJk7m9zVrue/uu5zC/eOlF9h/4ABXXD2GK68Zxwv/+IeqNLoqs8bSnMfClXrXWQ/o
3Kkjo0eN5F9vvo2iKOd0Pfe08ykvQgghxLlIE9lrtDLpxUW8OqKk0XaSm5uHTq9zOb1s5SNQ
4WFhDi/KFxYWUVpWSkhwMF5eXo2WNrVqS09t+auN2WwmPz+fsLAwl490qS2Dc6UM3WG12cjN
zcVLr8dY5f0YV3Jz87DarISFhqp+NK6mMmssLe1Y1LfONoYLuZ5Xdz7lRQghhDgXPLXcn2+f
H9M0gyIhhBBCCCGEaGkqB0WN/xW5EEIIIYQQQrRgMigSQgghhBBCXNBkUCSEEEIIIYS4oMmg
SAghhBBCCHFBk0GREEIIIYQQ4oKmd7UwIyOjqdMhhBBCCCGEEI0uOjraaZnLQVG79h0aPTFC
CCGEEEIIUR/bNq5F42Oo17aqB0UAiqLUaydCCCGEEEII0Vg0Go3H45R3ioQQQgghhBAXNBkU
CSGEEEIIIc4biqK4/dSbDIqEEEIIIYQQ542SkhKKS0rcGhjJoEgIIYRtwIhGAAAgAElEQVQQ
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
hiUQUnCH1hgcjDHGNtgYb9iSvMiWbUnPH6puEBJGNpIF/r5e5/jY+t2v7v3e35Wu7/v+llvf
e3nViL5jB6LnhAb9bbUaMb7/WBpM/f38jRibtG078fe92/PVYBmK30vgXdl9Dhgexw4koyb1
XjbxfXzIZsu67gPxxy0+8bgpH0teu+enL9STpPHCU7/dk9H8QveHWr79z9GW03PbnUf7npSg
oit5638N7mfrDHQ9D/Rx63HC+3GStn6n+zib6Z9Kzv6F5PX73nFGuSFYL0nS8mL3Llrn/GIy
69PJ1r/+aWh8GLTv7T6ua9KlvZef6u/vsQPduwdOu6b38vqzknELe+/aNhQmXNQ78EZO7D7W
p+Unvec4mM9XAzJEP39Av0QRMDz2re4+E9dZ13Wfxanpo8mS3z3163v9vuTovuSj3+m+zoaZ
3e/Ez3/Hbklt27pffI2e073bzqyfTy76f/q/ztoxyZhzusdVj+p+odTfu8oDHTdQI8Z2X9/I
xqSmIRkz9/1vTWld1x0qU6/uPiakYVb3eu/xk99Pmq7qPv3z2Pndl40/L1n8v3f/3aOqpvts
Vj277vSMfaeBrueBPm4DvR/JwNff0ZbuLUMLf6v7Z3Hzf+s7ZqDrJTm5n4ONf5rMvi2ZeUv/
t9tj1KTk1m3J8q+8+5iBqqpJzrqh759T2eLx6re6j8E69xe7dz2cfHmy9N+f+txe+sPuXcQW
/mb3+hu3qPvMc0ebe58GeyjUjkk+8hfdP0ujZyeXfSPp7Oh9u4P9fDVQg/17Cbwru88Bw+Ol
LyeTLkk+8T+7vz6yO/lfX+o+De+paN+T/PDa7jMv9Vxn0v35IRv//Kdfr/k/kqv+Jvm5LT+9
/JnPJ9f+uPf1Xb2yewvC292ysfvvzf/tp2c/G+i4gerv+n721VO/vh4v/t/dJzv45OP/fGxI
V/fxTHue7r5856PJj27pPjX0gl//52/qSvb+0093KauqST57tPcxQdc/2/33S3+UPP9//nT5
QNfzQB+3gd6Pk11/m/9b9/fsf7n3Vq0eA1kv73a7J/o52Pbd7mPMjjYne/6+7+32qB6Z1DV1
bzV5v2rqkk/8Xd/lj1514jn058U/6D7m5rJvJZfXdgfms7/SHRenYvPd3XGy9N//NAD3Ptv9
s9H+1qld50Ct/3+7g+jnXuv+mTr8ZvLj23rvtjfYz1cDNdi/l8C7qppywU1dn/39lfnydT89
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
Z87MtGnTTriFtLOzc0DXOdBxH0QNDQ1JkrvvvrvfN1TOZNdcc0127NiRDRs29Lmss7Mzra2t
mTt3buWNmPnz51f2EqAMoggoUk1NTW688cZs3bo1a9eu7XXZiBEjcuzYsSTJ0aNHM3LkyCxf
vjwHDhzo825z25ED6eg8lvPmXpG5sy7IjKlzs3XHy9nTvC21NSNO25ajd7Nv377s27ev8nVX
V1e2bduW+fPnp6qqasi2JBw4cCAtLS1ZtGhRamtrM3PmzOzZsyevvfZaRowY0Wvs3r17M23a
tEycODFTp07N0aNHc/DgwYwePbrXuOnTp+eKK67ItGnT0tXVlTfeeCNPPfVUnxd35513XpYt
W5YJEybk+PHjaW1tzebNm7NmzZocOXLkpMY1NTXloosuyowZMzJ27NgcOXIkO3bsyKpVq7J3
797KddXU1OQTn/hEFi1alM7Ozjz33HPZuHFjbrrpprz55pt5/PHHh+R+nMx6Lk1VVVUWLlyY
J598MqNGjcrixYtP226jH1Q9UfT23WtLMHbs2CxZsiQPPPBAv5dXV1dXnhdXr16dcePGpamp
KS+88EKampp6jR05cmQuvvjizJ49OzU1NdmyZUtWr17d542choaGLF++PNOmTUtNTU1aW1vz
0ksv5fXXXz/pcVVVVZk7d27mzp2bCRMmpL29PVu3bs2aNWs+1JH+QSOKgCKNHTs2y5cvz+TJ
k/tE0datW3Peeefl8OHDOfvss7N+/frccMMNfbYSJckbuzbmjV0bc81ln82r257PjCnz8+yL
/zPbd286XXflpNTU1GTRokV57bXXhnTXqmeeeSbPPvtsvvSlL6WzszNjx47N888/n2eeeabP
2P3792fatGmZNGlSpk6dmj179qSxsbHXmLPPPjuf//znU1tbm6NHj6a6ujpNTU2ZP39+/uIv
/qLyIu/888/Pbbfd1ut7m5qaMnv27Dz33HOVZQMdN2PGjFx55ZVJut9Nrq6uzvTp07N06dL8
+Z//eeVg+xUrVuTyyy+vfN/111+fyy67LI2Njb1etAz2/TiZ9Vyas88+Ow0NDXnllVcyfvz4
LF68OE888cRwT2tYjR49OkeOHCluS+y8efNSVVXV7y6UPV577bXccMMNqa6uzvz587N79+4c
OnSoVxSNGjUqd911V+rr6/PCCy+kq6srV111VebNm5dvf/vblXFVVVX5pV/6pVRXV2f9+vXp
6Oio/P6+M3YGMq6hoSG33nprNm7cmO3bt6ehoSHXXnttZs+e/a6hx8kTRUCRWlpacu+99/Z6
t7/HypUrc+ONN+b222/PP/7jP2bs2LH9biXqsWjOJVm26JP5xnf/r1yw4Krc+olfz91/+3tp
O7J/SO9DVVVVxo0b12tZV1dXDhw40GtZfX19rrrqqowaNSpnn3123nrrrTz00ENDOrek+9iL
qVOn5tvf/nYuu+yyrFixItu3b+/zTmlLS0u6uroyefLkTJkyJa+88kqmTZvW64XbDTfckNra
2qxduzbf//73U11dnTvuuCNz587NZZddVtkS03Piht27d+e//tf/WomOMWPG9Do5xkDH/eQn
P0lHR0e2bNmSgwcPZty4cfmlX/qlTJgwIeeff35+/OMfp66uLsuXL0+SrFu3Lg8//HAaGxtz
55139lkng30/TmY9l2bx4sXZsWNH9u/fn5dffjkf/ehH09TUVPQuUQ0NDRk5cmR+53d+J3V1
dTl48GDWrVuXJ554IkePDu9W7aHUswX1RGdmfOONN9LV1ZXZs2dn7ty52bhxY2pqanqN+cQn
PpHRo0fnz/7szyrH761bty6/+qu/mvnz51f+jxg/fnyampry7W9/u7Lrcn8GOu7QoUP54z/+
415vsOzYsSO33nprVq5cWdmzgfdHFAHFeuWVV/pd3traWjmDV21tbX7zN38zK1euzLhx4zJ+
/Pjs2LGj1wv213esz0M//v/SevCtPPviwzlwaF8Otw/97ikjRozIv/23/7bXsvb29nz5y1/u
tay2tjZTp07NyJEjM2rUqIwcOTKNjY194mmw/dM//VOOHTuWV199NQcPHszevXv73X2ppqYm
+/bty+zZszN69Ojs27cvNTU1lXU8evToTJs2LUn3SSTOOeecJN0vCubOnZuZM2dWrqtny01T
U1M+9alP5bnnnsuWLVv6bBUb6LiOjo5s3LgxZ511VubPn5/a2tocPnw4EyZMqOyK1NTUVNlV
7fHHH8/BgwcrLzYvueSSynUNxf04mfVckqqqqixevDj/9E//lCR58803c/DgwSxevLjoKHru
uefS2tqalpaWVFVV5ZxzzsnHPvaxTJ48udeWjjPNuHHjTngCiqT7DaVNmzZl4cKFOffcc/MP
//APWbJkSa8x5513XrZs2ZLRo0dXdu/teSNq1qxZlSg6ePBgWlpa8slPfjLt7e3Ztm1bv7c5
0HFJ95bqqqqqjB07tnL6/Z43xvp7c4+TJ4qAQXfDDTdUTqvc4+677x7wC7WB7tY12OP6s2zZ
shw4cCAjRozIr/zKr2TXrl0ZP358vvWtb1XGHG4/lJc2/68kSfvRw3l+w4/6va73u17e6fjx
4/nmN7/Za1l/9/XAgQP5q7/6qyTdAXLdddflC1/4Qr7+9a9n//6h25q1ffv2bN++PUmyc+fO
PPzww/2Oq6ury86dOysvQN75+S9jxoyp/PvGG2/s8/0jR46s/Pvpp5+u7Bp53nnn5bzzzsve
vXvzve99L2+88cZJj7voooty4403Vm6jo6Mj1dXdn3teVVWVpHtXzB5vPy7onS/ChuJ+JANf
zyXpOQbsggsuyIIFC5J0v4mwePHiPPXUU8M8u+HT3t6el156qfL19u3bc/z48Vx//fWZNGnS
Gfviuq6urtexle/mlVdeyc0335xjx45l27ZtvaKouro6Y8aMqfw+vtPbnweOHz+ev/zLv8wN
N9yQX/7lX8727dvz93//931O8jDQcbW1tbn++utzwQUXJOmOqZ7n+p7nId4/UQQMuueffz6v
vfZar2XvPIj82LFjqa+v77WstrY2I0eO7LUrwGCPOxm1tbX5mZ/5mfzgBz/INddck4cffjgv
vvhivvCFL+Siiy7K82/2v6Xp3QxkvZyMzs7Okz67WEdHR1atWpWPfOQjmT17dl588cVTvv3B
UltbmzfeeKPyQuOdUfT2XV6+//3vV3Zb6fH2kyd0dnbmBz/4QZ5++ulccsklWbZsWSZNmpRf
/MVfzFe+8pXKMTsDGVdbW5ubb745NTU1efzxx/Pss8/m6NGjue2223L++edXbvPw4cOVf9fX
16etrS1J+pzoYCjuB/1bsmRJ9u/fn5/85CeVZTt37szy5cszYcIEH7z6Nj2RPX78+DM2io4d
O9brw3ffTc8uc+vXr+/zBlNXV1c6Ozvz5JNP5sc//vF7XteBAwfyP/7H/8jEiRNz5ZVX5o47
7siqVavy6KOPnvS4a6+9NgsWLMh//+//vfIGSFNTU37t135tIHefARJFwKDbuXPne2792Ldv
X6ZMmdJrWc/Xb7311pCNOxnLli3LoUOHsmHDhtx6662Vd/7379+f8ePHJwP/6KMkA1svp0PP
cUgflP3Qa2pqsnbt2rz11lvp6urqFRlJdzi2tLSksbExc+bM6bUP/ciRI3ttgZk3b1527dqV
1tbWPP744/nJT36Sf/Nv/k1qa2szZcqUSkwMZNyECRMqxxSsW7cuR48eTV1dXWbNmtVrfnv3
7k1XV1eqqqpy8cUX5+mnn05tbW0WLlw45PeD/i1evDjr1q3Lj3700622NTU1Of/887NkyZI8
/fTTwzi7D5bJkycn6btl80xy4MCByv08kba2tnzta1/r9QZFj66urmzfvj1z584dUBT12Ldv
X1auXJmk+wQq74yigYybM2dOXnzxxUoQJal8fAGDRxQBw2Lt2rW5/fbbc80112Tt2rWpr6/P
9ddfn9bW1l5bUwZ7XI/6+vr863/9r7N+/fp+dzfq2UrUc0KCvXv3ZsqUKdm2bVuampry/PPP
D/YqGRLXXXdddu7cmd27d+fYsWNpamrKihUrsn///g/UhzXu37+/sivfxIkT+1z++OOP57bb
bssFF1yQhQsXZu/evRkxYkQmTpyYZ599No888kiS5LLLLqt8Cv2BAwcqu7R0dnb2iuOBjGtt
bc2xY8cyYsSI3HXXXdmxY0emT59eOZbo7XPfuHFjFixYkBUrVuTCCy9MQ0NDn3FDcT/oa/r0
6WlsbOyzC1JHR0deffXVPlE0cuTIyuNVU1OTiRMn5uDBg31OPDDQccNp9uzZvXbDTLo/kLTn
jYarrroqe/furRxXNXv27FxzzTV59dVXz9itREn3MWXnnXdeamtr3/PMeyfaivjkk0/m85//
fG688cY8++yzlZOvzJs3L6+++mplvU6fPj1nnXVWNm3alLa2towfPz6zZs3q87s70HGtra2Z
M2dOGhsbc/To0Zx99tm55pprTnFt8G5EETAsXnrppfzwhz/MRz/60Xz0ox9N0n3A+T333NPr
P63BHtejpqYmDQ0NvfYDf7uLL744bW1tlZMxPPLII/n0pz+dK6+8MgcPHszzzz+f2umDsy6G
UmdnZ2666aaMGjUqSfe7nZs3b87f/d3ffWC2FA3Eiy++mGPHjuXqq6/OtGnTMn1698rfv39/
3nzzp5vsdu7cWTlhQ8+B0Hv37s3jjz/e6/ipgYw7evRoVq5cmU996lMZM2ZM5s6dm7Vr1+aN
N97IzTff3Gt+Dz30UEaPHp0ZM2akqakpmzZtyuHDh3vtZjcU94O+Fi9enMOHD2fr1q19Llu/
fn0+/elPp7GxMS0tLbnzzjszf/78XmN+4zd+I0nywgsv5Hvf+16SDHjccLvqqqv6LLv77rsr
66Krqyu33HJLZVeyo0eP5rnnnjvjT1W+adOm3HDDDTnnnHNOeFru97J58+bce++9WbFiRT7y
kY8k6V6nO3bs6HPino9+9KO9nie2bt1a2RJ0suMeffTR3H777fmt3/qtJMmuXbvywAMP5Jd/
+ZdP+b7QV9WUC27q+uzvr8yXr2urLGwYPeYE3wJ9/fMHQFcsW9a9L+5zzzkA8Eyw7OV3LLjz
n/e1vqf34/uz991y0tddXV2dcePG5ejRo5VjMU7HuKT7MyeOHj064BMxVFdXp76+vnIsSN3s
vi+6+nNk6+wBjRsqVVVVGTNmTGpqanLo0KEPVQz1p66uLvX19ZXH+J2PX1VVVUaPHp0RI0ak
ra3tXU/DO9BxPT9TbW1t77lVYOzYsens7MyhQ4fymc98JosXL8769evz13/910N2P+Bk9Pxc
JWV9iOu//Jf/MsePH88999wzKNdXX1+furq6HDp06F2fF+rr6zNq1Kj3fO4Y6LieXWz7e9y+
/9l3fI7eu/w/XfW5d736D53Vq55K1agx+d6DfWPzRG695eYsWrig8vXvPtKQ+/7DzbYUAcOr
s7NzQCcbGOxxSU76RWbPi90Pm/4+u+jD7MiRI/3u89+jq6trQC/2BjpuID9TV111VVpbW7Nz
584cPXo0S5curWxZePsWoLcbrPsBJ6PUn6tHH300d911V2bOnNnnDI6n4vDhw32OfzyVMScz
rsTH7XQSRQDwPs2dOzdnn312n+UtLS1Z/c5N6cBpt2PHjnzve9/LpEmTBiWKOPOIIgB4n154
4YV0dXWlsbExtbW1OXDgQDZv3pxnnnlmQO8AA0Nv3bp1wz0FPsBEEQC8T2vWrMmaNWuGexoA
nCJRBAyaPgd60u3KF4Z7BgDACVQP9wQAAACGkygCAACKJooAAICiiSIAAKBooggAACiaKAIA
AIomigAAgKKJIgAAoGiiCAAAKFrtcE8A+BC7s2u4ZwAA8L7ZUgQAABTNliLg5N1TNdwzAAAY
NLYUAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUT
RQAAQNFqh3sCwAffc4uGewZ8EC1b1pUkee65ql7Lly8fjtkAwKmzpQgAACiaKAIAAIomigAA
gKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBo
oggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigC
AACKVjvcE6As+/c/MdxTAE7RuHGfGO4pAMCQsKUIAAAomigCAACKJooAAICiiSIAAKBooggY
dkeOHMmxY8eGexrDrrOzM83NzWlubk5HR8eAv8/6A4D3x9nn+MB65JFHctZZZ2Xp0qW9lq9c
uTLz58/PwoULh2TcmWLDhg156aWX+r3sYx/7WCZNmlT5uqWlJT/60Y+yY8eONDY25oorrsjZ
Z599WuZ5+PDh3H333ZkzZ05uuumm03KbH1SHDh3KvffemyT59Kc/nSlTprzn91h/APD+2VLE
B9Zf/uVf5kc/+lGf5X/yJ3+SZ599dsjGnSmeffbZfO1rX8vf/M3f9Pmzd+/eyrgnnngiX/jC
F/JXf/VX2bx5cx566KHcddddeeyxx4Z0fp2dnUmS+vr6JElDQ0OSnNQWkg+SJ554InfffXda
WlpOy+2daesPAIaTLUVwBhs1alS+/e1vn3DM9OnT87nPfS633357ampq0tXVlT/4gz/In/zJ
n2TFihVDNrdVq1Zly5YtmTlzZmpqarJv376sXLkyb775Zm677bZeW7I+DHbu3JnDhw9XYuX9
qq4+8XtWZ9r6A4DhJIrgXRw/fjxf+cpXsnTp0lx33XXDPZ0hs3Dhwl67DlZVVeXyyy/Pk08+
mQMHDmTs2LFDcrujR4/O2LFjs2XLlnR0dGTnzp2ZMGFCpk+f3mdrx8aNG/Pyyy+ntbU1tbW1
GTNmTGbNmpVFixZl1KhRlXHt7e1Zs2ZNtm3blvb29owaNSpTp07NJZdcUtmS8sgjj+TIkSNJ
kgkTJuSKK67IqlWrsm3bttTU1OS6667LhAkT0tzcnPXr12f37t05dOhQRo0alcmTJ+eiiy5K
Y2Njku6fkVdeeSU7d+6sbCF64oknMmLEiCTJkiVLMm/evJOa39vHPvbYY9m1a1fq6+uzaNGi
LFmy5JTWHwBwYqII3sVbb72VlStXZtu2bWd0FPVn165dGTlyZMaMGTNkt3HRRRfl/PPPz3e/
+91UVVWlra0tixcvzkUXXdRr3KuvvppHH32017J9+/blzTff7BUJR48ezd/8zd+ktbW119jm
5uZceeWVla937dqVAwcOJOneutPa2pqtW7cmSWpraysRuGvXrjz//PNJurfatLa2Zvfu3dm4
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
ewoAAHBCthQBAABFs6WIIfHcc1XDPQUAABgQW4oAAICiiSIAAKBooggAACiaKAIAAIomigAA
gKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaLXDPQHODMuXD/cMAADg1NhSBAAAFE0U
AQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAA
QNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0
UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQB
AABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA
0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRR
BAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEA
AEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDR
RBEAAFA0UQQAABRNFCE2sskAACAASURBVAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNF
AABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAA
UDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRN
FAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UA
AEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQ
NFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0U
AQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAA
QNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0
UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQB
AABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA
0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRR
BAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEA
AEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDR
RBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEE
AAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAA
RRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFE
EQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQA
ABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABF
E0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQR
AABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAA
FE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUT
RQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEA
AFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAU
TRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNF
AABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAA
UDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRN
FAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UA
AEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQ
NFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0U
AQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEUTRQAA
QNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQBAABFE0UAAEDRRBEAAFA0
UQQAABRNFAEAAEUTRQAAQNFEEQAAUDRRBAAAFE0UAQAARRNFAABA0UQRAABQNFEEAAAUTRQB
AABFE0UAAEDRat/tgltuueV0zgMAAOA9Pfjgg4N+nbYUAQAARRNFAABA0UQRAABQNFEEAAAU
7V1PtADvVFVVlfr6+nR0dKS9vX24pzOsqqurM3HixCRJS0tLjh8//p7fY/0NrTFjxqSurq7y
dUdHR5qbm095HOUYOXJkjh8/ns7OzuGeCkPgw/z4er6C02dQoujCCy9Mc3Nztm7d2mv58uXL
s2PHjrz55ptDMu5MMX369MyYMaPfy9avX5+DBw/2WT5v3ryMHTs2a9asGerpVTQ0NOS3f/u3
s2HDhtx3332n7XY/iMaNG5df//VfT5J885vfHNDPpPX3/lRXV+eKK67I7t27s3Hjxj6XX375
5bnoootSX1+f6urqNDc356tf/eopjxsudXV1Wbp0aV555ZW0trYO+PsWLVqUKVOm5B//8R9z
+PDhIZzhB8OcOXNSV1eXl19+udfyk11/tbW1+Xf/7t9l3759+cY3vjFU0z1pY8aMyeLFi/ss
b29vz9q1a4dhRh9OH9THd6D/7w/0+erCCy/MyJEjU1VVlba2tuzatSt79uwZ0vvQY9SoUbng
gguybt26tLW1nZbbhKEwKFF09dVXZ8OGDX0i5rrrrsvTTz9decE42OPOFPPmzcvVV1+dlpaW
Ppdt3769VxTNnz8/V199daZPn55Dhw6dliiqqalJR0dH2tra0tXVlUOHDiXp/s+mo6MjXV1d
Qz6HwfSzP/uzWbBgQe6+++7s3bt3yG/vTFt/w+Xcc8/NihUr0tzc3G8UPfbYY3nssceSJJ/6
1Kcyd+7cfq9noOOGy5gxY3LTTTelubl5wFE0YcKE3Hbbbamtrc2LL754xkdRY2NjfuEXfiH3
339/n8tOdv11dHRk69at2bdv31BM9ZSNGDEiM2fOzNixYzNnzpzs378/u3btys6dO9/X9V55
5ZVpbGzMD37wg0Ga6fAY6P34oD6+A/1/f6DPV1dffXVGjRqVgwcPpqGhIaNHj86WLVty//33
9/vG6mBqb2/P/Pnzc8455+Sv//qvh/S2YCjZfe4D4tixY+/5bvWsWbPy2c9+NmvWrMlrr72W
Cy+88LTMbcWKFVm4cGE2b96cjo6OTJkyJXfeeWfmzJmTb33rW9m9e/dpmcdgmTVrVkaPHp2a
mppBub73ipozbf0Nl8WLF+eNN97IzJkzM23atBO+OBzobjIfxt1p+nPjjTfm9ddf/8AF3lC5
5pprsmPHjmzYsOF9X1dXV1fuueeeQZjV4Gpubs4DDzyQJPnd3/3drFmzJj/60Y/e9/WeddZZ
g/bcN5wGej8+qI9vMrD/99/uvZ6v1q5dm4cffjhJ9/9z/+Jf/It8/vOfzze+8Y0hf6579NFH
82u/9ms599xzs3nz5iG9LRgqZ0QU1dTU5MYbb8zWrVvP6N0Ktm3blv/yX/5LDh48mCuvvPK0
3e6BAwfS0tKSRYsWpba2NjNnzsyePXvy2muvZcSIEb3GnnfeeVm2bFkmTJiQ48ePp7W1NZs3
b86aNWty5MiRyrj6+vpceeWVOffcc9PQ0JC2tra8+eabeeqpp3LgwIEkye23317Zl3rPnj15
/PHHc+211+bcc8/NsWPHcv/992fPnj1pamrKRRddlBkzZmTs2LE5cuRIduzYkVWrVlW2BI0Y
MSJLly7NrFmzMmnSpCTdH1B89OjRJMnq1avz0ksvndT8etTV1eXnf/7nM3PmzLS1teX555/P
6tWrT2n90b+qqqosXLgwTz75ZEaNGpXFixe/73fMzxSLFy/OrFmzcv/99xcRRWPHjs2SJUsq
wXCqzj333CxcuLDydUtLS1atWtXv2IaGhixfvjzTpk1LTU1NWltb89JLL+X111+vjLn00kvT
0tKSw4cP59JLL019fX3eeOON/MM//EPleWYoXHrppWlubs7BgwdzySWXZOzYsdm3b19WrVqV
/fv3J+l+/lu+fHllq9OxY8dy4403Vq7j4Ycf7vXmzsiRI3PxxRdn9uzZqampyZYtW7J69epe
x05edtllvY6rXL16dT7+8Y+nqakpLS0tefTRR3Ps2LFUVVVl7ty5mTt3biZMmJD29vZs3bo1
a9as6feF+sKFC7No0aKMHj06hw4dypYtW/KTn/wkXV1dJ3U/TubxHTduXC655JJMmTIlR48e
zYYNG/LSSy/1WicDWc8fJNu2bct3vvOd/Oqv/mouvPDCXnuVDOT+9jjR4/F2e/bsydatW3Pp
pZeKIj60zogoGjt2bJYvX57Jkyef0VGUpLIZvKqq6rTd5jPPPJNnn302X/rSl9LZ2ZmxY8fm
+eefzzPPPNNr3Pnnn5/bbrut17KmpqbMnj07zz33XGXZqFGj8sUvfrESJ0n37jCTJ0/Oo48+
Wlk2ffr0NDY2JklmzpyZiRMnZv78+UmS48ePVw42nTFjRiUSOzs7U11dnenTp2fp0qX58z//
8zQ3N2f8+PG55ZZbes1t5syZlX9v2rTppOfX49Zbb824ceOSJBMnTvz/2zv3sKiq/f+/ZxiY
YZhhuF9UEJGLCKEFJ0vRNES5mVbeOponSY9YiXVOHj3nmN8nTyfLjLQ6ZpbhNbXsCZXjSdG8
IKkkCo6oBATqcBcDmeE+s35/8Jsdmxlgb5hhVNbredbzMIvP3uuz1l77s/dnXT4bQ4YMQVNT
E/Ly8ni1H6Vrhg4dCqlUil9++QUKhQJBQUE4efKkpdWyONbW1pg6dSp+/PFH1qDDw4yfnx8E
AoHRJZR8aGpqQkNDA2xtbREQEICGhgajL80CgQAvvfQShEIhrl+/Dq1Wy9i1jk5RQEAAsyle
qVRCrVbjiSeeQEBAAL766iuzjdQHBARALBZDoVAgLy8P5eXlGD16NIKCgrB582a0tLRAJBLB
w8ODqY9AIIBYLDZ6PrFYjISEBNja2iI3NxeEEIwfPx5+fn7Ys2cPI6fRaCCXy+Hl5YWAgAB4
eXlBoVBApVJBLpejtbUVQLtDOWPGDBQUFKC0tBRSqRRRUVHw9vY2cGzj4+MRFhaGX3/9FVVV
VZBKpQgPD2ee63zqwfX6uri4ICEhAXV1dcjPz4ednR1mzJiBwMBA1vJMLu18v1FRUYGysjIE
BgYyThHX+gI9X4/O5OfnY9KkSRAKhQ/NLDxlYPFQOEW1tbXYu3dvv+wPMRcCgYB5sdZDCDGY
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
ETUgin4dPAAAAABJRU5ErkJggg==
--------------pcXrWObKEpuSLXjwgerBofRu
Content-Type: image/png; name="middle.png"
Content-Disposition: attachment; filename="middle.png"
Content-Transfer-Encoding: base64

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
uaxfvx6z2cxll13GtGnTvP6t+qZNm/joo49ITU2lQ4cO3H777U5h1OS3tLSUDz74gLS0NNau
XUtgYCAPPPCAff3bb7+NVuvePBeffPIJEydOdHjc6/777+fZZ5/ls88+s1+gvvfeeyQlJREW
FsacOXPIzc1l4MCBPPzwwwQHB7udPneOb2pqKrNnz2bXrl32x/smTpzocBfmvffeo3379sTE
xDBnzhzS0tLo2LEjjz76KAkJCQ7xZWdn8/7777N9+3ZMJhNt2rThhhtuYNiwYW6VnSsajYab
b76ZJ554gvT0dPvyV199lZiYGIc7H7m5uTz77LPcc8899OrVC6g8HhkZGRw5csT+edWqVQCM
GDGCcePGuRUO1NX7t956i5SUFKDyWEybNo0XXniBPXv2kJSUxKuvvkpgYKDXy68uauqBO+HU
ao78unN+qEmfmvPXG9Scl+62a56szzabjRUrVvDzzz9z5MgRDAYDl156KbfffrvLd3wWLlzI
jz/+SGZmJtHR0VxxxRXcdNNNaLXac6b98zRP9qvNVU+FEMJbPDL7XFhYGNHR0eh0OpYuXcp3
333XqPgKCgoYNGgQr7zyCh06dKB79+689NJLXHvttZ5Ibq2WL1/OkCFD2LRpEwMGDKCgoIAb
brjBKZya/JpMJrZv305WVhZWqxWLxUJxcbH9z11HjhwhKyuL4cOHOyz38/Nj4MCB/PHHH/Zl
CxYs4KmnnuLmm28mMTGRrl278tZbb3HFFVdgNpvdTp/a47t//3769OnD4sWL6du3L0ajkalT
p3LLLbc4hFuwYAGzZs1i7NixBAUF0a9fP3744QeGDBnisG9FUbj00kuZN28eHTt2pG/fvmRm
ZrJu3Tq3y682mzdvBuCiiy6yL/vmm29Yvny5Q7jCwkLeffdd+8CmatuDBw+Sl5cHVD4eV1V+
JpPJ7XBq631sbCwGg4EdO3bwzjvvcNttt/Hrr7/Srl07MjMz7QOipig/V9TWA7Xh1Gqu/Ko9
P9SmT8356w1qzkt32g1P1+ecnBymTJlCXl4eAwYMICoqipkzZ3LnnXc65WXatGmMGzeOkydP
0rlzZywWC++++659oHMutH+e5ul+tbnqqRBCeE10r9HKQ/NtSmlJsf0PUBRFUWbNmqUEBgYq
J0+edPhLS0tTajNx4kRl4MCBta6vcv/99yvt27d3uW7GjBlKdHS0curUKfuyHTt2KBqNRlm8
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
xqCIiIiIiIiWNQZFRERERES0rDEoIiIiIiKiZY1BERERERERLWsMioiIiIiIaFljUERERERE
RMsagyIiIiIiIlrWGBQREREREdGyxqCIiIiIiIiWNQZFRERERES0rDEoIiIiIiKiZY1BERER
ERERLWsMioiIiIiIaFljUERERERERMsagyKqG1mVsOmZHnQeCNa7KkRERES0jDEooroR8oCc
laBkpXpXhYiIiIiWMbneFaDlK2fTsf/a49DlfL2rQkRERETLGIMiqitdYUBERERERPXF4XNE
RERERLSsMSgiIiIiIqJljUEREREREREta5xTRERz2nK43jWgRemwAADYMuVl44e1rwoREc1N
+PN612DxYk8REREREREtawyKiIiIiIhoWWNQREREREREyxqDIiIiIiIiWtYYFBERERER0bLG
1edoWbCkZXhHnLP+XZfzCHfGa1gjIiIiIlosGBTRsmBJKWg65ituW1MKdDkPzaIDAHJ2bdkH
Rc29DbCkZQxsGq93VYiIiIhqikERLQsJfxoHr+4vbm/+5XmYOC+G4fNDdazV4uKIWiEY9a4F
ERERUe0xKKK68p/wwBmxYmDTBIxztMjNpqsWJS0j2OeFPW6BLuURbUlisi0BCJXn6R1xwjfi
hJyRoVk1xINphNvjxTybjvlgTSoAANWRw3h3FK1vNMIWt0C1axjaMIG8VNh3URMQOOGFK2yD
YAiI+9MY747CkM46NgbgGXfAM+4o9IxJeST8aYQ64zDEU/noAgL9XihpGa4JG/Kygc4DwWIW
AxvH57XPREREREsBgyKqq0C/B85JG06unkTOrs07XTXYEhas2d2OnENDpDkJWZXQ/UozvCNO
9G0drSjPrv1BBPq8iAVTyHhUyFkJwT4vwh1nhuzlrBqUrARnyA7vqBPOSRssKQXJxgyUtFQM
iKSciDXPdkDOiQh1FIKqljca4Bl3oHfbcDE/WZXQ80ozok1JJH0ZyFkJ7QcDcIXt6LuosB+C
LsAetRb+DwGCAYiaifVXPsIuJSIiokXv3/jLplkMiqiu+i8cgzWlzBnomE1XDR0HA8jZdBy5
chD5Uz0qsWAKK//YisnOOKJNqbLyc4VtCPR5MbhhAmMrI7Omm2xPYLI9gUCfF137g8g4RRy5
cgDGlPtZ65FGKKqEQ1edgGbVT703jnW7uuAdcxTrp1l1HLimr6RnLeXLomdfM05sHkNeMqBb
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
g3ub7xVdB5K973Byh/btg/eE9Hi280B+br0Gcj8G22Bul8lLklFnJWu/+s5jB/vfx2Dq3DO4
UdrTdfhZ7U6WjtZ3PsZvKB6vBmowf/+Aw4giADhZJn6gstJwyV9Wjlk50umgATjpRBEAnCzv
+2JSOyrZ8kjy1L8d7tkA8CZRBAAny4NnD/cMADgCp+QGAACKJooAAICiiSIAAKBooggAACia
KAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooA
AICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACg
aKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJoo
AgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAA
gKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBo
oggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigC
AACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACA
ookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGii
CAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIA
AIomigAAgKKJIgAAoGiiCAAAKFrtcE8AOH38yrduG+4pDIr6GesH9foOrJ8xqNcHAIf6/sce
GO4pvOdZKQIAAIomigAAgKKJIgAAoGiiCAAAKJoTLQAwZKqqqtLQ0JCurq60t7cP93ROW7bz
iRk9enTq6+v7Pu/q6srOnTtPeBzw3iWKgGFx4YUXZufOnVm/vv+Z3hYtWpTNmzdn06ZNQzJu
IKqqqnPO7MUZ23RGXnrlqbzRWvnempoRuXD+1Vnx8pNp79h/2PfdedMf5pmXfp4VLz854Ns6
UVOmTMnUqVOP+LWVK1dm7969fZ+PGzcu8+fPz9ixY7Nv3768/PLL2bJly5DPMUkaGxvzB3/w
B1m1alW+9a1v9fvahAkTMnv27CTJ/v378/zzz6e2tjYXX3xxkqS7uztPPfXUSZnne92xtnPJ
qqurc8UVV2Tr1q1ZvXr1YV+//PLLc9FFF6WhoSHV1dXZuXNnPve5z53wuOFSX1+f888/Py+9
9FJ27dp11HE1NTW55JJLDrt8+/btWbt27VBO8ZQwa9as1NfX58UXX+y7bNSoUTnnnHNy8ODB
LF++vO/y8ePHZ86cOWlra8uKFSuGY7qcZKIIGBbXXHNNVq1adVjEXH/99Xn88cf7Imawxw3E
h973kZx5xuy8/Noz+fVb/vd8/YE/yc7dW3PRgg/k3DmXZ9nKHx/x+7q6u9J5sGPAt/NuzJ07
N9dcc01aW1sP+9rGjRv7ouiKK67Iddddl507d2bHjh1ZsGBBrr322jzwwAP9ngAMtpqamnR1
daWtrS09PT3Zt29fkqS2tjZdXV3p6enJ1KlTc/PNNydJ2tra8vzzz6elpaXvsvb2dlH0Dgay
nUs2e/bsLFmyJDt37jxiFD3yyCN55JFHkiS33HJL5syZc8TrGei44TJ69OjcfPPN2blz5zGj
qKmpKTfffHN2796drq6uvstffPHF0z6Kmpub8/GPfzz3339/v8vHjh3b95izbt26vsfURYsW
5corr8ymTZtEUSFEEcDbLDxrcR746Zfy6uaVmTJxTs6edVmWrvhRLj//pvzD43/bb+z8mZdk
5pnn5LUtL6ar62BGN47N+87Xa2SCAAAgAElEQVS7MbOmnJPv/vjzQxpJnZ2d7/hq9apVq7Jt
27asWbMmSWU3q49+9KP50Ic+NKRRtGTJkixYsCBr165NV1dXJk6cmDvvvDOzZs3KV77ylWzd
urXf/WhsbExDQ0MmTZqUJDl48OCQze10cjzbuUQLFy7Mhg0bMm3atEyePPmYK6Td3d0Dus6B
jjsVNTY2Jkm+9rWvHfEFldPZtddem82bN2fVqlWHfa27uzu7du3KnDlz+l6ImTdvXrZt23ay
p8kwEkVAkWpqanLTTTdl/fr1efbZZ/t9bUTtyHR2VWKm82B7Royoy0ULPpC9ba1Zu+G5fmPb
DuxJV3dnzp1zReZMvyBTJ83J+s0vZtvO11JbM+KkrRwdzY4dO7Jjx46+z3t6evLaa69l3rx5
qaqqGrKVhD179qS1tTVnn312amtrM23atGzbti2vvPJKRowY0W/s9u3bM3ny5IwfPz6TJk1K
R0dH9u7dm1GjRvUbN2XKlFxxxRWZPHlyenp6smHDhvzsZz877Mndueeem0suuSTjxo3LwYMH
s2vXrqxduzbLly/PgQMHjmtcS0tLLrrookydOjVNTU05cOBANm/enCeffDLbt2/vu66ampp8
8IMfzNlnn53u7u4sW7Ysq1evzs0335xNmzbl0UcfHZL7cTzbuTRVVVVZsGBBHnvssdTV1WXh
woUnbbfRU1VvFB26e20Jmpqacs455+S73/3uEb9eXV3d97j41FNPZcyYMWlpackzzzyTlpaW
fmNHjhyZiy++ODNmzEhNTU3WrVuXp5566rAXchobG7No0aJMnjw5NTU12bVrV1544YW8+uqr
xz2uqqoqc+bMyZw5czJu3Li0t7dn/fr1Wb58+Xs60k81oggoUlNTUxYtWpQzzjjjsCjasHV1
Fs66LPsP7M30SfOz6pWnsmTxx/PDJ/7usOvZ8PrqbHh9da5d/LGsee3pTJ04L0uf/8ds3Pry
yborx6WmpiZnn312XnnllSHdteqJJ57I0qVL81u/9Vvp7u5OU1NTnn766TzxxBOHjd29e3cm
T56cCRMmZNKkSdm2bVuam5v7jZk5c2buuuuu1NbWpqOjI9XV1Wlpacm8efPyxS9+se9J3nnn
nZc77rij3/e2tLRkxowZWbZsWd9lAx03derUXHnllUkqryZXV1dnypQpOf/88/M3f/M3fQfb
L1myJJdffnnf991www1ZvHhxmpub+z1pGez7cTzbuTQzZ85MY2NjXnrppYwdOzYLFy7MT37y
k+Ge1rAaNWpUDhw4UNxK7Ny5c1NVVXXEXSh7vfLKK7nxxhtTXV2defPmZevWrdm3b1+/KKqr
q8vdd9+dhoaGPPPMM+np6cnVV1+duXPn5t577+0bV1VVlU9+8pOprq7OypUr09XV1ffv9+2x
M5BxjY2Nuf3227N69eps3LgxjY2Nue666zJjxoyjhh7HTxQBRWptbc03v/nNfq/29/rHx7+e
JZf/em7/4O9k2cofZ3Rjc/a0tebl1549wjUlZ8+6NJec/aF86b//H7lg/tW5/YO/l6/9f/9X
2g7sHtL7UFVVlTFjxvS7rKenJ3v27Ol3WUNDQ66++urU1dVl5syZeeONN/LQQw8N6dySyrEX
kyZNyr333pvFixdnyZIl2bhx42GvlLa2tqanpydnnHFGJk6cmJdeeimTJ0/u98TtxhtvTG1t
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
tddem2effTYNDQ254YYbsmvXrn6rKYM9rldDQ0N++7d/OytXrjzi7kZ9q0RP/tckyY5dW3LG
uKnZuPXlTGiekudWvzeeVF1//fXZsmVLtm7dms7OzrS0tGTJkiXZvXv3KfVmjbt37+7blW/8
+PGHff3RRx/NHXfckQsuuCALFizI9u3bM2LEiIwfPz5Lly7Nj370oyTJ4sWL+96Ffs+ePX27
tHR3d/eL44GM27VrVzo7OzNixIjcfffd2bx5c6ZMmdJ3LNGhc1+9enXmz5+fJUuW5MILL0xj
Y+Nh44bifnC4KVOmpLm5+bBdkLq6urJmzZrDomjkyJF9P6+ampqMHz8+e/fuPezEAwMdN5xm
zJjRbzfMpPKGpL0vNFx99dXZvn1733FVM2bMyLXXXps1a9actqtESeWYsnPPPTe1tbXveOa9
Y60iPvbYY7nrrrty0003ZenSpX0nX5k7d27WrFnTt12nTJmSM888My+//HLa2toyduzYTJ8+
/bB/uwMdt2vXrsyaNSvNzc3p6OjIzJkzc+21157g1uBoRBEwLF544YX8+Mc/zlVXXZWrrroq
SeWA8/vuu6/ff1qDPa5XTU1NGhsb++0HfqgL5l+d/e17s+a1p5MkP/nn7+RXr/ntLD7vpuzb
vyvPr3lvRFF3d3duvvnm1NXVJam82rl27dr8wz/8wymzUjQQzz//fDo7O3PNNddk8uTJmTJl
SpJKkGzatKlv3JYtW/pO2NB7IPT27dvz6KOP9jt+aiDjOjo68uCDD+aWW27J6NGjM2fOnDz7
7LPZsGFDbr311n7ze+ihhzJq1KhMnTo1LS0tefnll7N///5+u9kNxf3gcAsXLsz+/fuzfv36
w762cuXK/Nqv/Vqam5vT2tqaO++8M/Pmzes35t/8m3+TJHnmmWfyve99L0kGPG64XX311Ydd
9rWvfa1vW/T09OS2227r25Wso6Mjy5YtO+1PVf7yyy/nxhtvzFlnnXXM03K/k7Vr1+ab3/xm
lixZkve9731JKtt08+bNh52456qrrur3OLF+/fq+laDjHffwww/nwx/+cH7/938/SfL666/n
u9/9bn7zN3/zhO8Lh6uaeMHNPR/7zw/mM9e39V3YOGr0Mb4FDvfmG0D3ueSSyr64y5Y5APB0
cMmLb7vgzjf3tb6v/8/3V75123Ffd3V1dcaMGZOOjo6+YzFOxrik8p4THR0dh+07Xj/j8CdT
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
QhRxSrvrrrvysY99LNu3b099fX3Gjh17UsYlyYQJE/Ld7343jY1H2WXqFPeJT3win/jEJ95x
3Le+9a2TMJt3YfQblY/umspJD6q7jn7igbp9lY+jja3f0/+U1sdSv7tyWu7uN9+4tfd6Dn0D
1UPVHqicnrununL7R5rnO82vujOZeITVuVFvVD4AgCEhijjl1dbWZtKko7w6P4TjksrpqzlF
VHcl6XrHYcc99liq0v/03QP6nu6k5h1OkjBY8wMABoVjigAAgKKJIgAAoGiiCAAAKJpjijip
xoz54HBPgVPAH9093DMAAHiLlSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJoo
AgAAiiaKAACAookiAACgaLXDPQFOb5dc0jPcUwAAgGOyUgQAABTNShFDYtmyquGeAgAADIiV
IgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggA
ACha7XBPgNPDokXDPQMAADgxVooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGii
CAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIA
AIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICi
iSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKII
AAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAA
iiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJ
IgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggA
ACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACK
JooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAooki
AACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAA
KJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIom
igAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIA
AKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAo
migCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaK
AACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAA
oGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACia
KAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooA
AICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACg
aKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJoo
AgAAiiaKAACAookiAPRBcjsAACAASURBVACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggA
ACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACK
JooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAooki
AACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAA
KJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIom
igAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIA
AKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAo
migCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaK
AACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAA
oGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACia
KAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooA
AICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACg
aKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJoo
AgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAA
gKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBo
oggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigC
AACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACA
ookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGii
CAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIA
AIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICi
iSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKFrt0b5w2223ncx5AAAAvKMHHnhg
0K/TShEAAFA0UQQAABRNFAEAAEUTRQAAQNGOeqIFeLuqqqo0NDSkq6sr7e3twz2dYVVdXZ3x
48cnSVpbW3Pw4MF3/B7bb2iNHj069fX1fZ93dXVl586dJzyOcowcOTIHDx5Md3f3cE+FIfBe
/vl6vIKTZ1Ci6MILL8zOnTuzfv36fpcvWrQomzdvzqZNm4Zk3OliypQpmTp16hG/tnLlyuzd
u/ewy+fOnZumpqYsX758qKfXp7GxMX/wB3+QVatW5Vvf+tZJu91T0ZgxY/J7v/d7SZIvf/nL
A/qdtP3enerq6lxxxRXZunVrVq9efdjXL7/88lx00UVpaGhIdXV1du7cmc997nMnPG641NfX
5/zzz89LL72UXbt2Dfj7zj777EycODH//M//nP379w/hDE8Ns2bNSn19fV588cV+lx/v9qut
rc2///f/Pjt27MiXvvSloZrucRs9enQWLlx42OXt7e159tlnh2FG702n6s93oP/vD/Tx6sIL
L8zIkSNTVVWVtra2vP7669m2bduQ3odedXV1ueCCC7JixYq0tbWdlNuEoTAoUXTNNddk1apV
h0XM9ddfn8cff7zvCeNgjztdzJ07N9dcc01aW1sP+9rGjRv7RdG8efNyzTXXZMqUKdm3b99J
iaKampp0dXWlra0tPT092bdvX5LKfzZdXV3p6ekZ8jkMpl/5lV/J/Pnz87WvfS3bt28f8ts7
3bbfcJk9e3aWLFmSnTt3HjGKHnnkkTzyyCNJkltuuSVz5sw54vUMdNxwGT16dG6++ebs3Llz
wFE0bty43HHHHamtrc3zzz9/2kdRc3NzPv7xj+f+++8/7GvHu/26urqyfv367NixYyimesJG
jBiRadOmpampKbNmzcru3bvz+uuvZ8uWLe/qeq+88so0NzfnBz/4wSDNdHgM9H6cqj/fgf6/
P9DHq2uuuSZ1dXXZu3dvGhsbM2rUqKxbty7333//EV9YHUzt7e2ZN29ezjrrrHznO98Z0tuC
oWT3uVNEZ2fnO75aPX369HzsYx/L8uXL88orr+TCCy88KXNbsmRJFixYkLVr16arqysTJ07M
nXfemVmzZuUrX/lKtm7delLmMVimT5+eUaNGpaamZlCu752i5nTbfsNl4cKF2bBhQ6ZNm5bJ
kycf88nhQHeTeS/uTnMkN910U1599dVTLvCGyrXXXpvNmzdn1apV7/q6enp6ct999w3CrAbX
zp07893vfjdJ8kd/9EdZvnx5fvrTn77r6z3zzDMH7bFvOA30fpyqP99kYP/vH+qdHq+effbZ
/PCHP0xS+X/uX/7Lf5m77rorX/rSl4b8se7hhx/O7/7u72b27NlZu3btkN4WDJXTIopqampy
0003Zf369af1bgWvvfZa/st/+S/Zu3dvrrzyypN2u3v27Elra2vOPvvs1NbWZtq0adm2bVte
eeWVjBgxot/Yc889N5dccknGjRuXgwcPZteuXVm7dm2WL1+eAwcO9I1raGjIlVdemdmzZ6ex
sTFtbW3ZtGlTfvazn2XPnj1Jkg9/+MN9+1Jv27Ytjz76aK677rrMnj07nZ2duf/++7Nt27a0
tLTkoosuytSpU9PU1JQDBw5k8+bNefLJJ/tWgkaMGJHzzz8/06dPz4QJE5JU3qC4o6MjSfLU
U0/lhRdeOK759aqvr8+/+Bf/ItOmTUtbW1uefvrpPPXUUye0/TiyqqqqLFiwII899ljq6uqy
cOHCd/2K+eli4cKFmT59eu6///4ioqipqSnnnHNOXzCcqNmzZ2fBggV9n7e2tubJJ5884tjG
xsYsWrQokydPTk1NTXbt2pUXXnghr776at+Yyy67LK2trdm/f38uu+yyNDQ0ZMOGDfnFL37R
9zgzFC677LLs3Lkze/fuzaWXXpqmpqbs2LEjTz75ZHbv3p2k8vi3aNGivlWnzs7O3HTTTX3X
8cMf/rDfizsjR47MxRdfnBkzZqSmpibr1q3LU0891e/YycWLF/c7rvKpp57KBz7wgbS0tKS1
tTUPP/xwOjs7U1VVlTlz5mTOnDkZN25c2tvbs379+ixfvvyIT9QXLFiQs88+O6NGjcq+ffuy
bt26PPfcc+np6Tmu+3E8P98xY8bk0ksvzcSJE9PR0ZFVq1blhRde6LdNBrKdTyWvvfZavv3t
b+fTn/50Lrzwwn57lQzk/vY61s/jUNu2bcv69etz2WWXiSLes06LKGpqasqiRYtyxhlnnNZR
lKRvGbyqquqk3eYTTzyRpUuX5rd+67fS3d2dpqamPP3003niiSf6jTvvvPNyxx139LuspaUl
M2bMyLJly/ouq6ury6c+9am+OEkqu8OcccYZefjhh/sumzJlSpqbm5Mk06ZNy/jx4zNv3rwk
ycGDB/sONp06dWpfJHZ3d6e6ujpTpkzJ+eefn7/5m7/Jzp07M3bs2Nx222395jZt2rS+v7/8
8svHPb9et99+e8aMGZMkGT9+fKZNm5YDBw5kxYoVx7X9OLqZM2emsbExL730UsaOHZuFCxfm
Jz/5yXBPa9iNGDEiN9xwQ3784x/3e9HhdDZ37txUVVUdcRfK43HgwIG0tbWloaEh8+fPT1tb
2xGfNFdVVeWTn/xkqqurs3LlynR1dfU9rh0aRfPnz+87KP65557L3r17c/nll2f+/Pn56le/
OmSv1M+fPz91dXUZO3ZsVqxYkc2bN+eiiy7KwoUL84UvfCEdHR2pra3N5MmT++5PVVVV6urq
jnh9dXV1ufvuu9PQ0JBnnnkmPT09ufrqqzN37tzce++9feP27duXpqamTJ8+PfPnz8/06dMz
duzYbNiwIU1NTens7ExSCcrbb789q1evzsaNG9PY2JjrrrsuM2bMOCxsb7311ixatChr167N
1q1b09jYmEsvvbTv//XjuR8D/fmeccYZufvuu7Nr166sWrUqo0aNyu23354FCxb02z1zINv5
VLNly5Zs2rQpCxYs6Iuigd7f5J1/Hm+3atWqfPCDH0x1dfVpswpPWU6LKGptbc03v/nNk3J8
yFCpqqrqe2Ldq6en57BViUPHn0y33HJLJk2alHvvvTeLFy/OkiVLsnHjxn5PCmbPnp0k2bp1
a/72b/821dXVaWlpyejRo/udbW3x4sWZMGFCuru784Mf/CBr1qxJQ0NDmpqa+v3H8rnPfS6T
Jk3Kpz/96YwcOTJz587NP//zP2fDhg3p6enpe9XyueeeS1dXV9atW5e9e/dmzJgx+eQnP5lx
48blvPPOy89//vO0trbmi1/8Ypqbm/PRj340SfKd73ynL6wO3c4DnV+vtra2fP3rX0+S3HXX
XWlubs65557bF0UD3X4c3cKFC7N58+bs3r07L774Yq666qq0tLSctAOJT1Uf+MAHsn///vzy
l7/sF/mns96V1nd7BsdNmzb1HZ86atSojBs37ojjxo4dm5aWltx7771Zs2bNMa9z0qRJueee
e/oeV1asWJF//a//dc4777whfcFu+vTp+eIXv9i3evryyy/n7rvvzsyZM7N69er8/+2de1xU
Zf7HP3MBhmFguImggqhcRBAt2SxFVyWVm5fKW6u5q9mKlVi7me6u+XvltllmpFtbruWSl0rL
XqGybopuKpJKoijiJSFQuQooxAzXmXl+f7Bz4jADnAMzjMr3/Xo9rxfz8D3n+T7Pec73nO9z
+Z76+nqkpKQAABYvXgyNRsP9bsvEiRPh5OSEjz76iNv/mJubi6VLlyIwMJBzRi9duoRLly4h
IiICcXFxqKqqwieffGIyg6DVapGUlMR7SS4tLcXMmTORmprKOU++vr4YNWoUDh8+3O6Mjph6
CL2+U6dORW1tLbZt28Y9U/Ly8jBv3jzk5OTwnO/O2lkscrkc06dP5+U1NzfjP//5j+hztUdl
ZSW8vLy430LrK+R6tOXmzZuc4/qg7f0megcPhFMEAD/++KOtVegWdnZ2ePnll3l5jY2NeOut
t2ykEZ+zZ8+iubkZeXl50Gg0qKqqMlm+ZHwR6NOnD+Li4nDu3DkUFBSYPCSNS3wuX77MLTOr
qakxOR9jjLcsITMzk1sv3Rq9Xo/r16/Dx8cHgYGBkMvlqK+vh5ubG5RKJYCWmaWysjLe8o+q
qiqz+3mE6mek9TK9q1ev4tFHH4VarRbdfoR5JBIJQkJCcPbsWQAtLzsajQYhISG92inq06cP
Ro8eje3bt4Mx1uMDJbbCxcVFVFS+7qLRaFBdXY1JkyahsbERt27dale2tLSUFy65pKQE1dXV
GDRokFWdooqKCp49Md4XbQfahBAaGoqCggI4OTnByckJwC8DdL6+vu2+/Kenp7e7v9JgMEAi
kcDZ2Zn7LIFxINBoOwMDA6HT6ZCZmSla564ilUoxePBgHDlyhPdsuHbtGn7++WcEBQXx6mvJ
dgZabFvrcNtGnSyJwWDglmmLqW9Xrofxee3i4kJOEXFf0qlTFB0djYceeoiXl5ycLPiFTmhk
LUvLtUVoPSwtJxSdToePP/6Yl3cvRSUrLi5GcXExgJYpeXPOSUZGBreUMTQ0FKGhoaiqqkJK
SgqKioo4OZVKBQCiZ/ZaL3FrzciRIxETEwN7e3sALU6S8cHSlRdFsfq1jh5kHPVsi5D2I8xj
3CsWHh6OoKAgAC2DCCEhIThx4oSNtbMdsbGxyMnJ4d1bvQGFQtGjkcR0Oh3+9a9/ITo6GosW
LUJxcTFOnjxpNsiDuXDExmhg1qTtigLjrIxY+yeVSqFSqTj73RZnZ+d2j62srDSbL5fLMXXq
VISHhwNoaQ/js621fs7OzqitrYVerxelc3dQKpWQSqVmneyamhqT+lqqnY00NzdbPVqbk5MT
F41STH27cj2MS3jbW9IoFFu9r5Hc/SlnSTp1irKzs1FYWMjLaxtCsrm5GY6OjvwTy+Wwt7fn
vSRaWk4MQuphDTmhGAyG+z4KmXG5WUZGBiIiIvDwww/Dw8MDv/3tb7F582ZuP5RxhKrtNe4M
c9deLpcjPj4eMpkMR48eRWZmJpqamvDUU08hLCysS/UQq5+QD7cSXWfYsGH4+eefkZOTw+WV
lZVh1KhRcHNz65UfMvT29oa/vz+cnZ3x3HPPAfjlRWTu3LkoKyvrdiCCe5Xm5maT0XVrU1tb
i6+++gru7u4YM2YM5s6di1OnTpnsMTSnl4ODg9U34ltq/wZjDAaDAceOHUN6erqoY9t7eZ48
eTKCgoKwY8cObmCoT58+eP75502ONw5s9RTG5dDmXuIdHBxMnun32z4ZY2CfCxcuABBX365c
D2P/7+7SVlu9r5Hc/SlnSTp1isrKyjr1yu7cucNbswqA+9169MjScmIQUg9ryPUmAgICUF5e
jpqaGhw9ehQ5OTlYtmwZ5HI5vLy8OKeorKwMXl5eGD58OM6cOcON+vr7++PWrVuiRqbc3Ny4
sKy5ubloamqCQqGAr6+vWfnW32/x9vY264haUj+i+4SEhCA3N5cXjlgmkyEsLAzDhg1DRkaG
DbWzDbW1tTh06BAvz9XVFR4eHrh27dp9P8DSEbW1tfD09LRJ2Xfu3EFqaiqAlsAybZ2iPn36
QC6X8wZW3NzccOnSpR7XtT30en27US8ZYyguLsaQIUNEO0Xt4e/vj0uXLnEOEdCy96ott2/f
xqhRowTvFeyoHkJpampCVVUVBg8ezIvOplKp4Onpiezs7G6d39b8+te/hkKh4Oompr5irwfw
y0xie3uhhWKr9zWSuz/lLIlF9hRdvHgRs2fPRlRUFC5evAhHR0dMnToVNTU1PC/P0nJGHB0d
kZCQgCtXrvSKZUn29vbcSI9SqUR9ff09sdRu9OjRGDJkCOrq6lBbW8sZSIPBwHNmMzMzMXz4
cDg6OuKFF17A3bt3oVQq4ejoiPXr13PRncaMGcP74vfMmTNRVFSErKwsFBQUAGiZ8m9uboad
nR0WL16M0tJS9OvXr93lKlqtFlVVVfDw8MCMGTMwZswYyOVy5ObmctHMhOhH9AzGCIRtlyrp
9Xrk5eWZOEX29vZQKpVQKpWQyWRwd3eHRqMxCZAhVM6W+Pn5mYzUFhQUoL6+HlqtFqdPnzaR
Hz16NLKzs++5D1VakpKSEoSGhvKcD3N01H5GjP1AoVDAzs4Obm5u0Gq1vH7Qr18/+Pj4ID8/
H3V1dVCr1fD19TU7QGdnZ4fo6GicOHECUqkUjz/+OAB0eT+Rvb09nJ2dIZFIoFKp4OLiAo1G
060Zi4qKCjz00EPw9/dHcXExHB0d0djYyI3uHzt2DAsWLEBMTAwyMzO54DUBAQHIy8vjXpAl
EgmcnJw4O+/u7o6qqiqTWYKamhr4+/vD1dUVTU1NGDhwIKKiokz0ys3NxYQJEzBr1iwcPnwY
FRUVUCgU8PPz4/YTiqmHsf06u74ZGRmYNm0aioqKkJOTA6VSidjYWNTX13MzLNZCKpUiICDA
JL+oqIgXTVKovXJxccGgQYO4sPXBwcE4cuQIb5BEaH3FXg+gJTiDcf8uQdyPWMQpunz5Mv77
3/8iMjISkZGRAFo2nH7++ee8h5al5YzIZDIolcoO1zs/KCQmJvKi6KxcuRKMMezZs8ciHzLs
DmVlZfDz8+Nt0K2qqsLRo0d5y0eKi4uxZ88eTJ48GR4eHvDw8ABjDDdu3OAcDi8vL4wcOZJ3
frVaDbVajerqas4pampqQmpqKuLi4qBSqTBkyBBcvHgRRUVFiI+PN6vn119/jRkzZqBv377o
27cvGGO8B6kQ/YieISQkBPX19bh586bJ/65cuYJZs2bB1dUV1dXV+M1vfsOFbDeyfPlyAMCF
Cxe4KFVC5WzNuHHjTPKSk5PNtkVvIj8/H9HR0Rg0aFCHEb86az9z/SAxMRGAaT+IjIzk2ZOb
N29yM0atuXr1KhhjeOmllyCRSKDRaPDll192acmHr68vFi9ezP2OiIhAREQEKisr8Y9//EP0
+YwcP34cXl5eWLhwISQSCRhjSE5O5gJI/PTTT/jiiy/w+OOP45FHHgHQMoNUWlrKBTSSSCR4
7bXXeHtpjMs4v//+e94MWlpaGmbPno0VK1YAAMrLy/HNN99g0aJFPL20Wi127tyJuLg4LFiw
gMsvLy83+xLeWT2EXt/z58/Dzs4O48ePR3R0NICWZ8DOnTvN7hGzJHK5HPPnzzfJ76yftmev
QkJCMHToUDQ0NKCoqAi7du0y2YsrtL5irwfQEpyhoKCAnpPEfYvEKzyWzXs9FW9N+eVmUDqp
TL7pIgSpVAoXFxc0NTV1aEwsLQe0rIdtamq6J2ZMejPG0UM7OzvU1dV1urbYyckJ9vb2JqN3
YjH2lbq6OsHncXBwgFKp7LBsS+lHEITlWLhwIXQ6HT7//PMeK9PR0REODg7t2pj58+fDYDDg
iy++gEKhgEKhQE1NzT37TJLL5VCpVB3aTEdHRygUCovYP2MAG+My6o4wlivkGSKkHkIwRsNr
amrizSY+qIipr5Dr4erqisTERHzxxRfd/oYYQQjhwIEDyDp1AhIHFVIOmA5SdcTMafEYGhzE
/V59WInd/xdv2ZDcBoNB0IiYpeWA7m/sIywDY0zQQ8+IVqvlvoXRHcT0FSNtl1qYw1L6EQRh
OdLS0rB48WIMGDCgx6Lv1dfXd/ryaJw5aWhouOc/pqvT6Tq1mULqLBQxzwUx5QqphxAYYz0a
6t3WiKmvkOsRFRWFwsLCTr/lRRD3MpYNiE8QBEEQVqa0tBQpKSnw8PCwtSoE0etRKBSorq7G
vn377tmZUYIQwgPz8VaCIAii95Cbm2trFXj8/PPP913IZoKwBA0NDTh69Kit1SCIbkNOEUEQ
BEF0kwMHDthaBYIgCKIbtOsUkYEnCIIgCIIgCKI3QHuKCIIgCIIgCILo1ZBTRBAEQRAEQRBE
r4acIoIgCIIgCIIgejXkFBEEQRAEQRAE0auxafQ5Ozs7BAQEQKFQ4MaNG7hz50635AiC6BlU
KhUaGxvR3Nxsa1VEM2DAABgMBpSUlFjl/GTXCOIX6H4jCMLayGUy6PR6QbJ28vZdnw6dooiI
CDz66KMAAL1ej4qKCmRlZaGgoECEquZZunQp3nvvPdjb20Ov10On08Hd3R2NjY1dkiMIaxAT
EwNvb28kJydbvazW9xtjDBqNBhcvXsT58+etXrYYHB0dUVRUhPz8fIwaNcrW6ojmk08+gUaj
waxZsyx+brJrDyaDBw/GtGnT4Ofnh9u3b+PQoUPIzs62apkLFy6Ei4sLtm/fjtraWi5/0aJF
yMnJwdmzZ61avqWg+40gCGvj7OKMu3erBcmqnFXt/q/D5XPR0dFISkpCQkICEhMTsXXrVuTn
52Pnzp2QSCTiNG6FQqFAUlIS9u3bB2dnZzg4OGDQoEEmBkqoHEFYmtjYWPzwww84ePAg1q9f
3yNlRkdHY/PmzUhISMDzzz+Pd999F+fOnUNqaipkMlmP6CCEpqYmnDx5EidPnrS1KvcUZNce
TP7whz/g+vXrePHFFzFs2DAsWbIEWVlZWLRokVXLXbduHd5//32TctavX4/o6Girlg0Ar776
Kt5//32rl9NV6H4jCMKIb/8BwmUHtC/b6Z6ikpIShIWFISQkBB4eHli1ahUWLFiAxx9/XLAC
bfHx8YFSqcTevXtRX18PALh9+3aX5QjCkowdOxYpKSk4d+4cNm7c2KNl19fXIywsDKGhofD0
9MTTTz+N2NhYLF26tEf16Ai9Xo/4+HisWLHC1qp0GcaYxc9Jdu3BZP/+/YiLi0NgYCBiYmIQ
HByMAwcO4G9/+5vVy87IyEBiYiKk0p7f/vvwww/Dx8fHIuei+40gCGsy0M8PaheXTuXUahf4
+/m1+39Re4oYY/jss8+wYcMG9OvXj8tfuXIlysvLsWPHDi7P3d0d69atw9atW3Hx4kUALdP+
Pj4+GDx4MPd74sSJAIDDhw9j//79ouQAwMnJCUuWLEFkZCTs7Ozw3XffYcuWLbxRoBUrViAw
MBAAUFBQgC1btmDt2rUIDQ3FjRs3sHLlStTV1Qluh+effx75+fkoLy9HQkIC+vfvj+vXryMp
KQlFRUWcnFQqxeTJkzF16lQMHjwYGo0Gx48fx6effsrtxfDz88Pvfvc7HDt2DC+++CKysrKw
Y8cOvPnmm1zbVlZWiqqvJRGr34ABA7Bs2TIMHz4ctbW1OHDgAPbs2cN7KArtLwDg6emJpUuX
YuTIkXBwcEBhYSG++uorpKen8/S0ZLtkZGRg4MCBKC0txSuvvNKpvL29PT744AOkp6dj586d
osvriN27d2PNmjUYO3YsPvzwQwDi+nNn7dKvXz/8+c9/xocffojLly/zyl6+fDmkUik2b94M
AJg8eTJmzJjB/b+goADvvvuuWb1t1Q+EotfrMWbMGCxduhTu7u7IzMzEe++9B41GI1q/B8Wu
CaE32oO8vDzk5eVxvw0GAzIyMhAXFweZTAZ9m3XslrQHqampWL16NeLj43n9oy2d1VcqlWLd
unUoKirCli1b/W7AYgAADeFJREFUuONcXV3x+uuv49ChQzh48CCUSiV+//vfo3///hg/fjzq
6urwwQcfcPKJiYkwGAyi60H3G0EQ1kQmk+Kx0Y/gdOYPqK6pMSujVrvgsUce6XCQSfTw069+
9SsAwLlz57i8uXPnYsqUKTw5FxcXvPDCC5xBMh4bFBQENzc3AC3T2iqVCiqVCg4ODqLl1Go1
Tp8+jVdffRV5eXnIzc3FX/7yF3zzzTc8XcrKyqDRaDBixAgsX74c27dvx6RJk/DTTz/B29tb
tCGbPn06XnvtNRw4cABarRZnz57FU089hYyMDKhUv6xV9PDwwI4dO+Dm5obMzExUVFTgnXfe
wbZt2zgZLy8vrF27FklJSTAYDHjrrbdw7NgxSCQSxMbGYs2aNaLra0nE6Dd06FBkZ2cjLi4O
58+fR01NDZKTk7Fr1y7eOYX2F4lEguPHj2PhwoW4fv06zp8/D29vb4wbN453rDXapbS0FAAE
LVvr168fnnvuOTz77LNdLq8jJBIJ7yYW2p+FtEtpaSni4+NNZqJUKhXefvtt2NnZcXl3797F
7du3odfrERMTg9mzZ5vV11b9QAyjRo1CSkoKysvLce3aNbz88ss4evQor769za4Jobfag9bY
29vjySefxPHjx00cIsCy9kAikWDbtm146aWX2pURUl+DwYDs7Gx8+OGHvLbeunUr4uLiuKWw
Dg4OGDlyJPr06QOZTAa5XM710dbPNrHQ/UYQhLVRKBQYHzkW4cPD4O7mBju5HHZyOdzd3BA+
PAy/joyEQqHo+CRe4bEs8RsDq9NquASAAWBr1qxhtbW1bMuWLWzLli0sJSWF5efns2XLlnEy
ANjZs2fZrl27eHn+/v6MMcZmzpzJywfAAgICGGOMxcfHm/xPjNymTZtYeXk58/Ly4vLCw8OZ
wWBgsbGxJvIJCQmMMcYOHTrEZDJZh2V3lL799lvGGGMjRozg8saOHcsYYyblyuVy3u/58+cz
g8HAlEolA8AiIiIYY4zNmjWLAWBVVVXsyJEjDADbuHEj++6777pcX0skMfodPHiQ5eTkMIVC
weXNmDHDpF2E9hdjXkxMTIc6WrNdVq9ezcrKyjqVmz59OgsODu5WWWvWrGEajYaXFxUVxfR6
PVu8eLHo/iy0Xf7617+ysrIy3jnmz5/PdDod8/HxMavr7t272enTp83+z1b9QGgy3r+jRo3i
8saNG8cYY+yZZ54RrZ8x3e92TUjqrfbAw8ODbdy4kX388cfs6tWrLCUlhfXr169deUvYg8LC
QrZu3Trm7+/PdDodCw8PZwBYWVkZW7NmTZfq+9FHH7GSkhLm6enJnn32WdbY2Mi7D1qnkydP
sr1793a7z9D9RokSJWulrFMn2Llz57qUWvs9id8YmFd4LOt0pkgqlcLV1RVubm5wdXWFQqFA
QEAA7O3tOzvU6syZMwdHjx6Fl5cXwsLCEBYWxoX+HDt2bLvHvfnmm2ZH+MRw5coVXLhwgfud
m5sLoGW5SGt0Oh2kUin69++P8PBw6PV6SCQSEznjucrLy5GZmQkAuHPnDtRqdbfrawk608/O
zg6TJ0/Gp59+ioaGBu64ffv2oaioCPHx8aLLLC0txY0bN/DGG2/gsccea1fOlu1iZP/+/bh2
7Vq3z+Pg4IBdu3Zh9+7dOHXqFNLS0vDvf/8b27dvb/eY9vqz0HbZsWMH+vbti0mTJnF58+bN
w6FDh7gZM6HYsh+IITs7G1lZWdzv9PR03Lx5ExMmTLDI+buDLe2aUHqbPTDOoISFhUGtVsPZ
2RmDBg1qV95S9kAqlaKwsBD79u3jZova7s8RU9+XX34ZFRUV2Lt3LzZv3oyVK1fy7gNrQfcb
QRD3A53uKaqoqMC8efO43yNGjEBmZiYqKyt7LCqXOezs7ODj44O5c+dizpw5Jv9vveepLW33
TnSFtt9c0Ol0AMBb5uTo6IikpCQ888wzYIyhrKyMe6C1XdNY8781kAaDgfe3Ua479bUEnenn
6ekJuVyOGzdumBx748aNLunX2NiIMWPGYNOmTTh58iROnz6NDRs2YN++fZyM2HbZtGkTlixZ
wssbN27cPRX2WqPRQK/X48cff8TatWtx5MiRDjcqm+vPYtrl+vXrOHXqFObPn4+0tDS4ublh
ypQpWLBggWjdbdUPxNJ675+RkpISeHl5dfmclsDWdk0ovc0elJSUcMGF7O3tsXHjRhw+fBhB
QUEoLi4WXRexbNq0CWlpaVi1ahXvRVxsfRsaGpCQkIDvv/8e586dw9///ner6w7Q/UYQxP2B
6D1FFy5cQE5ODh555JEO5VxdXbuslBB0Oh10Oh3Wrl0LuVxukjoKl2qJD04anaCOeOeddxAf
H4+oqCg4OzsjMDAQM2fONCvbevOqudGn7tTXEnSmn3HDbOuZLSNqtRparbbD87fXX0pKSjBn
zhwEBwcjJycHX3/9Nd555x3u/2LbJTk5GQsWLOAlS3x3y1I0NjYiISEBL7zwAtauXYu0tLRO
IzeZ689i22X79u144oknoFAo8OSTT0Kr1Xa4sbs9bNUPxOLs7Gw2zxidSqx+lsLWdk0ovdke
NDU1ISkpCUqlEuPHj+9Q1lKkp6fj0qVLSEhI4G3+70p/WbVqFYqKijBixAiTPTzWgu43giDu
B0Q7Rfb29hgwYABu3brF5dXW1sLDw4MnZ+2POjLGcObMGUyePNmq5XSH8ePH4/PPP8eZM2e4
vBEjRnTpXF2tr0qlMvtiYmlqa2tx7do1REVF8fJ9fHwQHBzMWzrRlf6Sl5eHhIQEbNu2DXPn
zuXyxbbLhQsXkJKSwkvV1cI++HU/IbZd9uzZAwcHB8TFxeHpp5/G7t27uxSpy1b9QCwjR46E
o6Mj99vd3R0BAQHIycnpln7dxdp2jewBn67aA+Py557cXL9582YsW7aM50iIre+KFSswdepU
xMbGYvPmzdi5cye8vb3NyjY1NXUruEJreuv9RhBEz8EY4wY62kudDTJ36hQpFApMmDABEyZM
wOzZs7Fv3z64u7sjOTmZk8nKysLEiRMxZcoUuLi4IDIyEqtXr+5+DTvh9ddfx7hx4/DBBx8g
MDAQLi4uCA0NxR//+EeEhoZycjKZDN7e3txUuFHW2ty6dQtRUVHw9/eHp6cnnnjiiW4tORRa
39acP38eBQUFPfLxz7fffhtz5sxBYmIiPD09MXToUOzatQt3797lhVkV2l8iIiLw3HPPYeDA
gVCpVAgNDcVjjz2Gq1ev8uS60i5CUKlUcHFxgVQqhaenZ7tt6OHhgVu3bnGhq62N0P4spl2q
q6uxf/9+rFixAhMnTmx3D5NxL4WrqyuUSiWGDBliMgpsq34gBpVKhX/+85/w9fWFn58ftm7d
Cr1e3yX9LI017RrZA/H24N1338UzzzyDhx56iJvt37ZtG4qKipCWlmYiby17sHv3bgDAsGHD
ePlC6/vwww9jw4YNWLlyJXJycvCnP/0JxcXF+Oyzz8yGqM3NzcX48eMxYcIEKJVK+Pr6dvm5
2VvvN4Igeg6JRILGxkZotFqzqUHIQG9n0edaU11dzU6cOMEmTJjAi/7g6enJjh07xsmVl5ez
adOmscrKSqtGjQHAYmNjWU5ODle2wWBgmZmZLDAwkAFgMpmM6fV6Zo633367S9Euvv32W/bt
t9/y8lQqFWOMsYSEBC5v2LBh7PLly1x5Fy5cYJGRkYwxxoYOHcqAX6I5eXp6MgDs0qVL7JVX
XmFAS+Sz7OxsUfVtnZycnJher2effvpplyN7iNVv+fLl7Pbt25x+Z86c4aImie0vERERrLCw
kHfN0tPT2eDBg0X3A7EpLy/PpL8YDAY2bdo0E1kfHx/W0NDAvvzyy25FUTEXfa5tEtufxbRL
XFwcY4yxK1eumC07NTXVbLmMMZM+Zqt+IPT+Xb9+Pdu1axfXlsXFxSw6OrpL+hnTvW7XyB50
zR5s2LCB1dTUcOfS6XTs0KFDLCgoyKy8pexBYWEhe+ONN3h5xmdy6+hzQurr7OzMrl+/zg4c
OMA7Ljg4mGm1Wvbaa6+ZlN+3b192/Phxrp8ZDAY2duxYut8E3m+UKFGyfjIXfS49PZ3997vv
eOlEejrLysrqNPqcxCs8ls17PRVvTfllGYDSqWtT5mq1Gm5ubrh161aPR2Xx8PCAWq1GeXl5
p+vVexpvb29IJBLRkbw6Qkh9x48fj+PHj2PKlClmRzSthUwmQ//+/aHValFVVdWunND+4u7u
DrVajYqKCt7H/sxhq36gVqtRW1vbpQ8b9gS2aBdb9gOhuLq6wtXVFTdv3mz32j0odo3sQdfb
TyaToW/fvnBwcEB5eXmny+ZsZQ+scZ8rFAr4+PigsrIStbW13TpXb7rfCIKwPlmnTkDiYOqz
aLVaNP9v779cLoeTUgmJRMKTGRocxP29+rASu/8vHhZ1ioh7i1WrVmHJkiUICgrqdB0lQRAP
NmQPCIIgiAeJ9pwioMUxYoBZhwgw7xSJDrRA3D/s3bsXMTEx9AJEEATZA4IgCKLXoFQq23WI
2qPT7xQR9y/5+fm2VoEgiHsEsgcEQRBEb0GMM2SEZooIgiAIgiAIgujVkFNEEARBEARBEESv
xuzyuTqtZSI7EQRBEARBEARB3OvQTBFBEARBEARBEL0aKQA01Xfv2wMEQRAEQRAEQRD3G0Y/
SA4ABT+k4o+S6bBTONlUKYIgCIIgCIIgiJ6guUGLgh9SAQASAPAKj6UPVxAEQRAEQRAE0eu4
ffGg5P8BkaBGWBh3kagAAAAASUVORK5CYII=
--------------pcXrWObKEpuSLXjwgerBofRu
Content-Type: image/png; name="after.png"
Content-Disposition: attachment; filename="after.png"
Content-Transfer-Encoding: base64

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
uaxfvx6z2cxll13GtGnTvP6t+qZNm/joo49ITU2lQ4cO3H777U5h1OS3tLSUDz74gLS0NNau
XUtgYCAPPPCAff3bb7+NVuvePBeffPIJEydOdHjc6/777+fZZ5/ls88+s1+gvvfeeyQlJREW
FsacOXPIzc1l4MCBPPzwwwQHB7udPneOb2pqKrNnz2bXrl32x/smTpzocBfmvffeo3379sTE
xDBnzhzS0tLo2LEjjz76KAkJCQ7xZWdn8/7777N9+3ZMJhNt2rThhhtuYNiwYW6VnSsajYab
b76ZJ554gvT0dPvyV199lZiYGIc7H7m5uTz77LPcc8899OrVC6g8HhkZGRw5csT+edWqVQCM
GDGCcePGuRUO1NX7t956i5SUFKDyWEybNo0XXniBPXv2kJSUxKuvvkpgYKDXy68uauqBO+HU
ao78unN+qEmfmvPXG9Scl+62a56szzabjRUrVvDzzz9z5MgRDAYDl156KbfffrvLd3wWLlzI
jz/+SGZmJtHR0VxxxRXcdNNNaLXac6b98zRP9qvNVU+FEMJbPDL7XFhYGNHR0eh0OpYuXcp3
333XqPgKCgoYNGgQr7zyCh06dKB79+689NJLXHvttZ5Ibq2WL1/OkCFD2LRpEwMGDKCgoIAb
brjBKZya/JpMJrZv305WVhZWqxWLxUJxcbH9z11HjhwhKyuL4cOHOyz38/Nj4MCB/PHHH/Zl
CxYs4KmnnuLmm28mMTGRrl278tZbb3HFFVdgNpvdTp/a47t//3769OnD4sWL6du3L0ajkalT
p3LLLbc4hFuwYAGzZs1i7NixBAUF0a9fP3744QeGDBnisG9FUbj00kuZN28eHTt2pG/fvmRm
ZrJu3Tq3y682mzdvBuCiiy6yL/vmm29Yvny5Q7jCwkLeffdd+8CmatuDBw+Sl5cHVD4eV1V+
JpPJ7XBq631sbCwGg4EdO3bwzjvvcNttt/Hrr7/Srl07MjMz7QOipig/V9TWA7Xh1Gqu/Ko9
P9SmT8356w1qzkt32g1P1+ecnBymTJlCXl4eAwYMICoqipkzZ3LnnXc65WXatGmMGzeOkydP
0rlzZywWC++++659oHMutH+e5ul+tbnqqRBCeE10r9HKQ/NtSmlJsf0PUBRFUWbNmqUEBgYq
J0+edPhLS0tTajNx4kRl4MCBta6vcv/99yvt27d3uW7GjBlKdHS0curUKfuyHTt2KBqNRlm8
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
gBHWtavyMZQ6d1Q+3s6BLUN7m+8V3QeSve9wcoeO7UP3hPRYtvNgfm59BnM/htpQbpcpS5Km
M5O1X33nsUP972Mode0Z2ijt7T78rHYnSmfbOx/jNxyPV4M1lL9/wGFEEQCcKJM+UFlpuPgv
K8esHOl00ACccKIIAE6U930xqW1KtjycPPlvR3o2ALxBFAHAifLAWSM9AwCOwCm5AQCAooki
AACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAA
KJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIom
igAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIA
AKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAo
migCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaK
AACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAA
oGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACia
KAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooA
AICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACg
aKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIpWO9ITAE4dv/KtW0d6CkOifub6
Ib2+A+tnDun1AcChvv+x+0d6Cu95VooAAICiiSIAAKBooggAACiaKAIAAIrmRAsADJuqqqo0
NDSku7s7HR0dIz2dU5btfHzGjBmT+vr6/s+7u7uzc+fO4x4HvHeJImBEXHDBBdm5c2fWrx94
prdFixZl8+bN2bRp07CMG4yqquqcPXtxxjWflhdffjKvt1W+t6ZmVC6Yf1VWvPREOjr3H/Z9
d9z4h3n6xZ9nxUtPDPq2jtfUqVMzbdq0I35t5cqV2bt3b//n48ePz/z58zNu3Ljs27cvL730
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
+OKLmTJlyoAnbjfccENqa2vzzDPP5Pvf/36qq6vz0Y9+NHPmzMnixYv7V2L6TtywdevW/O3f
/m1/dIwZM2bAWdkGO+7ZZ59Nd3d31q1bl71792bs2LH55Cc/mfHjx+fcc8/Nz3/+89TX12fR
okVJkhUrVuSHP/xhWlpacscddxy2TYb6fhzLdi7NwoULs3nz5uzevTsvvPBCrrzyyrS2tha9
S1RjY2NGjx6dP/zDP0x9fX327t2bFStW5Cc/+Uk6O0d2VXs49a2gvt2ZGTds2JDe3t7MnDkz
c+bMyerVq1NTUzNgzAc/+ME0NTXlr//6r/uP31uxYkU+/elPZ968ef3RNW7cuLS2tuaee+7p
33X5SAY7bt++ffnLv/zLAS+wbN68ObfddlseeOCBdHV1DWo78PZEEVCsF1988YiX7963I/c9
cneSpLZmVD79a5/JPz7+9TQ3js/YMROyZfv6dHe/+Z/QK5tX5sGf/7/Ztff1LH3uh9mzb0f2
dwz/7imjRo3Kv/t3/27AZR0dHfnMZz4z4LLa2tpMnjw5o0ePTl1dXUaPHp2WlpbD4mmo/fKX
v0xXV1fWrFmTvXv3Zvv27UfcfammpiY7duzIzJkz09TUlB07dqSmpqY/ipqamjJlypQklZNI
nHnmmUkqTwrmzJmT6dOn919X38pNa2trbr755ixbtizr1q07bFVssOO6u7uzevXqnH766Zk3
b15qa2uzf//+jB8/vn9XpNbW1v5d1R555JHs3bu3/8nmJZdc0n9dw3E/jmU7l6SqqioLFy7M
L3/5yyTJpk2bsnfv3ixcuLDoKFq2bFl27dqVtra2VFVV5cwzz8z73//+nHbaaQNWOk41Y8eO
fdsTUCSVF5ReeumlLFiwILNnz84vfvGLnH322QPGnHPOOVm3bl2ampr6d+/teyFqxowZ/VG0
d+/etLW15UMf+lA6Ojry6quvHvE2BzsuqaxUV1VVpbm5uf/0+30vjB3pxT2OnSgChtwNN9zQ
f1rlPl/72tcG/URtsLt1DfW4I7lg/vuzt70to2rr8slf/T+zdceGjG2akG888Kc50NmeJNnf
sS/Pr/0fSZKOzv15atVPj3hd73a7vNXBgwfz5S9/ecBlR7qve/bsyTe+8Y0klQC57rrr8olP
fCKf//zns3v38K1mbdy4MRs3bkySbNmyJT/84Q+POK6+vj5btmzpfwLy1vd/GTNmTP/fb7zx
xsO+f/To0f1/f+yxx/p3jTznnHNyzjnnZPv27fne976XDRs2HPO4Cy+8MDfeeGP/bXR3d6e6
uvK+51VVVUkqu2L2OfS4oLc+CRuO+5EMfjuXpO8YsPPPPz/z589PUnkRYeHChfnZz342wrMb
OR0dHXn++ef7P9+4cWMOHjyY66+/PhMnTjxln1zX19cPOLbyaF588cXccsst6erqyquvvjog
iqqrqzNmzJj+f49vdejjwMGDB/PVr341N9xwQ37zN38zGzduzD/90z8ddpKHwY6rra3N9ddf
n/PPPz9JJab6Huv7Hod490QRMOSeeuqpvPzyywMue+tB5F1dXWloaBhwWW1tbUaPHj1gV4Ch
HncsamtGZfF5N+ZHv/iv+cCi2/PwL76ZleuW5qPX/4ecO+9/yi9XPHRM1zeY7XIsenp6jvns
Yt3d3XniiSfyvve9LzNnzsxzzz133Lc/VGpra7Nhw4b+JxpvjaJDd3n5/ve/37/bSp9DT57Q
09OTH/zgB3nsscdyySWX5OKLL87EiRPzG7/xG/nsZz/bf8zOYMbV1tbmlltuSU1NTR555JEs
Xbo0nZ2duf3223Puuef23+b+/W++Z1VDQ0Pa2yux/NYTHQzH/eDIzj777OzevTvPPvvmiVG2
bNmSRYsWZfz48d549RB9kT1u3LhTNoq6uroGvPnu0fTtMrdy5crDXmDq7e1NT09PHn300fz8
5z9/x+vas2dP/tt/+2+ZMGFCrrjiinz0ox/NE088kYceeuiYx1177bWZP39+vv71r/e/ANLa
2prf/d3fHczdZ5BEETDktmzZ8o6rHzt27MikSZMGXNb3+euvvz5s447FBfPfn/YDu7Nm/VO5
+apPZfe+yhOGPft2ZFzTxGO+vsFslxOh7zikk2U/9JqamjzzzDN5/fXX09vbOyAykko4trW1
paWlJbNmzRqwD/3o0aMHrMDMnTs3r732Wnbt2pVHHnkkzz77bH7nd34ntbW1mTRpUn9MDGbc
+PHj+48pWLFiRTo7O1NfX58ZM2YMmN/27dvT29ubqqqqXHTRRXnsscdSW1ubBQsWDPv94MgW
LlyYFStW5Kc/fXPVtqamJueee27OPvvsPPbYYyM4u5PLaaedluTwlc1TyZ49e/rv59tpb2/P
3XffPeAFij69vb3ZuHFj5syZM6go6rNjx4488MADSSonUHlrFA1m3KxZs/Lcc8/1B1GS/rcv
YOiIImBEPPPMM/nwhz+ca665Js8880waGhpy/fXXZ9euXQNWU4Z6XJ+Ghob89m//dlauXHnE
3Y36V4me+K9Jkh27tuS08dOycetLmdgyNc+ufm88qbruuuuyZcuWbN26NV1dXWltbc2SJUuy
e/fuk+rNGnfv3t2/K9+ECRMO+/ojjzyS22+/Peeff34WLFiQ7du3Z9SoUZkwYUKWLl2aH/3o
R0mSxYsX978L/Z49e/p3aenp6RkQx4MZt2vXrnR1dWXUqFG56667snnz5kydOrX/WKJD5756
9erMnz8/S5YsyQUXXJDGxsbDxg3H/eBwU6dOTUtLy2G7IHV3d2fNmjWHRdHo0aP7f141NTWZ
MGFC9u7de9iJBwY7biTNnDlzwG6YSeUNSfteaLjqqquyffv2/uOqZs6cmWuuuSZr1qw5ZVeJ
ksoxZeecc05qa2vf8cx7b7eK+Oijj+bOO+/MjTfemKVLl/affGXu3LlZs2ZN/3adOnVqTj/9
9Lz00ktpb2/PuHHjMmPGjMP+7Q523K5duzJr1qy0tLSks7MzZ5xxRq655prj3BocjSgCRsTz
zz+fH//4x7nyyitz5ZVXJqkccH7vvfcO+E9rqMf1qampSWNj44D9wA91/vyrsr9jb9a8+lSS
5Cf//J386tW/ncXn3ph9+3fluTXvjSjq6enJTTfdlLq6uiSVVzvXrl2bf/iHfzhpVooG47nn
nktXV1euvvrqTJkyJVOnTk1SCZJNmzb1j9uyZUv/CRv6DoTevn17HnnkkQHHTw1mXGdnZx54
4IHcfPPNGTNmTObMmZNnnnkmGzZsyC233DJgfg8++GCampoybdq0tLa25qWXXsr+/fsH7GY3
HPeDwy1cuDD79+/P+vXrD/vaypUr82u/9mtpaWlJW1tb7rjjjsybN2/AmH/zb/5NkuTpp5/O
9773vSQZ9LiRdtVVVx122de+9rX+bdHb25tbb721f1eyzs7OLFu27JQ/VflLL72UG264IWee
eebbnpb7naxduzbf/OY3s2TJkrzvfe9LUtmmmzdvPuzEPVdeeeWAx4n169f3rwQd67iHHnoo
H/7wh/P7v//7SZLXXnst3/3ud/Obv/mbx31fOFzVpPNv6v3Yf34gn7muvf/CxqYxb/MtcLg3
3gC638UXV/bFXbbMAYCngotfeMsFd7yxr/W9A3++v/KtW4/5uqurqzN27Nh0dnb2H4txIsYl
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
O1hX+UhvUnfICtJg5gcAjAhRxEntzjvvzMc+9rFs37499fX1GTdu3AkZlyQTJ07Md7/73TQ2
HmWXqZPcJz7xiXziE594x3Hf+ta3TsBs3oUxr1c+emoqJz2o7j76iQfq9lU+jja2fs/AU1q/
nfrdldNy97zxxq1913PoG6geqvZA5fTcvdWV2z/SPN9pftVdyaQjrM41vV75AACGhSjipFdb
W5vJk4/y6vwwjksqp6/mJFHdnaT7HYcd89i3U5WBp+8e1Pf0JDXvcJKEoZofADAkHFMEAAAU
TRQBAABFE0UAAEDRHFPECTV27AdHegqcBP7orpGeAQDAm6wUAQAARRNFAABA0UQRAABQNFEE
AAAUTRQBAABFE0UAAEDRRBEAAFA0UQQAABRNFAEAAEWrHekJcGq7+OLekZ4CAAC8LStFAABA
0awUMSyWLasa6SkAAMCgWCkCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAA
oGiiCAAAKJooAgAAiiaKAACAotWO9AQ4NSxaNNIzAACA42OlCAAAKJooAgAAiiaKAACAooki
AACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAA
KJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIom
igAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIA
AKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAo
migCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaK
AACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAA
oGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACia
KAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooA
AICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACg
aKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJoo
AgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAA
gKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBo
oggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigC
AACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACA
ookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGii
CAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIA
AIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICi
iSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKII
AAAomigCAACKJooAAAVO/I0AACAASURBVICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAA
oGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACia
KAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooA
AICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACg
aKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJoo
AgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAA
gKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBo
oggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigC
AACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACA
ookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGii
CAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIA
AIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICi
iSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKII
AAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAA
iiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJ
IgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggA
ACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACK
JooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAooki
AACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIomigAAgKKJIgAAoGiiCAAA
KJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICiiSIAAKBooggAACiaKAIAAIom
igAAgKKJIgAAoGiiCAAAKJooAgAAiiaKAACAookiAACgaKIIAAAomigCAACKJooAAICi1R7t
C7feeuuJnAcAAMA7uv/++4f8Oq0UAQAARRNFAABA0UQRAABQNFEEAAAU7agnWoC3qqqqSkND
Q7q7u9PR0THS0xlR1dXVmTBhQpKkra0tBw8efMfvsf2G15gxY1JfX9//eXd3d3bu3Hnc4yjH
6NGjc/DgwfT09Iz0VBgG7+Wfr8crOHGGJIouuOCC7Ny5M+vXrx9w+aJFi7J58+Zs2rRpWMad
KqZOnZpp06Yd8WsrV67M3r17D7t87ty5aW5uzvLly4d7ev0aGxvzB3/wB1m1alW+9a1vnbDb
PRmNHTs2v/d7v5ck+fKXvzyo30nb792prq7O5Zdfnq1bt2b16tWHff2yyy7LhRdemIaGhlRX
V2fnzp353Oc+d9zjRkp9fX3OO++8vPjii9m1a9egv++ss87KpEmT8s///M/Zv3//MM7w5DBr
1qzU19fnhRdeGHD5sW6/2tra/Pt//++zY8eOfOlLXxqu6R6zMWPGZOHChYdd3tHRkWeeeWYE
ZvTedLL+fAf7//5gH68uuOCCjB49OlVVVWlvb89rr72Wbdu2Det96FNXV5fzzz8/K1asSHt7
+wm5TRgOQxJFV199dVatWnVYxFx33XV57LHH+p8wDvW4U8XcuXNz9dVXp62t7bCvbdy4cUAU
zZs3L1dffXWmTp2affv2nZAoqqmpSXd3d9rb29Pb25t9+/Ylqfxn093dnd7e3mGfw1D6lV/5
lcyfPz9f+9rXsn379mG/vVNt+42U2bNnZ8mSJdm5c+cRo+jhhx/Oww8/nCS5+eabM2fOnCNe
z2DHjZQxY8bkpptuys6dOwcdRePHj8/tt9+e2traPPfcc6d8FLW0tOTjH/947rvvvsO+dqzb
r7u7O+vXr8+OHTuGY6rHbdSoUZk+fXqam5sza9as7N69O6+99lq2bNnyrq73iiuuSEtLS37w
gx8M0UxHxmDvx8n68x3s//uDfby6+uqrU1dXl71796axsTFNTU1Zt25d7rvvviO+sDqUOjo6
Mm/evJx55pn5zne+M6y3BcPJ7nMnia6urnd8tXrGjBn52Mc+luXLl+fll1/OBRdccELmtmTJ
kixYsCBr165Nd3d3Jk2alDvuuCOzZs3KV77ylWzduvWEzGOozJgxI01NTampqRmS63unqDnV
tt9IWbhwYTZs2JDp06dnypQpb/vkcLC7ybwXd6c5khtvvDGvvPLKSRd4w+Waa67J5s2bs2rV
qnd9Xb29vbn33nuHYFZDa+fOnfnud7+bJPmjP/qjLF++PD/96U/f9fWefvrpQ/bYN5IGez9O
1p9vMrj/9w/1To9XzzzzTH74wx8mqfw/9y//5b/MnXfemS996UvD/lj30EMP5Xd/93cze/bs
rF27dlhvC4bLKRFFNTU1ufHGG7N+/fpTereCV199Nf/lv/yX7N27N1dcccUJu909e/akra0t
Z511VmprazN9+vRs27YtL7/8ckaNGjVg7DnnnJOLL74448ePz8GDB7Nr166sXbs2y5cvz4ED
B/rHNTQ05Iorrsjs2bPT2NiY9vb2bNq0KT/72c+yZ8+eJMmHP/zh/n2pt23blkceeSTXXntt
Zs+ena6urtx3333Ztm1bWltbc+GFF2batGlpbm7OgQMHsnnz5jzxxBP9K0GjRo3Keeedlxkz
ZmTixIlJKm9Q3NnZmSR58skn8/zzzx/T/PrU19fnX/yLf5Hp06envb09Tz31VJ588snj2n4c
WVVVVRYsWJBHH300dXV1Wbhw4bt+xfxUsXDhwsyYMSP33XdfEVHU3Nycs88+uz8Yjtfs2bOz
YMGC/s/b2tryxBNPHHFsY2NjFi1alClTpqSmpia7du3K888/n1deeaV/zKWXXpq2trbs378/
l156aRoaGrJhw4b84he/6H+cGQ6XXnppdu7cmb179+aSSy5Jc3NzduzYkSeeeCK7d+9OUnn8
W7RoUf+qU1dXV2688cb+6/jhD3844MWd0aNH56KLLsrMmTNTU1OTdevW5cknnxxw7OTixYsH
HFf55JNP5gMf+EBaW1vT1taWhx56KF1dXamqqsqcOXMyZ86cjB8/Ph0dHVm/fn2WL19+xCfq
CxYsyFlnnZWmpqbs27cv69aty7PPPpve3t5juh/H8vMdO3ZsLrnkkkyaNCmdnZ1ZtWpVnn/+
+QHbZDDb+WTy6quv5tvf/nY+/elP54ILLhiwV8lg7m+ft/t5HGrbtm1Zv359Lr30UlHEe9Yp
EUXNzc1ZtGhRTjvttFM6ipL0L4NXVVWdsNt8/PHHs3Tp0vzWb/1Wenp60tzcnKeeeiqPP/74
gHHnnntubr/99gGXtba2ZubMmVm2bFn/ZXV1dfnUpz7VHydJZXeY0047LQ899FD/ZVOnTk1L
S0uSZPr06ZkwYULmzZuXJDl48GD/wabTpk3rj8Senp5UV1dn6tSpOe+88/I3f/M32blzZ8aN
G5dbb711wNymT5/e//eXXnrpmOfX57bbbsvYsWOTJBMmTMj06dNz4MCBrFix4pi2H0d3xhln
pLGxMS+++GLGjRuXhQsX5ic/+clIT2vEjRo1Ktdff31+/OMfD3jR4VQ2d+7cVFVVHXEXymNx
4MCBtLe3p6GhIfPnz097e/sRnzRXVVXlk5/8ZKqrq7Ny5cp0d3f3P64dGkXz58/vPyj+2Wef
zd69e3PZZZdl/vz5+epXvzpsr9TPnz8/dXV1GTduXFasWJHNmzfnwgsvzMKFC/OFL3whnZ2d
qa2tzZQpU/rvT1VVVerq6o54fXV1dbnrrrvS0NCQp59+Or29vbnqqqsyd+7c3HPPPf3j9u3b
l+bm5syYMSPz58/PjBkzMm7cuGzYsCHNzc3p6upKUgnK2267LatXr87GjRvT2NiYa6+9NjNn
zjwsbG+55ZYsWrQoa9euzdatW9PY2JhLLrmk///1Y7kfg/35nnbaabnrrruya9eurFq1Kk1N
TbntttuyYMGCAbtnDmY7n2y2bNmSTZs2ZcGCBf1RNNj7m7zzz+OtVq1alQ9+8IOprq4+ZVbh
KcspEUVtbW355je/eUKODxkuVVVV/U+s+/T29h62KnHo+BPp5ptvzuTJk3PPPfdk8eLFWbJk
STZu3DjgScHs2bOTJFu3bs3f/u3fprq6Oq2trRkzZsyAs60tXrw4EydOTE9PT37wgx9kzZo1
aWhoSHNz84D/WD73uc9l8uTJ+fSnP53Ro0dn7ty5+ed//uds2LAhvb29/a9aPvvss+nu7s66
deuyd+/ejB07Np/85Cczfvz4nHvuufn5z3+etra2fPGLX0xLS0s++tGPJkm+853v9IfVodt5
sPPr097enq9//etJkjvvvDMtLS0555xz+qNosNuPo1u4cGE2b96c3bt354UXXsiVV16Z1tbW
E3Yg8cnqAx/4QPbv359f/vKXAyL/VNa30vpuz+C4adOm/uNTm5qaMn78+COOGzduXFpbW3PP
PfdkzZo1b3udkydPzt13393/uLJixYr863/9r3PuuecO6wt2M2bMyBe/+MX+1dOXXnopd911
1//f3rnHRVXmf/wzF2AYBoabCCqIykUE0ZLtouhqpHLzUnlrNXc1W7ESazfT3TV/r9w2y4x0
a8u1XPJSadkrVNZN0U1FUkkURbwEBCpXAYWY4Tozz+8Pdk4cZoBzYIZR+b5fr+f1Yh6+5zzf
5znP+Z7zfS7fg8GDByMvLw8NDQ1ISUkBACxevBgajYb73Z5JkybByckJH330Ebf/MTc3F0uX
LkVgYCDnjF66dAmXLl1CREQE4uLiUF1djU8++cRkBkGr1SIpKYn3klxWVoaZM2ciNTWVc558
fX0xZswYHD58uMMZHTH1EHp9p06dirq6Omzbto17puTn52PevHnIycnhOd9dtbNY5HI5pk+f
zstraWnBf/7zH9Hn6oiqqip4eXlxv4XWV8j1aM+NGzc4x/V+2/tN9A3uC6cIAH788Udbq9Aj
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

--------------pcXrWObKEpuSLXjwgerBofRu--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 30 Jan 2025 08:40:10 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 03:40:10 2025
Received: from localhost ([127.0.0.1]:44248 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdQ5q-0002yj-7n
	for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 03:40:10 -0500
Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:49353)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tdQ5n-0002yG-Np
 for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 03:40:08 -0500
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-438a39e659cso3081175e9.2
 for <75056 <at> debbugs.gnu.org>; Thu, 30 Jan 2025 00:40:07 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738226401; x=1738831201; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=6L6S+3GYhyvBMaDFTE+yvQ8wMmwRxTpdi77mqv0kq1w=;
 b=e+tA4GSJzfO54/5RbSWZ2PQ/aSgFtj202StvXU4+WBe69dPBE5gwPcMU8osAuCm8HX
 RS+Dtl9AtMbjWpyqFwprw29g+fadenrg622s6nLcriOVztqkD2RAtmhWnOQGpCiVU5FR
 Xf2lhfTDhejKSpC3uhk1hfly+f8RJXDfGo/TmrVaYGi6yosBOC9zC7wuPH6CJddI1A7L
 eEXfbYzjYDiuBM3vu9mxB9nWEjhpokKOUKjwXLcNIVlkC40nanunR62g63zCnt8kjHC0
 wO7qSHRZ+7D2LkVwpgecXO9e3os9st/PK4bhRZKWh693CwieaQPSt7Io3RuaJxe2qnWv
 l9vQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738226401; x=1738831201;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=6L6S+3GYhyvBMaDFTE+yvQ8wMmwRxTpdi77mqv0kq1w=;
 b=pZ+7Zg/ApZz/67xp5sEsDHCZOj3cdO8oippoUdswoYcCV2GcMtsGDFTZMxk3PkY0HM
 S27+kArHJHNZ3KEUgisKJTAuHHzvY33x9T/cV0xSBinhrTykE2nIb58kcMSoWbFr4koy
 zir6O3CgIIUenm4n1AflbhvSDC9UhkDT24ntQllNIAUa4JblqSG+99UcjeyN9AQzmtyq
 LIvT/DZnWWKa1H2S0gKJaPgi/5HS2mUUHkEn3OODIk8qGvI7CbKB3woTU9m2S1xaSjih
 mzXBZN34NTEpU9gyJx4InnFPlugs9VzBJuK6AmqQ6TXoMC9J5Am3FQ8iCfQ/sBeUlkf3
 zjCw==
X-Forwarded-Encrypted: i=1;
 AJvYcCVnOn3gxZrOObiBMMrlLzfIEO68a9Pll/5sFth2Ee2HZQK/nYsrjmIYd20dU1tDbfa824P4qA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwQF8co700g7YWLXcXC0spfIUVNPcD3jLtMH8G0wFR5i+h/h/s/
 cc7gBxkzUdqAArQtsA8y63t5/rN843GrsNESZBw1wWjp1MM2zF1h0TP/Zr8J
X-Gm-Gg: ASbGncshhKhH6rujoVUDrnFmdzbCBsoR9pMuSZ1g2OBp9gzvsihLl8k8SL6YGlpEFKk
 UHVMrYbNG4z88Xvr6BvhHKnWjoElZM9eaUC4rgTTDEzS4cfrQnKCBXbz+siQGUFfb8+bd8VMg+8
 BR2GL2byQpHp3SFWko3xmLYhbFQMEjT2hLuabFWajxK3QmADVPJBW3LOt5zcAv88fBshEdmQcFn
 AI1cQUD2IAFPnOTAJj/o3mGDlIOborXJaArcRM32qPunabKzcZiS4+XjdPIl/ib4B6WinytYZZR
 Sz9pAW9D+Gr2XwGbPj+2N6YmU9ZgrnJX3Lm89zM8zx6pwh+1s0fAV+iqAX5CxWw58vacVRp83Ju
 luO4HA5Gv3Eys40mGhHWoy2m6
X-Google-Smtp-Source: AGHT+IGFgIFRR/VeC7khXWpDOgRICROQ+fj8d2sdnyzhvr4cXcRC5NssUmdaBPzg0YHtz/6dzIXT9Q==
X-Received: by 2002:a05:600c:45c5:b0:434:e2ea:fc94 with SMTP id
 5b1f17b1804b1-438dc3c3292mr66529065e9.11.1738226400999; 
 Thu, 30 Jan 2025 00:40:00 -0800 (PST)
Received: from pro2 (p200300e0b720a900dc01849cb197321a.dip0.t-ipconnect.de.
 [2003:e0:b720:a900:dc01:849c:b197:321a])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38c5c1d1d03sm1295028f8f.99.2025.01.30.00.40.00
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 30 Jan 2025 00:40:00 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN> (martin rudalics's
 message of "Thu, 30 Jan 2025 09:32:25 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2zfj91loi.fsf@HIDDEN>
 <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
Date: Thu, 30 Jan 2025 09:39:59 +0100
Message-ID: <m2ed0k8zkw.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>> It has no inherent special purpose, and probably has a bug as you
>> describe. Like perhaps the one for the size. Both are an attempt to
>> mimic what is done for window-system frames, while being depressed that
>> that cannot be easily reused, and being too lazy to rewrite the whole
>> frame parameter department =F0=9F=99=82.
>
> The position handling is inherently broken on window-system frames too
> because we translate negative values to positive ones after the window
> manager has processed them.  But I'd like to handle values like (+ 10)
> to make child frame dragging work so I'll implement that next.

=F0=9F=91=8D

>
>>> Also when I want to move a child frame to the left of its parent via
>>>
>>>    (modify-frame-parameters nil '((left . 0)))
>>>
>>> the left border disappears.  Is that intended?
>>
>> If I understand that correctly, then probably yes. The borders are drawn
>> around the frame, so the left border is at left - 1, the right at left +
>> width + 1, and so on.
>
> I see.
>
>> Whatever is outside of the terminal is clipped.
>
> Didn't you once mention that borders can be displayed more nicely?  I
> obviously forgot how to do that.  In either case I'd like to resize
> child frames by dragging their borders with the mouse.
>

Yes, now even documented:

NEWS:
   50 +++
   51 ** 'standard-display-table' now has more extra slots.
   52 'standard-display-table' has been extended to allow specifying glyphs
   53 that are used for borders around child frames and menu separators on =
TTY
   54 frames.
   55=20
   56 Call the function 'standard-display-unicode-special-glyphs' to set up
   57 the 'standard-display-table's extra slots with Unicode characters.
   58 Please see the documentation of that function to see which slots of t=
he
   59 display table it changes.

_Much_ nicer than the default IMO. I still wished Emacs would do that by
default, but here were objections.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 30 Jan 2025 08:32:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 03:32:36 2025
Received: from localhost ([127.0.0.1]:44227 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdPyV-0002fj-Qr
	for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 03:32:36 -0500
Received: from mout.gmx.net ([212.227.15.18]:51179)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdPyS-0002fU-TE
 for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 03:32:34 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738225946; x=1738830746; i=rudalics@HIDDEN;
 bh=QkqZYarrDvJ0AWWX21uEkoAgiraxeviAcchIlm5gkow=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=LoeBaZ7aU/ipR/NzjGORIZcr+EoLySQt49lkylglnFyzOlTY3kt1gyV2JABYLwyX
 /QK7fphi3X6wwecX8n9gbPhSeIUq3lVP21Pq/kd0ripwiz20XJIMqtQRK+G1GU7H0
 001HSN/RtMyvGeR/wtpy96ySNVFJmfuGXH9VqdbH+/WdbUC9JSA2vYlB6x118m0UL
 x79VflMixke9EQcP8hAIXkpYEoGGODKFY6E47OWyZ1nbLIdcr0+uXAYxVWaOzhfut
 PjYPaR/Mh0Ev45n6VwZuOqKO7zZUpo4n4yD6E+NE6IZm6jtWo/96DH5BE9X1ieg5y
 aXfPpnTe5eMQJFGDxg==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.131]) by mail.gmx.net (mrgmx005
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1Mdeb5-1t459f1erJ-00nDsr; Thu, 30
 Jan 2025 09:32:26 +0100
Message-ID: <56c17d3a-7cbd-4e1d-85e4-4f54be4ce237@HIDDEN>
Date: Thu, 30 Jan 2025 09:32:25 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2zfj91loi.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2zfj91loi.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: base64
X-Provags-ID: V03:K1:pKtm7T2gFwQ3WhFv0WwQmbNZq8g3mLX/ffy+3hXgHjCOBW0jekl
 wxqhyOFy7Jnzvu83NKWalGXva3SZ2JTMin7t4UI2wxAurvIITzb2mVYSyXh2M8Uriqmz4gx
 UMq1HFyfowQGObeA7uM6cKGrCYVRdqQyOSk3RZJdjamxzQcR1l6Og51kds71fqKj6dypYmU
 tpqTI/k/G1y/u+YZ99nkA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:L8CApGxGSIE=;fh9EVADCvKahaZdjh/d0ebNKhI1
 hCcqWU/SAqxS4PYIcJvuQJ8linOANW09pkgplqrGmTiuliQhVKW1nTGZN8EPPyzphBIN0/95Z
 UXT2xUCM7V47hQKbQJvaPhz7URqoUe6t1nYKiL/bZL1r8aj8C4gwh55sLd7HZUf9jP5Wi2Rzv
 uJ7QudjQboYzRM9jZBOuSOeukonfSw38GP77EMEwF6PjvnoFv2XOZXyh3KjQCz+IC64xY1tbV
 4IOiGsWv9SFFeva6wG7dD7qxE/GF3M9dbi3mYPIXn3cCBFxx2zXTkXfabvpeQavtzgNsZVhG4
 dFFDUhP+p4xKTttfilv32H1+S+BTPwajQ52lig36wO7rjXbmp4k6YIN0H7fLyiQ65rZxBZwUr
 7wGkZ3yEXAIwd681gNb+abZHsTzfIz5LXPTA02znyFxvpSi+o1wFJNXuFV6Rnrk1Ok2L0EZK2
 w3h/4oCkG8QLieTLvKpSdOFCfhsUa48FQ4646gBO9xLxFzHYanXYANzEwX2yTX97BuOzwSztg
 qYEnWHCAula/srEUjw7T78SUwZpbpOII3FfKv6Qe9RshK7DnaVL9+HQUEMySeIFEo5CVYqURU
 o+F/xUSthgYSiHn/ccQKfVbZaCcs75wQdhBnGzlPidb4y1tfdcNM5Wq13rS3dVPnxMWRNp/+h
 1LRfvgKKzh0wmM16+NkCDwOcZJ3ayGm/dCMdRyrUlFX8pFmey8efs8hRM9cc8YlJaYpIkXKf1
 E6YRBcT2McqjFT8wC18udNJ77HeKRqIEaJO9pL7sBbm6qa9xdz04sbb8p3mxisT6JVikUQNAf
 b17pcAodC6QVGYIV+gfChZ5yWaDdp7kRNb2ecgroOb/Hqup7yuKUd+OOUmsEhJQWPiKpiXqYO
 RV+XGb+XyWa//BbUBNEPJ9Yxw8c80z3OS2iHJ3pE4GIK1pSK+BpWU6RelEM7OkDjWbzsddJWD
 SC8GHl4aT3NOegFApv5Y6pZsIshnulnaTtbAbAPG5ock0ROUdHlYfF4wjZh7kTncEM0pwWPs2
 kIlD2XTWXOAekQTmBJvseoUasYuAPtAVNeVkq0WhqmXg0PqFunc/yPd4qL8TBXirgIwGIWAWJ
 vLnkfYP+xnSXntZVlvG44KFZpadfbU3vuPbpIKBzqV9niXVioudbPK2TJCuXIcUNxyv54ZKSS
 KO8MUdwEmRqTemmcjxtUDISEFlUyr/RonR8HWa4134qlBrM8o7/NFUSiq+is8pYpt1ZlFYMmC
 z7fg+7u3HFBJWPGUc0Uh83iT9YreWnx2w4J45SQXgRIEwOL4/7NNE4iLJ3tNl/oBm3qexW47K
 56WXNQLUODekDH5EQrlPpJJpEDnrj2y/AKxrSYgtUfOAZ0=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

ID4gSXQgaGFzIG5vIGluaGVyZW50IHNwZWNpYWwgcHVycG9zZSwgYW5kIHByb2JhYmx5IGhh
cyBhIGJ1ZyBhcyB5b3UNCiA+IGRlc2NyaWJlLiBMaWtlIHBlcmhhcHMgdGhlIG9uZSBmb3Ig
dGhlIHNpemUuIEJvdGggYXJlIGFuIGF0dGVtcHQgdG8NCiA+IG1pbWljIHdoYXQgaXMgZG9u
ZSBmb3Igd2luZG93LXN5c3RlbSBmcmFtZXMsIHdoaWxlIGJlaW5nIGRlcHJlc3NlZCB0aGF0
DQogPiB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcmV1c2VkLCBhbmQgYmVpbmcgdG9vIGxhenkg
dG8gcmV3cml0ZSB0aGUgd2hvbGUNCiA+IGZyYW1lIHBhcmFtZXRlciBkZXBhcnRtZW50IPCf
mYIuDQoNClRoZSBwb3NpdGlvbiBoYW5kbGluZyBpcyBpbmhlcmVudGx5IGJyb2tlbiBvbiB3
aW5kb3ctc3lzdGVtIGZyYW1lcyB0b28NCmJlY2F1c2Ugd2UgdHJhbnNsYXRlIG5lZ2F0aXZl
IHZhbHVlcyB0byBwb3NpdGl2ZSBvbmVzIGFmdGVyIHRoZSB3aW5kb3cNCm1hbmFnZXIgaGFz
IHByb2Nlc3NlZCB0aGVtLiAgQnV0IEknZCBsaWtlIHRvIGhhbmRsZSB2YWx1ZXMgbGlrZSAo
KyAxMCkNCnRvIG1ha2UgY2hpbGQgZnJhbWUgZHJhZ2dpbmcgd29yayBzbyBJJ2xsIGltcGxl
bWVudCB0aGF0IG5leHQuDQoNCiA+PiBBbHNvIHdoZW4gSSB3YW50IHRvIG1vdmUgYSBjaGls
ZCBmcmFtZSB0byB0aGUgbGVmdCBvZiBpdHMgcGFyZW50IHZpYQ0KID4+DQogPj4gICAgKG1v
ZGlmeS1mcmFtZS1wYXJhbWV0ZXJzIG5pbCAnKChsZWZ0IC4gMCkpKQ0KID4+DQogPj4gdGhl
IGxlZnQgYm9yZGVyIGRpc2FwcGVhcnMuICBJcyB0aGF0IGludGVuZGVkPw0KID4NCiA+IElm
IEkgdW5kZXJzdGFuZCB0aGF0IGNvcnJlY3RseSwgdGhlbiBwcm9iYWJseSB5ZXMuIFRoZSBi
b3JkZXJzIGFyZSBkcmF3bg0KID4gYXJvdW5kIHRoZSBmcmFtZSwgc28gdGhlIGxlZnQgYm9y
ZGVyIGlzIGF0IGxlZnQgLSAxLCB0aGUgcmlnaHQgYXQgbGVmdCArDQogPiB3aWR0aCArIDEs
IGFuZCBzbyBvbi4NCg0KSSBzZWUuDQoNCiA+IFdoYXRldmVyIGlzIG91dHNpZGUgb2YgdGhl
IHRlcm1pbmFsIGlzIGNsaXBwZWQuDQoNCkRpZG4ndCB5b3Ugb25jZSBtZW50aW9uIHRoYXQg
Ym9yZGVycyBjYW4gYmUgZGlzcGxheWVkIG1vcmUgbmljZWx5PyAgSQ0Kb2J2aW91c2x5IGZv
cmdvdCBob3cgdG8gZG8gdGhhdC4gIEluIGVpdGhlciBjYXNlIEknZCBsaWtlIHRvIHJlc2l6
ZQ0KY2hpbGQgZnJhbWVzIGJ5IGRyYWdnaW5nIHRoZWlyIGJvcmRlcnMgd2l0aCB0aGUgbW91
c2UuDQoNCm1hcnRpbg0K




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 30 Jan 2025 07:04:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 02:04:29 2025
Received: from localhost ([127.0.0.1]:44036 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdObF-0003ni-0Q
	for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 02:04:29 -0500
Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]:55734)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tdObA-0003nP-KY
 for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 02:04:27 -0500
Received: by mail-wm1-x332.google.com with SMTP id
 5b1f17b1804b1-4361dc6322fso2396815e9.3
 for <75056 <at> debbugs.gnu.org>; Wed, 29 Jan 2025 23:04:24 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738220658; x=1738825458; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=IIO4DEuym2b4m/xILaXnma2EHa1MoIUCBPurAVilh5U=;
 b=AvhJ2pQIxIuamvwsdQVBAZhwqQKk7jcS6D28I07oqEum1cdbPaP36Uz4Bz0eAs0ibJ
 SXpsIOJG32SlYzPHGG2fDvH9kV2yRbeBJMy8vRAgKVKuBXm3EYiKckgR8mdmgnF/aW1D
 LOlYvuoWkVtFIZZk21+Uc5aF/TcpNfN4MzzUGv120DGJ4Q0hrkqbzjTnq53GrHYmt+YY
 OKgF88fxxx4/at995dJEh05KIp+0Y8zb9sDh0p7GS+Ta+mZREZYwyolx0ZXq58S6MRbY
 kpEwa6XwEuW67UVfzsCgiqkYuzdo5ouqPEJ4d2bzk+ydLZegw3uZjDLKHc4MgwXnIF/D
 BWNA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738220658; x=1738825458;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=IIO4DEuym2b4m/xILaXnma2EHa1MoIUCBPurAVilh5U=;
 b=o5HGHZcWcbRCrFx7gGQA2yRsPq4wBJYRc7MsoqkkQ4i5WBWv8hduzsv+zf+ECCEXd2
 YZIxrMc5m0R+B8bzGh6Cujwl9IcJFBRxJ7MWmT/m+JQ1ejctMMSAr3hnB3/QFo9nZRrD
 4CW5ZK6adPJ+ppPCP+oDuoVASYAmhBIIM6h3JQ9C6U6ZVJsREnvnSIv3hWqjN6FgPsPA
 OLDjwflyrZ5qTkdXCnkqYyvm9GZeoGJpIKkpH4x8MFVLwPq8jdjNhxlJXg3qdpoovTPS
 rNF5bmd5UszDRq5rE5f+Q6vRXEvHH6CW6f1fS1Y4BuE8g3TsXjyDWzQVeMjykXUVHrrE
 Ootw==
X-Forwarded-Encrypted: i=1;
 AJvYcCVrrQ5/i32HL5QiBem46N/6qLwdVzmJjERWSUTMavvs8S27r7aPyzuggmdTt/HFGB5R3beTlw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyT5KyExJzDgGYJa0FWsGjmuIBjATgp50xsdlKLfj//PxqVkUCd
 3MDPjlfNt6IyEF5IsOzAUSMbFZJ4H/EDUeUroY5hy0F0yn9wX+RKzMlpUvZU
X-Gm-Gg: ASbGncsdIlFo/6brf5Zg3YA+FxBHTmBc7Zmi+WFZ9fkPUUpdzAL2MEL1dKn1X8tgX12
 H5z3tpvLJccdqkB+OR6Rd5dON//dFmUXrfD0QVl8BxFtK6vzBwkqDqQiMtpn5neekS5S20VOFcZ
 TqH6hf+Kw3r8lpYx542i82iqKcUGQjeB92S2rk4+j5NPn71AJ92cdvYgvKcg1Bze2ZGxnjEGeTN
 yNdmz0lEyb3wLjG2gwxr/U83yGk1kK66l2kLma4xoEB92auPRXrVEBiIsEdU7jq48LBs6jYZ+vZ
 X+5cTulLv6+IsuREdWuRExvxxmfqQb4FKlsdCFCU2ysJX5WLwfj5YTfpj+Hkq1LLSGfOS9l3EB/
 DFnAc6Lvz2GO9KoRvETlUuQQ3
X-Google-Smtp-Source: AGHT+IHtX0VxS2NDLhBfnnvQ1Fwx9di/opshFcULYNaK1/wsugU4XikW+XE+kVnygprH1nuw2rvoXA==
X-Received: by 2002:a05:600c:4e09:b0:436:1c04:aa8e with SMTP id
 5b1f17b1804b1-438dc3c8200mr55510095e9.16.1738220657798; 
 Wed, 29 Jan 2025 23:04:17 -0800 (PST)
Received: from pro2 (p200300e0b720a900dc01849cb197321a.dip0.t-ipconnect.de.
 [2003:e0:b720:a900:dc01:849c:b197:321a])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438dcc2ede0sm48001375e9.21.2025.01.29.23.04.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 29 Jan 2025 23:04:16 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <CAOGVwenHzi9KaPX20UBpmOiKHHNmmT9yWS0ofDk6WjWb8TEWaQ@HIDDEN>
 (Len Trigg's message of "Thu, 30 Jan 2025 18:57:20 +1300")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
 <m2v7twdi6n.fsf@HIDDEN>
 <CAOGVwenHzi9KaPX20UBpmOiKHHNmmT9yWS0ofDk6WjWb8TEWaQ@HIDDEN>
Date: Thu, 30 Jan 2025 08:04:14 +0100
Message-ID: <m2msf8dbpt.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: martin rudalics <rudalics@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>,
 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Len Trigg <lenbok@HIDDEN> writes:

> I just rebuilt from master and tested it out with my two tty terminals. We do still have the original
> problem where the second tty child frame reappears when focus is switched to the other terminal,
> blocking that other terminal. Given the discussion about cursor setting, note that when the tty child
> frame reappears on the deselected terminal, the cursor in the selected/focused terminal is drawn at the
> coordinates corresponding to where the tty child frame is in the deselected terminal (not sure if that
> has always been the case).

Thanks.

I still think this is related to the mini_frame thing we had some days
ago: the mini_frame that was invisible and was displayed nevertheless,
which lead to an assertion with checking enabled, and a SEGV without.

What I added to combined_updates_for_frame must be considered a
workaround to let it not crash. That is lands there with an invisible
frame is the bug that should be investigated.

Nothing for me though, I*m afraid.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 30 Jan 2025 05:57:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 30 00:57:48 2025
Received: from localhost ([127.0.0.1]:43946 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdNYi-0000Te-9Y
	for submit <at> debbugs.gnu.org; Thu, 30 Jan 2025 00:57:48 -0500
Received: from mail-lj1-x234.google.com ([2a00:1450:4864:20::234]:61567)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1tdNYf-0000TK-9H
 for 75056 <at> debbugs.gnu.org; Thu, 30 Jan 2025 00:57:46 -0500
Received: by mail-lj1-x234.google.com with SMTP id
 38308e7fff4ca-30227ccf803so2892761fa.2
 for <75056 <at> debbugs.gnu.org>; Wed, 29 Jan 2025 21:57:45 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738216659; x=1738821459; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=78POv8meLff12ndgJ/mzIPlje2PntvIZnuGSiCIBw4c=;
 b=Nz96MdsaZORxLUZJA6Aa4PaMNSylPLFKMSuzAn9SAMmNk+ZG5Swz9zfW1erJVgtP3p
 iKB5BjjS7eGeemT3BgpxLSp5iGzmwVE7ge/1bnZVMfsqWhga7K5k1ch6ufwJr1FJ/Cbv
 uARaiDAMzAb4KIWsCi/I2o6LGgnbNHh4tnY631gF0gt9bQqEoE5Q7414vMtN24ZotGYY
 5hZl9dp+gCkjH165Onf89yISo4CVLK8GwbnToXeMnTezZcpJHbovMDbtchGif7a7DHVF
 O3hdn/MwG9QrGGaKEqhSqirtmpPBRu8YHMpQWTRtbWeM9zFKomEaiHdkuH68wdMtbdNw
 ZwYQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738216659; x=1738821459;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=78POv8meLff12ndgJ/mzIPlje2PntvIZnuGSiCIBw4c=;
 b=erxhqMAJsmznj8hV8GTiB7MKbNdXBSqEgoNdHUBDt1mQWTZ1UQ/jvDneMYQhHX3Agt
 g2fVhB+eJJbFoTI4iV3RoAtp3os4aLkB9HKhkumF4RSXouZBYNMcinnBqLYtw6A8aArw
 cgYhfnYt1kWf6jtUbq5Nktz6nsnu3wgRWq9a3KyKwgyhVBFl8TB+yy3k3MpCfe65yYfq
 S4HO5d9PM73uWvzClScHm6VFHbwEYDmKCeVjkgO8N7O70K0BnsD2LVau7wVA9HlKsrDW
 SStcrL9y++vW9mP/pB9o6SIDF5OeTO+Da9H29RxatdtZsvhPIxAj7MgsXf/85++Lke7M
 w2zg==
X-Forwarded-Encrypted: i=1;
 AJvYcCVyd/0DCdSTvX5EcJoYadyt5P0uzuFNLZy96L78VHfweBS7+s4C+9HQKeXrV96rypaDG5FF2A==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yy8ruH1Z/rIg3mswRIeqlGLSWJKMyjBaMZeNQ5qH4n2XlIfcDHe
 xCCCduVfdEncL80RseTzXm7wmK/US6PGdpGS4fiaQOVOed5D7OgF9jxKbS+HqAL0qdC4c2PA+fU
 JNnT1Gm/9mtUyI2d3ysORHc5FPc4=
X-Gm-Gg: ASbGncv0DVICsT5vSX05FdqxB5t2YSSwVwml192Kp6ZK5VsM14ILLF+tW6HJD/saVHl
 kNekp/VFKfkajf56mVtR3QOHgzB+Rc2Zz/IVWGCMXZyZaAudEMa6LZQkfTQ8FmISlFTA3Ddk=
X-Google-Smtp-Source: AGHT+IGit4SogsfdZYtV/Nm2lzfTFfRtvdzWWy97hSv4+MT5R4zbm60k1JyzkE8+gBtlilanWjjaJaWwVKvDlTa9dlw=
X-Received: by 2002:a05:651c:12c3:b0:300:5c57:5242 with SMTP id
 38308e7fff4ca-30796811e7fmr22028021fa.7.1738216657747; Wed, 29 Jan 2025
 21:57:37 -0800 (PST)
MIME-Version: 1.0
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> <m2v7twdi6n.fsf@HIDDEN>
In-Reply-To: <m2v7twdi6n.fsf@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Thu, 30 Jan 2025 18:57:20 +1300
X-Gm-Features: AWEUYZkO-W0JMm_ZLvisKytoPJ96mfyHvDC7CahgC5h_DRRt7AB6UoYK6lXoSog
Message-ID: <CAOGVwenHzi9KaPX20UBpmOiKHHNmmT9yWS0ofDk6WjWb8TEWaQ@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Content-Type: multipart/related; boundary="0000000000006dc942062ce61a34"
X-Debbugs-Envelope-To: 75056
Cc: martin rudalics <rudalics@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>,
 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>

--0000000000006dc942062ce61a34
Content-Type: multipart/alternative; boundary="0000000000006dc93c062ce61a33"

--0000000000006dc93c062ce61a33
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

I just rebuilt from master and tested it out with my two tty terminals. We
do still have the original problem where the second tty child frame
reappears when focus is switched to the other terminal, blocking that other
terminal. Given the discussion about cursor setting, note that when the tty
child frame reappears on the deselected terminal, the cursor in the
selected/focused terminal is drawn at the coordinates corresponding to
where the tty child frame is in the deselected terminal (not sure if that
has always been the case).

[image: image.png]



On Thu, 30 Jan 2025 at 17:44, Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
wrote:

> martin rudalics <rudalics@HIDDEN> writes:
>
> >> Back from the drawing board, please find now 3 patches attached.
> >
> > Works pretty well so far.  I'll do some further experiments with it.
>
> Now pushed to master.
>

--0000000000006dc93c062ce61a33
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>I just rebuilt from master and tested it out with my =
two tty terminals. We do still have the original problem where the second t=
ty child frame reappears when focus is switched to the other terminal, bloc=
king that other terminal. Given the discussion about cursor setting, note t=
hat when the tty child frame reappears on the deselected terminal, the curs=
or in the selected/focused terminal is drawn at the coordinates correspondi=
ng to where the tty child frame is in the deselected terminal (not sure if =
that has always been the case).</div><div><br></div><div><img src=3D"cid:ii=
_m6ix5fk60" alt=3D"image.png" width=3D"570" height=3D"337"><br><br></div><d=
iv><br></div></div><br><div class=3D"gmail_quote gmail_quote_container"><di=
v dir=3D"ltr" class=3D"gmail_attr">On Thu, 30 Jan 2025 at 17:44, Gerd M=C3=
=B6llmann &lt;<a href=3D"mailto:gerd.moellmann@HIDDEN">gerd.moellmann@gm=
ail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"=
margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-lef=
t:1ex">martin rudalics &lt;<a href=3D"mailto:rudalics@HIDDEN" target=3D"_bl=
ank">rudalics@HIDDEN</a>&gt; writes:<br>
<br>
&gt;&gt; Back from the drawing board, please find now 3 patches attached.<b=
r>
&gt;<br>
&gt; Works pretty well so far.=C2=A0 I&#39;ll do some further experiments w=
ith it.<br>
<br>
Now pushed to master.<br>
</blockquote></div>

--0000000000006dc93c062ce61a33--

--0000000000006dc942062ce61a34
Content-Type: image/png; name="image.png"
Content-Disposition: inline; filename="image.png"
Content-Transfer-Encoding: base64
Content-ID: <ii_m6ix5fk60>
X-Attachment-Id: ii_m6ix5fk60

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
0tMEAgGO4ywWS6FQZOdkLy9beav2Xr/dt89qtRYVF6emXvfelEql9KoY9t+cTQ5yuey5559/+Wev
Pv83P5554gMIBAK53fgCfl/A7/V7MQRnMdhcJp+Dh8tRI8MjXq9XrpAjCEJH6bDb7UODgzGxsUwm
s6O9Y7YXPXL4sNFgrKisXFZaKpPLaPlWJBIlJSeXlZeHegbfWurr6rxe79r16+MTEgiC4HA4aQvS
ly9fHvZOaahvGOjvT0pOXrdhg1QqxXFcLJGsLC/Lysk2m8xVVVWzuqjH7a46edLj8Wy6d1NuXp5I
JGIwGARBSGWyBRkLVpaXzdZjaWxsrKO9IyYmpnBRYUdHh8vl0vX1BfyBjffe43K5zrS2Tvmrzo5O
DMPWV2wI6mvhwagDAZPRSFFURmamRqulX/Tz8RieIR6Px2wyMRiMzOwslVpNX3eeXlxWq9VsMgmF
wpIlSxTKcGVcG60tWbw4OiaGx+PhOE4QhDY6WhOlIUlSPzR0x3PK0Bl5y8rLJRIJnbA5fcGCio2V
DCYDx7DZ+qL19fY21NXLZLL7Nm9OSk6ib5nNZqtUqvyCguUrV0z+yZKlS7Y//PD6ioqfvvzSNG6O
M2RkZMRut2ujYzKzsqQyGa2FTd5S6L1ype1iW0RkZOmKFQ67o6XpBr6wFLVuw/oojYbJZNIBjVPT
0qxWK22bBwA0NzaeP3c+fUH65i0PRMdEs9lsHMe5XG6URlOyZPGy0tLZtn9gYODE8eMMBuP+zZsX
FhYqlAoulysSieITEspWl0dPil81PSiKFhQWbn1wm8lofPftdwwGw5XLl3d+/CmCIo8/+UR0dPTN
q7ieleVlhYsKo2OiJVKpUChUqpR5+flPP/csj8drPd3a1dk1q9r8fn/NqWqXy5W/sGBhYaFAIODx
eJnZ2cXFxV6Pp76u/s5Gn4JAIBAIBAKZDcjV/6X/uwU5d8kD+/cXFhUlJCb+5KUXD+4/6Pf7Slcs
T89Y0NnRefTw4dsUv9Tn832+a1daelpOXu6LL/306JGjFEWuWbdOo9VcOHfu1FTaqWFk5OD+AyvL
Vr78s1erT1U77A6n07F3z55R83WBpDweT82pU5lZmavXrhGKREaDEQBw/NhRWuf3er1/fve9KI1m
aekyJpN56mQVzsArNm4UioTNjU2NDdfiNPbr+t1ut1yh+OqLL2h58cC3+zdUVjAYjPa2ttl2y/lz
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
KMe1DAmg+eyTzxCFdu/adfr06aLiIpPJ7Pf5mpqa9uza7Q95QuLM6dO/+s//njx1SmRkJMZ4cNB2
9syZkydO1NfVN9Q32If3q6rq+++9l5WdExUdbTToEUX5fN7Ojs6DBw7abLZLNAGOHj5it9kLCguM
JpN28YQGP5IovvnGG2fOnE5NTTOajAiQ2+PuaG8/evjIOMp2N23YwLKXnNtVG336zOnT69et7xqe
onXrli2Vxyu1bMzr8W74cMPA8JM3He3tv/31b2bMnBltjaIQ5XA4amtqjh45mpiU5HQ4W5qbg1vG
qnpg//6enp7SslJrTAzLcrIsDQ4Mnj1zxhPy0MmuioqBgYH4hHiLJYxlOUWRBwf6q05VVZ2qutae
avbt2dPc1NxY3xC68NjRo396512TyUhRF6b4/fqrrxqbGgsKCyMiIniOD8iS0+lqamisHvO2ibHH
7UYIffzRptEviqL43rp1WVlZkVFRBoMBIeT1ejva2g4ePOhxu8ds566dFV2dXekZGQaDgaIRADgd
Fz3l0NbSun7d+ubmpsv392TliV/8679NmTbNGmNlGdbv97W2th3Yvz8YZ2qOHz3qdDi1YDuosaHh
7TfejI2LDwRkrUoVY3xg376e7q5JpaVRUVE8r1OUgMvlbm1pGfHeq6Sq6u7du7u6u0pKS6KjrQzL
ybLU3zdw5vTp0NNAVdX3173XUF+fmZVlNBoxVm02W9XJU1WnqoLnfFtb+/p164O3mn179jQ3NQXD
3U0bPvJ4vQBgt9vXr1vf0d6uXVO1NTXr162vOz90k9myeYvRaBwcHNR2+ud33m1ubMrJy9ULgihK
nZ0dhw4e6u7ufn/de9aY2OBwypXHj3vcnhGfQHd31/p163t7e6ThEB1jvHP7DqfDmV+YbzFbRFFq
bGzYs3vP5ClTYmNjQ4/vJ5s2nT93LjYu1mg0Mgwr+sXe3p5jR481NTaO40MmCIIgrg8OKdXV/sAc
zygpBEEQBEEQBEEQBHEnCA6eGpwH8EKAl5aWFvy3b/r0m9QCTFFYLwCikCgirXT18ivrdMDQoKrI
L6Kx6vkwQ2OeB5oGFSPRjwK3aPBDzNBYEABj5PMh5aq/LBiaCxODOip+pihVxwPDgKxQPu+Nfb4c
0xQgCgCQIl+0ZYpSBR1QNJJEJElXuVNMUVpHkKqCqvJVpy6qMCbuThzHabPVBmRZEsUxh1nW6XQM
w8iy7L+DjzjHcRzHXaaRDMPwPI8xliTp8lXCwc/kmrpM07R2Zx0xh+uFbXIcApAkSbrSPfBWoihK
p9MhhCRJCi0PvczKWnYoiuKYU4rSNM3z/OXXuUkoiuJ1PE3Rqqpe6ihTFLV4yZJ//smPjx45+jff
f/UyETvHcSzHIkCBQCBYCX152tTUADC+AbeDLdQ+5Bt1xSGEeB3P0MxlPpbxtVBVVb/ff6nOah8g
xiCJ4i0boPiG36xYjuU5XpZl8RK3Rw3DshzLUhSlKIooitdzAhAEQRDXJuQvssbBeAC48OgwIMBq
zuJZwRWkk2M810UQBEEQBEEQBEEQdw6u+IHgv2s3/gJCkl24VOWud87sm90s4i8GV18Hd3DUR1yl
q8ka7+RMN+iKHZFl+SoTpvHlr5dPMe+0TDdIVdURhaHXubKiKFe/wRtLVVWf13epV8MjIsxmc0RE
xIOPPCyK0pYtWy6fwI3jkGGMr38W6ms6IlcDY+z33chL+CpbeFvO+Rt+swpIgYB0hYceAEAOBOQr
PRtBEARB3HTo4n8hAKBuV1sIgiAIgiAIgiAI4ga5ME7V2OFu5C9/eQtbQxAEQRC3AkJo+vTpU6dP
i4uPS0tPO3Lo8LHDR253owiCIAiCuKEQGhqRiELXOV8PQRAEQRAEQRAEQdxpMMaXm3OXIAiCIP7C
mMMssXFxckA+sG//n95+p6+v78rvIQiCIAjiboIAYQAt2cWAIbSYlyAIgiAIgiAIgiDuLtp4zBgD
DM+uSsJdgiAI4q8Fxnh3xa4zVaclSers7HS7XLe7RQRBEARB3GiIAjV0Dg5Mwl2CIAiCIAiCIAji
bhb8q5aEuwRBEMRfn67Ozq7OztvdCoIgCIIgbho0/EcvAsAIqOFRmgmCIAiCIAiCIAjiroUQaCkv
xpi63Y0hCIIgCIIgCIIgiBuHGv47F5FklyAIgiAIgiAIgviLghC6ayp3MU0DQqAoCN+sv84xwwAA
kuUrrkkQ2tlywc08M28NmqEBg6Iot7sh40HTNEJIJhcvcRUoiqKoCw82qaqqquptbM9l3NVX5bhR
NE2hoQfQ/tr6ThAEQdxIKDgeMxmWmSAIgiAIgiAIgrjr4ZAQ6pLhrsrzmOeDPyKMQZIoUby5Tbs0
KTtbiY7mT52i7fbr2Q6mKHSJ7/F906YBxvr9+69n++OgmM2XegkFApTPdysbc1OpOh3mOABAkkT5
/cHlGCFsMGCKAozpu2EKTMyyvqlTgaaDS/iqKtpmu41NCmUymQDA4/GMGVmN+SrP84XFRQjgzOkz
Xq/3ljX1mjAMc6n4tqCoUMfzZ8+cdd3a88doNCI09neFGGO3230rG0NcpZTU1JjYmOCPHe0drS0t
t7E9l3LHXpWXOe2v8wJkWTYpOTkiMoJlGEDIYXfU1tTcsdE7QRAEcQdTAQAwwNDfvQju8qcwCYIg
CIIgCIIgCCLUJcNdMW+iWFYa/BHJCnK7ma5Orq6e7u259UWK7nvv9c6cFf3aP9EnT45vC3JUtJSd
xba0sO3tY64w+MO/RbJ8i8NdjJDr/geAHftAsPUNhoqdt7I9N5VYVCQWFgIA09xs3LYtuFw1mz3L
lqkmE4iSZd2fL5W+3zlUg8H28ne0px8wxwFFRf/otTsk3EUILV22TKfTVVRUtLe1jXjVZDbfc+9q
BPDJpo89Hk9wuSXM8uJLL1E09dMf/6S5qenWNvnKdDpdRlYmhVDVqaoxV3jyqSejo60//+nPXOfO
3cqGLVu5XMfpxnxJlKQNH3xwKxtDXA2apueUz5kzdy4AMAzDsMwXn352Z4a7ljDLiy+/RFHUT3/8
/zU3Nd/u5lywZPkyvU4Y86UNH34oXsdDYDNmzli2coU1JoahaQBUffZsQ3399WyQIAiC+CuF1eG6
XQUwRap2CYIgCIIgCIIgiLtaMJJFCDAGdJlw1z9jhu3730d+P2WzAcaAEBYE5PMZvv7a9MXnXE3N
Lc535bi4QGamqjeM7+2YYTzLl9uffTbqf//LpcLdQEYGCgSuo43jQlH2H/xAFQSqv3/0iNCG7dv/
ksJd37x59m89C6rK1dToDxyghsNFKTPT9uqrSkQk5XJZ3l8Pd3y4C7LMV1djlgEA36zZclIS1utv
d5uGYIwXLV1SWFRIMfS7b7094tWioqLvff+V/v7+jz/aFLqcpmiDwUAzNBNSjnznSE9P/+Hf/e2Z
02cuFe4mJifHxcUJwtiB083z3PPPWywWh8Mh+kfmT26Pm4S7dyCMcXd3d21NDQBkZWdlZWdFRkbe
7kaNTbsqKZqm77Cr8p7Vq8PDwwHAZDYJguDz+Vwulzad4WeffjruLDY6Ovp7r37fZDZXnTrl8/kw
xl1dXSoptCIIgiDGAWMAFbAKgAErAIgMy0wQBEEQBEEQBEHczTAAQkh7jhngMuHu0MttbaZNm0CR
gaaVaKtv5kzn00/LKROi//Efr3N45FsM87y3vFy1Wm93Qy7J9Nmn9MDAiIVcff1tacxNRQ8MyMnJ
UlaW7sQJbYl/6lS4q2ZLpd3uqH/5ufbvnt/8Vk5Kur3tGWHXzp0FhQVzysvX/3ld4OLnFZYsXwoA
e3btHjHKq9Pp3PTRRwhRA6NOwjtBdm5Obl7emdNnbndDxnZg34GG+roRC0m54Z1JVdXNX3+z+etv
AOCJp5/KLyi43S26pKGrEqjBgcHb3ZaLfPbJp3q9AABz58/LLyhobmrauWMnVlUA8IeMt3+tSieX
JSYl7du779//7RcOh0NVVYwxmUibIAiCGA+sDP+fAlBBBUDU7W4TQRAEQRAEQRAEQYxT6Cx5WsR7
hXCX7Wg3v78eiSIghGmarzrV+4v/4y2fK06apK+oCF0TUxQ2GFSdDhBCsow8njEn6FV1OiwImGGG
VvN6qbG+C8YIYaNR1ekAgPL5UMj4sddKNRoBQDUYME1jAFWn05YAAKgqNdZEhphlVZMJMwxSVeR2
j91CmlaNRsxxgBAKBCi3+zqrfk2ffMI2NIzazVAIr+oEYGjk96tmM6Zpyu2mfD5Vr1cNRqTIlMOB
FOXCmxDCej3W6TBNA8YoEKA8nks1D1OUajRingeEQFUpn48a69NWdTqs12OGAQAky8jvRz7f+Kq3
+ePHfbNn+0tLtXBX1ek8ixbrjhzxrFw1sm0cpwp6zLGAEFIU5Pcjj2fEU/eqoAcKIZ8PMFZNJm2o
ZMrrHdELzDCY50FRLprrl6KwTgcAI/qCeV4VBMwO79fnG/M8uWNVHq/0eDwpKSkxMTHtIXXqBoNh
ytSpkiRt3bI1uJDlOI5jAWDLN5sxgOey08QyDGMwGlmWxRgHJMntcavKUJm1oNdTCPl8vktNkMkw
DK/j5YB89amnoNdTFAIAjueH936hdt/r8eJRZyBCyGg08jyPAfw+n2eskxkhJOj1Op2OoihVUbxe
7/UkUgBwYN++nTt2jFgYbJvWca/HqzcYBJ1OFEW3203TtMlspinK7XaP2DvP8zpB0OYclWXZ7/Nd
pnmCIAiCQNE0xqokSl6vVwm5FQQboDcYOJZFCCmKIkmS1+u91nlMEUKCIKgYK7JsMpkAIZfTGQgE
jEajTqcLyAGnwxl6OCiK0uv1HM9R1FDbRk8CzTAMz/OSJAUCAUEQBL1AUbQkii6Xa8SR1ev1ADDi
iQSe52mGEf3+0C7TNC3o9RzHURSFVVUURY/HM/o8ubHGbB7LsizHSZIkX3zvpWnaYDCwHEchpKiK
dtRGfDIcx7HaVfn15a5Kg8GgqqrP52MYxmg0MgyjqqrH4xnzEmNY1mg0MDSjqKrH7ZYkSRAEjPE4
Tv5PP/5Ym3M3MSkpv6CgqbFpw/sfaCls6LEQ9HoE4PP5AGDoqsTY5/ONPo4MywBAWno6ALQ0N3u8
Hm2JIiujw93gOa8qis/n8/0FTUtPEARB3DBaza42LDMAACZz7hIEQRAEQRAEQRB3Pzw8MBW6QrgL
GJCqanOgIkUxbNvGfq8tkJHpnT07NNzFFCUWFYt5eUpUFGYYyutl2lp1J06wHR0X1mFZKTdXSk2V
Y2JVowEQotwepqtTd+YM29h40T5pWsrJEYsnydFRAMB09+iOHhl3X90rVgBFqzynWK0A4C+bjA1D
4S7ldBq2bB4xGLKq1/umTpWyc1SDnpIktq5ev3fPiKRQ1ev9kyYFMrOU8DBMUbTTxTQ36U6cYPr7
x91OUFU0KpXRYIbxT50qx8WxDfX+klIsCGxjo37fXu+cOYG0dOTz6Y4eEY4d01ZWLBZx4kQ5MVGJ
ilYFHVJVyuFkW1t0J0/So5qHWdZXWhrIzFIiIjDLItHPdHdzdfX8qZOhYWcgIcFfUionxKsGIwCm
PF66r0934gTXOCqNvgrc+fNqVKR/6jT81ltIVcXCwkBysuXtt0aEu1JampSVJcfFq2YzZlnK76N7
e7lz5/iaGiRJwdW8s2erJpN+7x45NlYsKlKiokDFTFeXcOgQ23phHk05Mck3ZQrT1anfu/fCR242
e8vLkSzrd+9Gw/GJlJUtZWTIcbGqyYwZhvJ66N4+vqaaq6291AG60/T19Xa0taelp2dmZYWGu1k5
2RaLpbW1taHuQplpZmZmTm6O9m9FUXZX7LJfoig/MjKyoLAwKTnJZDIpquqw2xsbGs6cPqNFNZMn
T46Iity3Z29/X9+Yb09NSy0oLGyob6g6deoqw7bZc2YbjUYAyJuYBwATJkxYsnRp8NWvv/xqRC5F
UdTE/PyJ+Xnh4ZEY496+nsMHD3eG3IU02TnZObm50dHRLMuKktjZ0XX2zJnrmXVVVdXRkWpQUnLy
pJJJlcePl5SWxcRYBwcG9+zZPSElJW/iRI7l6urO7929R5IkAKBpOis7K3lCijUm2mAwUgh5PN7e
3p7ampqmxpETIVM0lZmZlZWVZY2x8jpelhWH3dbc3HLsyNERAdukScUpqWlms4mmaVEUbTZba0vr
icrKa6qJ1Ol0c+bOVWTZ4/Xk5eUhhOrOnz9/vm76jOnRVqvb7Tp04FD98HkVFRWVlZ0dFx8XHhHO
cZwsK3abrbWlpfpstdPpDG4zPjGhtLSs/vz5QdvgpJKS2LhYluVsNtuZqtNnTp8O3fuCxYtURfnq
iy9DFxYWFyckxB8+dLirs1NbYo2JycrOiouLs4SFcRwbCMi2wcGW5ubq6mqPe/xPCF3RgkULANA3
X30d+pGmZ2Tk5OacOXOm/vyFy43n+UklJalpaWaLmaFpURLtNnt7W/uxo0dD35uZmZl9FVflwsWL
3G7Pnl27SspKs7KzjQaDJEktzS1HDh8O/ZwBQK/XTyotycjIEPR6SZIaGxqPHj48d/48r8dTsbNi
9JYvLxhFaxcyxlhRlNGXwOw5s1mWObDvQGJSYt7EieEREYqi9HR3Hz1ypKuzK7ha8aRJCYkJAJCV
nQ0AE1IuXOa9vX0H9+8PbpmiqLS0tNy8PGusled50S/29vSePn26pbn5Zuf3BEEQxF1maFhm8tuB
IAiCIAiCIAiC+MswcrKhK4W7I94ty/TAQCAjUwkWvwJghvFNm2Z/4cVAUhLl8SBRxDoec7x+z56w
1//IdA19h6uYzfbnX5AyMkBRkCQBYKwTMMvqKivD/+e3bHNzcINSZqbte6+I+fmU04m8XuA4f1GR
YrGMr8eu1fcCy2Kalq1WoCj/tGlSbq72Et3RYdixfcSAwN5585yPPqrqDZjnlchIyuEAVTVu3RJc
QeU4z+IljqefVi0W5HYjSVINBmAY06ZN5vfW0Rd/pX5DYJZ1r17tnTlTOHpUjo6SE5NAUeS4OO/8
eZjl5IQE38wZ/AsvaAm0lJMz+I//pLIsCgRQIAAUhfUCYDBs3mz5859C813VaPTMm+985mk5IlI7
cEBTKq+j7fa4p55Ew7VfqtnsePoZz5IlyOelPB6kYpXnMc+bN2wYX7iLFNm4aZPth3+rWK10X5/7
3nvpwUGupmbEaq4HHvTOnweAkCiComCex4LAdHWF/e53+v37Lqy2Zk0gNRV0vHfOHNkaAwiUiEhg
WenrryP+6z8pl0tbTczLG/zBD/T794WGu0pUlP35Fyifjz95khoOd51r1/qmTcMAlCiCqmBehwWB
a2gI+5//0Z2oHEd/bz2Hw9nQ0JCZnZWVnbWroiIYexQVF2OMa2tqQzPR7JzslfesAoDYuDg5EKg+
Wz1mjGSxWFbfd9/K1auwonq8XoxVg8Ho83re+/N727ZuVRSlbMrkxUuX2AdtuyrGzormlJc/tOaR
de/+6dTJk1fZkbnz5sXExQKANsFnSmrKinsuPAGwc/uOEeFuVnb25KlToqOjEELhEREsyyYlJb3x
h9eDlYI0Tefm5T3z3LPp6el+n9cvSgzLCDqh6tSpt99863ry3cvIy8t94eWX9uzaPWHChMioSJPZ
bI2NyS8oYFk2Ni7W5XQ21jc0NTUBgKAXHnvi8cysbFVVJEnCGHie53ju7Jmzb/7x9ZaQmyRFUUVF
Rc8891xycrIoin6/H2Ms6Hi/KH73xZddw6c9TdMLFi1c++ijgl5wO52yLDMsp9PxA/0Df/+3tc5r
uVmZTKbHn3ycZbnOzg6L2ZKQmOD2ePbu3pNfkC8I+ujoqMzMrP/9s59rKfXkKVMef+pJhmUkUZJl
mWZoQRAUWd608aOvvvgyeDiys7Off+mFfbv3ujyusrIyVcUmk9FgNNafr/v///Xf2tvagnt//sUX
JEkaEe4uXrp49pw5fb19wXB3Tvmc+x98kKZpURIVWWEYRhCEQEBav27dlm+2SCEPhdxYzz3/PCC0
c/uO0IB28pTJjz35xJt/fD0Y7lI0PXf+/CeeesJgMDhdLiUg0wwjCDq3x1P7vZrQ6y47N+eiq/LM
2TGvymef/7ZtcNDv8z76xON6vYHjuPCIcL/PpxN0X37+RXA1hmHmLZj/2BOPG41Gu92hyPKs2bNN
JuOLL7/U2to6jnD3Kq15dK3FYqEoet78+ZGRkYhCYeHhLMMkT5jw5utv+LxeAEAIlZSWlk2dDAAx
MTEAkJWdHR4RoW2hprr66OHDwXA3PT392y++kJ2b4/V6/T6/3qDXC0Ll8eNvvf5my825eAmCIIi7
FVYAMGDtaSQKEAK4tjFLCIIgCIIgCIIgCOIOhDHWRlW8tnBXjo+XE5NAlvnq6uBCMS9v4LUfKWaz
oaJCV3mcstnkuDjv/PnONWvo/v6wP/x+qN4RIcpuFw4cYBsbma5OAJATE33TpruXL0dyIPJnP9PG
y1X1escz3/LOmqWvqNDv2UP39wWyslyr7lGio8fXVfPGjZimMM871z4aMBqF/fu4s2e1lyiXa0Sy
i1nWuWYNX1XFna0GlvXNmO5esdLxzDOGip3asMYYId/06bZXX4VAQL9tG3+6inK5AxnpnkWLHE8/
zba3Gb/4YoxGXIVAUtLop8uZ7m7K4wGEVKNRDQsDvz/s97/3LljoeuAB+3PPWd55h68+6/j2t/1T
pl6YwpammbY2tqmJbWygBwcxxwXS0z0LF9lfeonp7DBt3KjVYWOK8s6e3f+Tn9BOp37PHt2pk9Tg
IDYYxIkT/SWlQNPBNvgnlbgeeojp7DRt+ohtbESyLMfFSdk5tM02vp4CgLD/gO37snvlSuOXX/qm
TOVqa4MPAVygKrqTJ5nGJratDXk9SkyMWFTkXr7C/vLLfFUV7RrKpVSTSbZanQ8/zNY3mCo+pAcH
pPx858OPuFeuMGz+Rjh6VFsN87waHo6Npot2QTNqWBhwXGh/kSjqjh9jG5uYjnbk98txceKkSZ4l
S/DLL8e8+irludyoxXcIORA4deLk8pUrsrKzGYbRpt3leT4nN0dV1ZqzZ0Mn4q2prtHq8F559VWD
Xs+EfBRBFEUtXrpkzWNrO9o7DuzbX3f+PADk5ObMXTD/W99+trmpqba29tTJkw+teaSwuGjMcJfj
uPTMTKPRGFqxd0Xbtm7TKndLykrj4+MbGhq2br4woPTost0Vq1bU19Xv27PHYbdPzM+/9/77Fi9d
unXzltqaWm2dxKTEV37wampa6oH9ByqPHRvoH7CEhc2cNXPh4kVer/d/fv2bMYdxvqJoa3RKasqI
hQ67w2azAQDH8xaLJb8g/6033oyMinrx5ZceWbtm5/YdO7Ztnzx1yoMPPzSptFQLdxFCLpfr2NEj
Lc2tPd1diqrGxcWVlJaWzy3HqvJv//KvwS4nJiU+/9KLEydO3L9vf2VlZW93DyBIS0vNLyhkmAt3
9dj4uJe+8zJg+OrLL2rOVns9XnNYWHpGWnh4xLVWslA0ZTKZzRbz7l0VZ6pOP/jII5OnTJ49Z/af
3/1TQJK+9fy3p0ybao2J0RJZhmWamhpbW1pbm1tcLpdOELKzsxcuWfTMs99qaGioPHZc2ybHcRaL
ZfLUyfV19du2bOlo74yKjlq8dGnp5LJVq1f94X9+H6wQtVgso6NZg8EQFhamDV+sYVm2rq6utaWl
rbXV7XYbjcac3Nwly5Y+/a1v1VbX1tWNnBf5RrGEhQEAoi56eEoQhLCwMJ1OF1wSExPzvVdfoWn6
6y+/OnP6jNfjNpnMaRnpcfFxIwpPq89Wa4nmKz941aDX08wYVyUAWCwWo8Hw+JNP1tfXn66qQogq
KStZsWLFg488vHXzhTA7Oyf7+RdfoChq+9btVVVVgNXSKZMfXrsmMirK7nDc2I8ilMlkslqtDzz0
YFNj0+5du5wOR15+/n3337902dJtW7edq6kBAIzxkSNHtAEG5i2YFxUVVVNds2/P0CM4/f19wbyc
YZi1jz86c/asY0eP7q7Y3dPdlZCUOGv27AWLFnm93l//16+8d9Xg+QRBEMTNhdWh+YgwHn64eeQz
zgRBEARBEARBEARx97joC2SMrzTnrqrXS2lpSJKAohRLmHfBfNlq5c6fNwxPMIl1OtfDDwdSU00f
fBDx3/81FPhRFH/6tFhU7F61yvzeOtrhAADK6bS88Trd10cH4xOE+MpKKSvLvXSZ5fU3uKZGABAL
Cz3LlrHt7RG//CXX0gwAeP9+yuHs/+lPx9dj0ycfA4BqMHjnL5DT04WDBw1bt15qZczzXE1N2G9+
ozVSOHjAX1omFhbKsXFsWysAqOHhjpdeUsLCwn/1K9MH79NeLwDgfXu52tqeX//GufZRw1dfoWuc
zFLjfPQxyu0asTDsrbf44PCkGBu/+spQUUF5PO5ly2iPx7xxA9PbK+Xk+kvLpIxMLdzlamsj/88v
6M5OavibfcwwtN3en5/vLZ9r/Pxz5PMBADYaXWvXYqPR9M475nffCRYc63fsEAsKLxr3eOZMrNcb
Nn9jefvtYNdUvR6HhBbXirbb+Koq10MPM729SmSkfveu0RMbmzZtop1OenAwuETZsUNOSvZNmSLm
5+sPHriwKstSHk/EL3/JdnUCgLpvn5SZ5Z03T8rNDYa7V8/0wfu03U4H6+QQknfsCKSm+mbNkrKy
7pbi3crjxyVJSs/I0Ov1DocDACwWS1JyciAQqB5+uEFTW1NTW1MDAC+8+CITMqNtqLj4+Ecff1yW
5Tf+8MejR45oodGB/fsHBwe/+/1X1j7+2E/++ccnjlf6fb7iScXBd8XExtIU1dnZCQAGgyE2NlaW
5Yb6+qvvRcXwfYZlmWXLlzU3NX/x2WeXWpmmaYfD+bvf/ravtw8Ajhw+kpObM6m0NC09PRjuzps/
Py8v78D+/b/7zW+7h58nOHv6jMUA6AAAIABJREFUdGZWZvncuZ998un5c+euvnlB8xcumJifP2Lh
nl27tm3dduHH3Xu2bdlKM/QDDz6YlJz0/nvv1VTXnD175v4HH8jNGxpLwOf1rV+3fmCg3+u5EFNV
Hq9MS09fsGjRu2+/2zg8LfeKVavyCwqOHj7y21//pqO9XYsG9+7ek5KWGjoFaV5eXmRk5KEDB1//
/R+DiX7FDiYqOmp8SZjdbv/mq6+bGpsSEhPLJpc1NDRs/vobRVEWLFpUNKnYarVq4e7RI0ePHjna
19sbrLncv3evFs5NnjIlGO5qOI775OOP9+8dKscXRTEzK7OktFQQhGvN2vfu2bNj+/b+vv5gKrx/
7z6z2bR85cpJZaU3L9y9SlnZWVFRUZXHjr/5+hve4a4xFRVWq3VET4NX5YsvvcgYxr4qNXqDob29
/fXf/0Grwz525EjJpJKMjIyEhATtiQGaplffd1+01frxRx/94Xe/054POHHixI9/+pPMzMyb1NMg
luNcLtfvfvPb3t5eADhy5Ehubq42QPS54dEajh89qp0QyROSZsycef7cuTEv85SUlNnl5S6n6/Xf
/7H67FlVVSmKOn3q9L/9+y+Wr1ixfcu248ePj34XQRAE8dcKD//ZiwEA0Ii/ggmCIAiCIAiCIAji
7naFcDeQkmJ/6WWkKCpDy8kTAomJ/KmTlvfWByfTVcLD/SWlKBAw7Nw5NEAxAABwjY3cuXP+sjI5
IWEo3JUkrrlZ1evluDhVpwOaAQphlqOcDiUmRomNgaZGAPDMn491Ot2hQ1qyCwBIkgxffjHwwx/i
8Y7MfA0wNm3YGIyfme5utq5OTkwMpEzQwl0pM1PMyqZ7evR79yCEgv3VnTjBtrX5J01SoqKY3t5x
7FlOSkKjAk7VYAz9kenrAwDK7ab8fhSQtACSttsBYyUiXFuHHhykBwcViyVgtWKOB5oGBJTDAQCK
1Yo5Dnw+AJDj48X8AuTxGDd9FDqUNOXzCUcOX9wIFTDGOp0cH0/b7cjrRapKeb1wHWVSlN+vO37M
u2iRa/W9yO8Xdu8evQ7X3Iw5TrbGYL2AGQYoCgCY9naYPj2Qlweh4S7G+u3btWQXACivl6887l2w
QI5PGEfbuOZmleflmBhVECC4354esZgOZGTcLeFuW1tb/fm6nLzclNSUUydPAYA1xhoTEzPQ39/Q
cM2Dac+YOSMuPm7v7j0nKisZhgnWhp6orHQ6HDNnzTIYDIODg60tLWnp6Waz2el0CoKw9rG1PMf/
+le/9no8JrM5JiZmYGCgc3gE3RsOY7xz23Yt2QUAj8dz8sTJsilTEhMTtSUURU2dNo1hmV0VFU6H
Q6/Xa8t7e3tramoWLV6ckpoyvnA3OjpaN+pZh7Dw8NAfmxsbAUCRlcGBgaTkpNaWVgAY6B8IBAJR
w8MSyLLc1tqqE4SYmBhep6NpGiGk0+kcTscEZkJsXJwW7gqCsHzFcozxm398PXTsYlVVG+svPrgY
Y4wZhklISLDZbB6PR5ZlWZa7u7rH0U0A8Pt8WgypjRLsdDglSVJV1e120TRtGL4fdnd1URRltlgM
BgPLshRFAUBXZydCKDk5ecQ2u7u7T524MFJ3Q329z+szmUwGg+Faw932tnaapsPCwvR6PTO83+am
Zoqi0jPSx9flGwnD0OGIj+/r63O73drhuJ6LAmP84fsfBEfYHhgYqKmpSZqQnJKWqoW7WtW43+/f
v3dfsPLbbrPv2b1nxsyZ19+nKzZv+9ZtvcO/Ez1uz8mTJ8umTE5IjL/WTc1buMBkMm3fui04H7Oq
qrU1NadOnFyybOnU6dNIuEsQBEFcgBUAChAM5boYSOUuQRAEQRAEQRAEcZfT/rDF2sjMVwh3Mcsq
YWGAVczrZKsVSZJw/Li+YicM10UpJpMSG4sBxLy8wHCIMrwjBBQlZWRqYzhjhAJpaf4pUwJpaUp4
uMrxQCFgWDk2DhDCPK+9KZCeAQBsU2Polmi3m2tpEQsLb0T/LysQ4JqbLtq1ywUA6vAcw3JyMtbp
ACHvrNnBWWmHIAQ0HUhNHV+4a/7Tn5iukV/xs/UXlZqhgAQASFFAUUDFSJYBAMkBLXzV1sE07S+e
JBYXBZInqCYTZllAoBpNAIBDxh+WMrNUo5GvOsVeKVcQDux333OP6777VYOBa2hgurvp3l62uZke
aw7IqyccOgSS5Js2zfjVl2xvL2bZESsoERG+mTPF7BwlKgrr9ZhCACCnpgFA6JTPAAAYs+3toQu0
5wmwIIyjYXJMjG/GDCkzS4mMVAUBKAQAUnYOAKjDceBd4csvvsidmLdg0SIt3J1YUGAwGLZ8vdnt
uuaRpYuKiwCApqllK5aHLjeZTADAskxkVJTb7T5ddTo7Jyc3L+/woUOpaWn33ncfx/Nbtmw5WXki
Lj7OEmbZ+8WemzfvqaqqbSFJJwBoJcvBEJeiqNT0NACIT4gf0RG9Xo8QShhxB7tq27ZsO3Vq5ETC
7W0XnZPBglrtExCH7x6BQCA0GE5KTi4tK0tJnRAWFs7xPEJA00x8fDwA8MM3yfj4+Girtaurq2bU
TNUj1NbUNjU25U2c+MxzzzbUN3R3dQ0M9Le3d/R0jzPcVRRVUVSt2QCgKIqKsdYphBDDDv1CYRim
bHJZbt7E2LhYg8GgjSocFhYGADphZArucrlCQ1xRFBVFoWk6uLWrx7Ls1GnTcvJyrVar3mCgaQoA
IiMiAUAv3P6Lt66urqG+PiMr8+lnn6k7X9fV1TXQ39/R0XFNY5WPIMtyc9NFv7OcLicAGIdvkmHh
4QaD0ev19vcPXNSY87eijnmMq9LuAADh2g9HfkE+AIwo+8YYNzc3Y4wTk5MQQnjU1AYEQRDEXylV
AYQBEAACrAIgQNTtbhNBEARBEARBEARBjBPGADA02y5czbDM3LlzUT/7KQoEFIvFu3Ch6/77nQ8+
JBw4oDt4CGmDW+l0ql4PGLtXrx4xZSxmGKatDdNDf0jL8fG2l1/2zSlnuroouw1JAcAYGAa0FSga
AICmsdEAGNPukfkTbR//DK9Xj5IkdPEsvEOdooc+KMVsBppWoqJcDz88sr8sy7S1YeaaAwmNcOQw
d8URa4d3GDyAF36kaQDAFOUvLh748Y/lyEimu5tyuZAiAwbMcwAAFAXDx162RgMA23rR1+5jN+zo
UfOGDd45c3yz53jnzQeaZjo69Nu3G7Zu4Zqbr7GXF3B1dcKRI0pkpOnTT0e/qhqNzocedj7xOOX2
0AMDyO8DFQOAqmXAF88Li1QVhUwiqy0ZvdrVUMxm5xNPOB94kLbZ6MFB5PcPXTTaYb32Dd5G+/fu
e/l73501e9Zvf/VrSZJmzpwpy/Lmb74Zx6Yio6IwQFZ2dtzFxdAIgV8U3W43TdMAUFtToyhKSWnJ
4UOH5i9Y0NvbFxEZUTZ58qkTJwsKC2ma3l0xRon2jaKqauDi00Abm5cePmo0TZtMJozxwkWLRmRA
NEN3dnQExxC+Vudqa4OjCl+6eTi0VRdSKIyDLbTGWJ965qm58+Z3d3c7HHZJCmCs0jRNUxQAaP8H
gPDwcABw2O0qvsII8G1tbW+98cYDDz04sSC/eFIxy3Iut+vwwcPbt26tqa4e8XFdE6xeaD8Mz+Ku
VcqyLDttxvTvvvIKz3N9ff0+r1dRFAxYC6fpUReRJEoXZXLa6IkIUdf4JSzP83PKy194+UWKovr7
+30+n3ZAOZ4bc7+3XmdHxx//8Ic1a9dm5+TkFxayLOtxu48cObJ9y9azZ86O77mHQCAgj5g5/uLT
nuc5hmVkWR6xfVfIgA03j6qqcuByzbt6kZGRADAwMDBiucftAQBBEGiaHvFREARBEH+1EFYAVIwp
QDQABqDIuMwEQRAEQRAEQRDE3e/C37ZXSCIpv59tb0eiyAJw9fWYYRzPfdv52OP8qSrk1WqtEKgq
kiTzn/8MY801yw9P8Om+Z7Vn6TLhwAHTpk3cuVrK5QIVqxZz3y9+IU3MD9YTgyRBMEsLbTIzsrLz
9sAYAJi2NvMHH8BYRUJsS8stb9MFWK93fPt5KSfH9OGHxm++Ydpakd8PKpbycrvfejt0TW1W3asp
RaV8vrDf/044fEjMylKsMXJCglhQYPv+9+WkxOh//udxNxXJcsR//IccGcmfHFnyCAC+KVPtL73E
trSY31vHV52mBwdAVgDA/tJLzpSUcQ2rhmHUlzpaNXAob3m544knuXPnzO+v586epW02UFQAGPzH
f3AnJFxiv3foV0V2u72+rq6ouHhCSkp/f1/exIldnZ011dWXWv9S3UAIaXnk0SNHq06dGr2CoiqD
AwMA0Nba5nG78yZONJqMc+bOObh/f2paWm5enk6nKyktdbvdp6uqbkjXxgdRlKqqCKGNH25U1TFy
3PrbPSfrwkWLFi9berLyxOeffFZXV+d2u1VVEQT9az/+UWlERPD0C8gyALAsdzXb3Ll9R3Nj08SC
gphYq9VqTc/IuO+B+woLC37+059d0/zHVwcBQGxc3Hde+V54RPimjRsP7j/Y29MjSRIGPHXatJ/8
/GdofFfvWDdbiroo/Z2QkvKDv/uhoigffbjh2LFj/b19UkACgPK5c//htdzgM00jtjuOxozZvNHb
p8d60GfPrt1tLW0FhQUxsTFWqzU1LW3VPfcUFxf//Cc/qx2rDvv62yfLsqIoFELMxe3huDvjV+pV
CwRkGI7qQzEMDQCqqpKyXYIgCCKIwgoGamjeXUQBYFDJA0AEQRAEQRAEQRDEXwKEAOMrhbuhKJ/P
vGGDe8VK38yZ/smT9bt3AQDyeiiXCzOMcctmelRJTSjPwoXAsuG//52usjL4lbrMc6reAABY+8Zf
VZnOLkBIGZ6EUoNpWo6Lu7b+jYCxlg9c57e/9MAAyDJtt5s+/YQaHmf1zqEajWJeHgBY3nwzOGkx
AIiCABf3nW1uBlmWsrNVQbhiRyi/Xzh4UHf4sKrTqWaLd8GCgdde8yxdFvWzn6HrKP7jz57hL/GS
Z9FCrNcbNm82f/RR8KEBPHxi4DFzmsvTZg5mmKETX9ugoB/xGIF79WosCKaNG0yffnphNYpSwiMu
uV9ZBgCVu1RXbptAIFB95mxRcXFxSfFAX7/BaNi+bdtlKttkWQ4WX4bCGHe0d5SWlbU0N3+y6ePL
7LGnp8dut8fGxRUVF8fFx58+ffrcuXNPPfNMUnJSdnZ2Q0OD2+UaX1+0dHnsfO6qyYHA4OCg1Wrd
v3dv93jHJb6p5i9cyLHc22+8dfLEiWBShcPBaDACQDAW7enpFkUxOjrKYrFog9xehqqq9fX19fX1
PM/rDfrMzMy/+bu/zcjKzC/IvwnhLgBA8oRkq9Xa1tq64f0PbbYLIy5owyOP7yAqikJTFEVRasgj
RGazOXSdnNwci8Vy+NChjzZsDB3nOTY27lL71S4HZrzDLQRJkiQIAk1dVI0affFvsSEYmhobmxob
OZ7T6w2pqal/83c/TEtPLyktGTPcvdRVefWcTpfX642IiAiPuGgS6OQJE8a9zduitaUlNy83LS1t
xPKo6CiEkN1mG3flPUEQBPEXCCvoQrkuwoDhSuOdEARBEARBEARBEMTdAiG4tq+M2ZYW8wcfqCxr
f/55JSICACibjW1qxDzvmz5jdPSlWCzBhVqRKNPdfSEzQ8hfWKjExgKC4JSrumPHAGN/YZEaMg+l
lJ0dSEiA66GqSBIBQDWZrmczXF0dbbfLiYlahhoK07QSHj7mu24dRGGOAwDacWFCXMzz/ilTAACz
bHBYZraujunpkRMS/KWl+OLkQImICD2UqtGo/YhUlfZ62e4u08ebKFFUDQZtXzeDajAAAG0bDC0H
D6Sni8XFAICvfb5G5PWiQEANC1ND5uuVsrLUi+fl1V6l+/tDS/qknBwpJwcAsG7kdKEAQPf1A4CU
nTWeyPlmUlW1urpaluWCwsJZc+YEAoFTYxVJB/X09DAsGxsfP/qlQwcOSpJUOrlsdF7FcVz48Gk/
ODjY091jMpkWL1ni9/trqmsOHjjA83z5vHl6g/4yRcNXpGV1kZGR15Pvqqp69vQZACifN5cdNcez
0Wi8/pDvOun1AgD09vQEk12EUF5eblxCPACww6WWvT291WfOmMzmJUuXjpjCVhucdswfRVG0DdqO
HT3W1NRE07T+pk0gzbIsTdOSJPlCnhoJCw+bOn0aAHDjumk4nU6O5+PiLzziE5+QkJSUFLqOtmWf
1xc6/nC0NXrGrBkAoBvr4tWmoY2Lj7+e9BQA+np7GYaZkJISXBIRGZE3ceKI1XQ6XfBwSKJkt9lO
nTx5/tw5iqIMI+YRH9bTfcmr8irZ7fbW5ha9Xl9UXBzspiAI06ZPH/c2b4sD+w8oijJ12rTwkN+z
ZrM5N28ixvjM6TO3sW0EQRDEnQaBirCCsEphBWEFqTK6U8faIQiCIAiCIAiCIIirETLhLgBcY7gL
AKaPN7EtLf6SEu+ccowQbbcbtm4FAOeaNb4ZM5SoKMxxql4fSEjwzp7tXrUqmP9x584Bxs4HH5Tj
4zHLKhaLf/Jk59pHVZbFgLBp6KttYe8epr1NLCnxLFumREZing+kpjqeevo6pztFksR0dQFF+SdP
kdLT5ehoOSpKCQ+/1r/y2cZG/Y4dSnS08/HH/ZMmKWFhmGVVozGQkuKZv8C9YsW4Wyjm5PiLi0f8
J2Vm4mtKHUQ/09MDAN7585WwMMxxclSUZ+FC39RpoKpYr8fB+UdtNqFiJyiK45ln/FOmKOHhmOdV
k0mcONHx2GOhqa133jzfnDmBpCRVr8csq0RE+GbPxjTNtLUhv3/c/b08rroGVNU3c5aUkaHqdKog
SDk5jmefUw0GwFgZsyTuspiubuR2y/Hx3lmzFLNZMZv9RUWeRYvg4jyPP3kKMPYuXhxISVF5XjUY
xIIC+0svqYIAGGv1uyPwVadAFD2LF/uLiwPx8YG4eOXigsLbqLamxufz5eTklJaVOp3OxvqGy6y8
b+9eAFiydElObk5sXFxMbKxx+EmII4cPnzheOTE//5G1azIyM/V6PcuyZrM5PSNj4aJFc+bN1VaT
RLG2psZgNEyZNrX+fF13d5dt0NbQUL902TJFUerPj3/Q467OTr/fnzsxr6CwMDo6OjIychxBr6qq
FTt2ut3uVatXz5ozOyo6muM4nuetMdbSsrKly5dHRIxxfK9GUnJyfkHB6P+uNcg8V3sOY3zPfffG
xcexLGs0mQqLix5eu1aLok3Dh0NV1Q0ffuiw2594+qn5CxZYrVadTicIQmJS4qIli0NT25zc3PkL
FqRnpBtNRpZl9Xp93sSJMTExfr+/p7tnfJ29osGBQZ/XGxUVXVJaajAYOJ63xliXr1ielJyMVdVi
sYxjmw119RRF3XPvvdFWqyAIE1JS1j72qPHiQLS7q1tRlOSUCfkFBXq9nuf5uPj41ffeGxEZiTEO
H+vJm9qaGqfTmZc/cfqMGQkJCTGxsZGRkeMIeo8dPYYQemjNw0nJyYJeiImNWb5yZUTkyNMpMytr
waKFGZmZJrOJZVlBr8/OzY1PSJBlubOjY8wt7730VXmVRL9/25YtoiguWrJ4dvmchMTE+ISE8vnz
8gvyAcY5lkVObq52hmuXTFh4+MT8fG3JzZvb+PDBg62trVnZWStWrYyOjmY5zhoTs+KeVTk5OZ0d
nYcPHb5J+yUIgiDuRhRWEagUqBRWEVYQKAhI5S5BEARBEARBEATxF+LahmXW0P39hh3b7WnPu++9
V7+rgrbbTR9/LE6a5C8qGnjtNcPWrUx7B9bxgYwM78xZ1OCg6ZNPQBQBwPTFF9L/Y+++46O4zsXh
P2fa9qZeUe8dhEAgECCaKe69xnFsx45Tb9rNe2tu7v2l3LRrJ/aNHZfYuIBtjG16EU0UAUJdQgWV
VS+7Wm3fKef9Y9CyqiBsx+We74c/pJmzM2fqinnmeU52tu2xxyS9gWtokIKDXatKASFlTY2nqEiI
iMAIIYzZgQH9tm22R742+tN/5BfEMf393rw8X3o6197uS0294U1FkqSqqHCVrHCvWIE5lu3tA0mi
LaO6N9+cV2FhyuMx/uk5ISrKvWSpEBOjPnyYGRoWDXpferqnaAnb0mJ4440b66HtySenx0q55ubg
//f/5tE9h0N97KgQHm795lNCeAQ9PCTExLjWrGHb2kS9XjKZxKAgOfpLeb36d9/lk5O92TmjP/mp
+tAhZnhI0undxcW+jAzjX//qX6ZzTZkvK0t59gx36RLlcvHRMc4tW6ixMe1HH6LPrAym5sAB14YN
rpUrQRJVZ84ARbkLF/uSkjQHD9o3b+bj4jDHoYD8vGtiu7qU58+7S0vHvvmUEB0DCDxFRYAQCijf
CgC6D3a6S0ocW7ZgmlFeOI8VCndxsRATqz5+3Ll+vRAbixkGTa5srLxwQXnhvDc7x/KjHyuamgBj
5blK7f79n86O+GT6evs6OjpycnIQQg319X19fXM03rd7z8rSlYVFi9VqVWdnlyRK585Vnjh2HAAc
DsdLf3nx29/77tZbb4lLSDhfWelyuUwmU1Z2dmZW5skTJ3dNLOTC+QsPPvKw0Wjcv3evKIgAcL7y
/NLiYqfDYTabb3hDenv7qi5cyM7OefqZb9XX1wu8AAB/e/VVl8s1r+VUVFQcPnCwaOmSp5955mh5
eY/ZTFHUgri4oiVLEOAL58/D0NANdG/z1i0rSldOn/6zn/x0cD71n/ft2Zudk33/gw/odNqmxia9
3lC8vFipUNbV1BQtXRoeHo4QkpN6z5w6c2Df/lVla5586qmU1FRzt5miUFp6+sLCRfIhk6Wkpjz6
jcdqa2pqa2psVptGo1m+siQyKqrqwoVPkkg9t66urqoLFxYXFT32xDcO7j/gdnvi4uMWFy0+eeJE
2dqykNAQrVbrcDjmtcwTx49nZmXddsftLMv29/WlpqUlJCa2t7Vn5+b42zQ3NdVW16RnZnzjySeO
lZf7fL7klOS8/Px9u/dsveXmiMgItVo95YQxd3cfPniodFXpD3/8o8rKSq/HOzg4uPO99+Z7Xh3Y
u2/FypVr163jfXxTU2NkZFRmVta5ynNla8sCmyUmJT71zLfqampra2uso1aVRr1s2bL4hITqqouz
ZdXLV+XioiK1Wt0lX5WVlSeOH5+x8WyOlh9dUly8eEnRj3/6k4qKUyLPp6anX7p0KTEp6cbGqX3i
qW/KQXo5lzozK/O7P/ievKTvPP0t5+Sb6qdlbGxs1/s77773nvsefMAUZOrs7EpKSrrtjtuHhoa2
v/X2bNFxgiAI4v8qjDACBBgwhSUMCMMXq8QOQRAEQRAEQRAEQcwf8ufrXE2ymZTYRCExNBSzrKK2
Vnn+HAoojYswpux2yWSixqzK6mp6fJzyeJRVVZTbjRVKX0aGp7DQl5EhabRcyyX10WPKujr548zg
AOVyY5rmU1K8+flCZATX0qp/6y1FYwNWq7mWFkV9PcIYANj2diTwWKHwZWZ5c3KQwGt3vq+orQUA
1dFyZmTkxjaa6e+nbTbkckoGoxAeLoaGYo5Tnzjhj1D6MjLYjg7t/n2Bn+Kjo5HPpzpxgp0IjNFO
J9fUTHncklbnzc7xLC7kU1Ixwyrq6tRHjypaLs2vWwj50tPZ7m5q3E653FP+Mf39qspKkCQhOopy
OtSHDtN2u6RUihERTFeX5mg5AIgmE9bqlOfPKS5dQqLImM0Ig6RW+3JyvNnZklanqjxreP112ulC
gqCsrmYmok3M8DDX3Ix4AWu1vuxsT34Bn5BAj41pjhxWVVb6DzpWKTGnEKJjvAUFnoKFwoJY1mzW
7tuv3bmTnudDfCE8HBBSnTnDTR/sEyFfRgbb1qY5sB9hzFit9PAQUJSwIM6bl+dLTqZHR3UffKDd
u0cyGOiREdXp05TXCwB8QgJtsahOHGcCwnKi0Sjp9MqqKkVdrTyF8nmZ3l6sVEgGoy8rS4iMZFtb
9G+/DQzDdHerKk5SLhcAMCMj9NgYUBQfn+DNy+cT4tn+ft2OHeqjRyW9nunrVZ07N+VtAMrpZPv7
QRSxQiGFhEhBQczAoHJivZ8vjLEoCDRNd3d1nT516sK583M0djqdA/0DAs+rNGpTkMloMg70919q
bpbnjo6M9PX0eL3ekNCQ7Jzc3Ly82AULeN5XffHiqZMne8w9cjO73R4XH9/Z2fHWm2+6XW4AEATB
YDS0tbYeLS93OecXM/Pzeb1Dg4Mer5em6JCwkJDQkOCQ4BPHjnu9XrlBQmLi8NBQxcmKsbGrBcmN
JqNara6prvZvBc/z9XX1DoeTpumU1JTcvPyMzAyD0WDu7j596lRtTa13nsnoycnJfX19Y2NWt9s1
/V/FiZMup9NoNKo16lMVp4aHhwEgJibW4XQcOnBQjqslpyS3t7Wfq6wEgOGhIbfbjSgUn5CQnZMd
GRnZ2dH5wfvv19fVqzXqjssdjQ2N8qCzgiC0t7W7PR6KQknJSdm5OSmpKTRDX6y6ePb0Gf/IygzD
sixjMBgyMrPyCvJSUlLcHs/Z02fe3b69o6NjXlvKsExUVLS5u/vc2bM+n0+n0xkMhtra2qaGRgCI
iIjgeb7ybOXgwIDX4zF3mxGFjCZTTm5OSmoKwzIVJ05uf+cdjlN4PJ6qCxfk4K7BoNdqdY0NjdUX
L/pXpFAowsLDzd3dlWfO+gs7jwyP0DTNKbiEhMSExATb+Pj2t9/u7e3FgE9XnB4aGgIAl8vV1d1F
ISokNCQnNycpOQVL+Gh5+fa339Eb9C6X+/y5c9Pjjpfb2+WxWo0moynIBBhXXajyn1fXyWq1CgLP
MmxUdHRySgqF0L69eyvPnNUb9BfOn+/s6Jw4HDTLsXqdPiMzI68gPzU1lef5yjNnd2zf0dY68/jH
E1eloPZflX19l5qvfMukpqZ2dXWXHz4c+JGwsDCMceXZyt6eK1elJEnNTU0et0cURaPBwHDs+crz
x48d23Lz1oGBgV07P5jg8UnjAAAgAElEQVTXxgJA0dIloii63a6hoaGurq6hwUGX68o5f6z8KD9x
h5y4Kk/aJl2VJpVaFXhV+oWGhiIKVZ2vutw+c40Bs7nH5XDSNJ2ckpKXlx8cEnKpuXnv7t17du+e
YzRxgiAI4v+KgDeW7OMiAAIAdKXSCwZAQWkZ/gbiwAxD3RMEQRAEQRAEQRDEFwcdcXVw2JHGCvk/
uP6CpldfYU5MTPT/LMREY5bFLAuiSE1/zE1R8oC4yONF0pXIKKZprFb7klPE4CDw8WxvL9PXi3y+
wOROTNOi0eRLS8Mcx/b2MGYz5fFimsIKBQgi5bu6IswwYmioLykZALjWFnp4BGgKs2zgGm8EQhLH
AcNijgMKgSjSYzZ/oFtSqwED5Z4Uf5I4BTA08nonZ6kizDCSQe9LSpYMeuRysd1memgQ8cINdE+a
Y/BLSaI8XgCQFBzQNOXxgCQBRUkKJQCm3G4AwAyDOQ7xvD/oiFlWiIr2JSRQPM9ebqdHRhDPywcU
+XgkTIpNYpYTw8J8CQlYqaRsNq69jRofD0xOxQyNOYUQHiFER2OVkrKNc+1tlM2G5v8wfbY+XN0P
gfsfIUmr86WniVodbbVwrW2UywkAklIJgCiPW36CIymVQFFTDtCVfSIIk7N7kaTT+tLSRL2BNZuZ
ri6K98lnMuXxXB0KmqIknc6Xli5pNMzwENvRQTldmEJY3ucBLSctWcFhjQarVACAHE7aNkZZrdRn
Vrb6+jEMIxf1FQSBv1aSOkKIZVm1RqNUKgCB0+Gyj48HNuA4LjgkJDY2VqlU2h32HrPZNmbjeT4w
/0+lUgGAPyxHUZRcndjr9d5YmqAfy3EMTXMcJxfOtdls0sQrCEqlEiHk9XqlgDdR5G2fvuEURSlV
yviEhCBTEAY8ODDY19vr8/luID4kr3e2uR6PB2Msd8PfN47jaJr27x+lSokl7I8mUhSl1+tTUlM4
jhsYGOjt6fV4PBRFKRQKURR9k7PVaZrW6XQJiQk6vV4OqQ6PjPABbSiKYllWbzDExsZqtVre5+s2
m4eHhnzzyXqXIYQUCoW8UfKqOY4TRFFenbxRPp9PnLgMFUplbGxMZFSU0+Fsa2t1OpyiKMrN/LtC
XsiU7ZrthGFZdkHcgsjIKLt9vL39ssNuZ1iWZZjAlQKASqWKi48LDQ112B1tbW1Op1OSpCnrnYJh
GKVSqdFoEI0En2CxWGZsNjeapiMiIuLi4328r72tXQ5nKhQKnuf95xVFUQzL6HX62AWxOp2e53lz
j3loYHDuwzHtqnTax+3+jcUAnoCxjeUdxTBM4Hr9PWQ5Tq1SeTwen8+XX5D/3AvPnzx+/Iff/4f5
buwcp33gQMvzuioBQD6g03seiKIonV6XkJCo1+tt47b21jaXy3UDx4sgCIL4ChKvfh309QgSlv/X
SwNIGAAQSrz5bn8DX/V7f/8OEgRBEARBEARBEMT14/Lv8P/cvONX8iNZjEGOac4c3HWuX/f36yBB
fBUp6uqYG6rxSxAE8ekKDw8fGxvzv0OgVCof/+aT995/319ffOnlF1/6fPtGEARBEJ+OgODugBlj
+T+8SK5YhTHghFvu8zcgwV2CIAiCIAiCIAjiC25KcBcAJkK6GGCWMXdnqJpLEMR8UPMcVZQgCOIz
ctPmzVarpauzy+Vy0TSVmJS0avXq/r6+c2fPft5dIwiCIIhPnwIrBRAwYAlEjBAGiYy4SxAEQRAE
QRAEQXyVzBzcZbu6/s79IAiCIAjisxAVHbX1lq3DIyM265g8fLLVai0/fKS5aerAtwRBEATxFaDG
ah/ySSAJWMAgCYAl+AQj+xAEQRAEQRAEQRDE502uyiwn72I8S3CXIAiCIIivho927WpvawsJDdWo
1aIk1VysaWhoqK+tveY43ARBEATxZaTBOha8PPAiiBJIPnD7kPfz7hRBEARBEARBEARB3CB5wF25
IDPGALNl7hIEQRAE8dVQV1tXV1v3efeCIAiCIP5OjNjoxR4PeAUkiCAyQFNAfd6dIgiCIAiCIAiC
IIgbhDFGCE2MuQsIIRLcJQiCIAiCIAiCIL4ignCIG5wucPHACyDwwLHAft6dIgiCIAiCIAiCIIhP
gZzES4K7BEEQBEEQBEEQxFdEGApzYqcTnB7s9mHeBz4FUvo+714RBEEQBEEQBEEQxA2bSN694nqD
u5JKhTmOcjqRIHw2HbtxkkKBVSpqfBxJ0ufdF4IgCGJ+EEIGg0GSpPHx8U+yHIPBgBCy2+2iKH5a
fSMIgiAI4ksnAkXawe7ADg+43ODxgs8LnqHPu1cEQRAEQRAEQRAE8clhjADwdQV3JaXSuWGjpFJp
9+ymbbZJszhOiIoCiqKcTmZo6MpIvgAA4ItPAAoxZjPF859y36d0z2RybNmqPFeprK0N7IBoMIjB
wZTLRQ8OooDpfphl+ehoQIjt7kZfuWCAxLJYpaJcri9gPJ74+2BYVq/Xh4aGajQahMDpdA4NDdvH
x/mJSzI6OpphWYylgf4Bn+9qPkNwcLBWpxsfH7daLABgMpn0BoPL6RweHg5cvkajCQkNFUWxx2ye
V8dUKlVYWBgEvGZyFcYjIyNOp3O+G0t8eRkMhjvuvtPj9rz95ltzxGURhVRKFU3Tdrt9xgZbbt7K
cdwHOz+Qz9tPC8OyEeHhNMP4vN7+/v4pc5VKZXhERMAELPCCy+Vyu91erxdP/uqhKMpgMISEhup0
WoqifT6fzWazWiwul0uYfKNWKpUhoaHBwcEMw3i8nuHBIYvFMqVNWHiYSqUeGxuzjY3N1nmFQhEW
Ho6xNDgwyAd8F7MsGxUdjTHu7upiGCYyKoqirjEYoX9FsQsWzNbY4/EMDgzIPwcFBen0eqfDMTIy
MmNjmqGjo6IRRQ0NDrrd7ilzKYqKjo6maHp4eNh13TcEg8FgNJkAwGqxTHlXYEFcHELI3N0tBbwH
ptXpwsPD9Xo9QuB0ugYHB2xjNjzTHwxzWLBgAaKoHrN5trNXvtMODw25XC7/RJ1OFxQcDAE7NlBU
VBTLcRO/YUEQXE6Xx+PxeDyB3QsJCdFotf5fJVH0eD1yy9k6499FltHR6ZdSTEwMzTA8zw8ODAQu
ITIyklMoRkdGnE5ncEiIRqOZe5+4XC67fTw8LBwQ9Jh7RXHq3yFarTY4OFgQhMHBQYH8lUIQxKct
EodrsMYBDje4HOD0gteNSHCXIAiCIAiCIAiC+BILSNvFcJ2Zu96MDMv3v6+srdXt3j1llhgUZHv8
cUmpYru7jC+8QHm9/lljTz6JOS7o17+iBgc/la7PBgmC/bZb3cVLQ3/6j8zw1f+2ezMyHHfcyba3
GV5+GflmKMQlBgePPfUUYAj5939D054sf6lJnMJdvFSIitYcOshMDsgR/0coFIpFhYU5ebmZWVkm
kxEhNGax1jc0nDtbebGqSg4P3HnPPcHBJkEQ337zzZZLLf7PLi8pKSwqPFVxav/efRjjxUuKSlaU
1NfVb3/7ncBVJKUk33nXnXa74ze//NW8+rYgLu7e+++j6RniQ6KId77/Xm11zQ1tNPGlFBER8fiT
Tzocjne375gjuBsZGVm0dMnoiOXEsWMzNnjg4Ye0Wu3xY8c/3eBueHj4Aw89qNFqrNaxZ//wxymB
qKioqK899qj/V4zB7XaPjIz09vY01jV0d3f7Q3EMw2TnZBcsWpSTkxMSGooo5PV4e3t6WltaTx4/
3tnZ6V+I0WRaWry0sHBxYnISyzJOl6uhrr7yzNlzlZWBgckNGzempKaUHy4vP3Jkts5HRETc9+CD
gsC//uprgwHfxQaD4bHHHxME4ef/+u9arfaBhx5Sq5Vz74fyI+Xlh48AwENfe0Sp4GZs09nR+fJL
f5V/XrqseGnx0trq2nd37JixMcMwa9evi0uIP3Hs+OGDh6aEVOMTE+5/4AGf1/v6316//uBufkFB
2boyAKi6UPXB+zv90xFCX/v6owxD/9d//KfH45EnRsdEL1teUlhUGBERiRBYrdaLF6rOnD5zqbl5
XvHdu++7R6/XP/vHZ4eHZg4cPPDwQxqN5tW/vtzR0eGfuGJV6dKlSwDgXOW5jz/8aMoab7vzjvDw
MPlnDOBxe0aGR/r7+y41N7e2tPqbla5enZef62/G+3ibzTbQ13/5cntjQ+P0kDkArFlbVrCwAACO
HC4/Ou3Muff++/UGnc02/sbfXvfH6QFg6y23xMRG73x/Z11N7eo1q3Nyc+beJ40NTYcPHbrjrrsM
JsMbr73e2tIypcHykpLi5cva29vf276DBHcJgvjUheMQLWgcoLWDXQNaF7jc2ANA3h0kCIIgCIIg
CIIgvqzmXZYZI+S47Xas0+nfepMat02dq9M7N94k6XSUxaLZt09x6ZJ/lnPTJqxSmV54Hj7j4C49
OqrZv9/2xJPOdev0b7/lL84sGY3OjRu5xkb922/DTMFdISrKccut9MgI+oxzi//+JL1+7KmnxaAg
1flzQIK7//cwDFO2bu19998fFR3d1NTYcqkFYxwSErxpy+aIiIi62lo5h29l6cromGhJknrM5rbW
Nn/cKDM7a/3GjZZRy4F9+zHGqelp6zdupGlmSnA3Kipq/caNo6Oj8w3uhoWFrduwXhTFttY2YfLV
J0qSSnmNIBPxFeNwOqsvVrucTmnO0voFCxc+/cwzu3Z+MFtw9zOSnpF+05bNCCEEsGvnB5fb2wPn
BoeErN+40ev1NjY0SpIIABzHFS9fRlHUmVOn//zsc1arVW6ZmZX51DPfik9I6Ljc0dba6vP5tBpt
TGzMkqVLLZZRf3CXZdl169c9+MjDNKJqamucDmdERMRtd9xesHChy+Wqq631r3phYWHxsmJzt3mO
4K4pKGjN2jVer3fne+8HBnc1Ws36jRt9Pt/P//XfaZoOCw/VqK/mYmbn5tA03dHRMT529UtfO5Eh
unbdWrVa3XLpkts1NXYYmCybkZm5fuNGADRbcNfn9Q0PDz/4yMMpqalNDY29vb3+WSqV6t777rtp
86ZDBw5a5hOqT0pOXr9xIwBkZmUfKz/q3/kURa3bsJ5l2d/88tdycNdgMDz0yMOr15RZLKOXmi+J
ghifmPDgIw/n5uX99je/6e3pnWs1k2VmZWVmZX2466MZg7sKhWLrLTdjjF97+RX/RI7j7nvg/oSE
BIqigoKCjxw6PKVcwfKSksSkxI7LHRbLKAAolcoVpSsxxnU1NS/95cW21ja5WW5e7vqNG4eHhrq7
uwGApumChQU6vb6rs/OtbduOHJp6YiiUinvuvy86OpphGAnDqZMnfZP/Olq1ZnVIaIjH46mrrT2w
72pwd0nx0qzsrHOV5+pqao1GY3j41Wz12LgFQUFBIyMjvT29/uopfX39DrvdFGRcu369zWb70x+f
9Qa8/BccHHzfgw8kJSXV1dYGTicIgvi0mMCoBrUalBpQOcDtAKcbu0lwlyAIgiAIgiAIgvgKQAhh
fB1lmfnEROfGDVxjg+rUqVkbYYy1Wvudd3K//OXnUN8YY3X50fEHHnTccrN2/z56dFSezAwNAc9L
Wq2kUtMzVa0UoqOBotjW1q9g4WKOE2JivoLbRVwHhFBaetp3vv89hNChg4fe2vZGV2cXxjgsLGzD
ppsMev2U9h6PZ0lx8Y53ts9W7fYzYrVa//L8C7bJld4xxv19fX/PbhCfu/6+vt//9295np87gc9o
NOqnnb1/B7l5eQqF4lzluUWFi9Zv3PDCn/48vY19fPx/fv97t9uDALQ6bV5+/q133L5565b6uvpd
O3cCgFKpvOOuu3JycitOnnzpxRcvNTUDAMuyWdnZa9aWjQV8Q0VGRd1x110mk2nb315/7ZVXPR5P
bGzst7/33WUly7/x5OM/+8k/Oh2OT3cDx8fHn3/uzzRN+6f8+S8vqNXqDz/YdfFClX/ilKrs2/72
RldX15RFuVzzeG6OMd67e8/qsjVLi4tv2rL5b6+86g80yrtlZHhkxzvbvROJtteP5/mo6KhlJcv3
fLx7xhxchFDR0iW33n57f3//Ky+9fPjQIVEUFy5a9L1/+EHx8mXrata//trfrn/k5q6u7sysrNjY
2POVldPnmoJMDMOMDA87Ag5c7ILY5OTknp4erVYbHRsTERHRPvmlAdnujz46eeIkABiNxsVFi9es
LStdvdrr8/3yF/8VmJVbfbH6ry++BAAKjsvIyixbt3ZRYeHXvv716qrqKaHx5OTk+Pj41paWmNjY
lJQUg8EwPMvrX6vL1hw5dHj6JSmK4u6Pd584fsI/5fFvPrm8ZHltTe0br/3N/36GfXzc7XZ//OHH
hUVFK1asOLhvf11tnTyL47itt96ckppy8cLF3R99TEbIJgjis6ADrQp4DhgNKNXg1oLKCS6AqV9b
BEEQBEEQBEEQBPFlgwEQQugawV1MUbaHH5Y0Wu2uXXO1EwS2q8ux9Wb9tm1cQG3JGRaIEB8XJ4aF
Y5al3C6mt5ceGpoyIK4vPh75eLavV9Rq+cRESatDPi/b1R1YcnkKruWSoqnJk5PjzcxUn7jyzJEe
GkaCgLVarFLN+Cl+wQIAUNTV+fsmGY18VJSk0wPLIJebGRpkenvRtGQy0WQSjSZmoJ9yu0WjkU9I
kDQa5HaznZ3MRGgZACSlUoiMosestNUqqVS+pCRJp0dYovv72Z4efxQcIyQGBwsRkZJOBzQlDxLM
9PdPWa8vPh6JItPXhxmWT0wUTUYkCExPDxsQCcMMw8fGAiAxPBzTNADwMTEgXFkR5bDLJZoljhOi
Y5DAs9OGSsUUxcfFAcZsTw+JDX9JKZSK2+64Q6/Xlx8pf/aPf3RMhGyHhobeeO1vUVFRU57XV52/
sHBxYVZOzpk5XuD4DPA839raagm4ZAIxDBMRGenzer1eb2JSEgC0tba6XK74hPig4GD7uL21pSUw
KqBUqSIjI4wmE8dxgiBYLZYec49vppR9ANDqdNHR0Xq9nqYpp9M50D8wY4QjKioqLDxMoVRKouR0
OgcHBiwWy3zH4wxkMBiioqN0Oh1ClMPh6O/rmzErMSY2JiwsjGVZj8cz0D8wNDTkXylFUWHh4TRN
2cZsySnJNM10dFy2WqwxsTGRkZEul6u5qXnK8eU4LiY2NijIRNOMy+XsMff40xkD0TQdExMTEhrC
sqwgiOPj4wP9/VNGLb2mmNgYhKj+/n5hlnIIOp0uKDhofNwuV04ODQ1Va9QA4PG4Z0vbjYmNlSt4
m0wmANDr9XHxcf65Peae6cEhlmPj4uJNJhPG0uDgYI+554aPGsMwixcvdjgc299+OzUtdeWq0tdf
fW36mNCiKHZ1dvlHVK2vq9dqdV977NHb7rhdDu6agkwZmZk+3vfWtjflyC4A8DxfffFifV2dIiBb
fWHhopjYmJ6enne375BzTM1m86svv5KRmZmfn5+SmlJddfHGtmU2PM9PqZqLJQkAes09zU1Ns32q
o6OjJaBWx40RBOH9d9/Lyc1dv2H90cNH2traAIBhmK233KxWqz/cuauttfWaC5luoH8gOCR4TVnZ
sfKjjpli4QqFonTVKoxxxYmTR44ckU+h6osX9+7Zk5r2vWUly9/b8e71v+zS3dUJALELYmecGxwc
DAAWi8UbcDsqWLgQAC6cO28ymYqXL0tKTp4xuDs8PNw5Ucm5prp6zGb79ne/s2TJksioqMAMcrvd
7m926dKllkuX/vDcsympqQWLFh0+eNDfDCG0vKREkqTjx44tKlycnp4Wu2DBjLe+5qamwsWLU1JS
mqadABjjvt7evoA063GbDQBsY2PNTU1TruLqixf37dl71z13337nHS0tLV6PFwBSU1Pvvvfe0dHR
v73yimf+kXuCIIjroQalCCwHrBe8CuDUoFQDKQxDEARBEARBEARBfFkFFmSW47vXCO6KISHODRvo
0VHlhQtzLZfnVRUVtocecpWtZV95eXo09MrSTCZPwULn+vW+1FTMcZTTqbxwQX3ooLKuLrAw8tgT
TzIWi/61V53r1rnWlAmRkcjnUx8/rnv/PXZanpCM8no1uz92Fxe7Vq++Gty1jFIul6TVYrUKACSl
0r1iJQCw7W3c5csAwC+IAwDlRHDXs3Chp7jYk5snhIaCQkHZx7nWVnV5ufLiRXpyAMa9uMi5fr3+
jdcpt9tVVuYqWSGGhFDjNvWJE8bnn6cmHuAKUVHWp7+lPn5MdeaMa+VKx+YtYlgYAChqa4wvvMBN
bIt7yRJPcbE3O0cMCcEMQ4+Ps83NmvIjiosX6YCHy2NPPEk5nYbX/+YpWOhct46Pj0MSVp47p9ux
nbt0SQ6QS3q97dGvY5rGGg1WqzHG9tvvoCbCM8qqKt3O95EkgVJpe+QRoKmg3/yGnhy8ESIjrU9/
i7Zagp57Ds0zrkN8QQQFBeUX5IuiWH74sGNyfAJjHFj7VLZ3z57M7Kw777rz4oULX5wKmXq9/oGH
HrTZbGMWa9m6tSqVas+e3ZeaLm299ebU1NTRkdHXXnn1wvnzctBuQVzc4iVF+fl5UdExKrWK9/l6
zD1nTp2urq7u7ekJjDfQNB2fkFC0dMnSpUtCQkIpmrJarI2NDUePlDfUN/hDgGqNJicnp3T1qtS0
VLVaLQjCmHWsqanp3e07ZhtWc24MwyQlJy9dVlxYWBgcHAwILKOW+rq6wwcPtQaEr/QGfXZ2zuqy
1ckpKZxC4Xa66uvrj5aXN9TVy5W0VSrVzbfeYjQaW5qbN9x0k8FkPHak/OSJE5u2bMkvyHc4HG++
se3EseP+TQ4JDS0sLFy1ZnV0dDRF0+M2W9WFCxUnK+SywP71Gk3GgoKFpatL4+MTFAqFj/cNDw3X
1dW9+8726YHMOdy0aVNkVNTLL/21Z9qLI7LFRUUrV5UeLS8/eqQcAFaUlmZkZgAAy3Fej+c3v/zV
9EzBO+++Sw4AJycnA0BWdtYDDz/kn/vH3/3e6ZjUQ71Bv2r16tVr1iyIW8AwTEN9w453trdcujR3
zefZJCYlxSfEnzt3rqmhsb+3Ly4hPiExsX7iW2M2GGM54BccHCRPUSqUOp1OkqSRabE0QRCEgADk
8pLlDMOcO1s5GvDeQ4/Z3NNjzsvPz8jM/NSDu5+vc2crz54+u2p16bqNG7r+t0sQhJzc3OUrSnp7
ej7YufPGgn+XL1+2WEbT0tPi4+Pr6+unN9BotckpyQBQW13tfxFBkqSq8xcAICExUW8wXH9wt6e7
R5Ikf3A3MSkpdkGsy+Wqq6n1eDzBwSEIIYvF4pu4u7Ism5OTgxCqr6vjfb4VpSsXFy0+sH//3GvB
GNfV1LqcLo7jgkOCL88UDJY1NjQO9A/o9frUtNTA4K5arc7Jy5NLiI8Mj+Tl5y0vKama6a+78iNH
UlJSb73jtrZftfGfYNwKr9f72iuvLFm6ZO26dQf3Hzhz+gzDMBs3bzIajR9+8EFtQI1xgiCIT5eS
5iRJYjHLAMMBy4FCATOPFk8QBEEQBEEQBEEQX3xTBtzFGFNzf8CblSVptGxPDz1Ldp0MYaw6VUGN
jblWr5JmKZspKRSOTZuHf/ELT1ER19mhvHiRHhuz33WX5Sc/8RQVBbZ0btliv+228fvuc23YSFtG
FQ0NmGXHHnvM9tBDMy5Zpj5xAnm9rpWlkkIhT6FcLqa/X1KrRa0WAPi4uKHf/W7od78bv/9+uQG/
YAGIItfYIP86fv8DzvUbkCgqmpuU588x/f2egoKRf/t3+6234UlRcfClpztvvtm9cuXYN59ybryJ
HrcpGhvpcbv9ttvxxKiEIIfGb77ZVVo6fs+94w89jESRa2tjzWZvTq4vLe1KI4oaf+QRV+kq5PUo
GhqUFy7Qw0Oe4uKRf/lX5+bNget1btpkv/XW8Xvusd91F/J6FfX1yOcbf+ihsW8+JanV/qVhtQqr
VVihAIQAIVAqr0xRq4Bjr7RyOMSwMPtdd7vWrg3cLoyQq6TEefPNwoIFQColfmmFh0eEhYfzPH+p
ufl62g8NDl04d75o6ZKU1NTPum/XT61Rr1lbduttt+YvLOjo7NTqdd98+umHvvYIAtRx+XJmdtZj
TzyumbjcVpetue/++/QGY3dXV211dXtbW0hoyA9+/MOHHnnYFBQUuNjsnOwnvvnEo499nVMoW1pa
qi9eHB0dWVxUdM999waWpS0oKPjxz35asnLFQP9A9cXqxoZGp9O1vGR5YmLijW1OwcKFTz3z9EOP
PExRVHNzc01Njc1mK1m58qbNmyjqyn2YZdk1a9b8f//yT4uLlvSYe+tqaq1W66bNm779ve8WFi2W
23AcV7xs2eatW0pWruzs7ACMH370a498/dHg4ODmpubY2Ngf/PAfjCaT3NhkMt15913f/t53IiIj
2y9frquttdlst95+27e+8+209HR/3xiGWVNW9uOf/TQtI6Ojo+PixarmpmYA2Lxlc1h42Lw2U63R
bNqyOTc3d8a5NEOvXFVatm6tTqeb2BxWpVKqVMoNGzesXbc28BD4KZQKpVKpVCoZhgUAmmGUARBM
ujkjhNaUrbn19ttFUWxuanY4HDdt3vTY49/wr3G+br71FkDoxLHjtvHxy5cvKxSKrJzsyeucgcFo
WLhoEQBUV9fIU3ie93g8DMMULCxQ++/Y0yCE0jMyAKCuZlLcy+VyWUYtFEVFRUX5T5ivBq/X++rL
L/f09m7ZujUrOzs4JPiJp74JGN7a9lb3LK9zXc8y39v+rlanW1ayfMYGKpUqJDQUY9zT0xM4vbe3
VxJFnU4XGRkx4wdnNDwy7PV4IyMj5UNzx513/Pw/f/EPP/qRfPkEhwQDgGV01B8l1el0qWlpAi/U
19WdO3fObrcvKlqsDfjjYTYsy9I0JUkSP0tNAhnDMCzHAoB7IpVcFhYeHhMb47A7Lre3nzxx0ul0
rihdMePZ2NbS1t7evrykJCo6+nr3wizGrGPvv/e+IIr3PXC/KciUlpFesnLF0ODgR7s+JGm7BEF8
dlgly7GsgmZVlC+QLQYAACAASURBVEoDaj3o9HCDfwkQBEEQBEEQBEEQxBfQNTJ3+eRkYFl6oJ+6
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
88/VutqpHZE40K/U1QbnzhvdvNl+6BAzDSJSKisnVcUr9vY69uwZ3fzI0LPPuhVZHB42ExKGv/u9
C3n8dW3OGsVWVqYXFY08/e34t98Whga5atML8kcffYwFAlZ8vOl2T3qFx4+NfvOb/rVrHXu/Ent6
SJICixcbqSkxiylnz+q5uaNPPOH66CNhZITb7VpRkX/jRhYKcVkeH8ALgYBaURFcsMB3zz1if194
HLLU3i5eKCr1r1lLxKXmZnFgkOkaVxRt+gwzJUVqbxd7eqb03Fw3oVDo4IEDS5cvW7VmTfnp0/X1
9ZZlZWZl3XPvvaFQ6OCBg5Ey0/7+/u6u7sVLlni9ozXVNaZpHj189L4HHkhOSelo75hyrDI8PNzY
0JCXn79+w/qTZSc1TSPi/f0DAxe6kR87erSttbV0xoxv3H/fgf0HdE1LSEx8aPPm+Pj4w4cONzZM
7qeyv79/71d7v/nE4w889GBba1t3dzcjmj5z+vo7NwwODu7etWuy+79n9+5vffupRYsX333PpvLT
5bqup6WnPfXtb2shzWa/GOk1NTZ+8fkX9933jae/821OvKe7OxQKybIS744vKChIz8h48T9+NdlN
Xz3TNJevXHHnxrsqzp41TTMrK/vRx7850D/w/jvvXstqd+3aNXf+vHvvu6+9vd076iXO+/v7e6Z0
Sg8NDjU1NmVlZ224667Kygpd04l4b29fpDJ7z+49K1etXrtuXVNjY9mJMp/PS0QOhzM1NWXGzJn7
9u6tOldFRPv37mtsbJx3x/x7vnHvqbKToVAoLS3tW089pWma/RJ3D1wXRw4fKZ0+/f4HHxgdGR0c
HBBFKSsr85lnn/X7/Q6HIybpvxq1tbXBYHDGjBnLV61sbGgQBaGoqHjauLnsJ8vKCouKnnjyifff
fW9oaFhRlOyc7Ee/+c1gIGi3290TvUlWnq1Yv2HD+jvXN9TXjY6MElFPT0//hR+3uXPnJqckNzc3
Dw4MaJomSVJOXl5eXt7w8HDrJHtX3AhHDh/eeM/d8++446677z518qRhGB6P5/4HH5Bl+fixY903
ONz1+/2NDY05ubkrV632+wOhUIiIj456u7o6J/VrsLqqasf2HRs2rH/m2e+//eZbPT09uq4ripKQ
4C4sKk5JSf71jXk3mDt/3p133bXtyy/bWltHR72madrttpzcvM2PPOLz+j758OOvs4wY4P9wcaLD
YLJhGbqhqaIYtCSNpjhsGwAAAAAAAOCm45yI2IWoiNNVtmW+POeXX2ol0wIbNgz81S/U8nIyTW3m
TDMx0fnZZ85tX7JJ9hFlppnw7/9GlhlYslTPy1Nqa1koxF0uPTfHTEh0fvHFte/whFxffB5csiSw
bNnAX/1CqavjomhkZws+n+v990e+/309N89yOITJtPqUGxudX3zhffjhoeees508SYyZyclqVZU2
tgYr7v33Q/Pn+detMz0euaGRq6qRkyN1tNuOHBl5+mk9Nze6T2+YrazMuX2bf9Xqgb/+a6mjk4hc
X34R98474a+aiZ6h558Xe3uVxgY2MsJVVSuZZiUluT77zH7wAE2ef/16rbjEsWuneurUlZe+Eqm9
PX7LluGnnh597Jta6XTB59XzC4zsLMeePQm/eZFNcrqnoGnuV14xEz3+jRvN1FSpq8t0x1tJybZj
x/ybNkUvqZaXx7/yiu+hh4af/UFg9Wqxp4eYYKYka/kF4vCwc9u2KR+RODDg+mCrGRc/8vTTgRUr
wuNj057/6aRuaxA0Le6dd8zExNDceQO/+Guxp4c7HMJAv1pZEVi5iqba7fmK4rZu1aZN827ebGRl
SW2t3OnSc3OVc5VKba33gQeM7GzO2KR+hO2HDtn37QusWtX/n/9GqanhNtWyOxz79g2XTItezPXh
Vr2gYPTxx/WCArGz03In6Lk5thMnpI4O/9q145tRM113fv6ZVlISWLpEz8oUh0eIyP3yS479+8ML
GNnZo489Jra3y62tLODnDmdw7lxxYCBu61a5o+PanqTr4MC+/aXTS9esWfvcnz5/9sxZ0zSKS6Yl
pyTv3rlr+5fbIpf7/X5/W2trQWFBefnp0dFRIjp18qTX601ISNi7d69lTvE0MAzjDy+/8q2nn378
W99auny53+8n4ju279j+xZfhBVqaW957572HNj/0+LeeKJ0xI+DzZefklJROO3706B9eenmyLY45
5+++/U5ycvLyFSte+PlfVFdVMcbmzJ2ja9qXO3aeKpt019nh4eG3trz55NNP/fAnPz55oiwQCGTn
5nR1dpqmOWPmjOjtvvzb34mCsHzF8j//y5/X1dR4vV673ZGekZ6SklpWdmKy250UTdMO7j/wxJPf
aqhvMAx9xsxZkih9+vHHp6OGi0/B7p27FixYsGTp0j//y5/39fZyi+/cvuOTjz+eQoNuXddfe/XV
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
7JVXHCnJgs5OhDHr6+dITGBCQrW/+bW4ru7RtPe+oIeGVJ98PPrDH40deIEJCBS2tzEGg2VdPmCs
PHxI5BGm8j6RXb6kOL7QumrVyI9/Ii0pEfT1YQqxAQGO5BQskUiu18DAwFzrdEVEjLz6Q6BpVqvl
tFoAUJz4WvXeezNljVV89ZUjJcW4Z48rPJwaGQEA9dtvC/vm4KtKDw2pf/979q/+2vjc8864OPHN
m8hm4xRKV2SEIyFRVHdbeWxc5hfX1qrfe29s/4HRV37gSEwSNTYih4Px97enpytOn5JUT8oxjDhO
Ulpq3rLFlpUFGNP9fYjDlMWsfvdd5HQCAD08rPrgg9Gf/cy4/wBrCBC2NLM6vWXdOqBpxeHD4ptz
U7nuXtflkp8+Y3x2D6fX0/390qKi+dXzDYfjuIvnz2cuyUxOSXnlBz+orKxkWTY1NTUyKupGzfWL
5y94+cxZLJbEpMR9Bw60NDcrFIrclSsFAsGhzz5va2vjCwwNDX3w3vs/+smPd+3eFRMb01BXb7fb
FUplREREdEzMjes1586cfaQtam1tbWxozMzMsNpsR48c8QoEarPZPvnok+CQkNyVK8Viya3aWpqm
s5ZmGwICKssriq/eHeXWlta627eTk5P37d8XFxeLKCo+Pp6i6JlcJx8z7W1tZ0+f3vr008/tez4k
JGR4eDgkNHTV6jyTyfjRBx/M1VfP4XAcP3osMjIybUGaWqOpqa4eHh4Wi8WGgICExESr1XLq6xNz
Cizc3t7+1fHj23fueOkHr0TFxIyNjkbHxCQnJ3e0t4eFh0/7FpvddvnSpZCQkN17no1LiLdZbQDw
+m9/N0uS3an09vZ+9umnL7x4cM/evbFxca3NzQzDqFSqqJjoyMiokydOlJWU8iXLSkq/Ov7V5i2b
X3jxYGJiYndXN8acwWBIW7DgP379G69YzQ6H48L5CxGRkRs2btDrdEajkc+Zeu7MWb5buru6T548
uWPnzr37ng8KCRkcGAgKDspbvcZqtf7p4087OzrvvwmeWK3WLw8fXvCLfxIIBOVl5W0e2aO9cNgd
Q4NDGq1G7+8fERHRe+eBwgxYzJYTX321ZevW5w8cuF5zzWqxYoDiq0U118bzqV+vuX6loHBZ7vL9
L7wQGRlltVojoyOX5+b29/V9cejQXFPG2my2Tz76OCg4ZMWqlRKJe1Uu9Q8wVJaXF0+591osltVr
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
t+m0WrFYHBU9TglgXW2tQqFYmJe3+rnnRkaGWYYxGIzjzqc8c+pMWnr6xs2bDAaD2WhiETs6Klcq
7ncM3rBpY3ZuTk93t0qp9M9QEUIdbe3eg2pULtdqNBEREStWVTQ1NLndbolUsqKiAmPkcrmCg4Mx
xv5tVx0OR093d/6i/NLSUpVSZbVavR25+3p7x3Znraut3Wp4IS8/f/mKFWq1mmUZi8Xa1dmJEFLI
5efPnl2/YcO2HdtNJpNCLidJKnfhgpLSktHR0QsXxmux8JRUrKywWqwDAwN6vd7lcgkFgvk5OTw+
v+1eq6922Ww2nz9zNjUlZd369WqNpq+nx2KxkCQpkUhj42IT5iT+6Y9v+Q9eZRimr6/P5XLlLVrU
0tys1xu8tbwd7R0BpeEjw8NqlSolJWXl6lXDQ8PeysWOjg73mJJ0t9vd2NhYsXLlC9u3Xb54yel0
oDFH6RNZLJYzp07v2rt71949LMsqVUqJWPL8pg3MmNfwktJSmkP39/VpNFqX08nhctMz0kNCQoaH
h9Uq9eS3OFZV5d3n1q0tLCluqG/Q6/UsyxiNJu8ZDJNXW1NTWVmZk5Pz8u7dp06cVCqVLpdTKBTF
xcdzuZwTx44H3C0qpaq9vT0vP3/turUSqcTldCKEuru6zQ/aSNy+eTs9I+Pl3bvtNptOp5dIJKuf
W+OwPzIhQqvV3rl9e2fizrXr1mo1Gp1Ox+NxS5csCQkNmWBXz5w6nZaetmnLJqPR96wcVSqUk7+x
Lpfr2JGj87Pnr1hZ0dPd3dfbxyI2Ly//frOEGTQrHRwcNBqNmfOyypcvUyoUDMMihNrb2z2TKIZ+
nBvXb8TFx+/as/uwQGCz2hBiuzq7vOX4NE2v3/C8Qq6Qj8q97f2Dg4OWLC3HCF+/dm0aZbtZWVlz
kpJ6e3pVKpXDYacoOj4hPjU11Wg0dnd3+xZTq9SXLlzctnPHC9tecDocAwMDdruNw+FGRUcVlRT/
73//ckpTk7UazelTp/fu27d561az2Tw0OGi12miKkgYFxScmxMTE/PZXv/YuefXyleKSktIlZYOD
gzVV1SajEWEkEonhB/14AAAgAElEQVSjoqLSMtIvnDvfNl77BADAGCxU8QIAAAAAAAAAeKZ5e4J6
vzD31gJNFO6SFov07bcIs9m2aJHrL/+SGhjEHo8nLNQdFc2/+bAKitvUJDx50rJmje4nP6Hb2xFF
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
dfxER3s7h8PNzs3ZvGXz7n17Wlvv+Ya8ikQisVgcMO2Pw+WIxWIel+t/4cWLF2trqhFC//of/87O
bCShUCh8effLeYvyL5w/f+v6TY1WExUVtXb9utS5c6e9zqq7dy1Wy/Qqxqbt6pUr87LnL1myZG1H
x4fvvc8wzNy5c7ft3E6S5KnjJ/r77vcYHxwYuHTh4oqKFS9s33771i2DwSASiTLnZUVERNy6ebO+
rt67mEwmo2jaaDQlJSfl5OQmJCYKhEK9Ttfb21tVefdeS8tUJ0HOz85GCHV2dFSsWpmdnRMeHo4Q
UigUba2t165cDeg8P3/+/A2bNt6+eau+to6kZjT9kSQJsVicnpHB5fGOHT3a290jEAgKCoueW7/2
te+8/k//+P/4Jv4mJSft278/MSnp9KnTDXV1GrUGIRQbFzs/O5sgiJnsw8Q0Gs2Xhw7RFLVm7dol
5fHcRw91H4FAEBISUrF6VU11dWN9g9FoSElNfWnXrrIlS06fPOXLg2maFovF3oa3fncCKRKJSJIg
H9yQutraSxcv7t6z56VdL//mV79WKZXhEeEv79mdnJz85aHDd27fnmq4m5iY+Mrrr4olkhPHjtfW
1LiczuSUlBUrV8pkMg3xcLuYIERi8ZykJJPRdP7suf7+Pr5AUFRctHb9+t1791RXV7seRLneHsiY
eORbYy6XKxaLH3cXzRCfz4+JiWFZtqe7++muOTwivKS0ZOPmTe1t7W//8a221ranu/6x2lpb7XZ7
bFxsUFCQQqHwXjh37lyKotpa20wPRsZyuNztO3cuW77sxrVrt27cGhkZoTl0elr6uo3Pv/L6qwP9
/Z1+Nb48Hk8sFq+oWIEwvnj+wvDQsMPhCA0LTUlN9b0aREZFvfL6q4yH+eLgwZbmFpvVKhAI4uLj
5iQlBby5tN5r9T7WP/2bv5ZKpSQ5zj+cSJLcvHXripUVjQ0N58+eG+jvF0skiwsKNmza+NLuXU1N
jd4nKUKIx+dLg6RLy8tra6rrauv0On18YsKOHTsWFxbmLMg9f/bc9O7G+Ph4iURCcejg4OCFeXki
sfj6tWvtbU/h4SNJMjs3hyTJ1pZ7/jXiNIezas2qBXl5b//hzeHh4ZmHuxKpZNOWLUaD8dDBQzbr
Y0+Aa2lufuuPbzU3Ns5wcwCAWc7DIuxBLEIII4JAmEEshLsAAAAAAAAAAJ553rbM6HGVuxwORygS
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
DCiKyuSydenrUtam6nW6G1evz33JwcOH1qWvIwjCgeOu/bQpGzdt2n/wgN1h7+8f8PXz9fXzdT5l
sVrbW9tMJpPFYnFtsUARiyUAALvdNjgwMKGaAHMcOnw4KTnZarXMzswW37nj+tTs7OzcDjHUI3q9
3u1c6uPjExYeTn1YqZb1cQnxQqEAAKBWq7u7ut2OnPyCzatWr3Y4HL09vTDchaDvDk+B1oHT7Tjq
cKAWB2p3IGYcASu56Q6CIAiCIAiCIAiCvkaofJckyQXDXZIkS4rvBgYFZmVnHzl+dHXcarVazeVy
Y2JjLFZLS0vzIuPq1T6qmZpUO8ehpPT29NwtKs7OyT5+8vVVq1cbjUZvb+/k1JTx8bE7t27PLfJY
osTExKDAwLmP/+yffrqscLe8rCw9Mz0xOQlBkc6ODgyjRURGcDnckqLiHbt3+fr5MZlMqkywr7fv
s08+3bVnz97CvcEhwUMDgw4c9/X1jY6N+Y9ff156IhKLCvfvoy41Tk9NMRiMqJiYyMjI+rq6yoqK
5W4mn88v2LIlJye3r7d3ZnYGkMBb5hMdHW02maqrHpSXPjeC757CPWFh4QAAFpuNYRiPxzt24jg1
qvE//+znbuEuh8uVSCQsNtvbx2febONucfHq+Li0deve/v73mpqbvDw916al9XR3X7l0mdohbmRy
GZ/Pd/aSdZO6dm1AYGBfb+/kxKTdbvfy9oqLjzcYDPdKyy5duIi7DJFYdKcoMjoqIWHNW997u7W1
NSDAPyU1tb2t7dLFiyvub9nc0KiZnU1JTRUKhYsEYNNTU1qt5vDRI10dnSw2OzsnG0WxG9euu4bZ
5ffKN+bnx8XHv/X9t3u6ewQCoY/M58H9+3sKCxeabXFRUXRsTFZ2tqeXJ1XT+eH7Hww9Pyqh0Wi8
deOGWCzZtDnf19eXqp48e/o0dXVbo9Gc/vjUm2+/efDQQU8vz8mJSX9/P5lc3vrkSWJS0sr2SVJK
cuG+fdTfVNf0vfv32SxWAMCd27eHBgddL5TjON7R3g4AEhwSHBQUtLIliiXiPYV7w8LCbt+6XVle
QT04pZ469+lnQcHBu/fu6evtLb9XDgCorakpvlOUlr7uxMnXQ8NCVUqVWCLOzMpEUaziXvnd4mLn
PO+VlSUmJ2VkZn7/r/+qvq7ebrevSVzj6+tbW1NTVlKy3DUkCOLGtesymSx3wwaRUDQ0OCgSi3M3
5BpNptult9rb2la24Uuk1+s5HPbxk6/3dHXxeLzsDblarfbS+QuK0c9PL81NzdevXM3fUnDw8OHQ
8HCVUokiSFBwcGhY2NVLV1a8aM3s7IXPzu3as2f/4YMxq2KpwbBPf/zxmMK9L2tPV1fp3ZLUtWtf
f/ON/r5+3OHQaXW//c1vlpXzjSnGHlU/zNu08eCRQ9QdBiGhITPT066nbg6Hs2Xb1twNGx63PL5w
7jx1+jIYDJ+cORsRGZmzIbenp+fyhYuL1xm76e3tvXD+/OaCgsL9+6NiYkxGo0wuGx1VREVHkSS5
gky0tKR0fXZ22rp1drtjcGBAKpV6eHg8qKrasXPnvNN3d3eHdXYGBgZKPT34fP7Kwl2CIO7cui2X
+67LSD9+4kR8fIJGM8vn82NXr9LpdK2PnyxrnyyksaGhrKR0777CXXt2d7S1d3Z0uD470D9w7fLV
rucHx10ZnVbX1dkZExvD4XKnp6bnZodajfazTz45fPRI/pbNgUGB/X19DodDJBZHRkV6eXuf+nD+
Ma0X4eXldfjokcHBwZ7ubs2shsVirYqL8/P3e/igurFh/rt/qiors3OyV8Wt/t5f/xV1X1dDXf3N
GzeoscDPnj4tFImyN+SyOZzuri6RWJyVkz07O3v75s2hJY8+u1wSqWTXnj2a2dmBgUGdVouiaGBQ
YERExMTEZPWDqtqaeYag9pHLuDwegiBisXhuE5HM9ZkisUin0+Xn54P8fNenpqanf/WLf3OOTbBc
PjIfDpfDYrOom89WLGZV7Mk33qBuAWFzOACAXXt2W80WAEBNTU1vT6/bWaijvYPJYgUHB/sHfHXj
F0AQ9MpJBNM4znDgmMOB2XGaA8esDhSGuxAEQRAEQRAEQdA3lzPWpf75eedksVj8+VQoAgDAcXxg
YGBqakqv04vFIplMxmazBwcHKysqb12/OT42BgBAMYzJYHR3d9fX1jqbKNpsNpzAxxVjne0dNY8e
UUV4NpttZGRkdnbWarP6+Mi8vL0JkmhsaLhbVFxcVLyCPqI8Hk+lVA4ODKjm09jQaDAYaHQaiiCN
jY1ULsLlcqfVUzWPHlGppEgk6u7qbm5qAgDodLrJyUmDwSCWiP38/Hk8Xn9ff9HtOzUPH+E4Pjw8
3Pak1bmSw8Mj0+oprVYrFIoCggK9vb2tFmtjQ0NDXb1B/zSWIAnSarPa7Q5vH5/gkGAvL2+9Xl/9
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
zVZ85w5Jknn5+Uajsb+vb2RkJCY2dv7CBW63+17xXf8G4xMS3tj/Zvbs2UUXis6fO8/zvH9rKrXK
XwubmpYmPbvAsAxN0yzLmkymLVtfiYyK6unueVD2YFp7IYriw7IHTqczLSM9KTnZ5/N1dnRotdol
eUsYln386LE04bSEpmn/VSR9a/xXqdQkeepkMllWdrbRZFQqlQzD0DQtk8mMJlPBmkIAaG9rcz2d
mreqsqqjvSM0LCx3SS7LsvV19SzLrli5wmw219XW1Qf0HkAIIYQQQhMiDUAagTICaQTCAKSBIJ/T
ZQohhBBCCCGEEPrFkpJdKd2V/vuibZkB4EFZ2dnTp1cXFu5/+61rV6729vb6fD6NRhMTGzvQ3//V
sXbpU69fv56UkvzaG69bzJbBwUG5Qh4XH79k6ZKuzs4oqzUkZJx/b9fV1jY2NMbGxe3YuaO5uUng
RY7nzp05O62JJ0vu368or0hNS929d+/9e/e9Xo/JbN64aZMoiufPnevu7p7BLouieO3K1X1vvJ63
LC88IuJucXFnZ2fQClcuXc7MzFqwcMHIyGuVFRU2m40AQqvVRkRGRFmtH3/4kcNun2j74yooLJTJ
5a2trUODgz6vV6FUpqalqTWa4jvFE7WTvXLpSkJi4t7XXgsLC3M5XQBw7epVaeXKisp7d+/lr1i+
7/XXb1y7bnfYDQbDqoLVSqXy3Jmz9fX1MzgsU5SVlZWRmSH9npXJAGB1YUFOfw4APHjw4EFpWeDK
SqVyzbq1oWFh0TExRw8dHndPC9YUStdPRmYmAISHh2/ZtlXq3Hvk0GGpJPTihQtJyUl5+fn9/QNN
jY0cx+m0uvwVyzVa7e2bt5oaGoO2aTabVxcW6A16a7T1j394P2g+V0EQvjhyNDklJW/5svaO9qbG
RoZhluXna7Ta8+fO1dVMWGGZk5NDkmR5ebnbPdVC1UC9Pb1ff/X17n17Xt//hlqr6e3pkclkc+bO
TU5JeVj24NrVqzPY5lSkZ2bs3rtHo9UMDw1lz87Onp0d+OrDBw+lnuSiKJ47c3bu/Pmzc2bv3re3
tqYGAObMm2uNjn5QVlZaUuJ/S+HaNfMXLHA6nKyMXb9hfeDW3G73xfMXpDbja9auUSgUbW1tw8PD
HMfJWNYaHb1+40a73X7qm5PdYyL55yp//PjWzVvL8pft2rP71s2bPp8vOjp6cW5uc1PTuTNnAxsp
W6Ojl+blURQJAHKFAgDyl+cnJScBQGdH58ULF6Z+F1KpVLv27u7r7e3u6rbZbDzPy+XyKKu1YE2h
0+m8cO68/emtYGhw8Py5c2+98/a2Ha/K5PLR0dHQ0NBXd+4cHBz8/LODttHJJhdHCCGEEEJPkCEg
8EDwIHIAAoicCB6A4GlxEEIIIYQQQgihXwXx6Wy7QBCiKBIvJdx1OpwHP/3MYXesXlO4e+9e2+go
z/MyuYyi6EMHD/pXu3j+QlxcXF7+Mosl1G6zUTTt8XpOf/e9SqXa+9prYeHhFEUFVaB2dnQcPHBg
x66dq9cUOh0OURTdbs/F8z/EKjzPezwe38TzmwJAR0fHwQMHdu7elbdsWXpmBs9xGo2GougTXx0/
+fWJyd87iZaWlvv37uXmLnG73aUlJZ4xWV1jQ+Onf/rT5le25C5dMnfuXLfHDUDIFXKGpmuqazwe
t39NURS9Xq/P5xOFyfq4chy3almeKIpOp5PnOJZldSEhd4vvfnH4iMPhGPctly5ejIyKXLJ0ye69
e71eDwCUl5dL+ajdbj986JAoirPn5MTFx3u9HpVKrVarTn///aEDBz3uH4bn9XjGDkvqgjuzJsBZ
2VnbXv1homWPx7OqYLXACwDg8/mCwl2e5wcGBw1G4/Dw8ESTmK5Zt9ZqjQYAVsZ6vV6T2bx12zbp
kYITx7+Wwt1rV67o9fqCwsJXtr4yNDQkCIJCoVCp1JeLLp346nhfX1/QNt1u98jIsFqj7u/vHzfG
q6ut/fzgwd27d2/bvq1/YICmKK1Od7no0pdHj9lstnHHKZPJFixayHHcvTt3+TGTLk/Ria+/livk
69av27tv3+joKEPTBpPx3t17Xxw+Mm6Pcalv8Au2a05MSlIoFV6vNyt7dlb27KBXeZ73Tzjd2tp6
4JNP9r322uZXtvT19gFAiD6ktKTk6KHDgeXRiUmJgiDQNF1QWBi0tZGR4dKSEinc5Thu2YrlnM/n
dDp5QWBoWqPR9A8MFF24+N3JUzPYkcHBwUOfHSQA5i2Yn5iUxPGc0WDo7Oj88osvyh8/DlwzOjp6
26vbpaJtiqI8Hk9efr50GMtKSy8VFU093OV4niTIwrVrvR6P2+0WRJFlGI1W29fXd+qbk2dPn/Hf
hXw+35nvT+t0uvzl+ftef93tcmlDdJyP+/LoF1cuX57B/iKEEEII/TkidSDNuUtI4a4PwAMwk+l4
EEIIIYQQQgihX4gfOjMTxEsIdwGgq6vr8OeHOjo6YmNjlSolADidzpaW1tu3bvs/rLOj47NPPm1v
bzeZTCRJ2m32yqqKq5euWKOjeZ4fdwpPnucvXSwaGR7Omj1boZADAOfjAjOVmuqag58eqKyonGRs
PMffunFzZHh48ZIlRqORoki3293U2FR0sWh0goLXqeB5/tjRLxrq6kVRvHHt+tikh+f50pLS7u7u
vGXLIqMi5XK5KILL5ezs7Hr04EF/X79/TbvN/tUXx3heGB4enuQTL5w7PzAwEBERqdaoaZr2+XwD
/f3Fd4qDQqlAnZ2dn33yaWN9vdFsJkkCAOxPc0epRe3o8Ej+iuVmi4VhGY/b09nZceliUU93T+BG
Dn9+SAy8aADg6eSggbOoTl15eTk5wSTKVZXBG3Q4HMeOHM2ePbuxoWGiCZKLLlwct/IbAPwzuQ70
Dxz67GBHW3tySrJKoyYJ0uPxdHd1XbtyddwOyX19fVJtbmVF+bjTwYqiWHThgtNun52To9JoBJ7v
7e0tOn9hkn7L4RHhqelp7W3tpffvT7TOcw0PDR05dLinuzs6NlapUPA8PzQ0dOfW7cePHo07yeu1
K1fbW9vG/X5NXWVF5cFPD0z0alXlD19AURTv3LrtdrkX5S7WarUA4sDA4LUrV2uqqwPfUnSxqGqC
r63b7fa3R75w/sLIyIjRZJTLFRRF8hw/OjpaXV0ttYKf2b5UV1V9+MEfVzassljMBEk6Hc57d+/e
vVMclH+3t7ed+uakVLkbpL29fVrNAxwOx7GjX5Q/fmw0mZRKJUVRHMfZbKPVVdVXL18Z+0TLH99/
v6O93RodzbKM0+Wur6m9fOlS4PMWCCGEEEJoUjog+Cf5rsgThA9EN4a7CCGEEEIIIYR+A6QSXsL/
5/j4+B9eHC/SmAqVSqVSqQDA4XQ47OOUk1IUFRISQlKkw+5wPp1p8vljJUmGpoEAEGGi8s3nYhhG
q9VKU9XabLZxk7AfA0EQGo1GLpeLAE6nw+Fwwgt8tFwuV6lUUrg7OjrKTa0AlKZpkiIBwOf1Be04
TdMarYZhGI/HOzoy8pMdlqmjaVqn09nsNq9nhqc+kEKpUKvUBEF4vF7b6OgkKR3DMBqt1jY6Onl5
t0KhUKvVPM+P2mzcpGu+vv/N/W+/9Yd//bevvzo+rXRwXGqNRgp3R583wp+FTCbTaDWiKNpt9nHT
8SkiCEKpUioUSookOY6z219oa340Q2u1WoqkHI5p3IhekFKpVKqUFElxHGd32MeW+/uRFKnVaFmW
dbpc9gkKwRFCCCGE0A/4H/7vuvz++wDik18iD8CD6J3zlz88Xul9cPznGCJCCCGEEEIIITRV7Ozt
/t/XHv8HgiCk/I6Al1e56+dwOCZqESzheX6i+stJiIIw40zXz+fzzeCjX5woiqOjo6Mvab5Mt9vt
nn4NH8dxE00yxXHc0ODQiw7rx8Rx3Es8cS6nS5p++Ll8Pt/gFD7X5XJNpYpUpVLNmTv3QVnZ6e++
f/FkFwDsNtsvOfbzeDyevpeQwoqi6LCP/6TIi+B83ODA4Mvd5nM5nc4pBsnC8+r4EUIIIYTQhEQK
iKcPMRMiIYoiofhZB4QQQgghhBBCCL084suYcxch9FwUTV+7erWhvv4nqxNFCCGEEELoz5AocARQ
BJBAEEAQAAQJv7juRAghhBBCCCGE0BQ9acUsPccsigAihrsI/RRsNtu3J08FTbCKEEIIIYQQerkE
r4cgKIKggSAJkgQgAyYjQgghhBBCCCGEfn0IAFEEgnjy8DKGuwj9FERB4F5GN2aEEEIIIYTQJDwu
J0lSJEmTJEVQLBAEQVA/96AQQgghhBBCCKGZknJdABGeFPBiuIsQQgghhBBC6DfC5rAxFEURDEXR
JM2RJEWQGO4ihBBCCCGEEPqVI0AEIEQRCALDXYQQQgghhBBCvxH9g0MyhmYolqFZinbRNEOR+M9e
hBBCCCGEEEK/Vk9m24Wnkw6JOOcuQgghhBBCCKHfipYum4KlFCzDMgzDUizLMAz+sxchhBBCCCGE
0K8bASBKQe8Uw12SotRqtVwuJwB8HOew2z0ez489ypdOJpOlZ2bwHFdRXsFx3Iy3k56RLpPJampq
HXb71N9FEIQoijP+0KBNxcXHq1Sqhvp6p9M5yZpKlVKpVFIUzfO82+VyOBxjx8AwTHJKMsfxDfX1
L3JYpIGp1Wq5Qk4SJM/zDqfTNfHw5HK5Wq0mKcrn9Y6OjvI8P3YdlmVVKhXLsgDg9XptNtvYEbIs
SzPM2PcKPO92u2ewFxNtEABEQXC73S/rPP4ESJJUa9RymZwgCI7nXC630+F48c3qDXqTyaxWq0iS
AoCK8vJxD/VLvOZ/sWiaZmWyiV51u1zCL2+iZbPZHB0T09fX19rS8iLboShq3K9toBB9SEJCosvl
qqyoeJHP+rkolUp4+khUkJfyVUIIIYTQj+FxvUslJ1VKSiGnlXJKoaBkLLZlRgghhBBCCCH0q/e0
gHcKbZn1ev28BQus0VatRkuShMvt7u/re/TgYU1NzY88yJfMYDC89/vfuVzu//pf/nZ0dHTG29mx
e5fJZPqnf/wf9XX1U1nfEhqalJxUU1Xd398/4w8NZDAa9uzbIwjCv//Lv020jkwuz87OTkpOMhgM
DMv6vN6R0dH62tp7d+/5fL7ANQmCWJKXFxsb+8H777c0Nc9sSCRJxsTGpMyaFRoWptNpaYrxej39
AwPVlVUPHzwYm/DFxMYuWLQw1GKhGcbpdDQ1Nt25ddtmswWMX5aenhEbH2cymVRKJQA4HI6urq6y
0tL2tvbATc2dPy8+PmHskHp7ey6cvwDTDxdz5uQkJiWP+5JtdLTo4kXHryTUUalUCxcvjomL0Wq0
FEl5PO7h4ZGurs6HDx4M9A/MeLORkZEbNm2MS0jQajUUSQHAf/3bv+vu7g5chyCI6JjosPDwknv3
X/CJgV84a3R07pIlE7168cKFnmePzC9BWnr6nn17r1+7dujgDMNdhmHS0tNIkiorLZ18zaTk5Hfe
fbe/v/+//B//58w+62ckk8k2bNrIsuOH98eOHg26lyKEEELoF6Ksxq1UkCoVqVLQGiWlUlIK2fhP
ayGEEEIIIYQQQr8uoigSzw13rdHWV7Zty12yhGVZj9stiIJcriBJIi4u7r/9v//w0wz0ZZHL5QkJ
CU6ni6Je6MHt1LS0iIgItVo9lZUVCsWWra8sWLjgn//HP72scHfRokXLV6w4eviIfYLSYZlMtmbt
2s2vbDYajV6v1+PxyORyhqY7OzorKyuHh4YDV/b5fA119bt2725ubv7w/Q9mVmqpVqu379ixKHcx
SZKCIPAcT9MUzTBtra1ff3n82tWrgQlfXHzc/nfezs7OdrlcHo9Xo9H4OJ/ZbP7q2Jder1daJzEx
8b3f/y40LEwEUeB5QRRZliUA7ty+c/jzQ4EVh0uWLl1dWOB2uYOClqqqyqKLRcLzKgvHWpSbu27D
ep/XN7Yatauz887t27+KcNdgMGzbsX3FylVyhdzj8XA+jmVZmqa8Pt8f/vXfrl+9NrPNEgSxfOWK
Hbt3dXV2VZQ/lir4PU/Pmp9er3/7vXflcvmjBw9/2+FuQmLC6/vfEHhh3Kvi0cOHv8Bw12Q2z56T
09zcNOPS6sSkpHd///va6prnhrs6nS4+IUGj1cxopD8zlmXXb9qoVqkBQKlUUjTlcXv896gTx49j
uIsQQgj9MtW2eWQySi4jlQpBJScUckqpIACwMzNCCCGEEEIIod+Iyf6Jq1AqXt25c9ur26urqopv
F3d1dQkCr9fro2Ni1Jpf3w/rh4aGvvzimMfrnVm33pmRKxR5y/LCw8OZCTr9TpdWq920ZbPNZvv+
2+/G7YlKkuTqwoI39r/JsMzVy5ebm5rtdrtGowkLDw+PiJD66AYSRfHG9eu1NTVr1627cO58U2Pj
DEalUCgio6LqauvaWlv6+vq8Hq9KpcrMzFq8NDckJKS9vb32aZ23SqXaun376oKC+3fvXb50yeFw
WKOjN27auHvf3vb2jmtXrkirRUZGKVXKknv3Ozo7RoaHBUEICwvPX5G/bsN6j8f9T//4P/2hlEqp
DAkJufHoelApeXdXlzijjrhKpTIkJKS2pvb6teAEdGR4xOVyzWCbPzGapleuXvX6G2+0tLScO32m
q6vL6/Gq1KrQ0NDYuDjZxG2Ep7LlBQsXajSafz/+r0UXL7pdbgDwjg13Dfo1a9fWVNeQJPlCe/KL
x7JsSEjI0NDQ+XPnxr46MDDzCulfstj4uPkL5nd2dDx3zabGpi+PHbO9QKeEn5HX671cdEn6vmzc
vMloMt6/d//hgwfSq5jsIoQQQr9YvaM8RYk0RbKMKKNBLiPlLAEKDHcRQgghhBBCCP2K+XMxcfI5
dxctXrx23Vqbzfbpx396UPZAKk2jadpssURFRY1dn6ZpgiCk7fI8P7YmjKIoQRBEUaQoSkp9BEEI
SihJkiQIYqLYkiAIaQvSEoIgSJKUViYIgqIogiRBFHmeD5zqUlrNbrcfO/qFIIqTh7skSVIUBQQh
CALPcdISURTHLXGbZEek+mCKIp/ZLIB0fGY8E+eSvLy0jIxTJ77pnqAiMCYm5s239ptMxo/++OHZ
M2cHBwYEQSBJUqPVWq1R484T7PF4zp879x/+t/+45ZUt//w//2kGxXx2u/3E8eOdOv8jiQAAIABJ
REFUHZ19vb2jo6OiKDIMU1ZaZo2Jjo2LW7BwoT/cjYyKWrFyhdPp/OLI0du3bomiqFKpKJLc/87b
u3bvKrl/XxphQ0PDxx9+1FBXPzg4KOWpGo2mo6P9//q7vy1cu/bQwUO9PT2BA7hbXHz6u+8Dl4x7
BU5dY0PDkc8PBS0UBCEw3A2+/GiKJEhBFHhu/IufJEkgiLHXZyCSJEmKkibEHntRTZFWqy1ct5ak
qJMnTp47c0aq8CYIQsr4nc5xakz9wxNFURhveNLVyzCM2WIBgNKSUod9/O1Ie+H/o/+yl7650kEL
/BaPexACbwJPvtoEIVWaTnT0xt4NpG8ux3EzPh1TNDo6OvZqAYCxjwJQNE1OepMkKQrG3B/G3hUp
ivLfRvw33ol2xH/zkY7GRHtBkiRJkgRJAIAoiLzAi4IYtIL0QdIuSAfZ/+q4d/K21tZjR49y3HMu
46enA0Rhwr87pP2VvmgEQYgi8OOd2ZfI6/UeP/altMuLFi8KDQ199PCB/0QHhrvTOh3ww99WBAAh
CsIL3qwQQgghFMTh4YAkCYKkSJEigKUJhqJ0MT/3sBBCCCGEEEIIoZdkwnBXJpPt2rNbq9MdPXzk
5o2b/uUcx3V1dnZ1dgauzLJsRmZGdEyMRq0BAhwOR3tbe3n5Y6fD6V9Hr9cvzl3c0dE5ODiQkZlp
NBoBiMGhwdrqav/ktRRFLVi4UBcS8vjhw45ny8Jomp4zb67RYHz86FF7+5NZV63R0RkZ6Q8fPLTZ
bGnp6VarVaFS+rze7q6u69eu+2OMjMwMq9X6ZPw8f/XyFamd7FiRkZGp6Wlmi4Wh6ZGRkZrqmqGh
wazs7I729sqKysA1CYKclTorKTk5JCREFGFgoL+stLS7q/vpq0TBmkKSIJRqtUarpRlm/sIFoaEW
6dX+/oH79+7NIE9SKBQbNm3gOO7WrVvjrkAQxOIludExMZUVFd+eOjUyPCItFwRhZHh4ZHh43HcB
wKOHj4aHhvPy8w99/nlfb990B+ZwOK5duRq4xOfz1VRXt7a0JCYlWqOt/gaw6RkZRpOpsqKirLSU
pukoq7WlufnqlStbt29LTkmxWq3VVVUA0FBf31D/zJTGNpvtwrnz//Fv/pNer7dGW4PCXY/HM1GT
6pnhOO65G5w1a1ZcfNz9e/d5nk/LSA+PCFfIFS6Xq7Oz8/bNW4FZV3JyckJSot5goGna6/H09PTU
VFd3dnQGbTA8Ijxl1ixLaKhcLuc5fmhosKG+obamZrrBj1qtDg8P53xcyf37/r0QRXF0dHTsbNMk
SSYmJSYkJOqNBpqm3W53X09PZWVlT/cPR9hiscybPw8AGJbVhegAYNHiRbb0NOnVq1evSZF8aFjY
nDlzCAIsoaEAoNVpVxWs9jx9lqKqqrqpsTEqKio9M7O7q+tBWdm4g1colYsXL2YYpujiRY7jomOi
o2NizGazSqWiaNrjdg8ODjY3NjU2NgbllIlJSUlJiSUlpV6vJz0jIzwiQqlQuN3urs6umzduBJ6O
xKSkxKREg9FA04zP6+3p6amtqQmay3laREF47tXCMEx6RkZMbIxWowUCnE5Xe1tb+ePHgf2cFUpl
Xv4yzue7dLHIv5Cm6bnz5+n1+uLbd4aGhqSFqwsLXE7XjevXs7Kz4xMT1Eqlj+M6OzsflJaNjIwE
fq7BaMjMyoqIiKRpyuF0NNTVsywbNDaWZeMTEiIiI4wGg0KpBACX09nb11dXU9sZcKtfnJur02kB
IDMrCwCirFFr1q7xv3qp6FLgczN5+cuk2bIBwO12Xyq6NO5hoShqVmpqXHxcSEgISZIul6urs7Oi
vMK/p5KCNYUjQ8MPHz7Mys6OjomWy+Uej6e5qflBWdlEN/MXJ4qi/+wIvAAAXq933BO9urDA7Xbf
vnkrNTU1PjFRrVZxPN/d1fWgtCxoRwDAZDbPSp0VGhqmUimBIJwOR09PT3VVdV9v74+0IwghhNCf
Gy/PgwBAiCQJBICHIygSdD/3qBBCCCGEEEIIoZeAIGCSyt0oqzU9I8Ptcn178tTk2yFJctOWzStW
rbRGRw8NDgqCYDAYurt7bt648dUXx/y1a5bQ0Hd+915VZdXo6GhmdqbL6VKr1HKFoqKi/NOPP/En
ebPn5Kxcver4sS+PHj4S+ClarXbPvn0REeF//3f/FZ6Gu6npqe/87r0/ffiRUqUqXLvGaDSJIMpY
dnh4uOR+iT/Hys7JWbJ0CQBYLBa3y333TvG4eYDFYtm9b++8BfMZmh4cGKQZuq+3r6a6es26tRfP
XwgKd9MzMtIz000mM0VR4RHhDofj4rnzn316wOl0Ssdk/caNNE3RNKPT6ViWzV2yJCs7S3pvdVV1
WWnpDMLdSGtUQmJif19fS3PLuCvIZLKsrCwAePzwkd02jbCzt6enu7s7KSkpKTl5BuHuuKTaRHi2
xC0rO4skyYcPH7pcruzZ2WvWrfv3f/nXgf6Bvr6+uPh4a/STcHdc/nJPjzv49FEUFRERwcpkLper
r7f3BQsxp2jh4kWbtmzmOM4aHZ2Xn6/RaggAlmX7+/vLSkr9sdCi3MWbt2xJnpXi8/ocDrtcLgeA
8sflhw9+3tra6t9adEzMrr27s7Kz5TK5bXSUpCiNRl1XW/fVsS/v37s3rYERT0swNVNonz5n7pzt
O3ckJiZ6PV6X26036F1OZ1lp6Z8+/NifS4WGhW3cshkASJKUZpteXVjo8z3pxlxaWiqFu+Hh4Rs2
byJJQqFQAIBOp1u7fp0/VfVxXFNjY0RU5Jtv7y9/9KiystI73tfQZDK9/d47IyMjRRcvAsDadety
ly5RKJROh4PjOaVSSVF0Y0PDV8e+LC0peWZH5s3duWsn//4HYWFhK1at1Gi1BBAsywwMDJaWlPgz
ufkL5m/ZtjUlZRbPc3a7QyZjKZIqryg/cvBQU1PTtI7z1JEkuXHTxpWrV1ljYkaGhzmeNxqMvb09
d27dOXr4sHTTAACtVvv2O287nc7AcFcmk23avDll1qzW5hb/GXnzrf2jo6OCIGzb8aparVYqFUaT
qa+39+uvjn/z9Qn/ezVazd7X9i1YtEin1fX19ZEkMW7Ar9Ppdu3ZnZySDEC4XC6CALVa4/F4Kisq
Dh74rOPp/TYvf1l0TDQAGI1GAIiOiZGuCsmtm7cCw91VBavNZjNFUUajcXBwcNxwlyCI5SuWr9+0
MS4uzm53+Hxek8k0ODh47+69zw98FjjO/W+/1dXZZbJY1qxby7KsTqfV6/VNTU0H/vTJrZvjP+ny
U3rzrf0Ou4MkyY2bNmm1WplCbjabBwYGTn594viXXwXejowm4569e+bMnxei09lsdo/Ho1AqeI47
dvSL77/97mfcBYQQQui3RBQEIAAIghcEgiAFAIHCJhkIIYQQQgghhH6tRAAQRalnJAAAQUwY7iYm
JjIM09Pd3TNB+1+/zKzMt955m6Soy0WXHj54wPN8ZmbmqsKC1954vbG+4eaNG9JqLMtGRkWp1eru
7u4rl6401terNZpl+fl5y5bxHPf//cN/t9vtPM8/fPBwz769y1euPP7VVz7vD6FgUnJSVnZWT3d3
e1ubf6FarY6Milq4eFFoWFhHe8eN6zfsNnuIPiQpOSmwX2hFeYUUPv3N//6fXW534EuBVq5etX7j
ho729u9Pfdva0mIJDc1fsXzTls3hEREGozFwTZIkCwoLmpubz3z//ejoaHp6+uZXtqzfuOFSUVFt
TS0ACIJw8fx5kiSVSpUl1BKi0927e7ftaZLX29s7s3a7cXFxSqWyqbFxcHBw3BXkcnl4ZCQAtDS3
TOsj7HZ7e1tbRmZGQkLCrYBC7RdhMBgiIiJ8Pl9TY6O/9jQmNhYA6mvrAGDFqlXLV644dPDgQP+A
bdRG07TJZJpkg7NzcuRyeU93T2trcLa9eElualqaTC5zOpzNTU1VlVU11dUvMrkyy7K6kJCghQ6H
nfP9UC2qC9FFRkXlr1gRGhZaV1vb0tLicjrNZnNySor/GouNjX3nvXejY2KKb98pKykdHBo06A1L
l+Wt37jBNjr60R8/lJ4zkMlkW7dv27R5c0V5+fkzZ9vb2mVyWVZ2dv6K5Vqdtq2t7blfw2fH6ejt
6U1OSd6wcQOA2NfbZ3c4nHa7MKYCWK/X7967Z1Fu7p3bt69fuTYyMhIdE72qYPXmLVuGh4YPHvhM
mk+3t7f3/NlzAMAwTHRMjEwmu3r5it1ukzbiz017enounDtHEITJbE5NSxsdGS26UOT1Pklwmxqb
AGBwYNBkMiUlJ2s0moHxwt3YuLj4hISzp89IhblKtaqhobG5sam7u8vtdptN5szszPzlyxUKeVVV
lcv5Q28ArVYbGRWVt2xZaFhoQ319c3OL0+E0mYxJKcn+0xFlte5/++3kWSl3i4tL7t4fHBzU6rRL
8/IK16xxO11/+Pc/BG5w6kiSHHu1uF0u/0MkqWmpb7/3LsMwVy5fKSst9XFcelra6sKC1958vbGx
4erlK9IXhKHpKKs1sJZX2rgl1GKNtsrkP0yWHBEZGRYevve1fa1trUUXLgiCkDN3zvr167du33b6
+9NSak6SZP6KFa/u3NnZ0XH8q6/aWlq1Om3esmU5OTlBQ2UYhqKosrKylqaWvr5eAojwiPBFuYvX
rl/ncrn+/V/+VXo+4/atW9KzFxmZmTGxse1tbdJV8WR/n/263bh2XaVSabTav/zrv5pommdrtPX1
/W9Gx8TcuH799s3bbrcrITGxoLBg566d3Z1dJ7/5xn8Ti4iMNBgMNE3X1tTUVFXL5fJFuYvy8vN3
7tl9t/juJL2mfxoRkZEgirv27G5rbb1y+bLP55udk7Nx86YtW7eeO3PWn1IrlIodu3Zt2ba1rbX1
3NlzTY2NbpfbEmpJz8jQaXX+9gYIIYQQelECD4QABAEiiCQFADz8FI9+IoQQQgghhBBCP4oxPzme
MNy1hFoAYHh4ePKMkJXJ1m3YYDAaz509+8f3P5Aa/969UyyTyV/ZvnXN2jV3i4sDCzdVavWVS5c/
/+ygtLChrt4aHb18xYpvT31bcu8+ADwoLa2tqUmZlZKRkVFW+kPj1oLCNUql8uSJb8aWnc2dN+/s
mbPHj30pdRAlSTI2Ls4ZENKUlZSUlZQAwH/6z38z0Y4olcqNmzfRFHXwwGdXLl32+XwEQTQ1Nv39
//N/j12ZoiiH0/nxhx+1trQAwL27d5NnpczOyUlITJTCXVEUT31zEgD0BsPa9WtVSuWNa9fLSksn
OZJTERERyTBMf1+/e8xcnhKGYXQ6HQBMlP5ORBTFluZmkiSlyryXIi9/mTUmuq21NbDC0mA0AMDg
wAAAZGZl6nS6kJCQ7q5uj9dDkqRao55oa2azeceunRzHXTh3bnTkmWtgcHAwRK9nWZZl2bCs8II1
hRXlFae/+67owsXAa29aYuNid+7eFbTw3JkzrS2tQQtT01K/OXHi9Lff9/f3AwBN04lJSVLBOklR
qwpWp6WnX7t67Y/vfyA9l0AQRE1tTfKslJWrV5/85hupG3BySsrqwoK+3r4/ffRx6f0S6Ut3+9Zt
lVpdUFiwZOnSr7/6auqDHxkePn/2bERkxOo1heEREa2trf39/b3d3fV19XV1dYFrZmRm5syZ09vT
86cPP66qrJTmw+7v6/9f/sP/um3Hq1cuXW5oaACAnu5uqR5ULpfv3LPbYDCcPXOmvy+4wrurs/Pk
iW8AICEx4d3fvTcyMvL9t98GRZWdHR3DQ0Mms1mn0w309wOA0WSSy2RdXV1SgePsnNkkSV65dPnJ
MT99dqC/vzegY+3t27eirNb5CxcmJiY+fvQoaAwZmRnfnjx16puTfX190umIT0jw9w/IX56fNTv7
bnHxh3/4oLm5WVpYU10dlxC/fOWKUydP1T97fKZIo9WOvVruFhc/LHsAAAzDFKxZY7ZYii5c/PD9
DwYGBgCg+NZtmqZ37d2zdt264jvFMwiVlUrl4NDQnz78qLenFwDKSkuzs7PjExKioiIbGxoBQBei
27BxA0EQ33373ZHPD0nBYVNj49/9/d8HbWp4ZOTI4SPtba22UZt/YWNjY1x8/KqC1V8cOdrd1QUA
Vy9fkV7yeL0bN29qaW4JrBIOIuW+ltDQv/zrv5poncW5ufEJCdWVVR998KF0L7125arH7Xnnd+9u
2rL5xvXrgeddo9XW1dZ+8vGfbDYbADx+9Cg9IyNnzhyT2eTvh/8zkisUI8MjH3/4kTSY0pLS7NnZ
MbEx0TEx5Y8fS+tkZWVt3/Hq0ODQgU8+vX3zlj/7v379ulatwWQXIYQQemkEDkgSBBFICgQQAUQR
w12EEEIIIYQQQr9ewT89JidaUa6QA4DX4538J84ajSY1LZXn+etXrvqndLXZbOfPnSMIIiMrM6hm
y+f1Xb50yR+51dXV1dXWsjJZRmamtMTpdJ7+7jRN09t37qDpJ9lzeETE0mVLu7u7AwvF/BiG+ebr
E/65IQVBaGxomO5EjIlJiXHx8a2trVKyCwCiKJaVllZWVIxdWRTFK5cvS2kEAIwMjzx+9IiiqMjI
yGl96HSZzCaSJPv7+yc6KSRFSRNqzqBoVcpRzGbLD5XdM0WSZGZ21rYdr/q8vqOHjwQGotL14HZ7
AMBoNFEUpQsJ4XleijNZlh3301mWXbNu7Zx5cyvKK4Kal5aWlHz68Scf//HDD9//40cffPjJRx8/
evAwZ07O3tf2vUhQHRkZWbhmTdAvs9kyds2R0VF/sgsAHMdVV1VJl5CMZRcuWkRR1KWLF/t6e6X4
mWGYpobGqsrK0LDQmNgY6V0FawpNJtOVy5fLHz2mKEpa0+1yld6/LwhCzpwchmGmPnifz3f2zNnP
D3xWU12dkJS4qmD1zt273v2L37/93rvrNqyX+ipLFixaqFKrb9+6XV1VJV1UPM/fvnWrtbVVp9PN
Sk2d8QGciMPhqKys1Ol0oaGhAEAQxK7du956953QsDDpj3PmzHE4HP4ZeasqKwcHBzUajcFgsFgs
oWGhgiC0tbbRNJ2UnDR2+y63+7tT3/Y9DZ45jqutqZHqj0mSXLwkl2GYogsXu7q62KdaWlqqKiqN
JlNcfNzMdkqtVo+9WuLi4qVXFQpFWka6KIrXr16Tkl3pOFy8cAEAZqWlqlSqGXyoKIrHjhyVkl0A
6O7qrqqqYhgmLv7J55otlpiYGKfTefvmLf8do7qquq62NmhTToejqqLC4/bodDqj0WgJtYSGhY4M
j9hGbQqFwmSerJ7+RczOyWFZ9uaNG/6uBjzPX7t6ZWRkJMoaFR4REbT+d99+JyW7ANDY2Nja2iaT
ySLGrPazEEXxxPGv/TFzb09PeXk5wzCxsbHSEoqili5bplarS+7fv3HteuDfUN2dXXUzeqoAIYQQ
QuMTOOB9IHAgCiD6QOThJ5m0BSGEEEIIIYQQ+rGJIoiTzLkrhW3PzfmUSoXBYOA4LmgW2LraWkEQ
TGazXKHwd20FAIfD0dHe4f+jz+fr7OgkSTIsLIykKIHnAeBecXFvT8+ChQujoqKk6roVq1Zqdbor
ly77p5wM1NzSEtireWbS0tMpiqqvrw+s9RQEobG+cVl+ftDKgiA0NTYGLhnoHwCAwNjspSMIQqlU
AkBQKeQzRFEQBQAgyQlj+4k4HE4AUKqUMx/iU8kpKfvffjs0NPTEV1+f+f50YPG3KPwwPKme8smV
BgQACGMbBwPI5PJVq1dt2bq1va396OHDLS3PXGmXii4FHpCS+/ebGpsiIiPj4+PnL1zYUN8ws11o
bW0tulAUtLB7vN7IDfX1/sQuCMMw0bExABAZEbFm3dpnXqJpmqatVqv0x8W5iwmCIEmyYE1h4Grx
8XEAoDcYZHLZtKqQhwYHD39+qPzx4+SUFIvFYjSZIiMjF+cuTk1LJQnyzOnTUplsyqwUALhXfDdw
WlCbzdbT3ZOZlRUWHj71T5y6m9dvrFm7dlZq6u1btwxG47ZXt8sVioryihPHj4foQ2LjYhsbm/wF
+kajMWfuHKvVqtXpZDKZdOUkJiUCgFo9zozCTQ2NgeWegUiSjE9IAIDQsNCg0yGXyymKioya4cMZ
NptNKlkO5M9QZXK52WwGgMZnbxqNDY08zxuNRpVK2T/9ea55nq+qfGYi8MGBQQCQavel32i02oH+
fqnuVuL1egNnepYQBBEXH5+RmREaFqbRaBiGIQiClcn0ej1JkjJ2/KbKL84aEw0A5Y/LA59W6e7q
ttvsJpPJYDAEruz1elueFltLpKBX9WPedaeO5/ma6urAJQN9/QCg0T65SmUyWUxMjCAINdXVY/tI
Y9kuQggh9DIJPgAAkgIeAEQAEojx5+VBCCGEEEIIIYR+RURRBCBgkrbMUudblUo1eUxI07RMLhdF
MTDBBQCHw+H1euVyuVKpCFxut9uDMirpB/QKhYIkSSnc7e3tffz4cUFh4bwFC5qbm7VabV5ensvl
unXr1rhjaG1pefGfjEuz6o6O2IKW22zBXaABQBAEn9cbtAQAKPrH/amBtJuT5O0cz0n9qGcQM0s5
/osfSUuo5fU335gzd87JE98c//LLoNNtt9sNRqNGowaAxoYGa7R1aGiIpmmGYUQAt8sFzw6Aoqil
y/L2v/2WKAoHDxy4eeOm8Oxz92Oj7sqKitKSkpjYmMyszKOHZrgXTY1Nx44eDVo47tSeXZ1dEx00
lmU1Gg0ArC4sDIqtNRq13WZnWRkASA83AMDCxYvmzpsXuJpMxrqcLp7nZpDW8zxfVlr26OEjrVar
0WjCIyLWb1xfuHbtth3bL10qcjldAKDX6+Fp0XbgbjqdToIglCrljzEPaGlJidvtzp6dDQCpaaly
haKpobFwbeE3X3+dkpKiUCr9maVMJtu9b0/ukiUURbW1tdlGbYIgPXRCAsC4k2d3dnRMNGCGYbRa
LQCsWr1aEJ5ZR6VW2W32aZVHB7KNjo69WvzPNFAUpZArpNUCV3A6nT6fTy6XSw9tTBfHcUEXpPTV
8Dc8kMtkDMP4OC6ojn9keCRoU1FW65tv7U9LT7PZ7d2dXS6XSxQFmiKBAOmZgxkMbyqkb0dQD3mP
x+PxuCmKUqie+bvD5/MFzREg9VecaA71nxjHcT7umXtd0OlgWFahUAi8MDw0/DOMDyGEEPqzInAA
BIAIIABJgigCgZW7CCGEEEIIIYR+CwgCAIgJw11pKlCjyaRQKFwTzPAqEQURAMhnf8JOkqQUCwVF
cfSY+FP60bwgCP5Uz+PxSLV9CxYuOPXNN7Hx8bFxsR0dHdWVVeMOwOOeXgfmcUn5R1ATaQj40fzU
vGhD40mIouiw2+FpIjIuj8c7ODAQHR0dHjHtmktps0Eh/XRZo6N37No5b8H8K5cvHz10uG/MtKw9
Pb3RMTERkZEAcOP69bj4+OGhIblCoVAqBJ4fGXkmdqIoasGihftee42m6SOHDl+7cpWbQvUqz/NS
wXdQ5d+0CILgfTa/n8jkq0lfgQvnz/Pj9YJ7/PDJlLEiiKIoXrl02Tne3Kv9fX0zvsh5nh8aGhoa
GmptbR0aGly5uiApKUmr1UnhLs/xADA21JTyPOHH6V/X39ff2tqaPCtFpVJlZWcPDQ1dunjxtf1v
WkJDs2bP5jiuvq5eWnP+ggXbd+zo7Og4cfzrR48eDfQPSM9/vPcXv09KThq3r4DH85yzJgjChXPj
n46qisqxC6dCFMXJLgNRHDeGJAgi6CY5UYpOEuPEq88N3XleEASBACBJMjAWpejgrRWuXbNy9aqS
+/fPnj5TU11jt9tFQdDr9fGJiRERET/eXU3gn4k/Jf7DIv622ic+OdHEdP9OQQghhND0CfzTcJcH
oAGICf83CyGEEEIIIYQQ+jWQAhF/LDLhT5nr6+pGRkZ0IbqMrMxrV65OtJrH43U4HAa5wWAwdD2d
9RYAjEYjy7Iup9Nhf6awUqPVqtXqwARRb9CLojg6MhIYP5Tcu9/W1paekRERETFv3jytVnvq5En/
tKYzxnETVkA2NjQAgH8OVL+IyBea0FEUxZdY+Njb2ysIgtliIUly3ODN7XI1NTbOzslJTEqSyWTT
mng4MioKAHq6e2Y84JCQkN1792zasvnM998fOvj5uE2Ma6qr5y+Yn5GVCYeP3Ll9h6KokZFRg8EQ
EhLi9XoD+8cSBLFg4cI3335Lo1F/9ulnFy+cn3pfYp1OCwBu17QnHn65PF7vyPCw3mD4/rvv+vsm
vHqlSWTj4uNvXL9eWT7OHM8vS31dvdfrUalUCsWTmsju7u7Y+Lj4+PiHDx74V5PJZDqdTvpWzuxi
eO67Hj98tHX7ttT0tOSU5Pt37925c2ffG28sWLAgZVaKy+n0z8BasHaNUqk8f/bcV8e+DLw/6ENC
YApN44P4fL7BwUGTyXTm+9MTtW7+Mfg4zmazh+j1ZrO5vb3dv9xgMDAM43a57E9vklL+xzwb/lE0
pXi2/8EU2e12t8stlY8PD/9QLWqxBE8dvTQvj2GYgwc+K71f4j93CoVCPuZhlyfjnHLs+mSPWHbc
VwcHB8MjwiOjIgOnAVar1UqVyufz2UaD+yhMHUVR4RHhPp+vp7tnxht5uTxu9/DICEVRoWGhP/dY
EEIIod86qXJXJIAgQRSAoDDcRQghhBBCCCH06xWUhoiiOGG/zYGBgctFlwiC2Pbqq0FhAEVRRqNR
+r3dbuvp7qZpOj093b91giBy5s4hCKK9vT0oX5TL5dI0nxKVWh0TGysIQnNzc2AgNDg4+N2pb0P0
IavXFOYty3M4HOfOnH3xOsLe3l6GYcLGq2qtKK8YHh5OSEyQpvOUGE2mjMzMF/lEnuN4nicpSqGQ
v8h2JO3t7V6v12Q2TzQzLsdx9+7e83o8aRnps9JSiWeTbLVaPVG2TdN0XFwcz/NBM9pOndlsfnXX
zvzl+devXTt88FBrS/C8npJHDx+63e60tLSwsLChwcEz35/2uN2JSUlGk2kjrBUsAAAgAElEQVR4
aMg/czNBEOmZGa+/+UZoaOjxL7/67tQpu22ckmKGZcYWWxuNxuzZswVBqK+vn9m+vCxer7euro4g
iMW5uWObxyqUSv/puHSxSBTFDRs3qlSqoNVkMplcMb1sj2aY0LAwdkyiFhYWRtO02+VyPa0PfvTw
oSAIS5flBXYGtoRaIq1RHMfN+GKQ6uAVCvlERYrVlVWiIC5fsSIyMvLs6dMtzS1dXV35K5ZHRkba
bLbOjifTckshfWdnZ2CyGx0TnZKaCgAy+fTmghUEoaqyiiCIpcuWjR2YQqH4kRr8ulwuaY8ysjL9
Z5wgiKzsLJIku7q6nE9bi/M873Q6ZXJ5YNF5RGSk0WSawecODQ0NDAzIFYq4uDj/Qo1GExcXH7Sm
1Ca9taU18CY8Ky1VbzAQAMyYYyX1QjcYDM/N1wWedzgcSqXSPxNwoLq6OlEU58+fH3itxicmaLXa
0dHRvomfh3iuxUty33r3nTff2p+QmPj8tX8SXq+3qrKSIIjZOTlSO/RA417MKpVq+YoVm195ZVZq
6k8yRoQQQui3QuBB4J784jngORDGmV0FIYQQQgghhBD6lZow3BVF8atjXzY2NMydN3fHrp0ZmRk6
nU6tVkdHR69YtXLt+nXSag67425xMUVRK1avnJ0zWyaTMQyTlp6+fsMGQRDuFd8N6lZK0/SGTZti
42IpitJoNCtWrkhMTOzr7Xv04GHQAC6cO9/X27th44aEpMS7xcVNjU0vvrdXL18lSfKVrVtnpaaG
hoVZQkMVTzOtvt7eG9euq1Sqfa+/PjtntsViSZk1a8fOnSaz+UU+0e129/X2yWSy+QsWWKOjDQaD
Xq9XT9xXeXJNDY12m81kNhmNE4Y9ZSWlVy5fsVgse/buXZqXZ7FYlEqlxWKZN3/exk2bxmaHEq1O
Gx4R7na5GurqZjAwlUq1ccumXXt222y2e3fu6g2G2Tk5/l+BeXltdU1TY5PRZNq4ebPJbGZZNi09
feOmjUql8vKlyz09T8rsYuPi3ti/Py0jvaaqurOzMyMzM3CDltAnpW+RkZEbNm+cv2BBlNWq1+vN
FnNGZsb2nTtSZs0aGhwsvnNnBvvyEvm83stFl7xe76Ytm/PylxkMBpIkaZq2hIbmLlmyfsN6f4ft
ogsXm5qaVhcUrN+0McpqpWmaJEmdTpeZlbXplS2p04x21CrV5le2bNqyJWt2tslkkqK19Iz0Hbt3
yWSy2tra0aeTv94tvjvQ35+dM3vV6tVarZYkyYjIyI2bN0dGRjY1NtZUVc9sx4eHhwcGBgxGY17+
soiICL1er9frA2P41tZWh8OxODdXEMRHjx45nc7bN29lZmWZzeburu6BgQFpNWkAuUuXSHcMhmFm
pabufe01tUYNomjQT6/ttiAIl4uKXC7Xps2b8lcsN5qMJElSFGWxWBYtXrxh00a9IThyeyncLtfd
4mKCIPKXL587b65cLmcYJmXWrHUbNwBA6f0S/7zRbperu7uboqjVawp1Op1MLk9OSXll6yuKaab7
koH+/orycqVSuWb92ojISIqitFrtqoLVcfHB4W5TUxMArNuw3myxAIBKrV64aNH6DRsYhiEpauyU
wF1dXS6XKzklec7cOSazWTq/4wa9bo+7taWVYZi169dFx0RbQkMtoaH+Ne8V33E6nQsXL85dukSp
VFIUFRMbu2HTRo1GU1VRGdgKYrpe2bZ1/caNW7ZuXb5yxXQrvP0oisrMenLnUapUABAeHu6/C013
KmJRFG9cu97S3JyZnbXt1e2JSUlyuZwkSYPBkLt0SXZ29ti3zEpNfe8vfveXf/1Xb7791o838zFC
CCH0GyRKyS4PggAiD4IPBP7570IIIYQQQgghhH6RxKBZHYmJ59wFgMaGhqNHjr65/831GzckJCU2
NzcLHG80mZKSk3p7eg8d/BwAeJ6/eOHinLlzU1Jnvf3uu48fP+Y5PjUtLTUttbKi4sL5Cxz3zFPS
o6Oj8Qnx+995u7W5RalSLc5dTBDw5dEvxtYI9vb0PCgrW7Nu3f/P3n3Ht3Gd+cJ/zgwq0Umw915U
qN6LVV1VbNmW5e4kN9lsee973/ferXffvZvcbEt2U26STXHiOO5FvffeG6lGimLvJAiAJEiABDBz
3j9GgmASpChZxaR/348/8hA4mDkoh9LgN+c5/f39e3fvvS/Fjbdv3Tp95oyFix6z2qzODifnfN/e
vefPnlPu3bxxY0Zm5uw5s2PsMY0NjVabNSkp+VJp6fwFC+756IFA4OCBA+MmjF+w6DGrzebp7uZE
9XV1mzZsDJ+MOEItLS1Xr1ydNWd2VlZWXW1txDZut/vd379jNBknTZmckJhw7do1T7fHZDJlZWfp
dPp9e/d6PBGKnaakpMbHx7e0tFRVVd1tr4jIZrMte/xxpeD2sseXDbi34nrFz37yU+U1dDgcmzZs
/NZ3/svTK562Rds83d25efkTJ028cO78hs/Xhz4t06ZPmzNnDjGKi4tb+9LaATvcsnnL7p27iCgh
IWHdy6+43a7GhkaPx6NSq5KSkvLy8/v6+rZt2Vo2xCLND40sy0ePHMkvKJi3YP4bb711+dIll9Mp
iqI9NjY3L5dzfuL4CWWZ4YaGhs8/+fT1t958ce3awsLCpsZGSZLMFktmVmZKSuoH77138cKFkR9X
pVZPmTolISGxoaG+vq6+t7dXo9Gkp6cXFBa2trZu3bQlNJ++uqpq965dK1evXvfqyxlZmR6PJyUl
efbcuR0Oxwd/fL+9feCSySPk7fVu3rjxueeff+mVl4snTVIWEj56+PC5W2Otvb2ts7MzJTVl/959
yuq/+/bseemVdWq1+vLly6ErQvbu2Tv/sYVz581Tiaqa6mpBFLNzctIz0g/s2//4E48npyarVKoB
v2GGd+rEyS2btyxZsvj1N9+cNHmy0+kUGLPHxubk5qpU4vlz54apnn3PZFk+fPDQjFkzi8aNe+ub
3ywtKQkGpfyC/IkTJ1aUX9+1c2fo+Xq93jOnTmdmZq55fk1iYoLP15eWlmq12ZqamrIGJbJ35PV6
t27eUlhUNH/hQpWoam5uNhiNE4sntrQ0x9hjwlvu27OvoLDw+ReeT0hIaGluNpnNRUVFjNG1q9cm
TJwweN5wW0vrxQsXJk2e/NY3v1lXV6e8Bb/51a97B63Y3efrO7B/f2pa6poXXygsKlKWb//Jv/+H
8gm8eOHikUOH586f99obbxQWFfX39aVnZsyYObOhrn7D5+sj/qYaobbWNrfTabXZsrKyBiw5PHI6
ne61N98wREURkVJLedr06SkpKcq9/+///f8oM9RHrqa6+o9/ePe1N15Xwt3ampr+/v7omJiCosIT
R4+dPXN2wF80iUmJ6RkZKpVqypTJ9xxRAwAAfB1JQWKMSCYuExOI6OafAAAAAAAAAKPW7a+POb9d
hvQLhSIFRkSc88b6hu6ubn8gYIu2ZWZkpqanRRkMLU3Np06eDCVn3V1dTU1NRGSLtuXm5WVmZRDn
pSUlWzZuKrlYEvq2Oj4+fuXqVc3NzVs2bc7JySkcPy4lJdnh6Dh44ODnn346YIKvcvSk5OQZM2c2
1Nd/8N77g2MDIrJZrVEGQ2lJSXnZiGK8zs7O3t4eWZYNBoPVYjVbzFU3KmtvpaQup8vldAUCAa1O
Z7VYe3p6jhw65HZ3zpg5o+TCxdA00MysTIej48SxY53u28tYWm1Ww82eDJzs2NLcEgwG+/v6zWaz
xWa1Wqx9fX0XL1y8hyrTsix7e72Lliwm4sMshOx2u5ubmoLBgEajTU1Ny8rKjI6J6en2lJaUnD93
LuLKtU+vXDFrzuzPPv701MmTd9srItJHRaWmpba3t7tcrkAwOOA/h6MjlKBzzhvq6wPBgEpUZWZl
ZmRmMMYuXri44fPPw1+6tPR0tUbd2NDg8/kG77DiekVNdTURaXW6uLg4nV4fHx+fmpYaFxfHGKus
uHH44KHNmzZ1ha0zOnIJCQmSLF0uvXz1ypXhWyqHO3f2XG3NkNPKfT5fxfXrkiRptZr0zIz8/PyM
zAyD0dDW2lZaUlJaUurv77/1sjT09vRwLiclJ+Xm52fnZMfY7b09PWXXrp49c9Zxl2vEajSaYDAY
FRWVmpaamZmZkJjIiV8vL9+/d+/+vftC4W4gEGhqapIlSa3R5OTk5OTmGE2myhs3du/cvXPHjsEf
UcZYekZGR4fjwL79/mFXdK6tqeWcZEkyWyw2q9VisdTV1tbceqEC/kBcfFxXZ9e+vfuUt7KzszM1
NbW1tXXHtu2h1ZpdLpfP51OJquSUlOzcnMTExC63+8D+/YcOHjSZze3t7efOng2Fu3Z7rEqtunD+
fFXlkBco9PX13ai4EQgGNWp1ekZGfn5eRmaW0Wh0tLdfKi0tuViipI8jZ7ZYzGZzZcWNE8ePD9PM
4/E01DcQI4vVkpuXl5mVKQjipdLSLZs2nTt7LvRLUpZlt8ul1Wr1UVEZGZlx8XGuDue2rVs7O7t8
Pu+xo0fdbrfSMjc/r6G+Yf++feFHiY2LFQTh7JkzoUWL21pbvV6vSq1KS8/Izsk2W8zXrlw9eOCg
WqO+VFJ67eo1pZnD4eBc1qg16RkZ2TnZFoulsaFx+9atNVXVao264npF+Jq4RBQMBl0ul7+/X1Sp
rFar1Wq1WCxHDh/u7xv4keCct7W1ypLMZdlisVisFrPFvHf3HuVd8/l8jQ2NnHOD0ZCbm5eVna3X
669dvbZ967Yjhw+HJ515Bfn1tXUH9x8I33lSclJ/f//J4ycGr6Dc3tbW1dU1ecqUurq6gwcO3NvV
OWq1eubsWcRYIBhsbWmpr6tzu92h30IH9x8IffZy8/Ma6usP7T8YfqmB8oE8d/ZcbU1t6NWoqa7x
enuJWFxcXE5eblZ2ttlsbm1pOXPqVEN9w4AOKPXVPZ7u06dOHz967B6eAgAAwNdI2F/3bq+GiBFX
wl0i4sRle9bthSqk1kd8DSgAAAAAAADA8MSEotC269oxuhXusrA/iYi+MDNMvH1psyAICYmJ8Qlx
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
L/b19dfV1vp8PlEUY+PiioqKjh45Elq/cPKUKf6Av6W5pauzMxgMarXaxMREgTGPxzO4w3ek1Won
TJzodDodjvbenl4islgsCYmJjKiuti5U6+/82XPXrl0bN27cMytXnD1zpr2tPRAIaLQamy06NTVV
q9MeP3pMaZmZlWW1WZubml1Op9/vV6lUcXHxUVFRwWCws/N26UWTyZRfUOBwtHc4Onp7ewVBsNls
cXFxRNTQ0BheYzCkvrZOluWsnOz8goLWlhZZlmXOPd3dd/uUAQAAAADg64AxEgWBMUJFZgAAAAAA
ABgbwqeSDhfuPr/2RZvVRkQJiYlEZLVa1736SsAfIKKf//RnDofjQXTu2JGjz6xYMXv27IDf39Lc
zBhLSEyYMnXq3j17nnjyibT0dEEQIkaA98vK1au6BwWHbpf7t7/+9VCLiQ4my/LJEyeyc3Jeff21
wnFFnm6P0WjMy88TVWJrS0tMTIzRaFRacs63bNqSlp4+a85stUZTdaPS6/OqRDEhMXHc+PGnT50K
hbuLly5JTkluqG9wuVwBv18fFZWfn28ym3ft3NnZ2Xm3T1Ov1z+/9oWAP9DS0uzp9nCimJiYKVOn
eL3eP/7hD6GPSHt7+3t/ePc73/2TN7/x1rjx41uam/2BgFartdvt6RkZDkd7KNydWFy87PHlDfX1
jvb2vr4+tVqdnpGRX1BQeePG1cu3172zRdvWvfKyx+NpbW31eDyCINjt9hkzZnR1dq3/7LOI62Fd
uXKltKS0oLDgzW+81dzcLMtyT0/PH9/5Q/jydUTk9/uPHjkSemEBAAAAYDCfz3fk8GFRHO4sAGBU
45xLksSVJYgYI8KquwAAAAAAADDK3bp+WZnFO9zXOqmpqbGxcUrT6qoqziklJVW5S61RD27f2tpa
VVnp8Xi+TPcqrle8/8f3lj3++PQZ0zmRFAy63e6DBw7u27MnMSlJr9cZjUYlfG1uaqqy2QYczuPx
VFVWtrW23cOhq6uq9XqdPdY+uIywwdAmiiLnvL2tvaqysq+vj4iCwWB9XZ1SNJiIvF5vdVVVe1sb
EXHOd+3cFRcXX1BYuHT5Mjko9fX1Nbc0b/h8ffHkSXPmzjUaTaGdl5eVvfP271c/tzo9IyMzM5MJ
TJYkr9dbU/2F2tSNDY05uTlTp01VazSMGCfe5/Pt2bX7808+G3nqHBIMBrs6O/PyC3Jyc9VqFeck
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
6XSrnnt21epVWq22ra3N6/WlpqbOnTs3Oyfnd7/5bWNjY2iH8QnxL728bsHChUTU3t7u7fXa42KL
JxXn5eedP3s7uC0oLHzrm9/Mzc1pb293OV1JFsvsObOnTJ3CiZ8+eUppEx0Ts3L16oSExHNnzoZP
3tXpdGvXrYuxx2zdvFW5Ra1WL3hs4bpXXrbb7Y52h6enJ06vnzZt+sRJxb//7W8vlV4KBahRUVFP
rXimx9PT3d31zMqV0dE2n88niiqj0WC2WI4fOzbycFet0eQXFAiiqNVoVSoV5zwrK9PrS1Du7ezs
GtCeMbb6uWeLJ03y+XxGozElJXnqtKkdDseJsBg1xh6z7tVXFi1e5PH0ONodMpfy8vPmzZ9ni4l+
/933Bq+SO7zY+HjlgxQXG0tEZrM5v6BA5jIRdXd1i6IYaqnX6fILCvR6XVxcfIw9JuAPINwFAAAA
AIDh6fSSkuxyWZYl4kTyV3i1GgAAAAAAAIA7Yre3GBsm3D1z6lRtTS0R5eblFhQUNDY0fPT+h6F7
3S53aCczZ81a98orLpdr/Wefl5eVS7KUl5e35oUXnlvzXFVl1fZtW7k8cL7wHbrImE6nM5lNTz79
VHd39+aNm1paWmVJssfa0zMylCBQEIR5C+a/8tqr3V3d6z/7vPLGjd5eb1xc3MLFixYvXdLY0Pi7
3/5W2Zter1+xatWzzz13/fr1A/v219bU9PT0mkzGrOzs+ISE0EFVKtXal9ZOnzH90IED+/cdaGtt
jY6Jnj1n9opVq1557dUb1yuUlPp6+XXOeWFRYWxsbENDQ+jhk6ZMzsnNuXD+fOOtG3Pz8t765jei
Y2K2bdlaerGku7vbYDTMmj1r9XPPvbB2bV1tXWdnp9JSEFhUVJTRaFzzwvPNTc0H9u1ztDsEUYiP
j1fqaI/8pevxeD7+8CPGhOhoW0ZmhizLO7Ztb2lpVe51tLcN2JtOp0tJTd2yaVNLc4ter583f94z
q1a+/tabZ8+cVTJvlUq1+rnnnnz6qSuXrxw8cKC+tk6W5bT0tCeffvq5NWsqyiuOHR04g3l4F8+f
b2ttJaLZc2alZ2TU1dV98tFHwaBERAG/P7witNPp/PzTT1Wi6umVK9LS0zQazV0dCAAAAAAAvoa0
epnLMueyLMmcM865LN3dCSkAAAAAAADAVwvnxBgxpiy6O2S4W1VZVVVZRUSBgJ+IXE7XyePHBzfT
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
TIz2ZJuGbTu0/MZvZdLxqcmBTGrSGHFLqpvabtLaO7x3y8XXc76I0YFDiemR6vqllu0k46Ojg7NH
Dg+e3N17+IPOlXev2fT4wIldqcSEiHHCJWUVTZW1nd17X5uODVz+0ylRq5bd3FDXdqq/e2S83/My
ISfU2bbGccLpTKqr+4vzPuqjba90tq++89ZvhcNuIhETI13Hdp3q7xaR4dFTn+98645bv3X/15+o
rW6OTY2WRCvWrLi1oqJ2556tR47tvrq3BQAAAAEWsW0jIqIsLcZYWhmWewEAAAAABIYh3MV1IjbR
t2/78/Hpseb2m2obV/leSkRsJ6KUGh3syqSmRcQY7WVSvp/Ohqla+14mpf2Zqa6+n/a9lNZaRGJj
J/d99syKDd9ZvOobyfiEiBalRvsPde1+uayiqaxqUWlF49REn4j4Xqrry5cymcSS1fctXfdQOjml
jW/bISXWkX2v5mb9GtGhcElz5y2+l/a9pDESCpfYdujwnle7971x1a86MT16ovvjZeseFpHhvv3x
2NCsHdLJ2KGdf0snJ1sW31pZ2+llEiJi2WHLsmPjJ5KJsfydfS/jZVL6wms1a2OO9e6vLK/rbF+9
uH2tEW0py4hMTA5/sff9Xfs+PO+jDh7Z8e5Hf/3KxgfvvOWRtJcSI4nUVDbcFZH3P3lRKbXxhq9/
/fbvp9KJsBMpLa3cvuvtdz78cyqdyB0kk0ml0zP/dc4U7HvpdNI7Z8FqAAAABFgkHBIlRoujlTbG
1/oKZ7AAAAAAALCAKDp3cZ0yenTgUGJqZGyoq6yyxXEiIuJlEtOxwdGBQ9OxIRFJJSb3fvaHxPSI
76VFZGTg4O5Pnh7q25s9wNEDb/X37sh2smqdOXrgH+nUdE3jCicc1X5mOjbY37N9auLUvm3Pl1Y0
5SegycT44T1bpicHKms7Q+ESpVQmnZia6B84sSP38+j7ma4vXxru3++WVDuhqCjLyySmJ/pO9Xye
nB69lpfdvff1xNRI9uWcO5dXxEyM9uzb/vzYcHdlTbsTiooo30vGp4bHhg6PDx/N7ed76aP73+zv
/WJyrPciT/fxti29p7qqqxpK3DLHCRtjUunEyGjfvq7PxidmR8tZ6XTyg0//Pjxyqqa6ybZsERkY
Op67d2jkxFtbn+sfPF5b3RQOu56Xnpgc3nvos/x9ROSdD/8cdUtHx8/qM+45sf+lN3994tTsfmUA
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
T1ldXZ0fHzl8pOvazPyhZ/7QzglbZ7buu+++BVUHAHBZuOap16ysbK/DfPXVV7dt27TN7l+ZNjc2
jx8/vqDqYL9lE1EZtb0XUWakcBcAAIDxEO6yxH7nd//xs5/znPlx102uuPLKyWTy3/3L/37nhLvv
uvt//Z//l4h4+rXXvuwXf7Hr2u99k+PHj3/0r/56/rBDRLz+DW84cuTwnpd759vf0ff9/PhXX/lr
11xzzZ6n/dVH/vL++++fHz/vuute9OIX7bkQ3Dfv/ObNn/zk/Hgymdzw+tcdPHhwzzd8x5+9fRiG
+fGrX/uaq666as/T3vfeP19fX58fP/8Fz3/+C16w52lf/vKXv/j5L8yPjxw9+qpXvWp1bfV7T5tO
p+9+100735bXvu51V1xxbM833P1tedFLXnzdddftedpnP/OZr9/+9fnxU655ystf8YrJZPK9pz38
8IkPf/CDuz6OG48cOfJ9r/vyV7zi2mdcu+dp//5v/t977713fvysZz/rpS/9+abd4+7ePd++5+Mf
+9j8upl54xvfcOjQoT3fcPfH8apXv/rJT37Snqd98C8+cOLEifnxj/74j73whS/c87Tbb7/91s98
dn588ODB61/zmgMH1r7vdV9zw2uvvMD20u96xztns9n8+Gde+MIf+/Ef2/O0L/zt57/yla/Mj6+6
6qpf+bVf3bnpv9vp0+vvf9/7dj6O173+9UePHd3zDXd/HD//spc9+9nP2vO0T/6HT971zW/Oj6+9
9tpfuNCo/O7xj/71uVF54xvfcPjw38eovPPOO2/55M3z48nKyg2vu+HvaVR+6Utf/MIX58dHjx19
5Sv3HpVbW9P33PQDj8oXv+TFz7vQqPz0Z77+9bOj8qnXvPzlL7/AqHz4wx/80A88Kn/5Fdde+3hG
5bNf+tKXXmBUfvvjH/v4rlH5xkOHvv/H8Rij8gN/8YGTj2dUfu1rt3721vnxwYMHr3/taw6s7TEq
q+Kdb79ko/JJV/3Kr45jVL7ymmuesudpf/mRv3zg7Ki87rrrfu5Co/KOO2+5eXtUrqys3PD61x04
cGDPN3yco/LP3/PejY2N+fHzX/CC57/g+Xue9uX/9KUvfnFnVB575Stfua+j8iXPu+55e572mU9/
5u/OjsprnvrUX3r5L+3LqGzb9nd//z/7oR/ajnJXV1ePHjuWmbt/ZfraV2/7N//qX+/5JrB82i6q
YpgPuoxMG+8CAAAwDvN7aMJdltiBAwd3bi63bdc0TWbuvt188OD2LeCnP/3pv/Fbv7m6useN8q9+
5at/89cf3XVn9oanPnXvfOimd920c2f2Fb/8yxe6I/z5v/3bnRjpuc997m+96U175haf+NjHb7n5
5vl1J5PJ62688UlP2vtO9Lve+a6dG9a/9spXXuiO8F9+5C93YqQf/4mfeNM/+O09T2ve/Z6dcPfo
0aM3/vobjh7dIxhYX19/73ve258NJK5/9fXPfNYz93zD99z07p1vy8/+7M9e/5pX73nagw8+eC7c
fcpTfv03f2PPG/Tf/OY3P/KhD1dtv+FrXvvapz39aXu+4bt3fRwv+8WXveglL97ztNtuu20nRvqh
Zz7zN9/0W91kj3/v3frZWz/x8XMx0g2vf93VV1+95xve9KiP49d++Ed+eM/T/sMnPrET7v7Ij/zI
hT6OD3/wQ5/77K3z6x44cODGN9x4xZVX7Hnmu97xzp3rvvL6Vz3n7GMN53nvu9+zEyO94Kd/6o2/
/sY9T9vY2NyJka686qo3/Pob98xpjt9//wfe//6d7/P1r331M57xjD3f8N27fgxe8tKXvPwVL9/z
tLvvvnsnRnr6tRcelV/+yt98dNeovOGGa57YqPzcrZ87Nyqf99zf+u03Nc0eo/Lj//5jn7r5lvl1
V/ZlVH74Izuj8id+8icvOCqb5ly4e+FRefr0+p+/9wcelS/8uZ+7/tXX73naAw88cC7cfYxReed8
VG5/HI97VP7ii178oj1P++pXv7ozKp/5GKPyM5/9xMc/Mb9u0zQ3vP6GJzgqP/HxT5w8Nyp/9EIf
x4c+8MHP3fq57VF58MCNb7jxiiv2GJVVddM7f+BR+VM//VNvuOCo3Nj9yMUbfuPXD+/1iMnx48cf
76jc9XG89KUv+aULjMq77rpr16i89kKj8isXNSp/+Vd++Sef/5N7nnbrrbc+cG5UPu+xRuUt26Ny
sjJ53Y2vv1Bq+zhH5Uc+9OGdcPcnfvKC/63MzHPh7mONytOPGpWvuf6Zz3wc/6180c++6vq9R+X9
9z/wd49jVN55x50/6Kg8ePDcr0wrKyuZed6vTBdKzWEpNV3M23ZriAhtuwAAAIyMcJcl9u533XT4
8Pa970OHDv/L//F/OHL06L/53/7Vzgnrp7djlbvvvvutb35Lu1c30oMPPrhzezQi3nvTTQcv0LK5
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
l/638kU99+XEc12+fHmapmefffbcuXPP+xJiKenChQvdfdfLlStXrrzzne/89re//e1vf/tllAfA
vaqOk91K+rmnE73UX+UVr3aXx190tbt8nZrn+dlnn315pe675U/ghd57elVYVffff//y1f/o6OiZ
Z565R75FcLLkvGu5urzCXx6/R0plTy3PsXmer1271nfuWVmtVu985ztPvt+S5F//9V9/8HzD/R55
5JE3v/nNJ3d/+MMffu1rX+t7aQfM8lfm+vXrR0dHP/kjDw4Orly5cv78+dVqdXh4ePXq1ef9Btpg
1uv1e9/73mefffapp566a8m2/NE99xlyslJ+3oUSP5Xlb9lLWZyu1+uDg4Ojo6PT3xRdnHyL+65X
F5cvX37iiSe+973vfetb33p1ygdgKK803L3vvvs+8YlPHBwcPPnkk9///vdPHr98+fIf/MEfbDab
z3zmM0sA+ZGPfOThhx/+0pe+dPqb8qvV6td//dcfe+yxf/iHf/jHf/zHJI8//vjjjz/+rW996y/+
4i9O/0a/+Iu/+Ju/+ZvXr1//9Kc//VNVeP78+Xe84x2PPPLI9evX/+mf/un0q9tz58594AMf+Na3
vvWd73znta997RNPPHHx4sXvfe97//zP/3w6NH300Ud/6Zd+6a/+6q9epddA73//+0+/tj7tf//3
f5988sm7Xgc8+OCDH/vYx65cufLUU0996UtfejVKel7r9fry5cu3bt167uuSEw8//PAHP/jBBx98
8ODgYAlrr1279tRTT335y1/O8bMiSXd/5Stf+cpXvrJ81gMPPPDxj3/80qVL3/zmN7/whS9cuXLl
d37ndy5fvpzkz/7sz04/r5ZPPzw8/PznP/+9733vpRf/vve9721ve9sLvfdv//Zvv/a1r730X+1e
sFqtLl++fHR09H9h9XLhwoWPfexjDz300LVr1/74j//4uTs/3vWud126dGm5nqbpO9/5zvPGSI89
9th73/veJKvVarVaffnLX76nwt0LFy584hOfeOCBBz73uc/9hJzp4ODg3e9+95ve9KbLly+fP3++
qpZdFH//93//9a9//WdZ8M/e29/+9g996EN/+Zd/+bzvfeyxxz784Q+/0Oc++eST3/3ud1+typ7j
rW996+OPP/79739/78Ldhx9++N3vfve//Mu/vJKw86X/rXxR99133+///u+vVqvPfOYzL/RV+JOf
/OTBwcEf/dEfvfWtb33Xu971X//1X1/4whdOZ/lV9dGPfvT1r3/9d77znS984Qun1883btx485vf
/I53vONTn/rU/4UdEgD/N1Qq6SXWnU8FvT+1+++//7d/+7fPnz//5JNPnl5Inqx2P/3pTy9fPpbV
7l3LivV6/Ru/8RtveMMbvvzlL3/1q19N8sQTT7z97W//xje+8cUvfvH0b/TGN77xgx/84NWrVz/7
2c++vFJf1MWLFx966KFnn332pX9FvnLlyq1bt342Xx/f8pa3/Nqv/doLvfdP//RPf/CDH0zT9Ja3
vOWJJ564//77l/XmsvXz3/7t3/7mb/7mZ1Dk4v777+/u535n/wMf+MCyru/uL37xi9/85jeXx3/v
935vWdveunXrD//wD39mde618+fPX7p06fr16/fgdvYd+vCHP/yGN7zh5s2bTz755F2rjNVq9Su/
8iuve93rcvzy+0c/+tHzhrsPP/zw+973viTTNK3X669//etf//rXf5a7YH+yaZp+67d+66GHHvri
F7/4jW984yd85O/+7u8+9NBDS7PEstXj2rVr//7v//53f/d3L5oK77Vf/dVf/dCHPvTXf/3Xzw34
P/7xj7/mNa+5efPmn//5n5/+p/4973nP29/+9iTf/va3P/e5z/2sKx7IhQsXPvnJT547d+7Tn/70
C31rdFmcfvazn33sscfe//73//d///fnP//5uzZ+feQjH3n00Uf/53/+5/Of//zpf+Vu3rz5xje+
8fHHH//Upz7lXz8AXky90nB3vV6//vWvv3jx4l1tkavV6pFHHtlsNicHGr32ta995JFHTm8kTFJV
P//zP//oo4/+x3/8x/LIAw888Mgjjzz99NN3/UaXLl165JFHftqNzNM0ffSjH/3lX/7lZ555Zkl5
/+RP/uQkzvn/2XvP7jauLGu4CpnIOWeABMGcRFEURSpnOXS7u1enmem15v0y/2P+xvR0P22327Jk
yVaWJStQYlBgzgFMIAAiECByqno/nHF1NZIgKlrGXl5eUOGy6qLq1r1n33POPmazubOzMx6P0+n0
s2fP4jieTCatVqtSqbx27RrYSWw2++DBgxwO59mzZ2/CuYuiqFgs1mg0yWQy//yJRCKnIhSLxTp6
9GhNTQ2Kom/TUYEgiFarPXv27Nzc3O3btws20Ol0Z86ckUgk0GcURXEcx3FcIBA8f/4cx3EYFdA4
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
D0JgoxZBrLQgAAAAAElFTkSuQmCC
--0000000000006dc942062ce61a34--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 30 Jan 2025 04:44:44 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 29 23:44:44 2025
Received: from localhost ([127.0.0.1]:43841 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdMQ0-0005VB-B1
	for submit <at> debbugs.gnu.org; Wed, 29 Jan 2025 23:44:44 -0500
Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]:51422)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tdMPy-0005Ut-2Q
 for 75056 <at> debbugs.gnu.org; Wed, 29 Jan 2025 23:44:42 -0500
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-43621d27adeso1793935e9.2
 for <75056 <at> debbugs.gnu.org>; Wed, 29 Jan 2025 20:44:42 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738212275; x=1738817075; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=jL/mqddK0FRlsnZ4JfznpyMPHW++RTW56PHddGgxHN4=;
 b=jXW2Glofrmnmp3tY0cM7b/5Xj4KLmB0nErXegdE9/WjJaL9a85Gn4+cuNPHr14UbEb
 ZtbgxA81xTk0rgXCxAn7j0q7uyHae+TbCvi+u8MaZjwTcp/IfRPCQo5sUKX6tYkTbSQ5
 P3W9HnqMgBC6a+KHIn5rd5jExtKyy84KXdH0mkE28Prup3C1Vjp8/SNgMppZyc1j9pSn
 /sY4o8Nk0b/9g2jsP6G30UV5scLg5lAwiISyPDVRDvVQkOHw043aFFdf11uo1ao3y6Am
 eTSCUJqe9PIlgk7wzHkELG+2byJTxyCkGTDbzTupzMDGu2gcVp1IFtaHrzTW+/P0KWPo
 9lpA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738212275; x=1738817075;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=jL/mqddK0FRlsnZ4JfznpyMPHW++RTW56PHddGgxHN4=;
 b=GeIZAXG0FvponV6OlW9MkbyWdRrmjpogKbJqUQHVkP5rUIiEUoRJpYHn6P8iaKwR18
 rvJbPSOFtwzcT0waMgr9lTrqFVq6oYzAVLGW/29OxL998lBnZZ2NQ/jfbMiSr3tDCnAm
 k7hAPAqtXZna0bVyis6zmLdTkiZeILPaE7DQyIpt6JV4cTcMg+VJ9dhEqyZAz/mcoLu8
 BY5qiDhhk0YucqXjsTSQWypvMXL+qdbOr/9z535o9zLllXRyxQ5D1HGYapTLrVOIzoP4
 hCF/dv6oRHBgY6hvpMDQdZyQeR4hvhsoN+F9qFvc3os0h3kaPn1N7rETkn4zCRmvhdQ2
 R2LQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCXiCuEmnaBP9EkeJBRO8KRWkCAVCleia+ZGu4lNTR8DF7m2KHx7Wbv2BvR6fCNdT4UFkZXCHQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxUxZ2aBcmOlJ14JdR84mUTUzkgYshm6HhCd7RDRs+rluRvys4j
 h5E/ljynsm2qvyppOuY8nnYquacgMmB0lWhjDXzOcOYF30ScZnKbboseFA==
X-Gm-Gg: ASbGncvAywvbqteRCnIcaFKa23XGe/CGPUZHsjP0kcii3EZCHHH7qH3Fxo1biAORFht
 bhhMXucrL8Lj6yB3QgzR9hscHaWNaJFidMBdNdfBy+IG4Z9KmfHC8y9IouIO9AMTwuuPDGVDNef
 BZcHvrwx0nPR7OQN973QyzAKc1rIVFJwm5JaAY/5M5eJehrFyUl24t9S6BqXzd9DK3CY+d+JB7l
 mx6unTqnIwpkeQJ9QYNPDyHCZFCVASXGKdEHtFXK77aTTVHHTGAFFb+267K0nm7dusq43QB3eKD
 Cy0/B8bcuqQmted6mD9aXyLBURktGFXeodD8wR+rpbQtjGlmLm70VJDy+Zjm2ki9LQ6R+juFAqu
 rZOPUVCFvK+g3sEKW5IdMK6GQ
X-Google-Smtp-Source: AGHT+IG3Hd3eyre6U+9j1NIxk8pSvGTR0HLvpLBepeGvVCdrH0aeUZZHtpZcngrTqlo2Jf456bUtQg==
X-Received: by 2002:a05:600c:c12:b0:431:5aea:95f with SMTP id
 5b1f17b1804b1-438dc3cc378mr51802815e9.16.1738212275288; 
 Wed, 29 Jan 2025 20:44:35 -0800 (PST)
Received: from pro2 (p200300e0b720a900dc01849cb197321a.dip0.t-ipconnect.de.
 [2003:e0:b720:a900:dc01:849c:b197:321a])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438e23deddcsm8681765e9.14.2025.01.29.20.44.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 29 Jan 2025 20:44:34 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> (martin rudalics's
 message of "Wed, 29 Jan 2025 19:03:21 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
Date: Thu, 30 Jan 2025 05:44:32 +0100
Message-ID: <m2v7twdi6n.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>> Back from the drawing board, please find now 3 patches attached.
>
> Works pretty well so far.  I'll do some further experiments with it.

Now pushed to master.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 29 Jan 2025 19:10:01 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 29 14:10:01 2025
Received: from localhost ([127.0.0.1]:43072 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdDRo-0005aC-Ob
	for submit <at> debbugs.gnu.org; Wed, 29 Jan 2025 14:10:01 -0500
Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]:42134)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tdDRm-0005Zv-0C
 for 75056 <at> debbugs.gnu.org; Wed, 29 Jan 2025 14:09:59 -0500
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-43635796b48so7915285e9.0
 for <75056 <at> debbugs.gnu.org>; Wed, 29 Jan 2025 11:09:57 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738177791; x=1738782591; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=tcG19iHuY5rJ3Vfqg9+chUwQzu92H4AsNgruXo+sudc=;
 b=NApgePFhj1pJ4B1QZmlEOBUjHlqkyqu4oW7WHJj8Dv4ECojBo9KpdYphUPlmwc9eSn
 jfarkzA60phhwL0kcU4S/HCMWyLMwvlNFjXFWUv2ZZQ0Un99+FekqGC+bEmW1wiVCmd+
 t78vMUvyBccJSXfEfw5qND7m9t+nLEYGklmfXhrXIhKy+u0wk84ZWxEleAjUAnGrGwvB
 Nfae3ool2FbEatbmZqLLLxjCrIyHkMKFYikGbj0jgmuAe7Z9Km87gfcvK152AuLEYRr+
 x2QcmK2GwjRmjWx1cuSsNL8/gu01lPgrn2tKeEPlkvnzG/5rUvKwkHpixSnZLKivpDgl
 OhjA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738177791; x=1738782591;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=tcG19iHuY5rJ3Vfqg9+chUwQzu92H4AsNgruXo+sudc=;
 b=kW0qwL+B6LTGFM/Q7+QO1zizr7iaW4lfRYNdvfuegMwAi6wWuAT+ek4ykLVnMb0x+4
 Tz5cvEPWGfYaCx4dVbMmBWRueUbBqRHIfUGPcwzhGy2NEgWHT0AlwLq+8grpTVgbTxrt
 jO/7yWYQSJvyYp438nTj/VQWwoI6S2RnvZGnKX/yyH0lGL29tLY+7ukOv9UBmfKehZGm
 NstcmJfA4IdJsz5I+nFzPMS4xxY7k80DnYbsZv05GIQNJcdywGl1qksMElNnnICGSLSx
 vU2KBAkmWDgaKqzYv4HuqqrcOKHkF9K/CvKLq3Ugcg9U40gFRISzdS/13j/v2R4qe8/X
 MlEQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCVc14LVEZqexD+YMDVtYTx9cC5trA+C3NYeLqTH1PgMO/RUCVZFoZfoXB577ofs+ykQYCMd7A==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyRUQzs0KFO2LHOpK+9onwYVIlwVCku7rmM6/0TI33SmO3Nia2p
 oDPo2NyGfsqApU3ThY+8cNZlElXQFV10CnJ/IGRYDJcthPyhK9BUjozHJw==
X-Gm-Gg: ASbGncsXXNaUoW85UTIoRyUnK/rb9TcJUfaxFksPy//Zzxyoal6s5opDwPfRUFDPCyY
 pxzwAeXw4DffRm2QD4IBEPD7d5U04RizVsb5pg7fFXttLcKMXqvIMMlvkQXt9s8shlB1cjH2vsk
 1KbJy/aZkpNMn0apKIEpxqyS5xbQZjqNp7zN7h29z4lhPTKt+oXL2KcbYMrFEvcIUpHiPy8TMl2
 hIFdCXzJZuD7/XkJI3rtvny33ljJpEd73OnNnX6/ZHjDPCvMuJ5pXX8pJ+Z5QgLkVTIUGBHfLnE
 71X8NFHegH8Xf8ntC5S/0kbvgmsGA/Z/9BS6QY2IFMmMcWLNBXmib4wvd0FLuesqt8ig559rwFI
 7dLswBxHKpFihSfONGi4YHao6
X-Google-Smtp-Source: AGHT+IGLLFJBD9uOsjASpJNmMJOodnL0c8dJTsEQZ7j2236rGhXYTTg9aknWNcZEZ4Fic/YBmlT7+w==
X-Received: by 2002:a05:600c:4710:b0:436:1af3:5b13 with SMTP id
 5b1f17b1804b1-438e171a60fmr4320485e9.15.1738177791220; 
 Wed, 29 Jan 2025 11:09:51 -0800 (PST)
Received: from pro2 (p200300e0b70d1c004d3b680a62916f26.dip0.t-ipconnect.de.
 [2003:e0:b70d:1c00:4d3b:680a:6291:6f26])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438dcc27125sm31706535e9.15.2025.01.29.11.09.50
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 29 Jan 2025 11:09:50 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN> (martin rudalics's
 message of "Wed, 29 Jan 2025 19:03:21 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
 <m24j1h3h6d.fsf@HIDDEN>
 <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
Date: Wed, 29 Jan 2025 20:09:49 +0100
Message-ID: <m2zfj91loi.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>> Back from the drawing board, please find now 3 patches attached.
>
> Works pretty well so far.  I'll do some further experiments with it.

Thanks!

> Next question: What is the special purpose of 'tty_child_pos_param'?
> With a negative value it makes a frame disappear on the left of the
> parent which is not bad per se.  But the manual says:
>
>   A negative integer relates the right frame edge to the right edge of the
>   display or parent frame.
>
> So
>
>   (modify-frame-parameters nil '((left . -5)))
>
> on a GUI child frame moves the right edge of the child frame by 5 pixels
> left of the right edge of the parent.  Inherently, negative positions
> are deprecated on GUIs.

You mean this one (nice copy function I pilfered from the Internetz):

frame.c:
 1451 int
 1452 tty_child_pos_param (struct frame *child, Lisp_Object key,
 1453                      Lisp_Object params, int dflt)
 1454 {
 1455   Lisp_Object val = Fassq (key, params);
 1456   if (CONSP (val))
 1457     {
 1458       val = XCDR (val);
 1459       if (FIXNUMP (val))
 1460         return XFIXNUM (val);
 1461     }
 1462   return dflt;
 1463 }
 1464 

It has no inherent special purpose, and probably has a bug as you
describe. Like perhaps the one for the size. Both are an attempt to
mimic what is done for window-system frames, while being depressed that
that cannot be easily reused, and being too lazy to rewrite the whole
frame parameter department :-).

>
> Also when I want to move a child frame to the left of its parent via
>
>   (modify-frame-parameters nil '((left . 0)))
>
> the left border disappears.  Is that intended?

If I understand that correctly, then probably yes. The borders are drawn
around the frame, so the left border is at left - 1, the right at left +
width + 1, and so on.

Whatever is outside of the terminal is clipped.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 29 Jan 2025 18:03:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 29 13:03:35 2025
Received: from localhost ([127.0.0.1]:42922 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tdCPX-0002az-31
	for submit <at> debbugs.gnu.org; Wed, 29 Jan 2025 13:03:35 -0500
Received: from mout.gmx.net ([212.227.15.19]:39939)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tdCPT-0002ak-Tg
 for 75056 <at> debbugs.gnu.org; Wed, 29 Jan 2025 13:03:33 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738173802; x=1738778602; i=rudalics@HIDDEN;
 bh=qDI7RzPhfrIb0p5WWzFox07zm/cCt9fdYH4yfgcTVvQ=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=uK1NSXhBbOLsMb4qS/Q5Od82D2NW4xFX1cUnavlfz/CceP/0IcJvRob+naI29iyy
 SjBrG+U6GcFkfTXVcihF3POMP2dNxdCcGOoHCGI+jTzK75fiOgZZqvm8b304pyhtn
 PS7Vg3GZ/ex3nEMQj0StKMos4Set9KUSTDAyNnYfUehI6bW6RVyxWNxqEuP7nehl1
 9Zqso0ZLRqKpUatcThrAD2hsHJFFQFA+Ru9SJoAtZ+JI3vrclJZoss1AHg7loudZy
 MdSkDEyfWKl5WxG7jy82yW2Y7xuxJ0V80Ho0NtAKbJS4kd2v6KxejdQSRwtPJj4QU
 lR6MxHosJTmYBm15yQ==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.251]) by mail.gmx.net (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MvsIv-1tMUVJ2Kxz-010tTR; Wed, 29
 Jan 2025 19:03:22 +0100
Message-ID: <ed11ae11-e792-43ed-b246-7edc00dd27f0@HIDDEN>
Date: Wed, 29 Jan 2025 19:03:21 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> <m24j1h3h6d.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m24j1h3h6d.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:vIHQE6yT5US1TE146XJ93l5WsNHBZTBpMXV+1U0Fm9wO7sdYEeU
 tA9+e2VyMeNAexhDGoVpk05xTrArzfJzRxEzGDilzNgIjvViMlu6gQ/Wj+lIeRBDYooD5Cj
 zHNkNowxrQYPphbOpdZPQDIKUOVc1OK8hs7TPRt7Kgjnw7HHy44oV3LrT++xfnh6hh8N6Jw
 jMx5TZqeT55i2TC9h03yg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:rrCWYHPm5s0=;EUAu07VKx+PBgRrEX60Fz9qjIBh
 tzaosvHUkVwlUlqjZ7d8OMpMNzoo/gXYmMubyJDCkrNElNGTUhKRR0njwVCCehrhbkWks8/6U
 smt9M/8LDHh+G3ZZ6EHutym0sPB0Nklc7ih0m+1OyThZLyuC6qFlP562bb9+Q7I2hSh7X5B7s
 ky3N2PKOT5nZ95gZxxypj8jGsNqVj4YnHZaUPRTaeOjxeFUslDSVOWpeRvZlitb6HcRqVR+XF
 9fptudDmqsuIP9d2gHLAENruGADJQFHJO0oc5GzXUjtPOhpyfKjM5jrHmGhGp+RyxWXhcJIAG
 3bH7yfSOMgqYTW0IY+sHs5gr2HBmbda6jfsZSdkYDzReuOr+WB69YVWV9u+ERvJzI1fLH0WsW
 8PYlDAAJnNLGizzpZlk1h3ZozK59CV0FD/7iKat6lirVaKng76enCQQ5pQbObZ3Lng4EVioLR
 GwlygVJVyWoNKVOnj8o+5VBNAFbpgxx7q44819oBmOPI120Hm92IVSRXE1zmZcnU8hg41wa7g
 UXYsFOlG9uxac5XxYHWsK9kyvvzhwOe1xuUi8P6FQeRAOKh3DgLrlwb63+HvgDzvLAHeU5fHr
 Qj2/bvAarA+NcvL4S3cCwUw9qzT7pEAHixVpD4SnHLczg//cE8f8vUmVhc7jjdjYEILJWXdVz
 jBBN0pTwGvlzvBxz9dumCZglnp67zskumwC6qPgZ8QSCpVW+EjvIIWjFXWMrAfwvAWqKtHSLI
 OZNyZsV3JyvhXxYkOlS9wL5jyC0KywNAiNFrUvpDMON2STRKaYtLBT+oJDsxSKxNYIV8QgIYj
 mLjTbtzeeWwKorFND3mB+nPx1nx9Yj9gawhfj+N6HfjS4J4Cs4sRzxiUdascidmfeEUzaB+W3
 ZNC3kBU3g2bF7sBXmRDW6rfIGUNyMLQCE5IWK0FJrI0gHWqFZzyU8KEX3yQY4XYtiTZ8pi+lq
 LIIPy8Koy+IyIQJPe6OlQFiR6TVbjJtJIKMXAnFHMH+PzmlnuhvWkgA0n9WWVlJy1AFoFegU9
 fgB2Ddh5B/gBS2ikzdrVFGfSn/I5oTJ1XqP1t66XghDTZ84+THbQeN0a+awyQapkgo9HDmO4N
 aXwOdsvU6FHcEU8FX8c2PfdGW3rqmebQjUrwq2s66nfOivH3VWLSBtd9KY1iUqT5rvRhelye6
 WL/6FqP4Top6xStxMdRD4YTKvvmMynAHA5i7i4KFoQw==
X-Spam-Score: 2.9 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 Content preview:  > Back from the drawing board, please find now 3 patches
 attached. Works pretty well so far. I'll do some further experiments with
 it. Next question: What is the special purpose of 'tty_child_pos_param'? With
 a negative value it makes a frame disappear on the left of the parent which
 is not bad per se. But the manual says: 
 Content analysis details:   (2.9 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
 provider (rudalics[at]gmx.at)
 0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 -0.0 SPF_PASS               SPF: sender matches SPF record
 0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
 [212.227.15.19 listed in wl.mailspike.net]
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
 low trust [212.227.15.19 listed in list.dnswl.org]
 3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
 [212.95.5.251 listed in zen.spamhaus.org]
 0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
 The query to Validity was blocked.  See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243
 for more information.
 [212.227.15.19 listed in sa-accredit.habeas.com]
 0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
 query to Validity was blocked.  See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243
 for more information.
 [212.227.15.19 listed in bl.score.senderscore.com]
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 1.9 (+)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 
 Content preview:  > Back from the drawing board, please find now 3 patches
   attached. Works pretty well so far. I'll do some further experiments with
   it. Next question: What is the special purpose of 'tty_child_pos_param'? With
    a negative value it makes a frame disappear on the left of the parent which
    is not bad per se. But the manual says: 
 
 Content analysis details:   (1.9 points, 10.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
  0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
                             [212.227.15.19 listed in wl.mailspike.net]
  3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
                             [212.95.5.251 listed in zen.spamhaus.org]
  0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
                             The query to Validity was blocked.  See
                             https://knowledge.validity.com/hc/en-us/articles/20961730681243
                              for more information.
                             [212.227.15.19 listed in sa-accredit.habeas.com]
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
                             low trust
                             [212.227.15.19 listed in list.dnswl.org]
  0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
                             query to Validity was blocked.  See
                             https://knowledge.validity.com/hc/en-us/articles/20961730681243
                              for more information.
                             [212.227.15.19 listed in bl.score.senderscore.com]
  0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
                             provider (rudalics[at]gmx.at)
  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 -0.0 SPF_PASS               SPF: sender matches SPF record
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager

 > Back from the drawing board, please find now 3 patches attached.

Works pretty well so far.  I'll do some further experiments with it.

Next question: What is the special purpose of 'tty_child_pos_param'?
With a negative value it makes a frame disappear on the left of the
parent which is not bad per se.  But the manual says:

   A negative integer relates the right frame edge to the right edge of the
   display or parent frame.

So

   (modify-frame-parameters nil '((left . -5)))

on a GUI child frame moves the right edge of the child frame by 5 pixels
left of the right edge of the parent.  Inherently, negative positions
are deprecated on GUIs.

Also when I want to move a child frame to the left of its parent via

   (modify-frame-parameters nil '((left . 0)))

the left border disappears.  Is that intended?

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 29 Jan 2025 13:04:24 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 29 08:04:23 2025
Received: from localhost ([127.0.0.1]:40262 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1td7jy-0001KH-Bv
	for submit <at> debbugs.gnu.org; Wed, 29 Jan 2025 08:04:23 -0500
Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]:61502)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1td7jv-0001K3-6V
 for 75056 <at> debbugs.gnu.org; Wed, 29 Jan 2025 08:04:20 -0500
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-385de59c1a0so3962670f8f.2
 for <75056 <at> debbugs.gnu.org>; Wed, 29 Jan 2025 05:04:19 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738155852; x=1738760652; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=cMRSNx2Df3vq7OiXwZ11+15/t/NGjioNO6UddmwFks8=;
 b=gdOqdFiHQYLUr3ZhavsOEbE9ZeJRUDiQURssGRzO2Zqw/8Um0FfCeL1jR11RusMR6Q
 y/rbHK4yWkWlcx4c+XyAZEOeBYNwQ1Aw4ruR+nxJ65m4ffOT4GinFXhiYBb4SPkSHJG7
 OJsqtXSPknKyMICmJwnllwwgUPuIWCfV4fiP4660bfKG9wrSJFjTDhz33Sm3uPNGsuuS
 whLPP+OWU9J563oLWaruYVjWoU4IalUESyh+wb7t9hHvrQVAEq0DG5vekx3Cd6xkTFdW
 bEdD0KLtc6nNEpty+nym9izMn7ri5Y/AnS5bFi+lMh+LHXI1ZxSfRBL6Gl1yb1DykdMP
 H2aQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738155852; x=1738760652;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=cMRSNx2Df3vq7OiXwZ11+15/t/NGjioNO6UddmwFks8=;
 b=pAdDsYrjP9vVaVgJYxnMoQbYF0Vx3854t5eqZJyDgyQmnQHhypZvthf/lM6wG6q3iD
 cZ2/fGbQbVfQkUFAwVwLdNk56XTkbvmK6tX2nq8vZhc+P7eIrzQS4AhVqjvAavUiyvJH
 J2kTwBzjvf/cf5f4E9rRIWoghGQquq2WjlNjystXepplJdX/5xAfmq9XxygAV5Hsnl5Z
 rDF155BvbkAqMDE0nhvUk0LZgOCip/ghky0IhtZPxnc/XYadZv2EL41rfkc3TjsIxIK6
 QF+5vV5HF0kntpc4lropxqp2g5T77Qb9F+AAPH3VHxFDrspwiBBBSp+5Sf1KV5IFaspY
 VB9g==
X-Forwarded-Encrypted: i=1;
 AJvYcCWhsGD/IVUNufIQBpo3i2Q2G+tqilftnW/diMaiy5C4bVVoPUx/ZTuj7DVOrF3L3/7hbWUgEA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxptfOA3MxL5VfbfSa1CXt0iOdggDgBH0yAkJ/de7sF24gE+pOi
 9uiT0PBwuyzl+vxvmIfJxWBzC1vLbIqdpbRO5bK/71D3pfViHxlEofQjtg==
X-Gm-Gg: ASbGncsJGFXjqiXP0i+0AfIGi0DgsS/0ROjZO4FUtAhBjQw5Q57ZVrWjuOj/EgSGbHj
 UGL3XYwS3/SIDpIqdi4zJNlrC/icpn+dwV9MJVR03rr3/MDR+1oxQDpr17NwrbzqGy/i8zpmtM1
 6eLTDGAeBm9inF3RMO5JsOefUxdvwfmzp0vftQliz0xpO01zOjMPolnf25bK4axBbVIw03QuW50
 9cSfwpPSDCOCDXqS96x2/6HbLifzOrMjyPt3QE5YM4pcrBAPWVV0wLQTKDGb+2rvWaZsv8yD7GK
 HCsarK8FLcDQXshIexF3beTptHrLYdn5vm00swwlNIzWfVfuHcQYQ6h1sNup+GInMGWmijd3iqz
 m/ts9RlBH+mFLF2C2ercdG6UA
X-Google-Smtp-Source: AGHT+IF2cDsK2vaF5ebcqIdb1cLZjAPHKYxnYTb/8Ed/ZTO8Dd971Bmn3gV9PaaqIsjGrnNHq+anhQ==
X-Received: by 2002:a5d:6c66:0:b0:38b:d7d2:12f6 with SMTP id
 ffacd0b85a97d-38c51932163mr2502709f8f.2.1738155851972; 
 Wed, 29 Jan 2025 05:04:11 -0800 (PST)
Received: from pro2 (p200300e0b70d1c004d3b680a62916f26.dip0.t-ipconnect.de.
 [2003:e0:b70d:1c00:4d3b:680a:6291:6f26])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38c2a188bf5sm17309996f8f.50.2025.01.29.05.04.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 29 Jan 2025 05:04:11 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN> (martin rudalics's
 message of "Wed, 29 Jan 2025 11:18:52 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
 <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
Date: Wed, 29 Jan 2025 14:04:10 +0100
Message-ID: <m24j1h3h6d.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

martin rudalics <rudalics@HIDDEN> writes:

>> But it seemed to work on the release branch.  Anyway, with your patches
>> I don't see the assertion violation any more so you should check them
>> in.
>
> Spoke to early.  Now setting the cursor in a C-l child frame doesn't
> work any more.

Back from the drawing board, please find now 3 patches attached.

Idea was right, only that something was missing: the selected frame is
insofar related to the update that if it is part of the z-order on the
root being updated, it determines which frame in the z-order has the
cursor. Sounds a bit complicated, but fixes the problem :-).

I have rebased to include a comment fix you mentioned in one of the old
commits.


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0001-Don-t-use-selected-frame-in-tty_set_cursor.patch

From 026fce0c4d74f98d3cb1bc7648a77e7996fe6719 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gerd=20M=C3=B6llmann?= <gerd@HIDDEN>
Date: Wed, 29 Jan 2025 08:28:58 +0100
Subject: [PATCH 1/3] Don't use selected frame in tty_set_cursor

* src/dispnew.c (tty_set_cursor): Add frmae parameter.
(write_matrix): Pass to the updated frame to tty_set_cursor.
---
 src/dispnew.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/src/dispnew.c b/src/dispnew.c
index 1b4c5eb37cf..7242849509d 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -5618,10 +5618,8 @@ scrolling_window (struct window *w, int tab_line_p)
  ************************************************************************/
 
 static void
-tty_set_cursor (void)
+tty_set_cursor (struct frame *f)
 {
-  struct frame *f = SELECTED_FRAME ();
-
   if ((cursor_in_echo_area
        /* If we are showing a message instead of the mini-buffer,
 	  show the cursor for the message instead of for the
@@ -5683,7 +5681,7 @@ tty_set_cursor (void)
   else
     {
       /* We have only one cursor on terminal frames.  Use it to
-	 display the cursor of the selected window.  */
+	 display the cursor of the selected window of the frame.  */
       struct window *w = XWINDOW (FRAME_SELECTED_WINDOW (f));
       if (w->cursor.vpos >= 0
 	  /* The cursor vpos may be temporarily out of bounds
@@ -5736,7 +5734,7 @@ write_matrix (struct frame *f, bool inhibit_id_p,
 
   /* Now just clean up termcap drivers and set cursor, etc.  */
   if (set_cursor_p)
-    tty_set_cursor ();
+    tty_set_cursor (f);
 }
 
 /* Do line insertions/deletions on frame F for frame-based redisplay.  */
-- 
2.48.1


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0002-Replace-two-macros-with-functions-in-dispnew.c.patch

From 524e4e060c13d1b9d3fe24b3d8ca56903233e84e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gerd=20M=C3=B6llmann?= <gerd@HIDDEN>
Date: Wed, 29 Jan 2025 08:34:43 +0100
Subject: [PATCH 2/3] Replace two macros with functions in dispnew.c

* src/dispnew.c (WINDOW_TO_FRAME_VPOS, WINDOW_TO_FRAME_VPOS): Macros
removed.
(window_to_frame_vpos, window_to_frame_vpos): Always define, and use
them instead of the removed macros.
---
 src/dispnew.c | 23 ++++-------------------
 1 file changed, 4 insertions(+), 19 deletions(-)

diff --git a/src/dispnew.c b/src/dispnew.c
index 7242849509d..0eba863fea3 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -140,11 +140,6 @@ check_rows (struct frame *f)
 
 #ifdef GLYPH_DEBUG
 
-static int window_to_frame_vpos (struct window *, int);
-static int window_to_frame_hpos (struct window *, int);
-#define WINDOW_TO_FRAME_VPOS(W, VPOS) window_to_frame_vpos (W, VPOS)
-#define WINDOW_TO_FRAME_HPOS(W, HPOS) window_to_frame_hpos (W, HPOS)
-
 /* One element of the ring buffer containing redisplay history
    information.  */
 
@@ -236,11 +231,6 @@ DEFUN ("dump-redisplay-history", Fdump_redisplay_history,
 }
 
 
-#else /* not GLYPH_DEBUG */
-
-#define WINDOW_TO_FRAME_VPOS(W, VPOS) ((VPOS) + WINDOW_TOP_EDGE_LINE (W))
-#define WINDOW_TO_FRAME_HPOS(W, HPOS) ((HPOS) + WINDOW_LEFT_EDGE_COL (W))
-
 #endif /* GLYPH_DEBUG */
 
 
@@ -3194,8 +3184,6 @@ check_matrix_pointers (struct glyph_matrix *window_matrix,
 		      VPOS and HPOS translations
  **********************************************************************/
 
-#ifdef GLYPH_DEBUG
-
 /* Translate vertical position VPOS which is relative to window W to a
    vertical position relative to W's frame.  */
 
@@ -3222,9 +3210,6 @@ window_to_frame_hpos (struct window *w, int hpos)
   return hpos;
 }
 
-#endif /* GLYPH_DEBUG */
-
-
 
 /**********************************************************************
 			    Redrawing Frames
@@ -3906,8 +3891,8 @@ abs_cursor_pos (struct frame *f, int *x, int *y)
 	 a new cursor position has been computed.  */
       && w->cursor.vpos < WINDOW_TOTAL_LINES (w))
     {
-      int wx = WINDOW_TO_FRAME_HPOS (w, w->cursor.hpos);
-      int wy = WINDOW_TO_FRAME_VPOS (w, w->cursor.vpos);
+      int wx = window_to_frame_hpos (w, w->cursor.hpos);
+      int wy = window_to_frame_vpos (w, w->cursor.vpos);
 
       wx += max (0, w->left_margin_cols);
 
@@ -5691,8 +5676,8 @@ tty_set_cursor (struct frame *f)
 	     a new cursor position has been computed.  */
 	  && w->cursor.vpos < WINDOW_TOTAL_LINES (w))
 	{
-	  int x = WINDOW_TO_FRAME_HPOS (w, w->cursor.hpos);
-	  int y = WINDOW_TO_FRAME_VPOS (w, w->cursor.vpos);
+	  int x = window_to_frame_hpos (w, w->cursor.hpos);
+	  int y = window_to_frame_vpos (w, w->cursor.vpos);
 
 	  x += max (0, w->left_margin_cols);
 	  cursor_to (f, y, x);
-- 
2.48.1


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0003-Further-fixes-for-cursor-positioning.patch

From cd04f99c823122fe1ca6daf520a8f33c45114b35 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gerd=20M=C3=B6llmann?= <gerd@HIDDEN>
Date: Wed, 29 Jan 2025 13:42:40 +0100
Subject: [PATCH 3/3] Further fixes for cursor positioning

* src/dispnew.c (write_matrix): Don't set the cursor here. Parameter to
set the cursor or not removed.
(combine_updates_for_frame): Call tty_set_cursor here, depending on
whether or not the selected frame is related to the updated frame.
(update_frame_with_menu): Adapt to change of write_matrix.
---
 src/dispnew.c | 36 ++++++++++++++++++++----------------
 1 file changed, 20 insertions(+), 16 deletions(-)

diff --git a/src/dispnew.c b/src/dispnew.c
index 0eba863fea3..4b1a8b2e1f2 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -96,12 +96,14 @@ Copyright (C) 1985-1988, 1993-1995, 1997-2025 Free Software Foundation,
 static void mirror_line_dance (struct window *, int, int, int *, char *);
 static void update_window_tree (struct window *);
 static void update_window (struct window *);
-static void write_matrix (struct frame *, bool, bool, bool);
+static void write_matrix (struct frame *, bool, bool);
 static void scrolling (struct frame *);
 static void set_window_cursor_after_update (struct window *);
 static void adjust_frame_glyphs_for_window_redisplay (struct frame *);
 static void adjust_frame_glyphs_for_frame_redisplay (struct frame *);
 static void set_window_update_flags (struct window *w, bool on_p);
+static void tty_set_cursor (struct frame *f);
+
 
 #if 0 /* Please leave this in as a debugging aid.  */
 static void
@@ -4021,10 +4023,19 @@ combine_updates_for_frame (struct frame *f, bool inhibit_scrolling)
     }
 
   update_begin (root);
-  write_matrix (root, inhibit_scrolling, 1, false);
+  write_matrix (root, inhibit_scrolling, false);
   make_matrix_current (root);
   update_end (root);
 
+  /* The selected frame determines where the cursor on ttys goes, except
+     when it is a frame that is completely unrelated to the frame being
+     displayed.  This can happen with multi-tty, when the selected frame
+     can be a window-system frame.  */
+  if (frame_ancestor_p (root, SELECTED_FRAME ()))
+    tty_set_cursor (SELECTED_FRAME ());
+  else
+    tty_set_cursor (root);
+
   /* If a child is displayed, and the cursor is displayed in another
      frame, the child might lay above the cursor, so that it appears to
      "shine through" the child.  Avoid that because it's confusing.  */
@@ -4093,22 +4104,20 @@ update_frame (struct frame *f, bool inhibit_scrolling)
 update_frame_with_menu (struct frame *f, int row, int col)
 {
   struct window *root_window = XWINDOW (f->root_window);
-  bool cursor_at_point_p;
 
   eassert (FRAME_TERMCAP_P (f));
 
   /* Update the display.  */
   update_begin (f);
-  cursor_at_point_p = !(row >= 0 && col >= 0);
-  /* Do not stop due to pending input, and do not try scrolling.  This
-     means that write_glyphs will always return false.  */
-  write_matrix (f, 1, cursor_at_point_p, true);
+  write_matrix (f, true, true);
   make_matrix_current (f);
   clear_desired_matrices (f);
   /* ROW and COL tell us where in the menu to position the cursor, so
      that screen readers know the active region on the screen.  */
-  if (!cursor_at_point_p)
+  if (row >= 0 && col >= 0)
     cursor_to (f, row, col);
+  else
+    tty_set_cursor (f);
   update_end (f);
   flush_terminal (f);
 
@@ -5685,13 +5694,12 @@ tty_set_cursor (struct frame *f)
     }
 }
 
-/* Write desired matix of tty frame F and make it current.
+/* Write desired matrix of tty frame F and make it current.
    INHIBIT_ID_P means that scrolling by insert/delete should not be tried.
-   SET_CURSOR_P false means do not set cursor at point in selected window.  */
+   UPDATING_MENU_P true means we are called for updating a tty menu.  */
 
 static void
-write_matrix (struct frame *f, bool inhibit_id_p,
-	      bool set_cursor_p, bool updating_menu_p)
+write_matrix (struct frame *f, bool inhibit_id_p, bool updating_menu_p)
 {
   /* If we cannot insert/delete lines, it's no use trying it.  */
   if (!FRAME_LINE_INS_DEL_OK (f))
@@ -5716,10 +5724,6 @@ write_matrix (struct frame *f, bool inhibit_id_p,
     for (int i = first_row; i < last_row; ++i)
       if (MATRIX_ROW_ENABLED_P (f->desired_matrix, i))
 	write_row (f, i, updating_menu_p);
-
-  /* Now just clean up termcap drivers and set cursor, etc.  */
-  if (set_cursor_p)
-    tty_set_cursor (f);
 }
 
 /* Do line insertions/deletions on frame F for frame-based redisplay.  */
-- 
2.48.1


--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 29 Jan 2025 12:54:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 29 07:54:34 2025
Received: from localhost ([127.0.0.1]:40249 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1td7aT-0000rk-Nf
	for submit <at> debbugs.gnu.org; Wed, 29 Jan 2025 07:54:34 -0500
Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]:47480)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1td7aP-0000rK-AF
 for 75056 <at> debbugs.gnu.org; Wed, 29 Jan 2025 07:54:31 -0500
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-4364a37a1d7so69328335e9.3
 for <75056 <at> debbugs.gnu.org>; Wed, 29 Jan 2025 04:54:29 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738155263; x=1738760063; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=e7TzXKQ5vybGoXL7amKQjyt5gtKBrsFOQYhk9QCnlGo=;
 b=Hs9AvOZrmxLH26BgyYuQ/mn3HVGLmjEmSRWgxAOdYkBEBguhyygDBQ3YMy+2B2j8MN
 0sBfrjbOOL5+fIDHdxbtcJJx65sGEe1PU4ynOaST+dYDpuG2E5k3IkGMbb3wkr2/bjKY
 vzSpJa6zPxFN/S1nw+sh4T8Ya9hR+HJzaC03eNNsncSUFHMk62xa4lZ8pWr1c9qv2ae1
 ZEFQINXbUhpaRQHzsIidYPO6MAtn3wCjRJhIHPcd0rLVBYIrd8VkbY+DqouQb6m8LH1e
 zpcVU7Ckr8WBP2y3PVX2t2SoqgU08EQu06SmL29MVNoQu25PM/fdKYeEErYTT2i8tjQt
 7Ekw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738155263; x=1738760063;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=e7TzXKQ5vybGoXL7amKQjyt5gtKBrsFOQYhk9QCnlGo=;
 b=Pludaaxuye6khW7piSCPp+RbRgmbtBo4Gd6OeO3k7n46lqN8/7wAYvHsLqp11DyLWw
 2/F1YlVeB/hxhiwIzZiHep0dxqX2YCrccbye/ZBMLP4ILP7IveMJjEhRkhks+gtErKrU
 T9yazy4phg9uwUP9oemcOzUxhqG1YZ+Wuql3Mmk+/T646UYCQnE5VPs8q2QdXQmg4vNS
 OV4EzjR73RbVcqc7Uwep8yMibNGMGML3eZzpE7kd/PU99MZ6nSSBzgvRnIoTlbJb5HwT
 O6rOOffDrlGLs+REaCJEmZue7EptVwM/Lb+G7c657f9RejFOGStjO4U5hWQ61jflFgRx
 L2Nw==
X-Forwarded-Encrypted: i=1;
 AJvYcCWw7xc7v3D4McU0bnLQ8y087NUkwScunDMh09ezHxsLNc5b9HfDMhSyEGD8VBFt/ED2KGfzzg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxGpFFWIfF6ENyQOZ1gfA0VD+Nddj2BIfiJimFgQBwJklzWcLnj
 TRBlF0kZlvTPiuXsHFrw2j5YPr+2k7mtQmGJSJN5G0aQ4PnOEI3KziCU/g==
X-Gm-Gg: ASbGncsCv3AqqSbCvpQSChVoSLu9hALQlX6ZtmDbyxiN926s60/KbRX0bdEDU4V84Ib
 5YwoTNWE5jv26P79X+qKRQpdJx6MTuobpaVwvaNCvACIv599xF/stms2smH3MChkpZQVa1m4N9y
 p4fPb8EX+yM/syct83o9GR1oyUlvn5RVobtdjghZ74gkoe9O1tQMocaeIX3irqMknHKBW04SfTH
 Houjl1N72iHaPxp/jHIBKKaJ2Ty/m2PPgRrqmW2P4z7Blt+ZEoGD67YzzcgPbOGXhN7loOKCKAc
 hMAFFyf6X0fANIw/wCfZbb7K+RAyi24faDIAyXIj5ZImI/pnqtv0SXGjIfQKOZ5n4sEkkfbWV1q
 Ma4TxQo8ZeCc8gTVymEwMdtMv
X-Google-Smtp-Source: AGHT+IEEpvCNa0q6XDVINQRqRWZ4pAblpjdZ0phm2b6TWPxSwmBWZDlC7ctQasXFqIoXLcJHEpq/WQ==
X-Received: by 2002:a05:600c:1c93:b0:435:9ed3:5698 with SMTP id
 5b1f17b1804b1-438dc41d1cbmr23984565e9.24.1738155262391; 
 Wed, 29 Jan 2025 04:54:22 -0800 (PST)
Received: from pro2 (p200300e0b70d1c004d3b680a62916f26.dip0.t-ipconnect.de.
 [2003:e0:b70d:1c00:4d3b:680a:6291:6f26])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38c2a188c33sm17324375f8f.53.2025.01.29.04.54.21
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 29 Jan 2025 04:54:21 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN> (martin rudalics's
 message of "Wed, 29 Jan 2025 10:05:51 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <8634h6t3bm.fsf@HIDDEN> <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN>
 <86sep6rlec.fsf@HIDDEN> <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN>
 <86frl5sttc.fsf@HIDDEN> <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
 <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
Date: Wed, 29 Jan 2025 13:54:21 +0100
Message-ID: <m28qqt3hmq.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>> Taking a closer look at tty_set_cursor, using the selected frame here
>> doesn't make sense to me. I don't see a good reason why the selected
>> frame has to have anything to do with where to place the cursor in an
>> updated frame. That looks more like a left-over from times before
>> multi-tty.
>
> But it seemed to work on the release branch.  Anyway, with your patches
> I don't see the assertion violation any more so you should check them
> in.  Maybe you should also adapt the comment
>
>    SET_CURSOR_P false means do not set cursor at point in selected window.  */
>
> at the beginning of write_matrix.

I've removed that parameter, see other mail.

>> Could you please try the attached, Martin? The first one is what I think
>> it the fix. The second one is a cleanup that leads to more checks
>> without having GLYPH_DEBUG. If this also work for you, I'll put that in
>> master.
>
> If my build with GLYPH_DEBUG works, wouldn't it also work without?
>
>> (I see a "flicker" of the tty frame after the make-frame. That is also
>> the case in Emacs 30.)
>
> Absolutely no flicker here but the "icon" of the new frame on my
> desktop's "tool bar" is blinking and the new frame is not "active" (I
> have no idea whatever the equivalents of these on your ns desktop are).
> After I click into the new frame the blinking stops.  This is distinct
> from what happens with 'make-frame' on a GUI frame here, where the new
> frame gets input focus and is selected.  But it looks to me like a good
> solution for the case at hand here.

The flickering looks as if someone calls clear_frame or redraw-frame or
something like that. Maybe Like C-x 5 2 had been called to create
another tty root frame.

Wrt the GUI frame I see nothing unusual. The icon in the dock looks
totally normal, no blinking or anything.

When doing the make-frame, the tty frame first flickers, then the GUI
window opens behind the terminal window. The tty frame stays selected, I
can enter text there and so on.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 29 Jan 2025 10:19:03 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 29 05:19:03 2025
Received: from localhost ([127.0.0.1]:40031 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1td59y-0004em-RX
	for submit <at> debbugs.gnu.org; Wed, 29 Jan 2025 05:19:03 -0500
Received: from mout.gmx.net ([212.227.15.15]:42749)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1td59v-0004eE-LB
 for 75056 <at> debbugs.gnu.org; Wed, 29 Jan 2025 05:19:00 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738145933; x=1738750733; i=rudalics@HIDDEN;
 bh=wYrMHaoO7OEQ4NWqkR7I98m+ov0CboCNa2qnZrf74pU=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:From:To:
 Cc:References:In-Reply-To:Content-Type:Content-Transfer-Encoding:
 cc:content-transfer-encoding:content-type:date:from:message-id:
 mime-version:reply-to:subject:to;
 b=MHmo36MLG+mzcFxVWQBc+iLp4jqBelZtUAHwiZ4dA5SOdIQ2irAkUJ7qaj96ogsp
 5T9pYUOdy5OtTK2L1jNqBg8ehvHIRVuMwWLh00Zg1LxV3kB2byo2uwTXMvvCx9OP/
 iQwsAGZbR/X8NEiezxeSQAURxDi0AneIrJA7XKlaNGSn7pVoXd+/SpQ1Pir1NQH2j
 1UlUfr8M30T/+ZlIvFmzS6c/Je2XB1+dNldDLLZOlTYVe1t7XZjzse4MocyjtkyLw
 DmTvPwFZzwsSkzc/8RAXZARrxHoCDERKJIzpnBuYHsjzIuKoX2icEEMDUAetgyYCC
 /XpfDJ/G2bNIVFhYUw==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.96.245]) by mail.gmx.net (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M7b6l-1tXtA00zoD-00HDdE; Wed, 29
 Jan 2025 11:18:53 +0100
Message-ID: <68f8f234-a3be-4620-b135-fade538b3ecd@HIDDEN>
Date: Wed, 29 Jan 2025 11:18:52 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
From: martin rudalics <rudalics@HIDDEN>
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <86msfet8d4.fsf@HIDDEN> <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
 <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
Content-Language: en-US
In-Reply-To: <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:ryi9C8AUOZUKzI0DM12AzgcX6kRrFrFiV6yDUXEn8dT/mPARv+K
 laPcvt9UphWgbYldayypXDMIWHCoJR0ct/uy8m7DYWr0bZIVtwoDKfFY2kAWdn5J+KJ4exX
 zcT4JUSSu/Yye2JkBjxJzF4a5Gm4wi361WtDaMyyYg2H5KvhUx2yk6yECdBhsTHHiKczUdh
 JCrpw2+mxswamx0x5ZhcA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:JqrxojZ9O+g=;Sa9WryqCC8uRFSjNzwia4oTKfb6
 y6yJxG8yO+qyFJZXo3OJvfkWm1IJfxwK/qO+JrDkiDF9mgnioE+HP9wsmHhwer/KjHy6oESLI
 zDNX7hl/j50o5HO4eN4YiB6X2FLnXV7aPd8Kpsli0Ms80rl6wkXs5BMTWxtQmCyq8mI9tPAZL
 vPjT4nQ1+wN3bwWHZiUxe/CXrORO3QfzhslkRwjkmv0iK07WwgV4bvd6rdgEIU4A/EyL0GcUO
 IbU4XAln8kj1ssVA4M0cSxNATrGq+O3Ideux6NQfLQyiiZV1jnUrwTj1+zlsAlfpkskSj+Ok9
 FWx6wehtwIHmcjJv/vu5mKaSFAtQgAlLffyq6RJIYH/eq6omYB7FMQr3eLA+df8vTZSLAD3NF
 un+o+rlRvKqKOY9Db8vNbsicB/btbYnQQOYZmjWaBWs9uXFtiSYIDT/zkU7rajzQe6XBYw7tG
 Ze2DEtoRaG671IGpp3lDBhEihFATv7y3N62NYkE8JM9b26B7aC6xcygkVwwRCIIds5UIlWaiz
 hurzfgi6f5rm1Nwukq/nZaB8FA/42tCDa7WBa/yAfSV6k4gSJfaoTX+fLeMqEmvd/K2bzupxd
 6b/Ob80g1r+Myqz1TmLEBUVRm7k7CAz6I/lFs8FnYkFabeHe+T9MfEcJRgurTM7dlHF/wdM7O
 F7fKyUBVu8GXg6HjZAYlDPzDuLTYzh45ChyYM5J66J1b+fFhqJlYN/19HgpN3qYr1NlT+lPBS
 +5WE/uP2eOO8Xk7Bgqy7K9HD2J92n+gS+0xAeIWHFuwqYvnEgr8Y80XjBBf7E2S8Zjrk+Bszz
 eFsAWWYqgQhGwaz8iGQrZQRnHcZ3RoiCboZMZdmT34W2YM8RpoJjMs63mAbGrRfqb/obpiZbj
 0ERPaoLMTBkT7N0D4EpzyHlEsGisNC9+WsKB0M7MjdA7iTidXgVD57djAr9yPOV+3IpMs/IO4
 AcN7hNQBcqDPc1ZIks1RxOimJq4gC3HcJ05VbES5BzDl9u4kTspPc7aWD6qr+lHV/lxhMNcza
 J2JdubPR9SA3IG3uW5/TooZddnNMcYSLZMppZfoDXkpap7rff53VEBQ0yg8ClHjVwj2QCNs8Z
 cc9dn35rDnSE71iJX6WVLIgSXoFLqK7mACoDJj/06dA/ie6n21O5zS/FaIhjXQKl+q4V78YWk
 T7bIpbakd5JHkkVZNP3HJ2Nh9oG3TpOQe3Wb26SqjdQ==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

 > But it seemed to work on the release branch.  Anyway, with your patches
 > I don't see the assertion violation any more so you should check them
 > in.

Spoke to early.  Now setting the cursor in a C-l child frame doesn't
work any more.

Sorry, martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 29 Jan 2025 09:06:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 29 04:06:17 2025
Received: from localhost ([127.0.0.1]:39914 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1td41Y-0001Ag-WB
	for submit <at> debbugs.gnu.org; Wed, 29 Jan 2025 04:06:17 -0500
Received: from mout.gmx.net ([212.227.15.19]:46273)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1td41W-0001AR-3K
 for 75056 <at> debbugs.gnu.org; Wed, 29 Jan 2025 04:06:14 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738141555; x=1738746355; i=rudalics@HIDDEN;
 bh=JDyPfiukjp7KXpygLfFeOU0dVDBJzIHUShbB/HDKTjk=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=ZB9vxd8yLF41jdLb5VrWyBcwuA+7fUFY7SsqdGavSAOBMau55F8eEEp4ketGbyKd
 wRwKNCyxUxBxr2QR0CkZW0o1QzPPBAY6GuWjZnsc3wQYOsANMCswn7ANDzYukYlv+
 j85ODDCf/x1nLFAlvTokaYkOsLyK6L/OFIljF0cO+MWtEAvDx46D+Gol7usDQPRuy
 uTM0JXuGxmYcm9nmWLfAngVKv4WNsEH+PQpjK+HajLpyD3LELuHaI7NCMcFXHDFGb
 2w8K1TBiP47RQMzevBgXARnVRnBkE+6XBJq8pmIw34+TRErbh6OB1udRDozlY/m/G
 REPmPq6CgBhQDQjLGg==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.96.245]) by mail.gmx.net (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MORAa-1tpe7Z2D9C-00Ybnm; Wed, 29
 Jan 2025 10:05:55 +0100
Message-ID: <528f64d8-6440-4e1a-b115-0e3483e09a58@HIDDEN>
Date: Wed, 29 Jan 2025 10:05:51 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <86msfet8d4.fsf@HIDDEN> <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN> <m234h22h7b.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m234h22h7b.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:iQCVezxO4+xbExPSGacNHaRxA6rsqCbwGHds+KwsTBX4B/kFyp4
 h2bX/k86MFr+acxu3r1Tk3sG4aUSTb8QYZcP89Rwa1+zrLQHNRu9w1eHypO263MzuAvzySn
 VFsj1otH/zO2pve2tjzWo6loMBsiBHgKACPkUTeIepRNYoNGM5r1nXRfD9anYaHdb/ix5UF
 sHsxOp3okn/tZYvU0JeYw==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:J/A/7oVVuOg=;ZpZQCvSiji+WuMeSKuo5pSF8qf7
 hLuJpbtGtCYqa0ANiDcWb/gtbzLEzoxdcg/f7MrDwyQtmgTHjLHXHtl5itO3zZIJWtenWHENG
 hUCjroNsN2H0LuullDLj15lIUYZ+u/mkWbopQQ+5JSTGCxAYrZdj9H+a+iAJ8IbgJDjY8F8Ao
 CRSee7b+MdnVoIbOw2QqJSJlr6twfCv/1oCuevOztT2bAxcNkDLbP8Z1s40FYgGNr/iC5Jz4/
 DdVU321DoUybmN5r5T09PUyINaJ/fk8YglXT7T2KACDjtKzytjAmSaxTuBfHs8D5repW3y7KH
 HT8edELOYzM+ZXw1kABtfx5EwBYU//QFonVfCDIFijfqvjyHWVql3b6ZNOaqmEDtaZpYx12/7
 z7KVuc0/YcXlTJpOtlyPd0q/qZXY0aXg/e13scb+eWNSQqZeOe5CjbUC6Oy3g2Bzi2jcvrfGv
 +5+59TeA15xjRo+3dk8rVbk2pbBj3EPnLEBWYid85QLzuUat8cqhL9BOcAJ0f0V3fLO15kyHP
 McDAn3v/1G6XSCD69xTaiCIr7wC07zsF5CIWjs8gW1jRPzIG3fBhhJ/uEJ1tL14aPIpnJUrN8
 jfTM1EkTjs4+sUtEWOpXUJe8PwIXgub9oFqaj5uz4sM5tC6iR0jwn/S2PFVqiElzbluMbbwAJ
 hJLECUuYHKMZ0YsbobtnlsK5F2IOSdlPj53PAmLIBS4/Hj/WL+QvLRrAnwpELr1Mb3elmaQa+
 JYHpGZZynDn+LdoBf3BOIIWzDIh1O1+WLbd2gXM8WbpIOnCRKIiZIXmL5xik2tLKsugU1e75b
 dNhbg/I/j6Fp3Drd7p7n5Oqgndx7PrLd7s9rILaEM7TZcxx1XjD9MtLU35N5awFBIiy8Q7Uv0
 bVcnPB4tvPOYpVlcDdToIZDW1V4eW8bZlZhhWJpYeKY6zSuv3mdoAqEkW3WwDvAdguQqhtTvz
 fc8uC2AX03I/QBeR3narOUOleJYlKpRP115U88vMn0p3MAFXCzEPWhEGZGtoJsEol0zsrEwFD
 S9hAl4uU2905rGQ6neUBV0Gsy3VJ/kg4wZX+D38XV7JM8YZyP6ON4L6JEbj1q0tBXA/eSvtvB
 RqZwmM61nqJsT5FxUK0+WMtRc0sMEYv/ptnu96H+H8hbcn0Pij9rmED2+U07J/17tXT4pjnlm
 T4W69vzI1rqUb+AVEToDFJ4pFxezYXo68xrxeSe+6GA==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

 > Taking a closer look at tty_set_cursor, using the selected frame here
 > doesn't make sense to me. I don't see a good reason why the selected
 > frame has to have anything to do with where to place the cursor in an
 > updated frame. That looks more like a left-over from times before
 > multi-tty.

But it seemed to work on the release branch.  Anyway, with your patches
I don't see the assertion violation any more so you should check them
in.  Maybe you should also adapt the comment

    SET_CURSOR_P false means do not set cursor at point in selected window.  */

at the beginning of write_matrix.

 > Could you please try the attached, Martin? The first one is what I think
 > it the fix. The second one is a cleanup that leads to more checks
 > without having GLYPH_DEBUG. If this also work for you, I'll put that in
 > master.

If my build with GLYPH_DEBUG works, wouldn't it also work without?

 > (I see a "flicker" of the tty frame after the make-frame. That is also
 > the case in Emacs 30.)

Absolutely no flicker here but the "icon" of the new frame on my
desktop's "tool bar" is blinking and the new frame is not "active" (I
have no idea whatever the equivalents of these on your ns desktop are).
After I click into the new frame the blinking stops.  This is distinct
from what happens with 'make-frame' on a GUI frame here, where the new
frame gets input focus and is selected.  But it looks to me like a good
solution for the case at hand here.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 29 Jan 2025 07:49:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 29 02:49:08 2025
Received: from localhost ([127.0.0.1]:39763 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1td2ot-0005hm-D0
	for submit <at> debbugs.gnu.org; Wed, 29 Jan 2025 02:49:07 -0500
Received: from mail-wr1-x429.google.com ([2a00:1450:4864:20::429]:58391)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1td2oq-0005hD-JG
 for 75056 <at> debbugs.gnu.org; Wed, 29 Jan 2025 02:49:05 -0500
Received: by mail-wr1-x429.google.com with SMTP id
 ffacd0b85a97d-385eed29d17so3373271f8f.0
 for <75056 <at> debbugs.gnu.org>; Tue, 28 Jan 2025 23:49:04 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738136938; x=1738741738; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=hbOU8EeSHrbL68wvLF830GXusoEXy+21he4p6Np4L1g=;
 b=CMWNffon0p1GR5tzXMX9kQef3La12UESNPG1+zs2ti+eDykQ5+XLdn3cwLIdkVHZ2+
 e4dNndMo8suPcvKP2+x7iCcRo8KWgMB+NyNGVfyroQs0e2VXV6ow3TkjQMwt1mn+vYLQ
 cEih7kYU7dumlrVPzCcGJB+pJQz+l1UfThyw3fuB03Po5hyaJYYDp4nDio6fC/cW5amf
 2VtiYIcM+PDcFklTtGBRYNdlsSBt6c8dY6y7ObOI09Y9m7ZhbERq48q3Qp/E7sFtCyfE
 lvR5pC+W8TZbMS6H5VuSrV3FfxwHfnYyET51LTb9b8AqokgjF2+d7SeEQj5bdZVG1v/5
 31/A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738136938; x=1738741738;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=hbOU8EeSHrbL68wvLF830GXusoEXy+21he4p6Np4L1g=;
 b=Y65s11HV9196JN6rXMuTBXdOVKoFJ9bPSZMO7jlhTbm0fKlU8H449GM3TzHahFnUt+
 8h4x1VTB9JKJTcWnLuwKt+Ini7NwLmFzVwJsJoW0UXPUVfXTq4Hdh9RQzO2cJxHaFvml
 8CNyn491ZlhBB++QMv6afj6Llrg0PE72yT9xWED0YEaE8ASNv2EUKb9QGl0tKxrKyXKw
 YhRETGcR+cR4PEOGl3iKC65ylkDBN/+0SnfGFKl3paAQLnSAqevP+ZWS99z2XUcYc1tk
 U+axtDC4Pb3Z3twV73wtcKkYitWPckZQSsopY2qzIQuXwnDeFLXmp21D463eZeBm1Hxo
 TWiw==
X-Forwarded-Encrypted: i=1;
 AJvYcCX6RvZhdCnQxs68V+qXk8y7kGAIA69PbPBb+IlGSntb93Tjx8a0OeSD1wbSZVw5XDSDbvkGIA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yw+Ha+FNvPhxwAbOyS3RNC43enytBgj9PFCyRm6pDTvy7CmHKqt
 c6aX5y+Fr1LerLTBRPHrAF2/4WDI3+cq+K/thofIcO7AzOLSXItcxgEcVA==
X-Gm-Gg: ASbGncvNu35dR+WjxFMHDOZ7vMVEJ/Szvu1GCdVZ1I+yemF8eVyxLg5xj+UkHYUllhQ
 PudrOuw0ZOb6VGDaVvZSOap2tmXKUKeKJ7kkBm60y5Oh6xHvn+ja0X/QXnumuElsClc4PhW6uIy
 hZ/diAhVWR2c5wKh8OM1GfrBekLRUlyO+Y/6sCNe8qjNgVfdsYyDHsJxY2HVUAGJ77I6FtOgs71
 UEz0iAp1Jx4Yg36QpVNpBQcSFQcYPbtCfi/wP19g81oaK78VCo8de9NzT5fZyx/Ln16nzBTr3xn
 mVEFYRgbPEUGwpWgLC1+sfxLL1wjvK1mM+ovg6kXktqHHBNZXnf84pDfdM4t/fYzy76Ct8U/gRA
 fUpMJ/oDjrM4PKFcx0o6xYZ/N
X-Google-Smtp-Source: AGHT+IG5E6XnoYfiCeW1udWCzowNj0RTt73x3dSvCBxL3APE3lJ5AsLtimhIk16NT5ItrTrjM83K5g==
X-Received: by 2002:a05:6000:4013:b0:385:f631:612 with SMTP id
 ffacd0b85a97d-38c5195f2e5mr1572613f8f.17.1738136937535; 
 Tue, 28 Jan 2025 23:48:57 -0800 (PST)
Received: from pro2 (p200300e0b70d1c004d3b680a62916f26.dip0.t-ipconnect.de.
 [2003:e0:b70d:1c00:4d3b:680a:6291:6f26])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438dcc2b231sm12717725e9.24.2025.01.28.23.48.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Jan 2025 23:48:56 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <m27c6e2m54.fsf@HIDDEN> ("Gerd =?utf-8?Q?M=C3=B6llmann=22'?=
 =?utf-8?Q?s?= message of "Wed, 29 Jan 2025 07:02:15 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <86msfet8d4.fsf@HIDDEN> <m2ed0q1475.fsf@HIDDEN>
 <8634h6t3bm.fsf@HIDDEN> <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN>
 <86sep6rlec.fsf@HIDDEN> <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN>
 <86frl5sttc.fsf@HIDDEN> <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN> <m27c6e2m54.fsf@HIDDEN>
Date: Wed, 29 Jan 2025 08:48:56 +0100
Message-ID: <m234h22h7b.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable

Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:

>>> (make-frame '((window-system . x)))
>>>
>>> move to the graphical and back to the tty frame	I get a crash like
>>>
>>> #0  terminate_due_to_signal (sig=3D6, backtrace_limit=3D2147483647) at =
../../src/emacs.c:432
>
> FWIW, I tried the equivalent with (window-system . ns) here, and
> couldn't provoke the assertion.

Using the right worktree helped.

Taking a closer look at tty_set_cursor, using the selected frame here
doesn't make sense to me. I don't see a good reason why the selected
frame has to have anything to do with where to place the cursor in an
updated frame. That looks more like a left-over from times before
multi-tty.

Could you please try the attached, Martin? The first one is what I think
it the fix. The second one is a cleanup that leads to more checks
without having GLYPH_DEBUG. If this also work for you, I'll put that in
master.

(I see a "flicker" of the tty frame after the make-frame. That is also
the case in Emacs 30.)


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0001-Don-t-use-selected-frame-in-tty_set_cursor.patch

From 105f818c4c1479f1ef60b9d0cdb2b4375021f3ea Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gerd=20M=C3=B6llmann?= <gerd@HIDDEN>
Date: Wed, 29 Jan 2025 08:28:58 +0100
Subject: [PATCH 1/2] Don't use selected frame in tty_set_cursor

* src/dispnew.c (tty_set_cursor): Add frmae parameter.
(write_matrix): Pass to the updated frame to tty_set_cursor.
---
 src/dispnew.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/src/dispnew.c b/src/dispnew.c
index 1b4c5eb37cf..4b09282121a 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -5618,10 +5618,8 @@ scrolling_window (struct window *w, int tab_line_p)
  ************************************************************************/
 
 static void
-tty_set_cursor (void)
+tty_set_cursor (struct frame *f)
 {
-  struct frame *f = SELECTED_FRAME ();
-
   if ((cursor_in_echo_area
        /* If we are showing a message instead of the mini-buffer,
 	  show the cursor for the message instead of for the
@@ -5736,7 +5734,7 @@ write_matrix (struct frame *f, bool inhibit_id_p,
 
   /* Now just clean up termcap drivers and set cursor, etc.  */
   if (set_cursor_p)
-    tty_set_cursor ();
+    tty_set_cursor (f);
 }
 
 /* Do line insertions/deletions on frame F for frame-based redisplay.  */
-- 
2.48.1


--=-=-=
Content-Type: text/x-patch
Content-Disposition: attachment;
 filename=0002-Replace-two-macros-with-functions-in-dispnew.c.patch

From 0e95d664ee498ffd96c372d0d635e1e14fef540c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Gerd=20M=C3=B6llmann?= <gerd@HIDDEN>
Date: Wed, 29 Jan 2025 08:34:43 +0100
Subject: [PATCH 2/2] Replace two macros with functions in dispnew.c

* src/dispnew.c (WINDOW_TO_FRAME_VPOS, WINDOW_TO_FRAME_VPOS): Macros
removed.
(window_to_frame_vpos, window_to_frame_vpos): Always define, and use
them instead of the removed macros.
---
 src/dispnew.c | 23 ++++-------------------
 1 file changed, 4 insertions(+), 19 deletions(-)

diff --git a/src/dispnew.c b/src/dispnew.c
index 4b09282121a..c2c41cb5af8 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -140,11 +140,6 @@ check_rows (struct frame *f)
 
 #ifdef GLYPH_DEBUG
 
-static int window_to_frame_vpos (struct window *, int);
-static int window_to_frame_hpos (struct window *, int);
-#define WINDOW_TO_FRAME_VPOS(W, VPOS) window_to_frame_vpos (W, VPOS)
-#define WINDOW_TO_FRAME_HPOS(W, HPOS) window_to_frame_hpos (W, HPOS)
-
 /* One element of the ring buffer containing redisplay history
    information.  */
 
@@ -236,11 +231,6 @@ DEFUN ("dump-redisplay-history", Fdump_redisplay_history,
 }
 
 
-#else /* not GLYPH_DEBUG */
-
-#define WINDOW_TO_FRAME_VPOS(W, VPOS) ((VPOS) + WINDOW_TOP_EDGE_LINE (W))
-#define WINDOW_TO_FRAME_HPOS(W, HPOS) ((HPOS) + WINDOW_LEFT_EDGE_COL (W))
-
 #endif /* GLYPH_DEBUG */
 
 
@@ -3194,8 +3184,6 @@ check_matrix_pointers (struct glyph_matrix *window_matrix,
 		      VPOS and HPOS translations
  **********************************************************************/
 
-#ifdef GLYPH_DEBUG
-
 /* Translate vertical position VPOS which is relative to window W to a
    vertical position relative to W's frame.  */
 
@@ -3222,9 +3210,6 @@ window_to_frame_hpos (struct window *w, int hpos)
   return hpos;
 }
 
-#endif /* GLYPH_DEBUG */
-
-
 
 /**********************************************************************
 			    Redrawing Frames
@@ -3906,8 +3891,8 @@ abs_cursor_pos (struct frame *f, int *x, int *y)
 	 a new cursor position has been computed.  */
       && w->cursor.vpos < WINDOW_TOTAL_LINES (w))
     {
-      int wx = WINDOW_TO_FRAME_HPOS (w, w->cursor.hpos);
-      int wy = WINDOW_TO_FRAME_VPOS (w, w->cursor.vpos);
+      int wx = window_to_frame_hpos (w, w->cursor.hpos);
+      int wy = window_to_frame_vpos (w, w->cursor.vpos);
 
       wx += max (0, w->left_margin_cols);
 
@@ -5691,8 +5676,8 @@ tty_set_cursor (struct frame *f)
 	     a new cursor position has been computed.  */
 	  && w->cursor.vpos < WINDOW_TOTAL_LINES (w))
 	{
-	  int x = WINDOW_TO_FRAME_HPOS (w, w->cursor.hpos);
-	  int y = WINDOW_TO_FRAME_VPOS (w, w->cursor.vpos);
+	  int x = window_to_frame_hpos (w, w->cursor.hpos);
+	  int y = window_to_frame_vpos (w, w->cursor.vpos);
 
 	  x += max (0, w->left_margin_cols);
 	  cursor_to (f, y, x);
-- 
2.48.1


--=-=-=--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 29 Jan 2025 07:08:42 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 29 02:08:42 2025
Received: from localhost ([127.0.0.1]:39724 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1td2Bm-0003yB-Bq
	for submit <at> debbugs.gnu.org; Wed, 29 Jan 2025 02:08:42 -0500
Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]:49546)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1td2Bk-0003xu-DC
 for 75056 <at> debbugs.gnu.org; Wed, 29 Jan 2025 02:08:40 -0500
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-4361e89b6daso42819795e9.3
 for <75056 <at> debbugs.gnu.org>; Tue, 28 Jan 2025 23:08:40 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738134514; x=1738739314; darn=debbugs.gnu.org;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:from:to:cc:subject:date
 :message-id:reply-to;
 bh=yJNdFnhvOs4h32vlN1zb229+aDziMrfBDpuBcPGQRsE=;
 b=bS8EKh2dkelpT2i3t3edhrwto6oOLDkGhX//4T3Wbi/w1n+HOcGOjgkOZy1RQopSDN
 RBb3xErn6oAgii4Gr4hxiZVbTre2T3fYhl7PHCPm/yRkwl2QrOE8ZG7tO8baWOvNZIV2
 D0wdbpm7zI5UFl7pXVTtRNanVUZCsdg6BNLaFwsqO2n+ApbNMS04JrVyiSf4SxOdFX7b
 cEmrbfa8OcrPay2gOq/GKJpYh3Hvqf7Ogzz/P6FxG0JfBUlZynpxh5Gri7X5k4KP4lCQ
 paKsn2C6geV9jnYHE54yCY0W/uptuiJyfde6Y9/wL5UejzpjXEWR7kc18UKmhM4JFzLX
 ofwA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738134514; x=1738739314;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=yJNdFnhvOs4h32vlN1zb229+aDziMrfBDpuBcPGQRsE=;
 b=MtfvAVexIqqUGWLmB9c+3g7NAfceDuHKpj2YPGtmuABtxnbFwbRhZ80uTtyHx7Wm+Q
 cO821zmldA9jCb7s0Ustb/+kC7oJoXHKA3E2dXuGMsvDcRF4YQ+nVtlOczYXGujY9tuz
 py5/VHjQBXNzWjJ7qHXQJHEDb3QT+hGPyKLrBY3K4IxSk7DpDqequoHvYQXrhkfu+kma
 GhUCdMrr9IXjS+NhwkrSIQTNGkVBxFTVJYU2qRJ9Mrxk2eNMMon5qcSk0A1rx2vWRwla
 NbEQ4cEEGm3eh1PvbQYGerwk5li0KwTPpOSgkuJrI51amlZTGc2/KAWNY5arh9GMV00t
 0sVw==
X-Forwarded-Encrypted: i=1;
 AJvYcCUCac71OoqedowcmQ85dNyhhot/RxLmy0sPnWPULz2OjsCqcU5InCawagrmYZybqkWB6nkh9g==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzDxSqQRzcmd/CcryoRNVEunJBATq57nUkNChBP68P9NFiLZ7Dz
 37+ds5YYXjzSa6hsASUYrd8ozH7HTlMJ6InbWr9Hp5EacWAOqXdp
X-Gm-Gg: ASbGncupyMVI6AIYPhGumZ+mH0lJmrVXzkBdAd1kP04sZ+7KAvrA0KHuxoenUjYsRsB
 sfsvCw9ei+gINMW7uXGLGDfcAEsy4t4lLq2vNKqu6+EaKgcShan22FtrMzYaf4ZXmCQgH8INNgb
 KKkgy2AstN9aeZQeDPcd3HlJBpfyc7qcHLqHX25bRbW8I33MtBuuzq1MhRutth3w2oOpIu4Ybar
 zca/AZPGwvVCJxbgndeOmo8DyC8n3lbeQ87VeW6EQCbV17uLN1lJ1cK7EiCwtPC2L9xfjHbkaAh
 w0tc9/u+NYu8lFs1QdYDMiHs4GaIsRyGEakNhdQK36aUcanB9yua9RuSUU8okEzAmdufElr+WHb
 3KXb2egiZf6cYpBPop1fTfDuLFFWb3fZwZdTsY70L
X-Google-Smtp-Source: AGHT+IGDgQ6a17WWBGWU5NhV1JYdWRBlOUQv9e6OGBJp+ffGLRYqaxk1BgTdWQrTkS2fdcwcvpW4Bw==
X-Received: by 2002:a05:600c:5023:b0:436:5fc9:309d with SMTP id
 5b1f17b1804b1-438dc4346eemr14637105e9.30.1738134513902; 
 Tue, 28 Jan 2025 23:08:33 -0800 (PST)
Received: from smtpclient.apple
 (p200300e0b70d1c004d3b680a62916f26.dip0.t-ipconnect.de.
 [2003:e0:b70d:1c00:4d3b:680a:6291:6f26])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438dcc51672sm11456375e9.36.2025.01.28.23.08.33
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Tue, 28 Jan 2025 23:08:33 -0800 (PST)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.400.131.1.6\))
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <m27c6e2m54.fsf@HIDDEN>
Date: Wed, 29 Jan 2025 08:08:22 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <7A049520-261A-4234-89D9-899463E58286@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> <m2frl23gmj.fsf@HIDDEN>
 <m27c6e2m54.fsf@HIDDEN>
To: Martin Rudalics <rudalics@HIDDEN>
X-Mailer: Apple Mail (2.3826.400.131.1.6)
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)



> On 29. Jan 2025, at 07:02, Gerd M=C3=B6llmann =
<gerd.moellmann@HIDDEN> wrote:
>=20
>>> (make-frame '((window-system . x)))
>>>=20
>>> move to the graphical and back to the tty frame	I get a crash =
like
>>>=20
>>> #0  terminate_due_to_signal (sig=3D6, backtrace_limit=3D2147483647) =
at ../../src/emacs.c:432
>=20
> FWIW, I tried the equivalent with (window-system . ns) here, and=20
> couldn't provoke the assertion.

Correction: I've managed to get one, but I don't know what I did =
differently.=




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 29 Jan 2025 06:02:27 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 29 01:02:27 2025
Received: from localhost ([127.0.0.1]:39651 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1td19f-0000rk-CI
	for submit <at> debbugs.gnu.org; Wed, 29 Jan 2025 01:02:27 -0500
Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]:43462)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1td19d-0000rV-80
 for 75056 <at> debbugs.gnu.org; Wed, 29 Jan 2025 01:02:25 -0500
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-3863703258fso176355f8f.1
 for <75056 <at> debbugs.gnu.org>; Tue, 28 Jan 2025 22:02:25 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738130538; x=1738735338; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=92q2lFWW51w6IQrs0YSi/4KkEJioPaoY9h+U1PuUfvw=;
 b=h7DZSO7YXkPinqlgnTarzYOusZxKju+3jQjaJ9P25KzefFf+SfKy+pf2ZswAVS+jqM
 gkuB/dUJw3CMTBHvUtCMRwO9YWkdM+Hz3/wdz6r57sHSveKr0cNn1VUPbwgl4fhFzvRy
 Va8nuKJvF9Dfdhjk+aVeKdqsRvBpX5xOkWMfavH81ZpPBgdUN83RSCb+4WvoTqMR6R9r
 s2heR62jlJE2w0hGadFaRy9gK6PZ7HSgn15IKwa3Q73gbAXSA+DfUhIv15IP9ynbEcPz
 SAtCzcvHKXmD8K2Ghbsb1NWPFhdZZrrd3EehXq7AqMpAToe+VT3E5lrxACsGJ+OqbGyU
 TjAg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738130538; x=1738735338;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=92q2lFWW51w6IQrs0YSi/4KkEJioPaoY9h+U1PuUfvw=;
 b=i4jBtLq7CMyOUQlNW/+gTVmltB14P2q9CF4f+YdxrIVnVfZPJHQ0gOd1EXT2ep29m8
 Jf8JLzMwYcykIgJ6ILKMsdqSTN65MOypAMuJ6mKqeivBbtw+9HsizIv3pPUdtpe402bW
 hWV6M6hpNYVqa9S3t900d3qD2TBI4BJ8ScFYIhN9t6toDY2Vctd6MPiuPz1IbkOQuxTr
 ZUJIy6O1F/6REmZTDpUtB3vshEARtSUHZ+cPPw2/eE4TBzeikcQMaeEWgpavT1KuapzI
 r/CqtSUMayonzkZoQfSWh4T3SWnI+PHIbJmKAWBtCqBlUrcAOxNkKDeLW2bIXOFc1+/w
 iOUw==
X-Forwarded-Encrypted: i=1;
 AJvYcCX4uYhoUyMpMIOTkcDRwB2KF16OQdHPlKy7LlVB1tDmCmxTyoIGvPdHRJ0eAyJGxIu24eqRvg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yw8aqmF/XR+vIBmAvupq3ywE1a/SQj4tCQA+CDKsnBtHFyQ847a
 ZTR5ti5U7kCULb2nJg+FjX3abU95GMF5qqZ3cJxSGBXMvQ7EmVtHcLaVXA==
X-Gm-Gg: ASbGncvFNchqVuSGqEysdCaV/qYZp/5YfHDdIX3iicvidIuTgBWtZmJ3p/IUkWpL27e
 yIQj2LAP3sacAVegs/LCnHvPrJX6NGEOzN6sHewdlrm9ftwYo8AgfEB2nnRU2gy/2ECZLKOvAQS
 Eq58LX2vnAnVnYvEsLAImSbrJRtobz8ffUKlRyHrHgUuTnsg0+P6Jt8aWstAOsozU71mXJCOM/I
 pTINAgvjw6pfX6qId1JdInT/8kQTBBNi7vxt/JZskzOjJbdyW06bYSGKe1OW0LOt/Q2nLPd06pE
 8hEvpkpe27hapPoh6K0DZwi86CShRaimcTtAb2zc1mA/pHjTxZ9USV8SHaKiYIvwAuPQBhXMdTH
 kPM+HD0xdBAc56H+NMfSJWXJu
X-Google-Smtp-Source: AGHT+IFfAeCdj8Tx3lzS2RPEe0aSZqH8dA4nKXoYMTURWxmzWniVfay7J4+/AnSKdsx71xboX14JNg==
X-Received: by 2002:a05:6000:1847:b0:385:e328:8908 with SMTP id
 ffacd0b85a97d-38c51079cacmr1362634f8f.29.1738130537469; 
 Tue, 28 Jan 2025 22:02:17 -0800 (PST)
Received: from pro2 (p200300e0b70d1c004d3b680a62916f26.dip0.t-ipconnect.de.
 [2003:e0:b70d:1c00:4d3b:680a:6291:6f26])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38c2a188a77sm16320353f8f.51.2025.01.28.22.02.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Jan 2025 22:02:17 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <m2frl23gmj.fsf@HIDDEN> ("Gerd =?utf-8?Q?M=C3=B6llmann=22'?=
 =?utf-8?Q?s?= message of "Tue, 28 Jan 2025 20:03:48 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
 <m2frl23gmj.fsf@HIDDEN>
Date: Wed, 29 Jan 2025 07:02:15 +0100
Message-ID: <m27c6e2m54.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

>> (make-frame '((window-system . x)))
>>
>> move to the graphical and back to the tty frame	I get a crash like
>>
>> #0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at ../../src/emacs.c:432

FWIW, I tried the equivalent with (window-system . ns) here, and 
couldn't provoke the assertion.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 28 Jan 2025 19:03:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 28 14:03:59 2025
Received: from localhost ([127.0.0.1]:38593 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tcqsR-0000fD-7k
	for submit <at> debbugs.gnu.org; Tue, 28 Jan 2025 14:03:59 -0500
Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:50515)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tcqsO-0000ev-Er
 for 75056 <at> debbugs.gnu.org; Tue, 28 Jan 2025 14:03:57 -0500
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-436a39e4891so40813055e9.1
 for <75056 <at> debbugs.gnu.org>; Tue, 28 Jan 2025 11:03:56 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738091030; x=1738695830; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=8imJ+nMLivjPL0yxcvdGNiG6dlBXGsR54uRzr535tKY=;
 b=Bzgx4D/yhJZLLwWahXHxHA4k0Diopi45jG58yblUkii/7gilL+QHglqBbVH4fUeXXA
 p5BoDKZa/0/vXawHt1rYL8JNxyjVTTZAuJGVwy6XdbDG6LzLLsxiWvPiIAlQWE4BIiLK
 j1UGyTP+RQchbwQUUdmuDuruYJefkwIyDOhl8Gupxug+X6J189xN3MOV4guMqER0ERrv
 axm/TLMKyWYw5vfD43lXxEzSpAqtjUucC0I3Qb0EBhJKk0xacVmI4BNPJE8sc70ZXCYS
 oPbdNsXcXnVuffExGi5shpFv+xALdJlx3sShrOzgXocW2oBnWMTTvx1BSsNmJlxJW4Tt
 eu7A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738091030; x=1738695830;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=8imJ+nMLivjPL0yxcvdGNiG6dlBXGsR54uRzr535tKY=;
 b=AVLmtfv+S0HZhyCG7okFXM0Kt/o9ZrP3J71vWNcwmxcVd1KbHuJMHirQSy09KDmN54
 wbkIB1fOcwuurs8K81deqYCKICmzcYePt0UAx4lBjYMPWLToR/NDY6NMDWM/7F9Fadjw
 GViplmumwyyiR7OVNSO7F5ASFMZ2XgljOcj2ipdJjiPMpKUBWTESMwmFUPe8tKiBWllt
 aZtfItyQpqUf6jqKSFlnGTcOiziXtrX3ZLG/Ivj1KRGuwxkISYyLQYgsgrk7IY0LWiNX
 7klmKSSoOUwNqVpS7QmhS2I4JPNwlJofQB47/8yFtpJKghfRG+CQxw8sodDxuWwTZUHX
 zG3Q==
X-Forwarded-Encrypted: i=1;
 AJvYcCVXfPzBzDSKYHKLh/DLK3xf7w6MGTfkuSJm8+f+zaW4c+jbB1nw5zSdjwP8hqI/TqRkQ4Y1QA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yw7Pq+tacbAOzI5w8esjUHDZMi5TH1RszV3nOj1olOmvlCUQgmd
 6U2K+eJFMHreCSeiQQBXPcN+NVw9uChKBG5JUVgjF3dLehpwQH745M6CRiX/AqY=
X-Gm-Gg: ASbGncvgL9kIlcIIvqlZsgI/aqJpeInrDKScrEnWQjhEF++nhASypuH8zoq9OB9kqiu
 ha9x4ivEDi6mGcCy+Ij/H33ODBzvluHhuDARSzt5R2xNNBrdhmcDyDamGLwX8csd7Uq/sr8g9dJ
 cGHPbQIdgpzTthgLmAXwOjUfovHpVnXzviJ+VB6XyPauC/gvjvC5nTKhgsuRZUXrTwUZ4cga+CU
 9aSfJEsQA4loe3vPl9/3I4bNAIJTB3404bGGDXP/l3ls2xdHFDqRHesfgFXB6/irzXGD+mmW9N3
 wfhywB02gtlM5/TLm+wPdtP4PGERHsP3D4U47QEeTtxRdj4ULBuIW2EXPWYIpyP089FwKCi+lFP
 UPd1XXL6MKIlG+Abq0Jm0msk8
X-Google-Smtp-Source: AGHT+IHmcoRcY8GxhZkgswytRQoeE9IgH7aNMY3vPnho+22fwVfC8rkM1e0pF4ioL0utiuEXde8RMg==
X-Received: by 2002:a05:6000:4010:b0:385:f398:3e2 with SMTP id
 ffacd0b85a97d-38c52096217mr154971f8f.37.1738091029503; 
 Tue, 28 Jan 2025 11:03:49 -0800 (PST)
Received: from pro2 (p200300e0b713ec00d5ef8a94c682d95e.dip0.t-ipconnect.de.
 [2003:e0:b713:ec00:d5ef:8a94:c682:d95e])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38c2a176519sm14700034f8f.2.2025.01.28.11.03.48
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Jan 2025 11:03:49 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN> (martin rudalics's
 message of "Tue, 28 Jan 2025 19:10:37 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
 <m2jzae3kr2.fsf@HIDDEN>
 <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
Date: Tue, 28 Jan 2025 20:03:48 +0100
Message-ID: <m2frl23gmj.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>>> But maybe it's only the
>>>
>>>    eassert (FRAME_VISIBLE_P (root));
>>>
>>> assertion there that would have to be adapted.
>>
>> I seem to have missed that, sorry I'm bit distracted ATM. Or was that
>> the one in combine_updates_for_frame with multi-tty? I think I committed
>> a workaround/fix for that to master. Also for the root frame always
>> returning t in frame-visible-p.
>
> Forget it.  I was in the wrong branch.  Just to verify one thing: When
> in a tty frame I do
>
> (make-frame '((window-system . x)))
>
> move to the graphical and back to the tty frame	I get a crash like
>
> #0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at ../../src/emacs.c:432
> #1 0x000000000069abc9 in die (msg=0x7e0a28 "!FRAME_WINDOW_P (XFRAME
> (w->frame))", file=0x7e029f "../../src/dispnew.c", line=3193) at
> ../../src/alloc.c:7989
> #2  0x000000000042539b in window_to_frame_hpos (w=0xbcccb98, hpos=0) at ../../src/dispnew.c:3193
> #3  0x000000000042b9e5 in tty_set_cursor () at ../../src/dispnew.c:5669
> #4 0x000000000042bba5 in write_matrix (f=0xb83fd40,
> inhibit_id_p=false, set_cursor_p=true, updating_menu_p=false) at

Hm, new fun with multi-tty. I can see the following

We're doing a normal update of a tty root frame. At the end of writing
to the terminal (write_matrix), we try to set the cursor
(tty_set_cursor). tty_set_cursor begins

dispnew.c:
 5620 static void
 5621 tty_set_cursor (void)
 5622 {
 5623   struct frame *f = SELECTED_FRAME ();

and further down, when the cursor is not in the echo area, and so on

dispnew.c:
 5685       /* We have only one cursor on terminal frames.  Use it to
 5686          display the cursor of the selected window.  */
 5687       struct window *w = XWINDOW (FRAME_SELECTED_WINDOW (f));
 5688       if (w->cursor.vpos >= 0
 5689           /* The cursor vpos may be temporarily out of bounds
 5690              in the following situation:  There is one window,
 5691              with the cursor in the lower half of it.  The window
 5692              is split, and a message causes a redisplay before
 5693              a new cursor position has been computed.  */
 5694           && w->cursor.vpos < WINDOW_TOTAL_LINES (w))
 5695         {
 5696           int x = WINDOW_TO_FRAME_HPOS (w, w->cursor.hpos);
 5697           int y = WINDOW_TO_FRAME_VPOS (w, w->cursor.vpos);

Means that the selected frame at the time of the update is the X frame.

The redisplay happens from command_loop_1 which tries to get input:

> #8  0x0000000000480825 in redisplay () at ../../src/xdisp.c:16668
> #9 0x00000000005f68ac in read_char (commandflag=1,
> map=XIL(0x7f4b28c2f623), prev_event=XIL(0),
> used_mouse_menu=0x7fff72a5a8ef, end_time=0x0) at
> ../../src/keyboard.c:2672
> #10 0x000000000060a7da in read_key_sequence (keybuf=0x7fff72a5aaa0,
> prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true,
> fix_current_buffer=true, prevent_redisplay=false,
> disable_text_conversion_p=false) at ../../src/keyboard.c:10746
> #11 0x00000000005f2c2d in command_loop_1 () at ../../src/keyboard.c:1424

I would say something in the switching to X and then back to tty is not
working, and the culprit could be do_switch_frame.

But at the same time this would be strange because combine_udpates has

frame.c:
 1833   /* After setting `selected_frame`, we're temporarily in an inconsistent
 1834      state where (selected-window) != (frame-selected-window).  Until this
 1835      invariant is restored we should be very careful not to run ELisp code.
 1836      (bug#58343)  */
 1837   selected_frame = frame;
 1838 

So it should have set the selected_frame to the tty frame. Except when
another switch-frame event or a call to select-frame happens in the
other direction, after a do_switch_frame to the tty frame.

Which is a long way of saying I don't know what's happening.

Maybe you could add "fprintf (stderr" in do_switch_frame in line 1837 so
that one could see if that hypothesis holds water?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 28 Jan 2025 18:10:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 28 13:10:54 2025
Received: from localhost ([127.0.0.1]:38451 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tcq33-0006Y6-MS
	for submit <at> debbugs.gnu.org; Tue, 28 Jan 2025 13:10:54 -0500
Received: from mout.gmx.net ([212.227.15.15]:59547)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tcq31-0006Xm-Js
 for 75056 <at> debbugs.gnu.org; Tue, 28 Jan 2025 13:10:52 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738087841; x=1738692641; i=rudalics@HIDDEN;
 bh=br3yQJ2Xrh2Tj8jW/3pPK6dNrsGEGWgY2CUgToCJZ1A=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=kXXOIHXUJNGXxZhsETxzS1KgsJ+x6zDY9zvNRm6yP28gSTUmZpGkh1nnHscyszNd
 VtuLxF+Gg6CsLqtoRt99qJJV9ZINGZbxvaXg9AuIUQMjIbj7kQbDuT4nbTmG//lo3
 QRx8HG6CgSMAGZ/gv91XsOlEXDiVRf/yzi+s32LkeRs8K54KiUGw2Py2+h1ExbR9U
 esCLzg0rKjYk19NlwsX2aNhmOt3AEg8byD8+CU2dsBKdt03FOBlf6FxJxb2Z+98aR
 iwp+wHzZd4TvkmNGLpb8L0PYyojKSzgnEBR0gZH6aLfsacCWyweGVf8ahlDVFloS9
 L6vbbHGOSFMd3KoJpA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.36]) by mail.gmx.net (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MbRk3-1t1IEr3UwT-00klCE; Tue, 28
 Jan 2025 19:10:40 +0100
Message-ID: <ac35e126-2c73-4143-a40a-20292913565b@HIDDEN>
Date: Tue, 28 Jan 2025 19:10:37 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> <m2jzae3kr2.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2jzae3kr2.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:t4F/un9Wu8B9DQWN5ZD3ljHV4SCjEV6aQVwCWPa4K/EUdAeFoop
 HwURyITaCG45He+P+5geqdr52OaBbdJeVPqkOLDKloUtRR12ubrVcZp0uuXjA/N6AzJnCeT
 zT/D3RQhUcmoeNe6cjVPgal7GM9dTH73PHgJ0oso4IP7d78SHO/7uYSmofwtkp+hDpYIIOz
 4Xy0q5K/LXHQEL4ZHTscQ==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:nlxA5+YfxAM=;Q5uzGomnM9x/FalwA7zg0Yr1Rzc
 B6RaT6lgplYOSqaMZt7SKktlpUe/Hn+q8F/NgRX+qix1OWTyIqQ1w9HeAF+Roe/Lo+Zj8aYBX
 3ofoH1u0pD8QX2Ct2zoeUXuQ7qKiMZl4fYcjmGN4TdbLG65aulNnvATvoLBHRCC7bxbUoEFj4
 g4zx9G2wjsLe9NoL0ZTfUFo6BPMgGLL/CuZMdZR99WDf5O7lKQTPC9YGr5zYLKA6ueO9a50C0
 3uKcS6YqFbps4o3SEe+39rOfh0/iv4ps/ncAbhf1uAuUHTRNymhu6rnxbADEOlyLlWHmbHAK2
 fsLokqAkB9wOoVPw8l469WIKtJaodbyjMfpN0yM1EdE7pTRQad4FMfPnd5XTnH1C2DV0r2NuL
 W41+GwWmdNQGA1Y7XB6sv+wp/tVODbPlBXcDgfpDbF6qErz8jsB6DJ3YYFChuT3bVhaNn8SLA
 Blw5iv22gSpFLQCggGeRRq8zsU0xp0FfwM+sjEOuBz8xDnawa0ngWEo/eMwgT/qZi1tEuN6hV
 IyAzu7QQU4RraSjoEIVLmjUd0P0fKfpld4aouQ0vKdxBxTQbvvz10WzQLchg2CuH3VpsuWYXF
 kORAsvsP/ILzHNJgE5vw4WVDpN0YfpJwJGJuq1cZpfFN/sjRbqjeqeXvzBLG88M++3v9Ey3Lg
 Kxf1lDfTFNRRVx1AbJVuoemfPEypH4JizDMAe8UzNGXbKb7qOcq6MR7TNdhHRyi0m5fFWwG/Y
 4pFd+1GkTmE75V+FCFz/tRbBUSctaGw2VSeYBZDPT6UaEhaSXkj+7kgXymdunLjjtrrzqh2Jy
 L/ACdbULBo3AeCe3Fd8tQpxHe+qUOzhMF4/weR8g41Z3Ip04m7hvzXt99yjjCo0/xiiBiPi4R
 y4pyRTQnCIGjEII+GddeIPfGeWq3pvu8p8S0aR6DizgeOdLkvgQ8ck0kwyR/YNki+fzyrpALJ
 IZ8ceLJGvAt61uv1E2NuYZrH8wfpvhrn2pKMGfvDsd/hoOPdc0hHWDAtX+uJ11LA1xW1we/CW
 mzIfH+88X769JM0f/v83fq3ydtL+Bg6lxsyhD4gdfziAP9wIPQuWQxomAnfBAsLoSMkV5mUva
 CjCi26h5SubmWdebBU0wheoIriadhcTmPZ0ydHe0M6ij1dOkMjRV8hmXJGsWX7p5O/MttKWr0
 ffl+6Mi8fDJ5s3nvZ+PwXTEXA3SFVgqWGVbtUycsrcA==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

 >> But maybe it's only the
 >>
 >>    eassert (FRAME_VISIBLE_P (root));
 >>
 >> assertion there that would have to be adapted.
 >
 > I seem to have missed that, sorry I'm bit distracted ATM. Or was that
 > the one in combine_updates_for_frame with multi-tty? I think I committed
 > a workaround/fix for that to master. Also for the root frame always
 > returning t in frame-visible-p.

Forget it.  I was in the wrong branch.  Just to verify one thing: When
in a tty frame I do

(make-frame '((window-system . x)))

move to the graphical and back to the tty frame	I get a crash like

#0  terminate_due_to_signal (sig=6, backtrace_limit=2147483647) at ../../src/emacs.c:432
#1  0x000000000069abc9 in die (msg=0x7e0a28 "!FRAME_WINDOW_P (XFRAME (w->frame))", file=0x7e029f "../../src/dispnew.c", line=3193) at ../../src/alloc.c:7989
#2  0x000000000042539b in window_to_frame_hpos (w=0xbcccb98, hpos=0) at ../../src/dispnew.c:3193
#3  0x000000000042b9e5 in tty_set_cursor () at ../../src/dispnew.c:5669
#4  0x000000000042bba5 in write_matrix (f=0xb83fd40, inhibit_id_p=false, set_cursor_p=true, updating_menu_p=false) at ../../src/dispnew.c:5712
#5  0x0000000000427483 in combine_updates_for_frame (f=0xb83fd40, inhibit_scrolling=false) at ../../src/dispnew.c:4012
#6  0x0000000000427622 in combine_updates (roots=XIL(0x7f4b28c21193)) at ../../src/dispnew.c:4052
#7  0x00000000004830cf in redisplay_internal () at ../../src/xdisp.c:17611
#8  0x0000000000480825 in redisplay () at ../../src/xdisp.c:16668
#9  0x00000000005f68ac in read_char (commandflag=1, map=XIL(0x7f4b28c2f623), prev_event=XIL(0), used_mouse_menu=0x7fff72a5a8ef, end_time=0x0) at ../../src/keyboard.c:2672
#10 0x000000000060a7da in read_key_sequence (keybuf=0x7fff72a5aaa0, prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false, disable_text_conversion_p=false) at ../../src/keyboard.c:10746
#11 0x00000000005f2c2d in command_loop_1 () at ../../src/keyboard.c:1424
#12 0x00000000006d1779 in internal_condition_case (bfun=0x5f27fe <command_loop_1>, handlers=XIL(0x90), hfun=0x5f1c80 <cmd_error>) at ../../src/eval.c:1607
#13 0x00000000005f23c5 in command_loop_2 (handlers=XIL(0x90)) at ../../src/keyboard.c:1163
#14 0x00000000006d0bcf in internal_catch (tag=XIL(0x12390), func=0x5f239b <command_loop_2>, arg=XIL(0x90)) at ../../src/eval.c:1286
#15 0x00000000005f2357 in command_loop () at ../../src/keyboard.c:1141
#16 0x00000000005f1722 in recursive_edit_1 () at ../../src/keyboard.c:749
#17 0x00000000005f194e in Frecursive_edit () at ../../src/keyboard.c:832
#18 0x00000000005ed1ac in main (argc=3, argv=0x7fff72a5b0d8) at ../../src/emacs.c:2628

Lisp Backtrace:
"redisplay_internal (C function)" (0x0)

Any ideas?

martin





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 28 Jan 2025 17:34:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 28 12:34:52 2025
Received: from localhost ([127.0.0.1]:38399 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tcpUC-0004gU-Gy
	for submit <at> debbugs.gnu.org; Tue, 28 Jan 2025 12:34:52 -0500
Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]:48522)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tcpU9-0004gD-J8
 for 75056 <at> debbugs.gnu.org; Tue, 28 Jan 2025 12:34:50 -0500
Received: by mail-wm1-x32a.google.com with SMTP id
 5b1f17b1804b1-436ce2ab251so39664385e9.1
 for <75056 <at> debbugs.gnu.org>; Tue, 28 Jan 2025 09:34:49 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738085683; x=1738690483; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=Lg/pVeTxIkFA3PK3+xQc0KfAZeHIhp3GtOEbKeV4TBI=;
 b=SEj4D7gQ2UpLPnFHjp/n3zDSowkPRph3mDlvAS/bNQ4bK303N3w0a8Hzp8ky6Hxpbn
 LUoYMz/2kz3Wi7hakQ16b+Z0XQQF40ersvzmIzbeISN4k+LtrMPLVJ6d07s9mTnEl1vV
 3TbJdvYEkdnQ+g3tll6z7yRGNuilSckCwQUjBywa8DncT+iynywd5TkFu4xaXBcmTpyQ
 OvmTuczh+YlQ3gfo3OotU6OO3B49p0dnon2qaemNclpotmIYh0PkclqtAIBLDFGO4Xs3
 7KWlvpH3ndtgMr0hah147bxWkns03hvpwURIFgNaWZWEQWv9jEuzpYDRjGdvinv0yFmz
 3tZA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738085683; x=1738690483;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=Lg/pVeTxIkFA3PK3+xQc0KfAZeHIhp3GtOEbKeV4TBI=;
 b=FFrh+iFogiO0c07Pnmo6ZzT8RYQ/k0Nk8xw2cqbpKi1qaQatIVEKjsZ22piUgkdbpH
 LAY7la0mBfHjVCaxILE19ed9/xH+YWrP38f4BkjR7igv+3xjrLMsPkl8hITOBF6PMGTg
 XwgLGJJw8Ow+vDp9mN134GYY+1Y/LG7/TLCIUnimMc3wvOEF9NS3O2tcRBD4awSmsiiA
 PKhMgvXyXgTzhDygy0KHLNVA0q54QHwWxe/GdyKFSyewZnTAZtZRmHwjVuJ7KTTE/uI7
 QNzpfXnfwJLUGZb8Wc0oYZnYs8hUjHtGtM2KRMbq/P07GV4qwuzsw6Bc7ff0u2nhIs9y
 YeZQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCVbIccvcD7HQo3WxhaV/SIEAli0nsrQwj81o4pod+vfOE52CyFMJOom510dGz5B3W9Wr912fw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyPjO0i4iTohOI8E9GqpV1razxgKaOzAm2gW+bxjirs3O74n3oe
 REkxMRhuL9T0ylHrzlxtaSrnyfodUZK7vum5VRbVLtdx6IHmGP+NOtzLi7i8aWQ=
X-Gm-Gg: ASbGnctY9zKhYW5OgGS13WvjLdCHDWCfNRQXDWcRXyYuZjB7wyrYK8vi4yo/snXRliQ
 CsdAXYJ/y0eoBy1ZvpvEIPO59XTCr4BRPUTI+56RVSymV8KwGsiz7SeZYwwblXqVkG24hloVsaz
 +YFsJ/RGpG7D/NKRJPJAItzxT/6AB/90QCwKxP1ASgugTOleRq9zglEPbxltU75rIeEcWoMxr1M
 d6/vOFLRR//hCSsN2jnRYrcwd2dqc+6Q8weGu8fzNnWQ5vnf0UTuPO56sGO5baIC3UY40SXfstZ
 rZD6MO+6REsh8BltANgTZHZhZxDaETK8aDj2NbSIY7kHrvbkL55SqJZZXcDq0oY+m8hlVSvcVGM
 bOQYt1/v4nIRzWtI2TgY=
X-Google-Smtp-Source: AGHT+IGNBWbYjW0v2MMmbjpLKXU5t9wRcLxvs1OGt6SWvkrAOTaJgdPTv1inT2/nkPq89hvCwI4wYw==
X-Received: by 2002:a05:600c:34d0:b0:434:fbda:1f44 with SMTP id
 5b1f17b1804b1-4389142e805mr390303595e9.19.1738085682894; 
 Tue, 28 Jan 2025 09:34:42 -0800 (PST)
Received: from pro2 (p200300e0b713ec00d5ef8a94c682d95e.dip0.t-ipconnect.de.
 [2003:e0:b713:ec00:d5ef:8a94:c682:d95e])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438bd54c0d1sm179062825e9.26.2025.01.28.09.34.42
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Jan 2025 09:34:42 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN> (martin rudalics's
 message of "Tue, 28 Jan 2025 18:19:13 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
 <m2cyg76ry8.fsf@HIDDEN>
 <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
Date: Tue, 28 Jan 2025 18:34:41 +0100
Message-ID: <m2jzae3kr2.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>> Okay, understood. Changing the C code would be quite a challenge anyway
>> :-). It took me at least 10x the time to get to what is there now
>> frame-wise, so to speak, compared to what I needed to add to redisplay.
>
> Don't worry.  Nobody really knows what do_switch_frame does but everyone
> calls it.

:-)

>> Will you continue to work on this?
>>
>> I'm asking because I'm considering to phase down my involvement in
>> Emacs, at least for some time. I'll continue to be available per mail,
>> of course, but I don't plan to commit changes.
>
> I can try to look into the frame.c related issues.  I'm certainly not
> able to work on dispnew.c. 

Thanks! I can do the redisplay stuff of course, just tell me.

> But maybe it's only the
>
>   eassert (FRAME_VISIBLE_P (root));
>
> assertion there that would have to be adapted.

I seem to have missed that, sorry I'm bit distracted ATM. Or was that
the one in combine_updates_for_frame with multi-tty? I think I committed
a workaround/fix for that to master. Also for the root frame always
returning t in frame-visible-p.







Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 28 Jan 2025 17:19:27 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 28 12:19:27 2025
Received: from localhost ([127.0.0.1]:38346 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tcpFH-0003t5-2S
	for submit <at> debbugs.gnu.org; Tue, 28 Jan 2025 12:19:27 -0500
Received: from mout.gmx.net ([212.227.15.18]:36267)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tcpFE-0003sn-1a
 for 75056 <at> debbugs.gnu.org; Tue, 28 Jan 2025 12:19:24 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738084754; x=1738689554; i=rudalics@HIDDEN;
 bh=YQxRhwCVp2UhJAnearLT1+ZmCAA1cZW5smdsxsCtaw0=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=k/9yXjHuHgFdq4J6oaqXnwFJ5c2xWnGvk5SkoR0GrNy+dsTixq9dKOIP5kuKOSF6
 wufwFxSHLHmEUl72cWChEkP22u7aXlqkn4A3A2dEvOOhV+9uEtF2T6Q7ht8fwQ/ls
 qYAAa0y64Ervdu8iMGCjIoTmCtRRIUX6PcjkeT2EsUlPUBpSn/xsS1x5T1MPSPX3a
 j6MbUBGbN2Taue98ruItEZHd11Q+ODKzDVKBwvpW95iWjYEZAl/ufgGAaTqvNJmpG
 8GU+YEyJpxm8KtzetYQ0iMv8l7/UGvdxaKDo4I5dr5gAv0htrhbB0ydR0a4hVZs6U
 xzZr47IqU+6/myUOrw==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.36]) by mail.gmx.net (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MWAOW-1txGsS2IDS-00Ok6t; Tue, 28
 Jan 2025 18:19:14 +0100
Message-ID: <824b531c-b00e-4b08-815f-1e13a144c8aa@HIDDEN>
Date: Tue, 28 Jan 2025 18:19:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> <m2cyg76ry8.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2cyg76ry8.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:QqAKn3nBIX3pZYspUET0HaXcZz84gP2Ivak4Y2WfAgyclNYQQUs
 h7uasE80qyzIzSufbT7wZf9hVQYvGU9k3wZqhiv42LaY8obohZ9SVpkg/DU7F4yW3xCfToS
 7XsA7dpwlzD+T0cJdYIuhQfYah0Sejvl2SDOt6FW8WPeGmOWJg/EJRCjz3VjJsnGFIiUcuT
 sxOQmibZf3iN3y2n4uBMg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:s4pa9i6UEfg=;zWSfvPQDqcMn6pOtmqb0ndVMncB
 afeNOKNAR0lwlyXbw1pERA8YcOJGYVTEZ/zFKtpPIbBDki+6nP7sjtIzF+XJ7kQAuojODWaql
 vSaH0lz6bMyHnFBsUBsKIhdpUDKX7RY0UFJOzRrG8Pb7NEnGEofLmFBo1HIgbiWuOqBpFqoVR
 9ZSw3KXtbKQApvP4BT6uGoVpe5iQfN+ju2q8Oz8Pizg5vwOPls4PrSPDgxsO2aoPFbXq4Lwr/
 WG07jKYi/Zos08gHOnqDlClE9jw0AZt3V4fRFU58ULhI2QxNi7vemlVSBOamCyE56MrxKyrcg
 JTYmrdnJRy86ZGpjsgHCBNCZbdZDVFy0j35be+pY30ytkgrq/bU5lhThJNn25T1idIw4P0OgT
 bkmCa7EZWWvth6tyUjFGFivkOwhPIrfJll1Z11z+wyMQD/RyRLRRTG4cuF8C6rjVzYJxq8XPM
 2OTOtYVbdJaO6nen4Wfowy7fpHsVpzD2Rc9c81MfKRNM6a/GINrsovzJ/ST0QnpC5RBSqxBsX
 XXGNnvV/oDgGydYgMosbKR5OtwJlsWaAhqnhbgc5/U6qjE1oU+WKoQC5P4/ssf6RmO4WLAkoY
 z0QxG3BvBIrHdx+aiJweXGLq29MsAMXHn6dfHIxqGthtDuk6ebM7DCM7LCxgfPC5CAON8jNif
 kzTQptSTuJBsPBfeycUQpsfOY5zhJ84IuVYsfRIgzu+JOMkBu3yoqvlGyB9AUfqbs5Kl9JUao
 mhdwkSGb29444Hi9sn9ZggdRhPi7vFgNCqgAc/9modTegWZfQEFT/dbeq82xYp6CgPyfxA6ht
 U5bcpucJ/8fWzMj5GYiqj+WWybYF5OBoV0uM0X+yEE+cygX9eGl2mHnbaAKC/i7XfC7GEgVtk
 G0eG9fLR9vqazxhMXzmnG5fajn8auL/J6cjTxyZewK/DK4qudOy5sKZqAqfqEPKMSOVmpyQJw
 132Niy7VayOo3s4kkQC+WvlcrbOB+eQjVwpW5Fk66RY1YOwGx2N+5fdsGoeSrW/+XVCM6DtDB
 IqBTJiR1tsV2szIDCn6pVy0ltBEC0vMOhA2KZdMY0ipx6rnuGejAN+ZvlTgwxL5fNNj5eg3kt
 b5NVY9WrR2NF4hx8bSu3t9p/BM/dazYitMzkZsnEPapMPalrVV7Fk0yxEwVT33TwuWx+xCrbv
 ewcfG+eJiSszk6ZuigEkwaa6m9n7b+TBL+riaF7lOBbgzjb97BugSwcS5zwA+JHpgIbqg4GqL
 vI2hAn6n3L7/HpIMtbXMFP1NhDgykwvqLsLCDTyWlsaLTlSpq2S/gmKvGe09gUG80PtKswreZ
 +RK2eHBp8eqPEOqFrNt/qA0GurROkzNUGvnMdxekWakFu0=
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

 > Okay, understood. Changing the C code would be quite a challenge anyway
 > :-). It took me at least 10x the time to get to what is there now
 > frame-wise, so to speak, compared to what I needed to add to redisplay.

Don't worry.  Nobody really knows what do_switch_frame does but everyone
calls it.

 > Will you continue to work on this?
 >
 > I'm asking because I'm considering to phase down my involvement in
 > Emacs, at least for some time. I'll continue to be available per mail,
 > of course, but I don't plan to commit changes.

I can try to look into the frame.c related issues.  I'm certainly not
able to work on dispnew.c.  But maybe it's only the

   eassert (FRAME_VISIBLE_P (root));

assertion there that would have to be adapted.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 28 Jan 2025 12:31:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 28 07:31:07 2025
Received: from localhost ([127.0.0.1]:35836 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tckkE-00085E-IM
	for submit <at> debbugs.gnu.org; Tue, 28 Jan 2025 07:31:07 -0500
Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]:54406)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tckkB-0007ng-Gy
 for 75056 <at> debbugs.gnu.org; Tue, 28 Jan 2025 07:31:04 -0500
Received: by mail-wr1-x42b.google.com with SMTP id
 ffacd0b85a97d-385f06d0c8eso3068186f8f.0
 for <75056 <at> debbugs.gnu.org>; Tue, 28 Jan 2025 04:31:03 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738067457; x=1738672257; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=O8Kj5HBYkFNmV41uULtdJQ2iEeqsnbOdR6BaHN1YPPM=;
 b=FR5j1fQ7nhN7rd94pYDlOCKCBsKgjybmMxxlYb54T7lbvWhNPukm3eV2T8KVybWI9L
 Pnk1bWAQr+N6adfBHCgblJXMPmclDbVfaJNvS6JT4tzaIVX2j5zFaYH7Ea2nWAUOAyxD
 Ipi52o0oG2h81T/BHPmcNGgZSymW20no50p73r1T8KK/byKkpgKrhx6iv0D2Nuo99kRP
 URZrUE7mVla2QSHohzzLdexNXjnk9Vha6rGgE7h94Lm3rpqrKSg402XBycGn8lHuPzgJ
 s7o2WjuwB/dztXBKk3iCLScp2c1vR0sC00fz2vxgv877vudOocWY7K+R1oEyHc917vvx
 2mbQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738067457; x=1738672257;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=O8Kj5HBYkFNmV41uULtdJQ2iEeqsnbOdR6BaHN1YPPM=;
 b=novB9SOt356+bSKPks8n9doLJ/A8vrH1R/x+95W0QweOCdJGpJsWHQOCZicaLXHIS/
 jCu912kakXofxMAQgrhN08I0s0Y5xg+KZC/QcFD0BOH7oHfVrPm4IpLVTzropG181bhU
 8y2gFNjevd6a7up2pn3Pnug5nGY8FP2tWzc84F99Tvs+Vc4DY13g0FSNANYJZ4H16Cb/
 SNrEPuS5wvbL/KFpZrjcjvnM1Izf4eOCNjOuAIJ0bkKpfG+/f8V/eSEH8HeLuMmutgmr
 KCTFvOOU68OqZV9Ge5G3JkhkNaXFdklvhAkQMGp/JGn+csRs8oPW5MCFKuDvG2DR+4oL
 qEkA==
X-Forwarded-Encrypted: i=1;
 AJvYcCWscGUEVWnkej/ngXzipZPHja+77gQ5SQIHN7f0MrkOG6WU+/lyM4NG/e+YsbCcAKwbiFNQuQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwTzu+j/szuKAJ4CTrkN2ZVohWDRtsphaFozCXfGC5gFNa22au+
 MtlT3aWUsbRmh0t4oVZ4dFtBKMwmK13Zn4+c2RULGl+qQ6ZqVtrgxlEH6g==
X-Gm-Gg: ASbGncs8xZoYKltTBhYg0L2ua1fZ8RD5r7Ey6CG9eU1+NlK1INF5FUrL8jm9lwy+bsm
 7eVZBJ+41LQTDK8QiLKr7vmTWAkmTIoqp68/K5zjgT/AoF6aznL+yx9cQwlvFW8uM7PSOV7kQHb
 4FhhLjYtZNpBtFrIRAexrwWlLn9rkL8STt1YR2z+vmY2Kv6O8KfpJ0Q52KGTv6fa2W1MiDcCD9w
 g0hRmPptxkr8wIfJp9sdMz12KAHbq7uO9DAR5Ljc4U2rYCiFoSm8UOroe1lCxcq7okdXYEngmX4
 8Uk1cUqh1cY3KNGi0vntVLKuvdmybLBdDimbOkMIsYXEWi3mA4vC5041lymNqMwFq+jOcoaod5R
 QyUQz7+eGX3i0i08ieMxJASFh
X-Google-Smtp-Source: AGHT+IEZpkcMXPxiOy4bPojyqijhkx2UJqgyqnjKeRngbURK1SjP4PyvdmiGOhcx1YiytKk3HziLmQ==
X-Received: by 2002:adf:f702:0:b0:385:f7ef:a57f with SMTP id
 ffacd0b85a97d-38bf578a95emr33312512f8f.27.1738067456643; 
 Tue, 28 Jan 2025 04:30:56 -0800 (PST)
Received: from pro2 (p200300e0b713ec002c00b80fe3536eed.dip0.t-ipconnect.de.
 [2003:e0:b713:ec00:2c00:b80f:e353:6eed])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38c2a188c33sm14287234f8f.53.2025.01.28.04.30.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Jan 2025 04:30:56 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN> (martin rudalics's
 message of "Tue, 28 Jan 2025 12:01:19 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
 <m2lduv6yrm.fsf@HIDDEN>
 <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
Date: Tue, 28 Jan 2025 13:30:55 +0100
Message-ID: <m2cyg76ry8.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>>> 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.
>
> What I meant was that currently with
>
> (setq F1 (selected-frame))
> (setq F2 (make-frame))
> (next-frame)
> (frame-visible-p F1)
>
> the last form evaluates to t.  But if we change 'frame-visible-p' to not
> always return t if the argument frame is a tty frame, the above will
> give nil IIUC.  And that's not what happens on a GUI.
>
>>> 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.
>
> Be aware that it will change the current behavior for top frames and
> make tty frame handling different from what it is on a GUI.
>
>> 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.
>
> The question is not whether to display it if it's not visible.  The
> question is whether Lisp code should consider it as visible.
>

Okay, understood. Changing the C code would be quite a challenge anyway
:-). It took me at least 10x the time to get to what is there now
frame-wise, so to speak, compared to what I needed to add to redisplay.

Will you continue to work on this?

I'm asking because I'm considering to phase down my involvement in
Emacs, at least for some time. I'll continue to be available per mail,
of course, but I don't plan to commit changes.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 28 Jan 2025 11:01:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 28 06:01:33 2025
Received: from localhost ([127.0.0.1]:35694 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tcjLZ-0001Yw-1E
	for submit <at> debbugs.gnu.org; Tue, 28 Jan 2025 06:01:33 -0500
Received: from mout.gmx.net ([212.227.17.22]:53323)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tcjLX-0001Yh-8G
 for 75056 <at> debbugs.gnu.org; Tue, 28 Jan 2025 06:01:31 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738062080; x=1738666880; i=rudalics@HIDDEN;
 bh=38Uj72aNaQde5TvJBhRMEqNUvpJguyvV2C73l/i5TbQ=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=Vy5D0+2U/Evv5icZVsFmsoG0L9x3WlJFVJ+IL/KOBS6qmnOVtqQ2xbhmOVNr1A3t
 TUfbU6LZG3e3JRge52O5O2QQTkS2551LZUIM+ygsXKOY3wL+JMTtUIy++Dy/un7oO
 hb/9rM1rsxeYDrEZHgDHTmFO0dybY0aqK4AjO17uUuvyq8pooGjT3Q3my3ux0tGqP
 w9TVhmDyAWv2HfvMKt7tt33ttsUd267e1aeqYKeKWlaxCk7gTBxt3fsNWsZfU6RLH
 D/GF6bQdSY27wvZLivJ9VpGQEI6anzmIB+nN9b41+FZbqPKT2XnJ3BQg8ZJxgc4A7
 TRRgcLxr9Otjh/j19w==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.36]) by mail.gmx.net (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MdefJ-1t3fZh2Fkn-00mmEn; Tue, 28
 Jan 2025 12:01:20 +0100
Message-ID: <fb1d85a7-5a74-4d2a-9097-064e86dbd0c4@HIDDEN>
Date: Tue, 28 Jan 2025 12:01:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> <m2lduv6yrm.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2lduv6yrm.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:oztiwyHgSHdRxJeDaDRO4nEgmoQrOh6GrZy55PRaOYO4SSPIImG
 NOWpkLf1H9hi4onPUOuT0c+gSJWW57I3B1+1KPGqgu/lnu2R8ff+4AZaGzXL/8qnVHWvXlY
 sRBkiO7g1VmcLWSsVseNDWNZzced9GAanOgAiAbiznR4MIBISAw1cRkLf2LoP8HER4M1unu
 MlZYKlAAsXrWSDhrgjEnw==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:AGCRbYAPIoU=;NuohjxjSbzKnLTCYDwX8OSHdqvQ
 iqVtmHYidLMOSzwIJ3UVSMhselpQcto0X/jpvJlV8LcqGjZ0NosyEWQSp0bMNnoynAgdouhBf
 cv0BQCOMPK5Ac2O76VyzdapbfN9/CH5Wyo8UfWbBEpIczBbn1uArV9xpnJpkVBa8knCttXEBC
 xg0agXm18MC9iXCklukpX9H+EXzXQAZtLmfkFZ72/nzkJMk0Ox9VIC8+YlRYyqmjpgY7HIVYu
 C3VQciaZIznmSf6euPGgSTxt0dsHoIBN85OU7mbz33w8fPJcIZq7Ye5jyTdlKZ36CXHgaq8Tc
 qVuGUIvK0sJYY4kRGqqbC2ADWQJigVrWUrQDZgftbNpOmy1RucAY4P8ep+N4izMc8HbHukN7a
 I3QT3gBjkhRKeL0hfLr7PNE5gakgbMTxRSBREylG8/NMNwW2x0oG04U2THm4lST2PTPVQRG2V
 OHrLoJLGjNVuo9TZoWv4I82+HNBQOvrGtgNmRo8kIxt0yrLSOEkH2KPAZQmVnX+isNQe2OGKN
 VxdQb9GUJc3O1s8CB8SRe++fJxaoI6L/qDAj0qWEuaZ5auCbUl0hn20qux9+bBBvihM8f6i12
 vUFz2xr14/u9EE5oWiZlRdCRwLQ+T6dxu0y3fybas1AAlTlc1HGai8lBx49dOscy/PsqT90kw
 642515KpnRrVSLLBc4UfgwiWgEkbEcBxroFFGzGaUfsfK6oG1/OwcxLitZv7uY5PVw5rGhRPe
 h+depGqijj7xSw2qWQOgIgvKowu8xAJ317S+uEPn3U/ZQYu22YH61ZZBKozUhaxYP2owWnahT
 9agPOWAcohdTKwX3W1yL5HjNeR3qLzOhURMutjrScyqspk8Ji3Sc5xj93SzRyQlS9dhZDuGcZ
 0oKD8avesiScSCECauxaBup8J6G/OnVllauDNiINb437xh8Fv0ozVi2zE1h45jmpRVSVMA0nY
 AcVgh4RxLUCv8pE0r6khdJJpf+FJWRcR6vkqm9AAavhc6PQg1alAumSh0Q6n1k9KhAFuY0nZF
 74yRB+QLpMI6mnbXv9EkXx2Pyy5Ft0RQ9euDCGlcxkPnTvzpperonjR04QVwsgfO5WtQam5Pr
 3mvrzgvLXNMi53yvDBvoMudPisBuosh19LB9p7RPjGWvY93UqIO68t8sdOvfpB+SwMC4Bomk+
 HGlUzxRTID4rJp4iuTUdQDtOvNsm0NgzRyFTS7wVpzQ==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

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

What I meant was that currently with

(setq F1 (selected-frame))
(setq F2 (make-frame))
(next-frame)
(frame-visible-p F1)

the last form evaluates to t.  But if we change 'frame-visible-p' to not
always return t if the argument frame is a tty frame, the above will
give nil IIUC.  And that's not what happens on a GUI.

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

Be aware that it will change the current behavior for top frames and
make tty frame handling different from what it is on a GUI.

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

The question is not whether to display it if it's not visible.  The
question is whether Lisp code should consider it as visible.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 28 Jan 2025 10:03:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 28 05:03:53 2025
Received: from localhost ([127.0.0.1]:35601 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tciRl-0007Os-7x
	for submit <at> debbugs.gnu.org; Tue, 28 Jan 2025 05:03:53 -0500
Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]:54735)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tciRi-0007Oa-BX
 for 75056 <at> debbugs.gnu.org; Tue, 28 Jan 2025 05:03:51 -0500
Received: by mail-wm1-x32f.google.com with SMTP id
 5b1f17b1804b1-4361815b96cso36099645e9.1
 for <75056 <at> debbugs.gnu.org>; Tue, 28 Jan 2025 02:03:50 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738058623; x=1738663423; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=tS4Z6EVfcU3IBFcecKlfRsug8tIoyyKaVvNSr4eEsnA=;
 b=OYrs9Uug64StdwlUiHo/zwQ87wFZt9b/kSDCEGfg+g2x8+JxfLsW4xph+/B4CAVtn4
 F9RReg+LnIKtApXYiVpENTlZqNqJbR7kDGGnfOQv4/W4nYRPwJK1A10pKzMYRuyuOk6r
 5KGlfdiYOs1X2xYrTvjKvLKfAF0GwgcU+fCmOVin2SovSFFDsYMP93hJv1pwBpqnf8BG
 LX6iHZQX69WPPN40FrXvg0fSqED7lMfU7jatc2fsHw5OYvO6sEjJX7+MvChCnhT6T4IT
 uShZ9q8vh/E9uuR5qh1L7gwGZ9KXS2RZBlwEisWOlem6yBx1QGVPA9ORG7ei8V/7Rb5H
 c9FA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738058623; x=1738663423;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=tS4Z6EVfcU3IBFcecKlfRsug8tIoyyKaVvNSr4eEsnA=;
 b=of3FNzhPuM/VwfLe0wVg/5D/ucgm/svwqx9aV9xive0dxRDyl38x5svqm6Lat07Ibh
 RCPaare4U5uZgu54vpFl02+SJG3yaRHXCIG8+mQQv8GRdYGWPZOS75xh3Iab28nkI0zf
 mg12hTg+A+Sb7JYpFlXxWmUxBYDMzYnI3A+P2KdS6zrfkt0E+YAMTW99KhcupXTOIRbH
 NxMtKmXzP/N1HXd2Ob07ouI5BliHcpMGtLz+YhxoWnz6LrB6rC+MKWTBiJjhCb1laScH
 zYz8brBIoiNDrFQ2uyLekm4gN2D1P8s1wichPzGupy/Iy995sZhLjs+DPpOZuDCvcIF+
 gZ6w==
X-Forwarded-Encrypted: i=1;
 AJvYcCUcB7/7icPSzb7ZMzSljk8OjedADsPbLeCJi39fCrg0EgW/681VWt2UZ2wTYnWDgovA5LphJA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzyHNrd58Xig4o9k7XGMAF397ULueyYaKKt159iCyIHlrXVaJXu
 7xFLWHnTuKzzZD43frfq/ZM6Bz/zgcdrnL5DXs30N+n39/9yh+oXKBpWVg==
X-Gm-Gg: ASbGncsbrYOAsK+4/BQ5m2Abx80HuJCbcuaNhQ2PUyXcqotGgHgxkp6o1xzwqb2qipX
 JkPqfmZb4M0OzyUFEykG4sAs6syKsHUg1yzWP1VJNRxwXJGTzXF0jbUsodLC6ShFNlCI/Li9Yc1
 T6rMLmitj6JP9I7ORaQIyUtMZNjP+m1rPTAmzfbDy4d9JQkfWNfyf/IRg7TIRzihcCwE7i1dFVX
 AeWZr4BjEH3h2MSnnTqpbynI14nX1zjEyxv1z7xGQEDITJP2NvQBliabltg3JYq0tlY16Nf7S1R
 OVIjgH57qQ4nEyL6GLQ8YleNdgOKiAp/XhL+W3IRIJBBDeFvd7s+V63TSFTh9dQ8h5U2UGect4L
 QF3z0gFhnsQv/RZ9/NDne2XQT
X-Google-Smtp-Source: AGHT+IE+DL0+f6fFppk65swIr4rzf7jZ3ZptcGaxa6rr9nrlDP6SANryU7Qz4GTIQDnJpAMa1vu8gA==
X-Received: by 2002:a05:600c:1ca7:b0:431:44fe:fd9f with SMTP id
 5b1f17b1804b1-4389142776dmr382278785e9.23.1738058623141; 
 Tue, 28 Jan 2025 02:03:43 -0800 (PST)
Received: from pro2 (p200300e0b713ec002c00b80fe3536eed.dip0.t-ipconnect.de.
 [2003:e0:b713:ec00:2c00:b80f:e353:6eed])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438bd48ae29sm168638685e9.22.2025.01.28.02.03.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 28 Jan 2025 02:03:41 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN> (martin rudalics's
 message of "Tue, 28 Jan 2025 10:29:11 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
 <m234h4oyty.fsf@HIDDEN>
 <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
Date: Tue, 28 Jan 2025 11:03:41 +0100
Message-ID: <m2lduv6yrm.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> 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.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 28 Jan 2025 09:29:20 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 28 04:29:20 2025
Received: from localhost ([127.0.0.1]:35553 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tchuK-0005o0-8E
	for submit <at> debbugs.gnu.org; Tue, 28 Jan 2025 04:29:20 -0500
Received: from mout.gmx.net ([212.227.17.21]:46735)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tchuH-0005nm-UH
 for 75056 <at> debbugs.gnu.org; Tue, 28 Jan 2025 04:29:18 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1738056552; x=1738661352; i=rudalics@HIDDEN;
 bh=p8hCiCssk22E/dHvlS9ttPSkTAw6TIMLZ0eyX9OKdpI=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:From:Subject:To:
 Cc:References:In-Reply-To:Content-Type:Content-Transfer-Encoding:
 cc:content-transfer-encoding:content-type:date:from:message-id:
 mime-version:reply-to:subject:to;
 b=FpJNckpfMq8WhxeOaDVZGpe+99eenuVrbFI072hviGnHa0Q+DsQbQEJuYdILUiOu
 vZVtKG4kzIhUEvvSktJaEm8bRUzI8RxQ/CP7ZD/GitGMHsFHbGi3utC6iOLmJBtPe
 MzCFqY+wGkMKLwwonHNYbf/RojaXx9kQJrp9NXkl00Rl7EPhghXQ/NoCqTwHUmB3U
 8gIj6k4+bTEy/33rrvVivgFF4n3pJwl+htNWn8fxEUS54JdlC1tkQdGaMuWkBJwmj
 CU71tu/hXw3bN7+E/z+qU5j/pPf7pd32gR986Go3wmoa2fEAQheADAiAtHecXFAhy
 bH/6jXyA5d7v0QvjsA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.36]) by mail.gmx.net (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mgeo8-1sxu2t3BV6-00lQjT; Tue, 28
 Jan 2025 10:29:11 +0100
Message-ID: <c898281e-f5f3-4ad4-9d18-972638ae5d42@HIDDEN>
Date: Tue, 28 Jan 2025 10:29:11 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> <m234h4oyty.fsf@HIDDEN>
Content-Language: en-US
In-Reply-To: <m234h4oyty.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:5PdQ2ZSZHElVUVxNFTomhcs+5U6J0ASXHvtC/Rk8jDDIqjoHjQb
 QqxVsSVAKdij3caGRq+K50+U8gdM9mYlhNDZyxj4s6fK7E/QJVCUuFwhpsy/SXjvMHXsMDY
 EtpP1CBgOZtpOQsT/T48cy1KDJAjNN7DyJz6b3Aup+MIGgfenwC877lWZy3Pr7vL7W5Q2YZ
 wjLVMlmWRkFyOAypk7+1w==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:Ij9LHVzt/SA=;mywPEvmQ1FASb95hFNa00giAZel
 dOP2s9pCjRK1MeA9RdP1OGOjwf9vQczz/OrmPnTojEvRri51HFfOqgaZkEunZTAvpI+Jz/YCq
 sOX+U64dkPga38yxt3dDSfhRFs06zSidryT5Cbtz/70nbop+lrDXXkepgBMFmwJGZig0dxAK9
 WZuUKjx4hf0KEHZOUOaNIUQQBXsYH49bJ09Uo20pbPvjInfKwsFAzbok16TkvocnPZ5xgG+9v
 oFYpFRUDk64bScBDDV2Z3hOM4FxhrVy5aTUzuRlExrtFg9OEbcJWNkDqvBn9Lv/kWgby7Smvn
 ZXDrywEkD7W7tpW1cdG4ubhn/Tx3vpGbTRFWnffuwX8KdavoAGJQZkhKkaeeSPkwLSmwFnuu8
 H1oZIhJkJwNDpe8BvKE58azTHXCzE/Ao26d3S1LXoy3bYEX4NWesBtHhSTmoa7cjeUrcCF2Vc
 icotKUd6cZPmyr9GRZtpR9gwRngLIt00BKYXZ+NuCjaRp1wh6/Fy+98YyfjaO9nE7c4kmCevI
 +55/Ke/QcJyky1pZxDkYZ2sSWVx8XSYFBH7qyx7V3EWsNLuO6Vg3s7dYhH8fkP0nwIG2Tbxiy
 Fq8EQY47hwd+dzM1uBxffmfPSPnEhvBMSyZvnSMYdU2/aBQIEMru4oydV7hyAHpsTia6FDNDU
 PBWc/nusqhA+UlC1zIaiOny0kEGO+I3QLClpCk7fva87mpRhPQkie8Q2vIbulw+6Et2U7VCNA
 CDdUncz/NiwNh7pVLA11dUYrTa7uxUqtXsOJ3fq7HkU75YrPMM/tHlwiYr25rb4fVa4+fFI+0
 8psE/UlTLGtuo/kmNtXv/CuJ2XXLNUaz1zoflL1gtXIKX6JFOXS5FyO+i0ODxcDk6WMQRBVXj
 AIKIUqsTOW0h32ihxsZo77pZ7i73ERV1CqmJloS31xBSjJYXH7byIt3l65X636EZeYuvSwzf2
 yVwptSO+xMnN7H037iFsSgANgGI5vJX153HKKORGEcAFa7CJKEIk2wDl4lSOczGx69L9ij9rh
 Cp5G7M2nOhjgK0C0NqUxAodOJDnjrvj4fM/+6l/t5I0leF6Exjt1nVMfQJNmbEFSLwWvbrgg+
 2s3IQAsRvJd7hBuKd+lskZNQwjL8EfcRoCh9ByYEZwpb0pw8+091WFO9mzCdNjjez+V8+q2dc
 647KtpFDuHPH3m0wmVYFo5IziLHlgVWtQ5IYRyn1crQ==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

>> (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?

> 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).  If you want to optimize redisplay, then the
old concept of obscured frames will be better suited IMO.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Jan 2025 19:12:52 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jan 27 14:12:52 2025
Received: from localhost ([127.0.0.1]:34479 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tcUXU-0003Vz-01
	for submit <at> debbugs.gnu.org; Mon, 27 Jan 2025 14:12:52 -0500
Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:59857)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tcUXS-0003Vm-8j
 for 75056 <at> debbugs.gnu.org; Mon, 27 Jan 2025 14:12:51 -0500
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-436281c8a38so33987995e9.3
 for <75056 <at> debbugs.gnu.org>; Mon, 27 Jan 2025 11:12:50 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1738005164; x=1738609964; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=vJzFo9pBJfadtmRIcsFk6FUGYMB0c69aU580sbfvzXc=;
 b=WBCJuyYj+CS57hX18+4J+/LmC+YIghO/XBq3clcpJrOcHY8aF53kEciG5X7wAa+Of2
 iF936PTe6HkGX+eB2zEWfUAFFIHg8+LBOM9fcKq3nLujjaDs8+BGVY+li+Y7udy/yLt+
 e5WUSncaAUloOb+JxNVjwAh+NxSy8gmKEmL/6/rZIWDj4zA0DL57slMi8X+5x43E068w
 nvfHrGE33eY7BXYO0GIkHPgi376k8mthXSw6ByPypM8qXDg++O4EiopJ3hRTHyUFRtZV
 8T6k0pNIOeutTA644mDdnWX5OQdhgO/flXnf7i4bzMBy1ziSp73N3uELGafunMhOrc0b
 UePw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1738005164; x=1738609964;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=vJzFo9pBJfadtmRIcsFk6FUGYMB0c69aU580sbfvzXc=;
 b=eCaG9l9fAtdsSpnJ1Fl9GT+LbthyFwEzHYE0+33Tpr9LyEZ0Y17FrQw5ZhihoQjyx+
 GWLkrRSp7my51c3hUReyXwi5rRXNkcxJM1LnjyZe+vs/SYJix6jAd/RyyAHQM9LUQTDH
 EZqf68i59OWnJ/PNturcWTMnKz5BtKq5Xv9+s0o99GSzmAFJbe2UEXXIkdE7X1zDDI/a
 QRD1mYEowumW7R/k5yXxCTm/uTTiAlvau0w5FDkPmihNjcR5DFCeLvI0roWVEqDkCa08
 JiUUMrpRnUOggMwz0YzU1Me6rwhvBgFZdpDVAEpdBqkdkTzuhtZA/Dki7L2GyXPJzAn6
 9Y3A==
X-Forwarded-Encrypted: i=1;
 AJvYcCWpWXjZCo+U+uqXycbvEROJ7nZtg7D11D8uj4DZwbQkOTA1UWoSf4b9330h01k2DgwaWRf6JA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzrNvJiQd37FUHJqRpxZV7Mg2FAm6WPGLJIDJTb8mHY2G3FU4oL
 08P7uzFTxfRygCLNKNJ/+IffTjiVTcw9YTHF4VjZlkHpTKdrIFtYFSPlKg==
X-Gm-Gg: ASbGncvF0fAf7Y4EU8yw2mqasT/jL0QgQJUOJxeivBX0bknHuLl3YHO4lOMPByu1jZX
 ZUZ4Chm54uQfgsXFc7jzKdq1SMHc1Nz2oDqyoab53heI8E/9tg1fEdinII2HowzVk5yioQC7Mdi
 O8ev7YfM3whAOrqgvFxeJggfMjkxwKg4WrU99VKhYsYTQIPvQRjbzer+B0JL5EJ/nXlwh6zC4yn
 y9dI/itITi/1D8Upi7hcVG8qrQGxGvT6TutmDQcCIcerya9NupmsgB/12KII6XNpkE5GA++ZEFb
 fAzwn1dKcXLqgg1ldAuQD1QugKFPs5JOiOQpildT8ES6P1uEIdG9UNtUN13JgRfBTyVjwVL0CVL
 Q2abMypGSc4Ityw==
X-Google-Smtp-Source: AGHT+IElCDvqXqlBFHj6rAn9gqYd8wyungtg8zJJn2zV/lHhocG4ryi6FqYjOIen/F1O9Mz0PrWdYw==
X-Received: by 2002:a05:600c:1e21:b0:434:eb86:aeca with SMTP id
 5b1f17b1804b1-438913d2d6emr428739275e9.10.1738005163425; 
 Mon, 27 Jan 2025 11:12:43 -0800 (PST)
Received: from pro2 (p200300e0b74c5b0091beae7ba24add4f.dip0.t-ipconnect.de.
 [2003:e0:b74c:5b00:91be:ae7b:a24a:dd4f])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438b1cc8571sm143341565e9.1.2025.01.27.11.12.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 27 Jan 2025 11:12:43 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN> (martin rudalics's
 message of "Mon, 27 Jan 2025 08:59:59 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
 <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
Date: Mon, 27 Jan 2025 20:12:41 +0100
Message-ID: <m234h4oyty.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

> (4) As noted elsewhere, the documentation must be rewritten.
>
>> Can't talk for w32, but I've removed the "obscuring" fromt the ttys
>> because it plainly went against the rest with tty child frames.
>
> You could have left it in to handle invisible top frames but maybe
> that's really not needed any more.  Whatever you decide here, the
> following issues must be resolved:
>
> (1) Fframe_visible_p has this
>
>   else if (is_tty_root_frame (f))
>     return Qt;
>
> where is_tty_root_frame is defined as
>
>   return !FRAME_PARENT_FRAME (f) && is_tty_frame (f);
>
> This is wrong because it will return t even if F has been explicitly
> made invisible.
>
Thanks. That's 100% bug.

> (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?

> This will change the behavior of many functions that check the
> visibility of frames, notably here in candidate_window_p in window.c
>
>   else if (EQ (all_frames, Qvisible))
>     {
>       candidate_p = FRAME_VISIBLE_P (f)
> 	&& (FRAME_TERMINAL (XFRAME (w->frame))
> 	    == FRAME_TERMINAL (XFRAME (selected_frame)));
>
>     }

Would have to be changed then.

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.

> where a window on the prior top frame will be no more considered as
> eligible.
>
> (3) I have not checked whether it's needed but I strongly suppose we now
> need a frame_visible_invisible_hook for ttys too.

Okay.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Jan 2025 08:00:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jan 27 03:00:32 2025
Received: from localhost ([127.0.0.1]:59177 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tcK2q-0003HS-KL
	for submit <at> debbugs.gnu.org; Mon, 27 Jan 2025 03:00:32 -0500
Received: from mout.gmx.net ([212.227.17.20]:53221)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tcK2d-0003Gq-SX
 for 75056 <at> debbugs.gnu.org; Mon, 27 Jan 2025 03:00:20 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1737964814; x=1738569614; i=rudalics@HIDDEN;
 bh=qrHylg4XPQGueFCY7XTm4ad4DtDgQ0DmKiv45D5Yzdk=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=pDDIOeJqaigx+j+FjWXyZZBanWwJXPJtCKONL0SnwQx2hdJ5V6DN0acYddGFXCSE
 ZOFSq/6txl8GZEOFiTmnVWQ74L+nPVb4WsaQXM+Nq20h5Si/1zTNvs4CebDhG+EI4
 QDGawYbCe1J2CzMvuqeBeZ+gYxHfC9PxkKh7MVWBrBP8ILGp0KeRC7TBnqLXkHjog
 S3WoY3VcnifD6UO0441uNaK4pvgJ4+9b2oXrJdZIb3f5HRaLy4EebROj9bsaEZ83P
 Za+omGQjIlvTr7UPZJhaOjIiBrHzcOdCVBPSdyvPSRUbDOK4MVeXO+QjyB1dpA3aw
 tLykmj65tcUVgMEUdg==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([46.125.249.32]) by mail.gmx.net (mrgmx104
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N8obG-1tNcux3kko-00sT5i; Mon, 27
 Jan 2025 09:00:13 +0100
Message-ID: <f012afe4-f59a-4773-8ae6-0e1f7b106073@HIDDEN>
Date: Mon, 27 Jan 2025 09:00:13 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: Eli Zaretskii <eliz@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN> <86plk9qtte.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <86plk9qtte.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:iAvD/bksug6zX7HdrJGBTT4bLwiFMMIEVMo5nQH/vRMpeyI0HLf
 JoOnfbP2UHb0HxrctWI6+EuGOeQB5/JjGx65NhBIHXyAnxLnQ4OHNhKhPKmQoHd9vDSfgj5
 Tem5yslF8ZmhamWHN+CTrdtOfRlznzES0b5Pu8pYQ9S+MI3rXFXAR+UvM/7FYWwlUacPqi6
 4LYMZgVDZmbDUT4d7kvVw==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:kOA6irm2x0U=;P6KnULU+n97jEGEDmivRV3ZMAhP
 SBgrNLCi9bJiJ5ZWvR/w49tzoki4CrdVpNOxKTf7wK2bs6HbYcPcfBueJx5U+VvNmU2gyyaYr
 a2Cl+rNRR9BxRZG0Ygv630Z/gO9YVzmRUkuw2hyW+SGDUYFvP6Oyr0/nz9G2F/GJJ4ftE3uTh
 B/4Ma+fajXy4FMZ6xWr9Gb4LD+mAyGXs15tViRoJIQJiyMosba5Z39PYah+1bKcyZqQR+nIRI
 IgQ7ovmfYAUgd65hsTceBel8nfC4F1vgRZ3B3f3G9DJWKvB91e09XPWxUSPgNlFIhDoXz3LYQ
 6zMq838SoY/tTmAuAHSTAayaI215VnHwhKkVcj4qk7YmOpt/a9X2G3DzhiHGwIzKahEG5oAVI
 PfPmnKu9Ni/KWx4dtGX41cY9fFHLzNP6JxqG+qSLhffd4oK9Ce8cAgOOUeQrpaWMGtT+ImYzb
 VE/PcLJEhMCpm/eFI8C9T2r2GaKX6AL10CBzkDa/wp47MRQu8cuoEyyhjzaW+3alh2l0uvWYq
 w98HJtlIwVjrBErE7pUf/3CnXPV/oGVCWNBGggbedFigNsRxxGhoIVjW/hVJ58D0rACA5oILM
 IFhfku1rk9wjJTv4ntgrYM8UEzKbvCZfTCMyxgbnC3HjT/hlSsA/vbfaw8FbEGvlrwufYeXiD
 9rGJAx0rYplE19sInZqxOlQWypPt8qJ5bNdvxY6L5OPbcU7KaXdyAbgJJnSFGJBvaKxEOFXhR
 40n1gfE4aodA6D6khhlJeKTZjJ9Ev5gukVmN34NrTP1jKP5L65a68SrwLKledBEv5eBfvhVPe
 Ca4A4YVNiOJqEysevOdRUM+INbGQl+q9lJiHG/eCx4cbO1Ok0tsEIcAzrtUPx4FujZnW6lCQ0
 wl8XHTSK4QQabSrWjzHSr9w758fYmqs2MhRH0LDvPzq+fxziw1tOm9bWfBKLJBw3X08RtOiCP
 MSvsdla6wRdU7OIOqLa78mQRUaD1IACNyURo+cevlFvYrAofrVaSoZUxiqpz6wcNywW0yzCNv
 bOokrIOTvnqT6aNNq8O+KuPo3e40yxY+ZXyuEJ+fkuJSm1LFRVzkytY1jWZwa6k/dSJwbvVPM
 eKfFa9Kj+Gk2mjB8TIFAypHso6Rt8UMUudXV8TR6F8/OvalUohHnQLIj7LRUn8P9Sxhb7Ez+1
 Ao2DzWZSlWP3btsoGpU0qWZl2ljERx8qAOgiZUCDFTTgw79iRLgbQfmJl40XqFPc9XynCOZvS
 87+rOjMhpptg5JnnaJ8LD1fggNYecPSwCLe0RD5PkkBIfBcmfUGxXRg7IBLAN3XzkYZVP/Px/
 mUieMurxKiRCryaCl6/pBWDbGMZDLgwhDn0JRUmIDyGwM8=
X-Spam-Score: 1.8 (+)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 Content preview: > Gerd decided to remove that as part of the TTY child frames
 changeset. > He said it was an optimization that is not worth keeping. >
 > Why are you asking? did you see any problems caused by that? I wondered
 whether we did need it on the Windows GUI. Apparently not. 
 Content analysis details:   (1.8 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
 [46.125.249.32 listed in zen.spamhaus.org]
 -1.0 RCVD_IN_MSPIKE_H5      RBL: Excellent reputation (+5)
 [212.227.17.20 listed in wl.mailspike.net]
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
 low trust [212.227.17.20 listed in list.dnswl.org]
 0.0 RCVD_IN_VALIDITY_SAFE_BLOCKED RBL: ADMINISTRATOR NOTICE: The
 query to Validity was blocked.  See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243
 for more information.
 [212.227.17.20 listed in sa-trusted.bondedsender.org]
 0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
 query to Validity was blocked.  See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243
 for more information.
 [212.227.17.20 listed in bl.score.senderscore.com]
 0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
 provider (rudalics[at]gmx.at)
 0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 -0.0 SPF_PASS               SPF: sender matches SPF record
 -0.0 RCVD_IN_MSPIKE_WL      Mailspike good senders
 -0.0 T_SCC_BODY_TEXT_LINE   No description available.
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.8 (/)

 > Gerd decided to remove that as part of the TTY child frames changeset.
 > He said it was an optimization that is not worth keeping.
 >
 > Why are you asking? did you see any problems caused by that?

I wondered whether we did need it on the Windows GUI.  Apparently not.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Jan 2025 08:00:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jan 27 03:00:13 2025
Received: from localhost ([127.0.0.1]:59174 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tcK2W-0003Gg-Jn
	for submit <at> debbugs.gnu.org; Mon, 27 Jan 2025 03:00:12 -0500
Received: from mout.gmx.net ([212.227.17.22]:39435)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tcK2U-00039o-0n
 for 75056 <at> debbugs.gnu.org; Mon, 27 Jan 2025 03:00:11 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1737964801; x=1738569601; i=rudalics@HIDDEN;
 bh=x57m+Jr/QswrarbiwSYf0FYt9FYXbPV6eni9xHb9Mmk=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=DD0aMdjOUQrXSJNhSLGA1H3SGMz+h2KI99MXko81lYbNhikLA+IupJrSV3SfLIdr
 WgjjKQM6TK20+iMeY6jQmBD1z2YFD8R5gLk8MvtpxoKQGjWZzaKrQp/mfy2KIdso1
 q2UtRwEh1rNkQikmBpzHJLyMkWBoYsysMv2q00iJ6aSgVDXJfD76ucPRGNi2g4GEh
 jhGweMdzb/ZXzCtq6s5PWWamlXAL8KkrzLDj5xPMdDNfPRBoOsNjsRqRM/fTs8Zpa
 n+YUqinaggbqUfpoD84d+FFkSloxybKE5HyjKUVqydWZsqb/X6qeCTzG/m+vBtUf6
 1bzXnOLvZaARd3tnQw==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([46.125.249.32]) by mail.gmx.net (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MkYbu-1tCZDC43yw-00lBUE; Mon, 27
 Jan 2025 09:00:01 +0100
Message-ID: <4350632b-b8a0-4ee5-b08c-1edcd8a5115b@HIDDEN>
Date: Mon, 27 Jan 2025 08:59:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
 <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:dRf1v+gMUbRI6eX6Qm72H9lc/etYTIG2iYNnjE1mgSV2mNGqkWC
 Oqk7WDHYWoVqjfLr68prhwc04JFzhvPFjmWJCurH0WrWqq7aYunZRsIphjBNiPBE4VYj563
 +e882bi43JCuGbZolOpBHjD0ucBG8KteTN4O2MBd2HuNVex9coAdQahA1PkU0QKOJHOCCPt
 tfkk/b0WTfFwTHVN16UNg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:k9uhV37Rrqw=;yZPHSuIcejQ//hzUo75Yqb7hxGe
 T+HHNF2dds/GRBrfQIy7bzzTC0H9otX1RtXcAD3YCinAE33KASPvcjB/eewmRJnqJNYvbq/8i
 kZmyxQneTb0MubkesCjBUTvwo76LnU0ioPL8kNAP2792ha8I8qWAcK6UUfnB+a/adK5s3a3SA
 aw3wUCiUV8wj+O0Psv0gUqN2TjBnxok5WWywQMl68sZw/opuzaRGMAXrXqqnlSCjJyOqiPDN1
 /XV6OpJdh+PEclCP76K6DUdjzKHqEUebqyvoVoVWHJQciiUtAHRVlGMAmAGpL5RHaNrbP++Ls
 uN/bff50BCHxgzVSzOvVwwsaXsmQHGFeY2e6P8W/Xx0L0dJbrcAyLD7s9cFZZyHaZZjC1nF/E
 QBp4ISb1OqIE5LVLS6yLjz6QMP6bNvL8zswH4iQg9OoylTSUPdEJRHsbvlSpc1LxAcEOLS/uh
 rRastRSUmLR6SQkvIjRA8WmWyZvTPPtYilahhJ8T7Ut+BHAlA5TcScvZ+ZY0sz7+gTkReNrH8
 3iFG3mv6U04M14wNc1EKTUMP149kLXpe0uSuMvNLojiWujEnyDzIUEUMOV5wlXexBlcwKUW2N
 mnlzxJ9vL0xKu7eGBsLImOcYEkqrFdftXmnbYJteY2EZQQGsNXLEE6TGVoQUvIM6XegGnyTES
 dMiLDKUGDLxpfNKb6WPZUWdF9q269EYX8IhzOqcAQTqSaep/FGrKGHiwgp0d4y0hAmwPgbaPz
 BsFZbWlDGkDfYUDn2sy4qsXHZvs+BM+JTOw5A8C/zVgDtn7gGQB8lDQi87RyEeFrq7rswbg/z
 UnzSsztFHIer5oWiDR8Zgh5QQcZQihCWkbNdD32MabF2Bi44bd7sg1IKk2oOj+qFzl+FKXAto
 GyhFuj5YJmarC2n8/ovWyCoyIDrmV8F4UuQYRQYBet1/rXFcA+YoTDY8Kpe9IlOgrqZ7pEKJ6
 64IFzPDfSXd9LVW2IqijfvXWtx7TOeUXyfe3HqfnbvbDi0g6ZKYNNrCcfu2QIwiUI7t6ybFt2
 evt49DUKwXL4o/R3sQzcrLZhADmgrJl3Z5agEK6xlj6UAUp8sa/PSOYSA4wLbOX0ZDg4B5KX/
 nQZJB48mkJ1OBMiNzY40qRSK7T8nVC0jNelX7w4vNOsTcJojXsPMbyI9su1Qacpy7LUuvD/k6
 jMh+a2m2xr/EcZQI2zHDefoEmq4ACWozilGlM7XhDHQ==
X-Spam-Score: 2.8 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 Content preview:  (4) As noted elsewhere, the documentation must be rewritten.
 > Can't talk for w32, but I've removed the "obscuring" fromt the ttys > because
 it plainly went against the rest with tty child frames. You could have left
 it in to handle invisible top frames but maybe that's really not needed any
 more. Whatever you decide here, the following issues must be resolved: 
 Content analysis details:   (2.8 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 0.0 RCVD_IN_VALIDITY_SAFE_BLOCKED RBL: ADMINISTRATOR NOTICE: The
 query to Validity was blocked.  See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243
 for more information.
 [212.227.17.22 listed in sa-trusted.bondedsender.org]
 3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
 [46.125.249.32 listed in zen.spamhaus.org]
 0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
 query to Validity was blocked.  See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243
 for more information.
 [212.227.17.22 listed in bl.score.senderscore.com]
 0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
 provider (rudalics[at]gmx.at)
 0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 -0.0 SPF_PASS               SPF: sender matches SPF record
 -0.0 RCVD_IN_MSPIKE_H3      RBL: Good reputation (+3)
 [212.227.17.22 listed in wl.mailspike.net]
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
 low trust [212.227.17.22 listed in list.dnswl.org]
 -0.0 RCVD_IN_MSPIKE_WL      Mailspike good senders
 -0.0 T_SCC_BODY_TEXT_LINE   No description available.
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 1.8 (+)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 
 Content preview:  (4) As noted elsewhere, the documentation must be rewritten.
    > Can't talk for w32, but I've removed the "obscuring" fromt the ttys > because
    it plainly went against the rest with tty child frames. You could have left
    it in to handle invisible top frames but maybe that's really not needed any
    more. Whatever you decide here, the following issues must be resolved: 
 
 Content analysis details:   (1.8 points, 10.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
  3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
                             [46.125.249.32 listed in zen.spamhaus.org]
  0.0 RCVD_IN_VALIDITY_SAFE_BLOCKED RBL: ADMINISTRATOR NOTICE: The
                             query to Validity was blocked.  See
                             https://knowledge.validity.com/hc/en-us/articles/20961730681243
                              for more information.
                          [212.227.17.22 listed in sa-trusted.bondedsender.org]
 -0.0 RCVD_IN_MSPIKE_H3      RBL: Good reputation (+3)
                             [212.227.17.22 listed in wl.mailspike.net]
  0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
                             query to Validity was blocked.  See
                             https://knowledge.validity.com/hc/en-us/articles/20961730681243
                              for more information.
                             [212.227.17.22 listed in bl.score.senderscore.com]
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
                             low trust
                             [212.227.17.22 listed in list.dnswl.org]
  0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
                             provider (rudalics[at]gmx.at)
  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 -0.0 SPF_PASS               SPF: sender matches SPF record
 -0.0 RCVD_IN_MSPIKE_WL      Mailspike good senders
 -0.0 T_SCC_BODY_TEXT_LINE   No description available.
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager

(4) As noted elsewhere, the documentation must be rewritten.

 > Can't talk for w32, but I've removed the "obscuring" fromt the ttys
 > because it plainly went against the rest with tty child frames.

You could have left it in to handle invisible top frames but maybe
that's really not needed any more.  Whatever you decide here, the
following issues must be resolved:

(1) Fframe_visible_p has this

   else if (is_tty_root_frame (f))
     return Qt;

where is_tty_root_frame is defined as

   return !FRAME_PARENT_FRAME (f) && is_tty_frame (f);

This is wrong because it will return t even if F has been explicitly
made invisible.

(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.  This will change the behavior of many functions that check the
visibility of frames, notably here in candidate_window_p in window.c

   else if (EQ (all_frames, Qvisible))
     {
       candidate_p = FRAME_VISIBLE_P (f)
	&& (FRAME_TERMINAL (XFRAME (w->frame))
	    == FRAME_TERMINAL (XFRAME (selected_frame)));

     }

where a window on the prior top frame will be no more considered as
eligible.

(3) I have not checked whether it's needed but I strongly suppose we now
need a frame_visible_invisible_hook for ttys too.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 19:06:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 14:06:02 2025
Received: from localhost ([127.0.0.1]:57889 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tc7xK-0006mG-2y
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 14:06:02 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:56328)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tc7xH-0006lh-Sr
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 14:06:00 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tc7xB-0004Xl-I6; Sun, 26 Jan 2025 14:05:53 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=Yrlgt62jvRybU03I6E6eUn2wQD4jm9pwvE5t6yXDl8A=; b=dPDgPs65Cked
 RMiMds1w88cyDNPWmm0xsPoTwVvStvEi0CgDnwzvd2me6j8SNmBmaD+5BsgTA1ryS46THP7YjJ10U
 3Gs4Ucga5EWiERvyb9RFGdM7yJuROLMyEDCRNvJ1ysd9g9qOU5ECFox2yW2wNGMilArpqH4qFfvBJ
 z2SOesj+3ForUX/G2f5r2Z5bqS1riHZTp7ogb3IX9eVoVZPjs6wkMwvZ0P9AoTbEFDOQEUkBwJ9ZR
 hY6Zg1hE3JYF4BdP47pcBOewDhdFYiMp1mB7fT6Ksg8wST5sU8SMK7d9/8paIDseLjju1mPyxf1qw
 NNNjO6fY1RPjQ1jVyYdGBg==;
Date: Sun, 26 Jan 2025 21:05:49 +0200
Message-Id: <86plk9qtte.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN> (message from
 martin rudalics on Sun, 26 Jan 2025 17:44:39 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Date: Sun, 26 Jan 2025 17:44:39 +0100
> Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
> From: martin rudalics <rudalics@HIDDEN>
> 
>  > I just described what factually happens:
>  >
>  >    emacs -Q -nw
>  >    C-x 5 b RET
>  >    M-: (frame-visible-p (next-frame)) RET
>  >     => t
> 
> That's what 'frame-visible-p' does.  I wondered what happened to
> FRAME_OBSCURED_P in w32_read_socket.  Has that become obsolete?

Gerd decided to remove that as part of the TTY child frames changeset.
He said it was an optimization that is not worth keeping.

Why are you asking? did you see any problems caused by that?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 17:19:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 12:19:33 2025
Received: from localhost ([127.0.0.1]:57744 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tc6IH-0001Re-EF
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 12:19:33 -0500
Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:42333)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tc6IE-0001RN-LD
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 12:19:31 -0500
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-4361b6f9faeso23208085e9.1
 for <75056 <at> debbugs.gnu.org>; Sun, 26 Jan 2025 09:19:30 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737911964; x=1738516764; darn=debbugs.gnu.org;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:from:to:cc:subject:date
 :message-id:reply-to;
 bh=7Z9Sp4hpYx6otF6jo0MX2hbq0zhjhBOFFxO32qsiBRA=;
 b=j1fsni54oJE61WyET4TXpLpLOPs4ZCorDDbhq25VcbkvN7EmbGxvzEyBNBEnGC3ubU
 +fTk9Bvf3t7ROxBVSP5pJ+RbQ6TMfhsvXhnCm0Dny65J2axDbyNTnCPGq+DNaMeRAxMa
 PTAWwMbtQ1e/bUMo04bCdVmDaO2gKWRHdqNWd5L1GEfQcPjyLjNphD1vFzSaBKihuSbo
 ZdsTdZjUacJ7QBdx4PDp7fs/X8H+M8bl8eqthOeC4Y1MOg8tW6XRqcOOGyfVr17bktK5
 QlX3y9jIzUcaq8uInc3JaUTwUJCxx8dtH7yi4/L5fDB0KNQdPmURWubZixHQZS0dXnIw
 7ePw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737911964; x=1738516764;
 h=to:references:message-id:content-transfer-encoding:cc:date
 :in-reply-to:from:subject:mime-version:x-gm-message-state:from:to:cc
 :subject:date:message-id:reply-to;
 bh=7Z9Sp4hpYx6otF6jo0MX2hbq0zhjhBOFFxO32qsiBRA=;
 b=sNJYvaIIDTOau3m9A4janMiFTBf2S8Y+EcKIQMCwOuXXNBHMGqbOX3EO/YlrLNavtF
 KodYYuQNMRkni2nG+SqZvEs2DXOk2O+TpIveXe9h9Dv26mcJsKgEK8lIANfJG256COtc
 bILJSOF2TvIHVa5NM8QrYWYLb72+AY80QmIB81/2pKTXt8VZUzII6zOJI1yl4mQnYk/m
 JWCBZHB8Irmimh+81Xj5R/HAJFM8vB8oUL/HG4eIb+nJSTn0pRn2/cozxSGyPG5a4/vl
 wC/km3Ez120bk5W9Hguv+/rgpY7obILZiMtIoNs8w+Nq6gkCYX82XQQJhZq/eNZqk5KD
 TjDg==
X-Forwarded-Encrypted: i=1;
 AJvYcCWppDZtMB3nagfaEBRreEnlS9nNXTXH86yG7d3xFRBb5l7hj6y0ipaGuJuiQSG1U1+I+TQqHg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Ywz8XkgtfsuANpGZepN9LiFyuyrQSJ8x4HdSkFNlTbfjTM1gp0o
 GTlW780U4CVvkbnHPW5iPAJakpWRKRX6TofOxk56MBzoqlpQc2XB
X-Gm-Gg: ASbGncvwysXjXNvDWnk1CIOzYIj+a/42GdmaWTWqTEvfSdX0JaPI+AWmh+mXHDgorVn
 /gwBP3X2O+BHdixkwDC4mnF3XEkT1ZdNELoNcbFt4jUnb5xFVJL9Skbma9nkGg6rdo2RUUzHGjE
 AaiT1xWyu+EuIhdUcArepzD6607AxXsnhVrNMEHpDAos2Q7OYedjuiM0WhuFJwbMbczEGukaFNN
 fd++vSbYeJAYdeL/l4553ssDSuQD51/cb0G9tozhIj0zctGNwsGGlNQuXxioZTOI+p65uLSSLYM
 lgQmAUKehtvILr9RgGycJ0Q96VMfer7QqgcwxnHRKLiQ+3G47fwdmPTu/oWM6+0bXNtEetcOE/K
 A2r/4m7jArAnrHWnV3nH70ybUSBgC5A==
X-Google-Smtp-Source: AGHT+IGm6a0bbRktUdtyJBfCZI6bORK4rlW5Qps7r6wXsJnJzENu+KWLwzzWD10cYliqvcwHlISQdg==
X-Received: by 2002:a05:600c:3ba7:b0:434:e69c:d338 with SMTP id
 5b1f17b1804b1-438b885127dmr118771525e9.5.1737911964305; 
 Sun, 26 Jan 2025 09:19:24 -0800 (PST)
Received: from smtpclient.apple
 (p200300e0b73e84005db9294b38aae576.dip0.t-ipconnect.de.
 [2003:e0:b73e:8400:5db9:294b:38aa:e576])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438bd501c2dsm99570125e9.13.2025.01.26.09.19.22
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Sun, 26 Jan 2025 09:19:23 -0800 (PST)
Content-Type: text/plain;
	charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.300.87.4.3\))
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
Date: Sun, 26 Jan 2025 18:19:12 +0100
Content-Transfer-Encoding: quoted-printable
Message-Id: <81779B72-5DB9-486B-9EAB-77DCA2C39596@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
 <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
To: Martin Rudalics <rudalics@HIDDEN>
X-Mailer: Apple Mail (2.3826.300.87.4.3)
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Can't talk for w32, but I've removed the "obscuring" fromt the ttys =
because it plainly went against the rest with tty child frames.

> On 26. Jan 2025, at 17:44, martin rudalics <rudalics@HIDDEN> wrote:
>=20
> > I just described what factually happens:
> >
> >    emacs -Q -nw
> >    C-x 5 b RET
> >    M-: (frame-visible-p (next-frame)) RET
> >     =3D> t
>=20
> That's what 'frame-visible-p' does.  I wondered what happened to
> FRAME_OBSCURED_P in w32_read_socket.  Has that become obsolete?
>=20
> martin
>=20





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 16:44:51 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 11:44:51 2025
Received: from localhost ([127.0.0.1]:57680 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tc5kh-00059r-0s
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 11:44:51 -0500
Received: from mout.gmx.net ([212.227.17.22]:51765)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tc5ke-00059X-3U
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 11:44:49 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1737909881; x=1738514681; i=rudalics@HIDDEN;
 bh=IIBTWgXrzK6odAfTUNG/D0ggeUq+T1olHyQHfUaERbE=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=mLmQOsmiGg9sLot1Lq+ybZQvtgsBIfbFXN/TaLWlWdBK3rxXyNKmKAx+YGZqjQOF
 hEGV6vs2oaZs2C/vfsAs+PDnqBfZ4KxwWkEkDQ4DVA7trHkqKWFBVvTU9mWYM0Y2X
 EAJg1PDYaH3VbIjmqEXY6v1s5LH8TLsEwbh00sXUAcKyyWriGfi9kyMbo8kbGx1HV
 yDS+BZo2wl48xwK3AJEWF1uho4FsE1OpHvlti+At+Bljbw9qNwm/NeR9nLfssSsnd
 vlCCvc2rlVR7uYMU0FiMCMnFQOjzlU3aVf5kXG5lzhW991fWpR+4/kN3c3g4kii0u
 bvzUyxOWQFVx8gRTCw==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([212.95.5.142]) by mail.gmx.net (mrgmx105
 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Ma24y-1twtqP1RbQ-00V9bw; Sun, 26
 Jan 2025 17:44:41 +0100
Message-ID: <b01828d6-67f0-46ec-bce9-9dcaa036b3db@HIDDEN>
Date: Sun, 26 Jan 2025 17:44:39 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: Eli Zaretskii <eliz@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> <86frl5sttc.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <86frl5sttc.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:OMtltoujukVIeuk43yMGTdTwmN3FMqsrtS7/RAp9PZgPOLOLYXt
 aPwqBr9SnZdtRsaT+Pccw2tGMw23EMyyHJHp9zq7bxIl1xUg1j0c4CmArxx/xVgKZLCak9n
 xAf3fnqcL7zbxDRvtcqM7MT7yWWeAP7sXgeQUZlA1euZMw4m9hCJjkR8mHdXMyEitu5XcKk
 lhRfdKUYr+QY91fYZ8s3A==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:eCFaGILha0c=;lPyvAal0bVlzKRsErf36QpJcmdR
 g5gYNuQLsVU7rWYnUPLtHAWcNbmidZd2ndy+H8Eg6qrwbGWrq9D4nP65Yixlm/bfTJ4zN+jgE
 pWHaTjTqpIJmWKEB22//NtMrMe/s22PnLZGGIEgyoNXCwDTtcmtP7S1Frm16BfEU4b/+DX5wS
 4XZoPL7UNG84hQJYuBRPr1z6HVH+T5D6BvAtsgdPtNsMv6de5C044Ti1EDGtCbdqqYTnacvfO
 FcdPgk4bYTjQ86hi555dltzmkl9FK42R6KYRGbF4uZtlBpa44VjncIVNDWueipsUyWrm+ZNQu
 mWMjG+tMaLsgqFDwgVZsSn4Q437wDWRrgNLqcDrXw8+IeTAdYN8PjJeKw7OVDcuGhMtAxdLne
 BLoAdhcn78SmvaTiZ8aIzUuj+2hZ2xJ1ImXNAJUkF8MJv9hIdPYJ9DSkiYL81eMsnKTgoV9gP
 5e+ciqVvJ0HjZVSaK3/Lv/AX9SS1g5hbW+c/mPCCQ/X07k74AJ/PeHPYdSjr/ewsZHcrgyco7
 HE0eBlFPe7DjlyK3Hwa4+V+f48Rh2w6ONtPr28rWciUidC9zJOn7pquZLGU2lmNBPegq52s5d
 cAbJLrkNRGK6VZ7Eh2priLxpGY1ATEfQjPswX9F+NIDrJ5k0y8NbWLB95loLwWFL18G5fHgOZ
 2IUtA5Qxk2dBSS73AmiCT6IxpD+JFnt+Qyl8eeX29NG0Q/ZUrfDOsnNRQwALJmFV914VjPsI4
 bY4oz9duQzOv3Ec8xXPaMBKCeIq/LBT272Q9Iu/5eO+Hg8cegu8wH23UW92caHmuu1jB6aMY9
 DGvZV+fqYLve7S/pVOStqALmH7vjwiNRVpzbu90C3TK1SQQboTKn5KDT6fA5EtalvYuWorala
 QWADhx45l1X4JkUqRJXZ1WlF2gmM7S9A01PumpHy6wv8rqP87rNJ1JnBxIqrYt/Yfh5DSwFwA
 VQbdZJq2osKhlrW+nU7bDBLwz4T4T/73it4l9aI9d3egs9njLoZ0o/V0p1rjh40qb5lpqn7Ip
 HlgqhIIYt27DOp7K0LOmYtIm5zohXD7FZfD9Fvv0K4lJvcmpxKWE3qEHi9vCeR72lXOYow5NT
 OGgP0IHdhIt2JFr/qNIoFwGp+O5qMhzusO8V3zPHfKVfyUsRw9PAGQc4MsDiyO+VemolM/zE9
 khtPYH1eYScXzVtCQOvIQWRIleCf81vBT76diiLBXTA==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

 > I just described what factually happens:
 >
 >    emacs -Q -nw
 >    C-x 5 b RET
 >    M-: (frame-visible-p (next-frame)) RET
 >     => t

That's what 'frame-visible-p' does.  I wondered what happened to
FRAME_OBSCURED_P in w32_read_socket.  Has that become obsolete?

martin





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 11:23:11 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 06:23:11 2025
Received: from localhost ([127.0.0.1]:54913 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tc0jP-0001gW-9d
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 06:23:11 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:52592)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tc0jK-0001fn-QD
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 06:23:09 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tc0jE-0007Mg-Ao; Sun, 26 Jan 2025 06:23:00 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=paNxAfn6DTq4aIgLdo8eh5G+fwoPmAT+KF0CjcX0OVM=; b=cih+4xqZIB0h
 XK2PTxYQxJo3MhjAPPgMIxDvMceSDI8TyHKMD7cUBZAUxrCCiM75mgcHTmHTs7iY6FRusWkdcg5xr
 i5YVCm/vKS8XziAGsmmwNs632eqWwBtwoD2TQDuN0/1zOH8dRxebQVuu4Pz41OwIKpPDgRSHyWNeB
 PM8zhgveGPCQvLfP6lxIGh0D6uVa8Za1UbMdqLFgvb99pjWgCpInNduNxMXjQdLe1bll+XBmeoBd/
 hH8of+W4FagXTne0MZi+gTX1OJAyXJT1F6tgIXMQ1TIMeLL8kzfvYBQagY6t9Vrvr6HkmS+eWhWnR
 qNBfo0DhnoHrpTOt5ZtBew==;
Date: Sun, 26 Jan 2025 13:22:55 +0200
Message-Id: <86frl5sttc.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN> (message from
 martin rudalics on Sun, 26 Jan 2025 12:04:56 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Date: Sun, 26 Jan 2025 12:04:56 +0100
> Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
> From: martin rudalics <rudalics@HIDDEN>
> 
>  >> I still wonder what happened to the "when one frame completely obscures
>  >> another" visibility state issue.  Has that vanished?
>  >
>  > No, we still ignore that on TTYs, for non-child frames.  See my other
>  > message.
> 
> Are you sure?  frame.h now has
> 
>    /* Nonzero if the frame is currently displayed; we check
>       it to see if we should bother updating the frame's contents. */
>    unsigned visible : 1;
> 
> where it formerly had
> 
>    /* Nonzero if the frame is currently displayed; we check
>       it to see if we should bother updating the frame's contents.
> 
>       On ttys and on Windows NT/9X, to avoid wasting effort updating
>       visible frames that are actually completely obscured by other
>       windows on the display, we bend the meaning of visible slightly:
>       if equal to 2, then the frame is obscured - we still consider
>       it to be "visible" as seen from lisp, but we don't bother
>       updating it.  */
>    unsigned visible : 2;

I just described what factually happens:

  emacs -Q -nw
  C-x 5 b RET
  M-: (frame-visible-p (next-frame)) RET
   => t




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 11:05:09 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 06:05:09 2025
Received: from localhost ([127.0.0.1]:54882 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tc0Rx-0000oU-15
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 06:05:09 -0500
Received: from mout.gmx.net ([212.227.15.15]:49187)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tc0Rr-0000jU-Jx
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 06:05:06 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1737889497; x=1738494297; i=rudalics@HIDDEN;
 bh=x2O48h/MY+ZZXhchrrJ7bUHKnE6a3hqIcabl1JxiCco=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=Np7aQf2aICg0oDaLtZuOgQh15h+9ldJGg47IoNmzlYhhm4AogXMVxLXPFL1kGcqU
 Emlcji2t60UKUswfpqNXFcOTRyfYiJbwoNV88cHwjZ7rB6fPza5HkGe9yMHs94sFI
 PFBpDE4FsemZny8DZCgiIJcSGDxErstUAYVjIfBUoSGAS3JLv/3Stc2cMB2iuUYNP
 aviWyA2PKxwP2wur4h6JUbPvNkm6RWuKkDTuz9LZ42UGlM3jy6Uho+4azGdENaHyg
 FcfwpX2OAgZwvQEIqWfxImOhKShHtz5kDUVQBE/1faYRIMKlRTuciQwZP0UGrmh6g
 snuE8WXb0V/RdbfzXg==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([46.125.249.106]) by mail.gmx.net (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MZTmO-1twQz10Vra-00NdZw; Sun, 26
 Jan 2025 12:04:57 +0100
Message-ID: <9ea867ef-df0a-4ebb-b296-42f6b77fbd4e@HIDDEN>
Date: Sun, 26 Jan 2025 12:04:56 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: Eli Zaretskii <eliz@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <86sep6rlec.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:RgBTwOQPgBOUIz2jyBhzT2P5Lc3MAg0/IqOZP7OxQPoHDzkA8eY
 aPUplIYO8rEG7c5Ggp17aPeMy92quOCGkeBOHlP75pm81Fau0XPpceuK/em3rqETkex4MfL
 JxV4peZrnyOhLvcAPdxPUOjpuWDyIXsYUndXJTkSkZMA/c1IeoB8UP/VMzYowqGz69kUzwK
 jvx+bid6vXF+zRAAoRXnA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:uGiEolRgwbw=;UO4eovTNqtEFAwYafkn1MOjWclx
 YKYgp5QX3kk+d8x7Gc5QxpOcQmJWgLxP9cG19uQHceVQbf/cJfiOdXYvhogYTlkyyrWJ9oD5T
 bhgAmduzfksqUn67LIoiNFjnbBKMR0FDHIOctm2vILGs6Rc6w4cBun14/MuWMz7d0qo3lSKOc
 X28V+GWBtjUJz39ZHX2WiqTIJS1siGSTx/mVZeG1Mw6dcmAaqs3AafAttBZ5ww13mv7M1ejGh
 ffE6Zmq68DWnSleK4C8HYwO3I9rdRGUK4HglEiJavezFtJR6PTwVEwHT71lI5T5TmxZ+zIAC9
 OgqENj6ESsJTPDzUyfx62scD1RRnQCOkio9CoTJMQrS14IUECB4ccPu/kZ6QWLt5orLtn6unj
 yjdn7lIyVwcRrPt802ZkNQ2NRVyfISZMTDP0yeBeFNzau+DGW3csSHaQB1CDq416z0fMZbhH8
 P8SDUGnYwOTHc+9imEajMjZ6Grnj0KVc9MNeumRv7F0ohZGP99nY/IngKQdL6Cu0UD+jntuKS
 TZx8u3tQwAJeb63ucnp4zM+0N02cW/BO+PCNIIxv1ufhAzGCBx28X3rA6K66xknSbFrZJckOi
 gMj/BZFxUblHiOpnQzJ1Z3i7/XCyJJP7blC4wevKq16S/O9zvt8a8YQ3WIZvlsgEMQ3B8YyZr
 l+lvYsJbxJxayIuvHl5Rx/6b8+r2V+pSEWPJWxHBpo0tljGhqlwLZHZLWUTV3GorMakquKzF5
 CkrjGOY6V/lBZppURscLGUcF+nB5ey4TT93FDz152M39+fYbekMpJdPso2mAC6DtAt6nyI6HO
 6lQQ7VQ1w6SXbYVSy4bHMOQcWdgdx+WdzjIsROdOAwKCfDW8BYRnpMmbc7fgxoYIiS6fqZ6cT
 KIObrWSaHfG/HDHtrwvqPhgS4Q9tTV24BElC3VopyUZDVjAiFpHL6CAYm1ps0xFhtDWjkmQXn
 O9KpEd5a80fqi06VPzpr2B13kWgM2qIY/Aj1U+9i5Ko4LDTwYAMZbcmFozMVB+wD8AL9MzGED
 14pHFJ1Jlnwv6UEqS41v95mEHp+79lEqgmU9m6dTKbVrsnDrNDuSfGfvqkGkZsFACfGoBOR34
 qApajWU89r/JIv21tA0Gs/EyTD7TZcWkbZROgif/o5/KepVrhyEji+mpNANDWD9Y++G0NhywB
 ZWXW7r7XeBJ4CJRhcrODQ4qNfbkh3H1FCV9wQDchOVw==
X-Spam-Score: 2.8 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 Content preview: >> I still wonder what happened to the "when one frame
 completely
 obscures >> another" visibility state issue. Has that vanished? > > No, we
 still ignore that on TTYs, for non-child frames. See my ot [...] 
 Content analysis details:   (2.8 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
 [46.125.249.106 listed in zen.spamhaus.org]
 -0.0 SPF_PASS               SPF: sender matches SPF record
 0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
 provider (rudalics[at]gmx.at)
 0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
 The query to Validity was blocked.  See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243
 for more information.
 [212.227.15.15 listed in sa-trusted.bondedsender.org]
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
 low trust [212.227.15.15 listed in list.dnswl.org]
 -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
 [212.227.15.15 listed in wl.mailspike.net]
 0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
 query to Validity was blocked.  See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243
 for more information.
 [212.227.15.15 listed in bl.score.senderscore.com]
 -0.0 T_SCC_BODY_TEXT_LINE   No description available.
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 1.8 (+)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 
 Content preview:  >> I still wonder what happened to the "when one frame completely
    obscures >> another" visibility state issue. Has that vanished? > > No, we
    still ignore that on TTYs, for non-child frames. See my ot [...] 
 
 Content analysis details:   (1.8 points, 10.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
  0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
                             The query to Validity was blocked.  See
                             https://knowledge.validity.com/hc/en-us/articles/20961730681243
                              for more information.
                          [212.227.15.15 listed in sa-trusted.bondedsender.org]
 -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
                             [212.227.15.15 listed in wl.mailspike.net]
  0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
                             query to Validity was blocked.  See
                             https://knowledge.validity.com/hc/en-us/articles/20961730681243
                              for more information.
                             [212.227.15.15 listed in bl.score.senderscore.com]
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
                             low trust
                             [212.227.15.15 listed in list.dnswl.org]
  3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
                             [46.125.249.106 listed in zen.spamhaus.org]
 -0.0 SPF_PASS               SPF: sender matches SPF record
  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
  0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
                             provider (rudalics[at]gmx.at)
 -0.0 T_SCC_BODY_TEXT_LINE   No description available.
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager

 >> I still wonder what happened to the "when one frame completely obscures
 >> another" visibility state issue.  Has that vanished?
 >
 > No, we still ignore that on TTYs, for non-child frames.  See my other
 > message.

Are you sure?  frame.h now has

   /* Nonzero if the frame is currently displayed; we check
      it to see if we should bother updating the frame's contents. */
   unsigned visible : 1;

where it formerly had

   /* Nonzero if the frame is currently displayed; we check
      it to see if we should bother updating the frame's contents.

      On ttys and on Windows NT/9X, to avoid wasting effort updating
      visible frames that are actually completely obscured by other
      windows on the display, we bend the meaning of visible slightly:
      if equal to 2, then the frame is obscured - we still consider
      it to be "visible" as seen from lisp, but we don't bother
      updating it.  */
   unsigned visible : 2;

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 10:37:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 05:37:23 2025
Received: from localhost ([127.0.0.1]:54809 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tc015-0007nV-HN
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 05:37:23 -0500
Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]:56528)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tc013-0007nH-B3
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 05:37:22 -0500
Received: by mail-wm1-x330.google.com with SMTP id
 5b1f17b1804b1-4361b0ec57aso36937055e9.0
 for <75056 <at> debbugs.gnu.org>; Sun, 26 Jan 2025 02:37:21 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737887835; x=1738492635; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=psLEMcGss5ni0aIscxP2EZuMz+i56OdWfCt52zs2ADk=;
 b=Aqhf04WnMkd9NR8JPHJ3b5b0SEjxZ8o4HAfSmhUpcp/IhSiA9vd7c4y4fCD6DxGw9k
 i8vXxGpqJqFezKPqu+AfBDz1dKpOz8/i3nmDvZUlb9sPLimOzqXQ6MSWN64VToO4wJMG
 ZhqSgfix2VbjBOzDskV15X59xhxOEfxN5KtpRwq7TIbuueEup4TZCfdFmaq0IT+kci2x
 8rAa9tyX38GEGJcPUFB+7/5zFFrgmG6imeHy49+TSSXLakyI/3msdXkIZpFuMkYCGiuM
 upxMb/6HTpz1haPd+hGKXUps0aaZYTAjWHO9liBoEomaduyKtFqaueWBqiolYZT1HW46
 C9LQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737887835; x=1738492635;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=psLEMcGss5ni0aIscxP2EZuMz+i56OdWfCt52zs2ADk=;
 b=mX2Bsk9SqBxslyZp+Kgh/1qHhIBOfG6Gv9Sr8PXdQ7Vejd/itcvZbzKjI1a28RWO+m
 UfCvSrorpEogcD7kAFm0XHr4TFfJs2RHtRn3GyqVgQXIrfk3Q8y/rr+5y8T6y9gZOJXm
 iur5+PaIMNd+mbA4O44/b1gSe2D20qLYe5Jhe9TMZJIA9py2Y5V8Js+CYQ0Hl7dFEyo1
 OJ4V8W0MMRm/g0WSMvqMbyPMgwyiuTEqrxUCklAAVxjlcP9Yfi+IyGCexPMWbgdoxOho
 GhC848c1DIiIoO0SWFw29hzRMZ2PGVnQkraJrtSJgyv7bvIxLISrn7T0F8Ow/sdXyepX
 rTog==
X-Forwarded-Encrypted: i=1;
 AJvYcCU4NYoOczPJtVEO997whxFET4EFmo224kP/VJGMVQYVa1kEx7Pr4PL98BIHuOM18N7dJZq4xw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yw7uz6+XCo3Eh+EJNbzoKp/OOST0NtFHqmiRrBMiMSz0sWWBv/1
 iMYFNtWIxc/8eRZPYpgfX529YkyUpTX14s1zUqslbwcyOezL1cRCMNNSrQ==
X-Gm-Gg: ASbGnctWLCimJMWJvX2l+xR/Qmx0J8ynVYaYLXDfULa32G8SJ9Zwf75BRAPOdSA+8uK
 +6ksYpEITKbvTbHdu5z6La9gdAwpQaFTsMMhzxwA/C4W2vq5BBfO/JpqNfqANI/Ovr4S4rxJyJT
 x0baQXd9MtsU9blAxkw6/c62tBhrjQqqILsnY9t6dd7g6yL5JTdKwczql+RLi/bqggv2acHHBcg
 b3/SE/Qdd8eIFgZ4qR/m4Z5ip/q9jWCJT0RXkObpT2nWu4m4LsuVxwmFWebjRHnHu25gxK8QVDF
 fjj1n52jMPMNhyeMcNaG1+lvqGV2X6/chIqUItYYZBD4Nv691napWgjUPvXHiEycluKhNTM4KHx
 wGQrf3Xw68KAfqQ==
X-Google-Smtp-Source: AGHT+IEz8eGz8stigBTW7//ELPLBCxwWY3/MmcCBMJ2zIEKRdof4OWIPfroOmDWcvAY9MfncIyXrgw==
X-Received: by 2002:a05:600c:468e:b0:436:5165:f1ec with SMTP id
 5b1f17b1804b1-4389143145bmr356649415e9.30.1737887834464; 
 Sun, 26 Jan 2025 02:37:14 -0800 (PST)
Received: from pro2 (p200300e0b73e84005db9294b38aae576.dip0.t-ipconnect.de.
 [2003:e0:b73e:8400:5db9:294b:38aa:e576])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438b1cc8571sm109760405e9.1.2025.01.26.02.37.13
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 26 Jan 2025 02:37:14 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <86jzahsx0f.fsf@HIDDEN> (Eli Zaretskii's message of "Sun, 26 Jan
 2025 12:13:52 +0200")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN>
 <CAOGVwe=coO-8NxNV141G2hMgv4k9v--XoDFrw=5EA+sY6e-X2w@HIDDEN>
 <m2msfe18hp.fsf@HIDDEN> <867c6it4fa.fsf@HIDDEN>
 <m2sep6qaix.fsf@HIDDEN> <861pwqt2nt.fsf@HIDDEN>
 <86wmeirlty.fsf@HIDDEN> <m2v7u1q5f2.fsf@HIDDEN>
 <86jzahsx0f.fsf@HIDDEN>
Date: Sun, 26 Jan 2025 11:37:13 +0100
Message-ID: <m2r04pq2sm.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> Can you please submit a bug for this? I'm forgetting things.
>
> Done (two bug reports about two problems, not sure they are the same
> problem).

Thanks!

>> Not sure, but I think this could be explained by frame-visible-p of
>> other non-top root frames returning t.
>
> I meant only the incorrect cursor position.  That's the second bug I
> submitted.

Okay, thanks!




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 10:14:09 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 05:14:09 2025
Received: from localhost ([127.0.0.1]:54758 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbzeb-0006ae-71
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 05:14:09 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:39166)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tbzeZ-0006aG-5m
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 05:14:07 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tbzeT-0000jo-9z; Sun, 26 Jan 2025 05:14:01 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=8novJSKhLZKHy2yEn/GhpD6EkQdWP7obOCtx3ZcAF4s=; b=adDulza+NdafClCoYc18
 AnEZdwomzHfyEjhUfiWLn2NtfOWAkKWneCLpEJb3H0EaGJGGZStT1T+nbKveXmcD4WxB9+Y+8nAlK
 x4SK5CUPY2clg7E3qoEsofwfip/49/Xa9gFnAeGYtZYV9esuokP5KTlYfbujQT7W7NC85nM4AQVYj
 yJ6Ll8/H10dGRx0CTPRH7zZRq49dsHZzXqG8Z7REvVbuJVVBDzk+tFFMBitSoWjnoznDtAt0VwSSD
 q/3Kt1Ww/HiuvpSVz2uml4HT/hnrwnPlZ/09ftDipb0qMEDhMC62Q/o9suwbJKZvPdpJoCb7F6vC2
 IXrqLGboaeVmNw==;
Date: Sun, 26 Jan 2025 12:13:52 +0200
Message-Id: <86jzahsx0f.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Gerd =?iso-8859-1?Q?M=F6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <m2v7u1q5f2.fsf@HIDDEN> (message from Gerd
 =?iso-8859-1?Q?M=F6llmann?= on Sun, 26 Jan 2025 10:40:33 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN>
 <CAOGVwe=coO-8NxNV141G2hMgv4k9v--XoDFrw=5EA+sY6e-X2w@HIDDEN>
 <m2msfe18hp.fsf@HIDDEN> <867c6it4fa.fsf@HIDDEN>
 <m2sep6qaix.fsf@HIDDEN> <861pwqt2nt.fsf@HIDDEN>
 <86wmeirlty.fsf@HIDDEN> <m2v7u1q5f2.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Cc: lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
> Date: Sun, 26 Jan 2025 10:40:33 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > Btw, when I do that on the current master branch, I see some
> > unexplained cursor movements.  Recipe:
> >
> >   $ emacs -Q -nw
> >   M-x server-start RET
> >
> > Now on another TTY display:
> >
> >   $ ./lib/src/emacsclient -t ./src/dispnew.c
> >
> > Now observe how the cursor on the first display (where we started
> > "emacs -Q -nw") is positioned at the left edge of the mode line,
> > instead of keeping its previous position.
> >
> > Now switch back to the fist TTY display and press some key.  The
> > cursor is moved to its correct position, but now the cursor on the
> > second TTY display is a the beginning of the mini-window!
> >
> > Now switch to the second TTY display and press down-arrow: the cursor
> > on that display is now correct, but the cursor on the first display is
> > now at the beginning of the mini-window.
> 
> Can you please submit a bug for this? I'm forgetting things.

Done (two bug reports about two problems, not sure they are the same
problem).

> > Here's another problem with cursor movement, which doesn't involve
> > multy-tty at all:
> >
> >   $ emacs -Q -nw
> >   C-x 5 b RET
> >   M-: (frame-visible-p (next-frame))
> >
> > After typing the last line above into the minibuffer, don't press RET.
> > Instead, move the cursor left one character with C-b and type "C-x
> > C-e".  This should evaluate the (next-frame) part and show the result
> > in the echo-area.  But note that, while showing the result of the
> > evaluation, the cursor is not at the end of the value returned by
> > next-frame, but several places to the right, after some empty space.
> > This doesn't happen in Emacs 30.
> 
> Not sure, but I think this could be explained by frame-visible-p of
> other non-top root frames returning t.

I meant only the incorrect cursor position.  That's the second bug I
submitted.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 10:06:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 05:06:35 2025
Received: from localhost ([127.0.0.1]:54720 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbzXH-0006E9-IS
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 05:06:35 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:60132)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tbzXF-0006Dr-1B
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 05:06:33 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tbzX9-0000F1-7j; Sun, 26 Jan 2025 05:06:27 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=XvsNp0crZYvhvNgnHBHMIQObslCKSmgWFevA8hwnfgA=; b=o4yMbxF7gyOu
 S/OD++OhhSh7Lz9W/zMdVQ4lqPn31NbGAqqaHb0fSw1SMc3lA/tSQgml3Q4W4Cr9BUiCyOc/QuuxG
 zdd8uz50TBa+pF7sDksMYcJBGisKY2D12Hxv9K6VLkr7kY9QCol4JBZDofu9WRnBE4Wyj9/7t1cSd
 Xn4awAdjZQOVHeFWo5tiHGPNankZvwY0oD391Fd/tiluSkG/lCVwLtKonH4m4DR4afwP5g9fN3kgi
 Zz8aVrdcjDzgpyKq0FxnONB1wyt4bvMsrMzQkMYPhIACa+Xb3yreOUagvBvAgTygSLPV1M7miOfbo
 2f7VldGuUhCcqQVOTn2ajg==;
Date: Sun, 26 Jan 2025 12:06:20 +0200
Message-Id: <86o6ztsxcz.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <8b45999e-744c-4ee7-8734-755e884a58e8@HIDDEN> (message from
 martin rudalics on Sun, 26 Jan 2025 10:38:44 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
 <8b45999e-744c-4ee7-8734-755e884a58e8@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Date: Sun, 26 Jan 2025 10:38:44 +0100
> Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
> From: martin rudalics <rudalics@HIDDEN>
> 
>  >> What is the "top root frame"?  Have we defined it somewhere?
>  >
>  > See tty-top-frame.
> 
> So it has nothing to do with "root" frames.  BTW this apparently changed
> now.  If in the currently visible frame I do
> 
> (tty-top-frame) -> F1
> (make-frame) -> F2
> (tty-top-frame) -> F1
> (previous-frame) -> F2
> (raise-frame (previous-frame)) -> F2
> (tty-top-frame) -> F1
> 
> What I see is F2.

Sounds like a bug.  Works as expected in Emacs 30.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 09:40:43 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 04:40:43 2025
Received: from localhost ([127.0.0.1]:54664 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbz8F-0004tp-4I
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:40:43 -0500
Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]:45474)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbz8D-0004tW-4G
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:40:41 -0500
Received: by mail-wm1-x331.google.com with SMTP id
 5b1f17b1804b1-4361c705434so24144445e9.3
 for <75056 <at> debbugs.gnu.org>; Sun, 26 Jan 2025 01:40:41 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737884434; x=1738489234; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=vp6nlEYe+ra01mQSrcTrz6J+y7k8B3NEHw5IkyCK1Ak=;
 b=fHDV1zoAuvrKZbtrqrvNWSzbjKLGM4VKCtReTEizFMrCzeMl3qb9OWLSuMIycaxOd1
 +q6FWild8AfSeksxd+/q0NF7SCV5YgI1XPjIRuxxAhsURz2lvZjH2kaofbpYIHW8eqbT
 Z3/cn1Fkmt4ItAg8/KkojwLGoBl4l+HnKM91l74hI7IPDAIa+GYRenzxEFUvT7MThM8+
 /HPsvkYLle6Dm3YvFrKNODRiGdrB5LzYuRVICHVV2YGJvmX6r1rQ9tdoU3ZAhip8QEgo
 tvRFbgOkQaRG+PTvPzBK8VXxcD52F2u5gTuk9HwfM1Z8ZjncllerJoticmyTPCuwKC8S
 r3IA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737884434; x=1738489234;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=vp6nlEYe+ra01mQSrcTrz6J+y7k8B3NEHw5IkyCK1Ak=;
 b=elb1TAqXfwdZ5kEezD+FiFkEmY9e53nY5cXgTCx5t5UrESE8QDsoUN7L86BscCv+Ig
 g1ytmUIuCjEoUEDHv60dLni6FjUhdXoNJptNuPN383bIK8oSalwSIjT6XrAv/dHTYvxE
 h/m2dSMsYO3xLZTwYxAXRQDfFpN+7eHZmNB+JtB8s+nP4NCjJfGOO5UCZbeqk2N4Lowz
 t4sUR2v6ciy0PUUV+95jgDM48Tj3NSQuo5urLFwMZhCuYn4lSpSWkSjAN3cEsGCvBAPx
 DMABpGzhjYnjcJURm7ANj7W6Jt4cI/VOx9QAnL8YSK5bNfG2shWrHZhlDRcQIH9p5ymZ
 d8sw==
X-Forwarded-Encrypted: i=1;
 AJvYcCX4hotoD2LPbc73Xz8A/opdij5nRJ1s3sIvCFH+kUy2gQroMR8tcIwZ3JxJD0AXo3GL5xIDDQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyqiT+/3HV51p6lB9XIUqhUi5HIZHNY+h6IurTr754JyO/pYAyR
 Fa44YnTe17KHvTc8ujUwi2677si5OreAUeAu6SIwBiEcEEk2D0jxz+fvxw==
X-Gm-Gg: ASbGncuaWpYCZADx9ENtNhy6R7oOeJfvt8nL3ZtzIb8iIg2pb7f4H8LZfcaksqN0Zw7
 3BXLgH9ryG+0ETXU5OaJWVhbad+a96LljV+y7hyMLPwYpWcgfgt3G2YY2S2dwfpFEWtWcK/koBP
 R71rgnsdgBHYs9SFwQrV8KenMeCqo+6iKITL1LF6D+iFHq1Oj9tbX/Wg/ETGqto7AGuwJK1KJKV
 qnCX99dDc2u2HQPh9m6v7jVFsChpSOHGSaUqcTey3AkptqWymKBGNwoUGyA9jPKC7zCSfhcJX3M
 PyZjcFe1GZ30HNY9oTkwx7qaB9RmCbtkC9K/OeLZBrfC+NS3UHPFajdCpag7u70bTk5EQme3nSE
 b8DcIYveWIaz+cg==
X-Google-Smtp-Source: AGHT+IE9/MYQD5/GAY1MmDU2FGL/GO0U7+l9kBXNNBnS76t+/aY8tjkP1vWM5awiJB4OKmMj1/3h/Q==
X-Received: by 2002:a5d:6d07:0:b0:38c:3fab:3df5 with SMTP id
 ffacd0b85a97d-38c3fab4161mr669269f8f.46.1737884434444; 
 Sun, 26 Jan 2025 01:40:34 -0800 (PST)
Received: from pro2 (p200300e0b73e84005db9294b38aae576.dip0.t-ipconnect.de.
 [2003:e0:b73e:8400:5db9:294b:38aa:e576])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38c2a1c402esm7781884f8f.97.2025.01.26.01.40.33
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 26 Jan 2025 01:40:34 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <86wmeirlty.fsf@HIDDEN> (Eli Zaretskii's message of "Sun, 26 Jan
 2025 11:00:41 +0200")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN>
 <CAOGVwe=coO-8NxNV141G2hMgv4k9v--XoDFrw=5EA+sY6e-X2w@HIDDEN>
 <m2msfe18hp.fsf@HIDDEN> <867c6it4fa.fsf@HIDDEN>
 <m2sep6qaix.fsf@HIDDEN> <861pwqt2nt.fsf@HIDDEN>
 <86wmeirlty.fsf@HIDDEN>
Date: Sun, 26 Jan 2025 10:40:33 +0100
Message-ID: <m2v7u1q5f2.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

> Btw, when I do that on the current master branch, I see some
> unexplained cursor movements.  Recipe:
>
>   $ emacs -Q -nw
>   M-x server-start RET
>
> Now on another TTY display:
>
>   $ ./lib/src/emacsclient -t ./src/dispnew.c
>
> Now observe how the cursor on the first display (where we started
> "emacs -Q -nw") is positioned at the left edge of the mode line,
> instead of keeping its previous position.
>
> Now switch back to the fist TTY display and press some key.  The
> cursor is moved to its correct position, but now the cursor on the
> second TTY display is a the beginning of the mini-window!
>
> Now switch to the second TTY display and press down-arrow: the cursor
> on that display is now correct, but the cursor on the first display is
> now at the beginning of the mini-window.

Can you please submit a bug for this? I'm forgetting things.

> Here's another problem with cursor movement, which doesn't involve
> multy-tty at all:
>
>   $ emacs -Q -nw
>   C-x 5 b RET
>   M-: (frame-visible-p (next-frame))
>
> After typing the last line above into the minibuffer, don't press RET.
> Instead, move the cursor left one character with C-b and type "C-x
> C-e".  This should evaluate the (next-frame) part and show the result
> in the echo-area.  But note that, while showing the result of the
> evaluation, the cursor is not at the end of the value returned by
> next-frame, but several places to the right, after some empty space.
> This doesn't happen in Emacs 30.

Not sure, but I think this could be explained by frame-visible-p of
other non-top root frames returning t.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 09:39:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 04:39:00 2025
Received: from localhost ([127.0.0.1]:54653 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbz6a-0004jo-Hr
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:39:00 -0500
Received: from mout.gmx.net ([212.227.15.15]:35213)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tbz6X-0004jU-9F
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:38:58 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1737884326; x=1738489126; i=rudalics@HIDDEN;
 bh=fl26W5MQqE5HjJ/sHrBU2sgFMHHBOTWgf7lzesEjY84=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=BG8dP9hVgyMytdHzwI8CioQjx8rVLbHqPoEmUgkvNclGNQLothKzsrBDPBf0bcMn
 lVKRA1g5JeXed0A33RO5CQI6I1XSUhWZb5VUFnlZKIJME9hzwj+sgKrBu5dA8lRSy
 eM2ouz0ZeJ12Svbt/HfGRZncMCwBKMyopk8EHzsN0YYvAApVH/b0tcDxeHpdIZa6i
 A4JpttQcSyheeBs6VC3dzQEEz7e1WLcKOu0hSiVPaesPCqPnC2C2MlENeKLWjElCW
 R1CTUcFYpsFFVBpiUpfwAUFhcM252QgftFuUDKKJW7wcN7+9OMNAxrL8BVz+vGQjm
 djlM0SMAT/ru+eneyA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.97.103]) by mail.gmx.net (mrgmx005
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MfYPi-1t0kXu1dvs-00kziQ; Sun, 26
 Jan 2025 10:38:46 +0100
Message-ID: <8b45999e-744c-4ee7-8734-755e884a58e8@HIDDEN>
Date: Sun, 26 Jan 2025 10:38:44 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: Eli Zaretskii <eliz@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> <86sep6rlec.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <86sep6rlec.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:ieAql8hC6PxYO9KwlVm9dOVzQgu3MqblUUmUUolMWFptKZSGG1r
 O6HwKAd//yJncRxoQYZ1QplZvNxNDRayrC/yCBqelUWxXsHt4bdnR2rjARAzYFZX11qVUNh
 qpQYRdhUUepJAV2t3Y8poNw/J4Xo7gBR2LsI8d4CAhNOk1x1LnPseJAT4fmoR2KnD34yteq
 bo5sKx2qJBD1RSHp+ITuA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:UhyHzRzkwKA=;5XMuSPdkgohZU5US+rqmbEfT+Da
 eQ+cDztHD3aKc/TjpzT0ktizSLiHSpaBtVu3g85XBRDinc6uP2HXNDsn6tJYbVNwetKY2rHHW
 VmthGJBvEJsBzhauKVxCNjjIWOe8Q2orenJBh6pwmnPNxUvMXQEThoKLo9VGNkjzA5KZC16hg
 PFaY1hzsPdEldxuYYRmehfYRn6VHhzps4sECMbECTZJDNtPONRgY0MiiuPECHXK3lwApFolZf
 AFiucXqrcXnn/uvkufp1/OtGcsTxN31FfHcFJBg7hRv6WSvSuUk9gVVbgR9s8Yz3dS9nwRAm1
 ms2bKZEbLBXEnrDR70zkmcn7LdXf/jiu06iwoeozYT7xVU2jgnse5Wd8IthUFS2up23vubvnn
 tjsQKD5TG0JN0cbfjzvFuO8uMLWDBDSMyZFqiAaa+vrhGNeDOiykeBfNkY1dILidWxtT6X3k6
 ui2R+UINCcGRL8zEKUEx39x35CbhNW7UFav1y1BYAbUpv+byNMxIZ0YQD6dBkkJzTgAnx5wVB
 ApGWhzJqRKfl0UkdTQCHvKjDlFtubheHk6FBkGU/2df4Jvr75pm47NNw3MLTnPHZkcUh+LLnr
 MFG+vfc57l2eaCRidpKbaS2BbNSFovIhOAqLyqgcSGm//6zmJQn27+4DcyRYDF8k2Oul13c9l
 MlEZO0fr8nRjjXReTxYBjEPNYeWObyiCejZNYwF2lly0DL5MS/gH3GF75VWuJ85sU/qhgYDas
 bKmFmhEt2UMTzmlOLAU2vuZWW72tek9JIKHa+0RVgqAdq8AwvyJp3mM5dW3oIa/Uiz0qBj7dX
 k6StRKqbPHA2PU3cgHBQS61k2HyecTj9SoSlPK4h5OwvcdTHfVYCniQGJmbCTD1gk4iMMOOaz
 Gu9zvY2qIkADInj8IhdsOHvyEe8dsmcwicu1Oiwgzyp3orOosUH1WWX5/ij6Zdqjmkq2i74y4
 1XGIVFvJZU9ifW2mhmnTB9aWjP7cYuerYoyEyBH6tsL/bT93tjqA/bcaSps+1OgHe4gLt+sfk
 3Yl2DNhqXhtfbNhpT10V0r0TS/mT7TUf+PzlkRKkvRIEZDm787nvwaaYfYR2MH+oXlEYzlNRk
 w0gaYNyuDF3JfiSO4DDqPYz1DnY4yl3jzxBXuVExd8eBsrN890B3+rp14RBuEsCdiotmYOPW9
 YBH+hnBCdXutYvM/RK5fq8pG/kFbO5ea4ugEQCRrZTA==
X-Spam-Score: 2.8 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 Content preview: >> >> Martin mentioned in passing that he thinks iconifying
 frames on ttys >> >> should perhaps do something. So it's maybe a "not yet".
 >> > >> > What could that "something" possibly be? Martin? >> [...] 
 Content analysis details:   (2.8 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
 [213.142.97.103 listed in zen.spamhaus.org]
 -0.0 SPF_PASS               SPF: sender matches SPF record
 0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
 provider (rudalics[at]gmx.at)
 0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
 The query to Validity was blocked.  See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243
 for more information.
 [212.227.15.15 listed in sa-accredit.habeas.com]
 -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
 [212.227.15.15 listed in wl.mailspike.net]
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
 low trust [212.227.15.15 listed in list.dnswl.org]
 0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
 query to Validity was blocked.  See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243
 for more information.
 [212.227.15.15 listed in bl.score.senderscore.com]
 -0.0 T_SCC_BODY_TEXT_LINE   No description available.
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 1.8 (+)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 
 Content preview:  >> >> Martin mentioned in passing that he thinks iconifying
    frames on ttys >> >> should perhaps do something. So it's maybe a "not yet".
    >> > >> > What could that "something" possibly be? Martin? >> [...] 
 
 Content analysis details:   (1.8 points, 10.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
  0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
                             The query to Validity was blocked.  See
                             https://knowledge.validity.com/hc/en-us/articles/20961730681243
                              for more information.
                          [212.227.15.15 listed in sa-trusted.bondedsender.org]
 -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
                             [212.227.15.15 listed in wl.mailspike.net]
  0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
                             query to Validity was blocked.  See
                             https://knowledge.validity.com/hc/en-us/articles/20961730681243
                              for more information.
                             [212.227.15.15 listed in bl.score.senderscore.com]
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
                             low trust
                             [212.227.15.15 listed in list.dnswl.org]
  3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
                             [213.142.97.103 listed in zen.spamhaus.org]
 -0.0 SPF_PASS               SPF: sender matches SPF record
  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
  0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
                             provider (rudalics[at]gmx.at)
 -0.0 T_SCC_BODY_TEXT_LINE   No description available.
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager

 >>   >> Martin mentioned in passing that he thinks iconifying frames on ttys
 >>   >> should perhaps do something. So it's maybe a "not yet".
 >>   >
 >>   > What could that "something" possibly be?  Martin?
 >>
 >> See the option 'iconify-child-frame'.  We have to explain its semantics
 >> for tty child frames: The two obvious choices are to either do nothing
 >> or make the child frame invisible.
 >
 > OK, but then this is only relevant to child frames on a TTY.

Yes.

 >> What is the "top root frame"?  Have we defined it somewhere?
 >
 > See tty-top-frame.

So it has nothing to do with "root" frames.  BTW this apparently changed
now.  If in the currently visible frame I do

(tty-top-frame) -> F1
(make-frame) -> F2
(tty-top-frame) -> F1
(previous-frame) -> F2
(raise-frame (previous-frame)) -> F2
(tty-top-frame) -> F1

What I see is F2.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 09:24:43 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 04:24:43 2025
Received: from localhost ([127.0.0.1]:54494 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbysk-0003oM-Uf
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:24:43 -0500
Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:44262)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbysi-0003nk-2A
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:24:41 -0500
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-436345cc17bso24259805e9.0
 for <75056 <at> debbugs.gnu.org>; Sun, 26 Jan 2025 01:24:40 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737883473; x=1738488273; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=yswVkxm4zouQYQnMD5bJ3oJIeYpvIFMHQZtrHDC/G9w=;
 b=e0ysbKptxL19Gz5o+wmf0dgga+HycVelfKgkRijKgiNVt/Givt4FVWmRsPJEZ4lxLS
 7sOnudQS63Iyx9gVt6jPnuXWRH0/+D1yZJ1TDQA+42msHBm/dRbslYiVQw7g4JuUGsHA
 eEBcQaViTeNhiJ/Rb/V5aDcPpaE8xTn4yGS2/Z32kFgd7ymYleVZu8xFAUSiFgXK1UV7
 K1DdwxXkv2NMGuRpdkfyOBr/8BsFyoyNZWAMp0wyGvjgqGThJJIdx5WF1gcISLt3kD8W
 jvgGBCknLb1FxggWDC802MGtrvssnQxeje2wpPNTW3BQtauifKH/o6HwFJuvh62Bs6qA
 Y44Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737883473; x=1738488273;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=yswVkxm4zouQYQnMD5bJ3oJIeYpvIFMHQZtrHDC/G9w=;
 b=LAhRqkPsjHI70qhZN3cixoZORK3v64QuFpfyJpkJMVMZiiaPaa8QnwKxd0RA4XKyKB
 brdgJdSsLi25xZ2KpojzcH/oqjRfpF9cEk/0TFW88KaoGl14tjLy3yxmxm9uYZOzpt/T
 va1mi84k8uHGJqqZnPuERYFys2Rj/M9Vgv1+kpYXgNV+hrhS/o92mR73Sd/NqytOAQMs
 VSDfLGBMYuJ1tM744Yejl3IjAMKvP9DMTlI1dvAZZO0y/uhn/7eIIWu5412UgFgS978D
 UFtCKbMXSPEdB+c06Y7U/iXBKSJom8f7VVmidomByP99rf9jXqmm7RiLxZQokGTanP+h
 IG0A==
X-Forwarded-Encrypted: i=1;
 AJvYcCVJW1accG73bVkxLQi6EHsXEL7bkFFxD+fQtE73F6asROf0aQwXVOqMwfCk/7J45vLYXrSK+w==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YywNw88dx5WcguYlmXF3rtYsm8Hh+cU7UBZLAbz67V4Qyasxi0t
 AGCDHhNr6wsDF1rHoUSQANxsFLpOk3pDnz5g2SI6NdpkCtFri1OPgCXOTw==
X-Gm-Gg: ASbGncuDOYALHSHs2LTK8o25GBYc/9vE8vlM5fO5Ezd9QDqeaADCP8HyDZ1839Zs9SZ
 xR7x+tEB4uCtQqYssleyPvmjRxo/2cenqMV9of6Bq+xOEAgvjf5FTfPY5I8IN/i6QudJs54+VmY
 6txyknMksniPj6hvTz5OjZpSgxNhdy5Q++hdD9jDPgp3neLNJ4i0xYJl+M5xyM3596qQZD2l7ZH
 LvoyYeK2gkKj9tay1vnU0H8Fhm2+9WQYrYng5JSlgO47q/8VZIblIFoCA5tgtpjisZGtk/J06wj
 tM5q7m8boOzO26YG4iyRrgXrduG8Ps1di7L+5SYacRZ8Brc++wdWyT6ielkPvvZr7yNf/C7cdn6
 8kY71YQYDNUggAw==
X-Google-Smtp-Source: AGHT+IG50wNtqFwoFizBKIE1K2UjxXsnXYYmH2sgOtknGfQX7u0WO6+k5COb0HBF5H7RV6S/IghuHQ==
X-Received: by 2002:a05:600c:5486:b0:434:f1e9:afae with SMTP id
 5b1f17b1804b1-438913bfa0fmr303225975e9.1.1737883473185; 
 Sun, 26 Jan 2025 01:24:33 -0800 (PST)
Received: from pro2 (p200300e0b73e84005db9294b38aae576.dip0.t-ipconnect.de.
 [2003:e0:b73e:8400:5db9:294b:38aa:e576])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438bd575468sm87408495e9.39.2025.01.26.01.24.31
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 26 Jan 2025 01:24:32 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <86plkarl9d.fsf@HIDDEN> (Eli Zaretskii's message of "Sun, 26 Jan
 2025 11:13:02 +0200")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <m2o6zuq9i6.fsf@HIDDEN> <86zfjernal.fsf@HIDDEN>
 <m2frl6q7hn.fsf@HIDDEN> <86plkarl9d.fsf@HIDDEN>
Date: Sun, 26 Jan 2025 10:24:31 +0100
Message-ID: <m2zfjeorlc.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 75056
Cc: rudalics@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> From: Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
>> Cc: rudalics@HIDDEN,  lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
>> Date: Sun, 26 Jan 2025 09:55:48 +0100
>>=20
>> Eli Zaretskii <eliz@HIDDEN> writes:
>>=20
>> >> (Where "top" in that case is not a z-order thing, but all root frames=
 on
>> >> a tty are just part of the frame lists in parallel to each other, like
>> >> before child frames. AFAIR, something in tty_display_info
>> >> says who owns the terminal.)
>> >
>> > So it is still true that a frame other than the top frame returns t
>> > from frame-visible-p, right?  Here's the recipe:
>> >
>> >   emacs -Q -nw
>> >   C-x 5 b RET
>> >   M-: (frame-visible-p (next-frame)) RET
>> >    =3D> t
>> >
>> > This is different from GUI frames, in that z-order is not considered
>> > on TTYs.
>>=20
>> That looks like a bug to me. I think it should return nil. (Although I'm
>> never 100% sure with the frame code.) Opinions?
>
> It's the way Emacs behaved until now with TTY frames.  We can decide
> we want to change that in Emacs 31, of course, but then we need to
> update the documentation accordingly.  E.g., see "Raising and
> Lowering" in the ELisp manual, and the functions mentioned there.

I'd vote for changing this. I find things easier to understand when
there are as few as possible exceptions.

BTW, what does (frame-visible-p F) say, when F is a frame on another
terminal? Out of interest. I would find it natural if that returned t
if F is the top frame of that terminal, and nil if not.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 09:19:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 04:19:15 2025
Received: from localhost ([127.0.0.1]:54462 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbynT-0003Nj-2y
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:19:15 -0500
Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]:46501)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbynR-0003NT-Gb
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:19:14 -0500
Received: by mail-wm1-x32b.google.com with SMTP id
 5b1f17b1804b1-438a3216fc2so35632865e9.1
 for <75056 <at> debbugs.gnu.org>; Sun, 26 Jan 2025 01:19:13 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737883147; x=1738487947; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=ls0I8JzQN20RhULaxV43+Hw3+E/zEb2LYEOPmtGdTEc=;
 b=h+kH7quXL9DSQMW8XnRolWKijfEfxB3K2DAvlBFrvEWqEWBQbmwCV65EbBJNQDDD5C
 /ZnUuuWghpZLDStyD+EtTD9gV7T5M0dwulClgEobe0flVHp0DcVlZSjS9mwcdtex5Kk0
 yZ0nuncaRC1KfBKCmd0ObQFsnK5yrKGY03bcHraD9ITneDZqIR54VLPkIceixw6WuHw0
 VYn0m1pogWaHEJ0OrdAnyZH0+HC0Ml5VdGO/zcOrKIXo4Mc7ENAMAf9P8iOCEhjEU9ki
 A8ll+NFI5ToZs8/EpS+iigf5YRW9/cI998403Gg0WTjnkFEIRCuhm+H5kSGKAVBeFTnr
 terg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737883147; x=1738487947;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=ls0I8JzQN20RhULaxV43+Hw3+E/zEb2LYEOPmtGdTEc=;
 b=NHXf5kgPyEWCMFcaIf/vceBEdnmjp+hJFwERAtw3i0hMiE4wfiI3iAoPXfOCkI8Ztv
 jTAW0T0pS3w4+V6ovHO0FF0gmrM/p83WTyfClHlg6FRc8T4JRKL7Hz/x4if6ajQx6KvY
 QgvZ/SguuGQxREdwaIALkeftMyTJ2MHLYDDTrrJ5pK19+WyeurEJeVORD9VFnrQWNTV+
 cmDGlsh8LVZ+z5jqpjfL2Dw4UH/IWCvHq/liAAWE/nyaE2UE3XyXVSo97UkaF8kkL22a
 D0StLD9M4Wjvccvaa1ZODatFKkhZIHtoHgdFPkpriZ07VLqkLthdXLW3v66qzJbOAhNJ
 4CLQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCUaJ1u5OmNikbFCEKtK7oIU8eZASj97FI/D6Cw0Ohph/njMDzk2yAc2xKq3WurnCK8TjGbTOw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yz90ibG7SSNAHuneFWYeUzoNAEO3Vh6ufxuNt3dhgcRsSv22+eY
 oAPn96L+FE71OaG4NQM+z34rDI5x/00zXVpLU50IcshhK+ELsSOBI6uYBw==
X-Gm-Gg: ASbGncuwcfKM68v1IucpTJsHn4YqpbeqGtu2tBXSsyxb+OgCBBlsX7gVi1Ex1FaGE5A
 W6NvIbYXCIZkyUkb5U4eMt2dbnG871zYWBfmHljdINRjEQ2QAjYOdzPiCD0WV/hlqm7iRrWZ8vj
 Ab9360Rcnp4KDWdljDbGnKOv81lQzuXzryRlqVm2Q3OWpJsBQgncqv03VuBKoTOAdkCYYjjr3fO
 Q2O50unNusJOq5uDlbPLJtaEPMgk5QAwrcqqsJU6hLe6P/DQoUMkSlhGucXfL2Ku9+qIpKie/Iu
 XO8fM2Jgi7t3RThwhSKb7kjt4wQkIrZScGdESO61+/GN58g4Jz94jPOIQLpvCd8FNAGVaAx2XQq
 tz7mrvDylU7blxQ==
X-Google-Smtp-Source: AGHT+IFsd9XtWe7TcTfxNKEpi4+Rw1QttHDznhQrjyfAcgM6fB5Me16qFfGMemzcg6Jj6qL/1wHXJQ==
X-Received: by 2002:a05:600c:350b:b0:431:58cd:b259 with SMTP id
 5b1f17b1804b1-438914671fdmr377139405e9.31.1737883146742; 
 Sun, 26 Jan 2025 01:19:06 -0800 (PST)
Received: from pro2 (p200300e0b73e84005db9294b38aae576.dip0.t-ipconnect.de.
 [2003:e0:b73e:8400:5db9:294b:38aa:e576])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438b1cc8151sm103176095e9.1.2025.01.26.01.19.05
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 26 Jan 2025 01:19:06 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <eefd1bb1-3670-428b-ae6f-adb374299c29@HIDDEN> (martin rudalics's
 message of "Sun, 26 Jan 2025 10:13:37 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <m2o6zuq9i6.fsf@HIDDEN> <86zfjernal.fsf@HIDDEN>
 <m2frl6q7hn.fsf@HIDDEN>
 <eefd1bb1-3670-428b-ae6f-adb374299c29@HIDDEN>
Date: Sun, 26 Jan 2025 10:19:05 +0100
Message-ID: <m24j1mq6eu.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

>>> So it is still true that a frame other than the top frame returns t
>>> from frame-visible-p, right?  Here's the recipe:
>>>
>>>    emacs -Q -nw
>>>    C-x 5 b RET
>>>    M-: (frame-visible-p (next-frame)) RET
>>>     => t
>>>
>>> This is different from GUI frames, in that z-order is not considered
>>> on TTYs.
>>
>> That looks like a bug to me. I think it should return nil. (Although I'm
>> never 100% sure with the frame code.) Opinions?
>
> The doc-string of 'make-frame-invisible' says that
>
>   This function has no effect on text terminal frames.  Such frames are
>   always considered visible, whether or not they are currently being
>   displayed in the terminal.
>
> martin

Should we make a bug for that so that is doesn't get forgotten?
Probably also a lot of other doc strings need fixing. make-frame-visible
is also not right. And another one I changed recently.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 09:13:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 04:13:48 2025
Received: from localhost ([127.0.0.1]:54418 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbyiB-00032h-NX
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:13:47 -0500
Received: from mout.gmx.net ([212.227.15.15]:39807)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tbyi8-00032M-Vu
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:13:45 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1737882818; x=1738487618; i=rudalics@HIDDEN;
 bh=dWaiIB/zd9N+iPh+mniYvFS7Pa2wnF4zQZVMin7K5aI=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=BHl1W8+Xd5zKCEb7LZcUyqymhE2djN8ICVbsQudggkyo57TyNih2MqhHJE7/snGI
 j+CE3YkNQdKLovp4KmuEBYilwgY0Sb1b5K+wTcU73xFPotqCCC0TvXlQSjPcMOhd8
 BT1lExFsJ2AsY+0drsYcBpHD6NBdLHQ1aE21wN4xLBn+A+B2zwumsRiaJMAAI2/8t
 6u4vfim8kexAXWU0u9hOHXdi3zp9dtOw1AYFxEI8XUWfaKpI8lCoSfRT6dejLxPTz
 Pxcs3X2mzVhU/PlGRB+ODSRjK3FhDPKd2+RSdPfCECeJ+kfnW3k3tTKsnEqkh9snP
 BJfyLgkaY5b8BrsmZQ==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.97.103]) by mail.gmx.net (mrgmx004
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MAwbz-1tmf1v0cMz-002vhV; Sun, 26
 Jan 2025 10:13:38 +0100
Message-ID: <eefd1bb1-3670-428b-ae6f-adb374299c29@HIDDEN>
Date: Sun, 26 Jan 2025 10:13:37 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>,
 Eli Zaretskii <eliz@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <m2o6zuq9i6.fsf@HIDDEN> <86zfjernal.fsf@HIDDEN>
 <m2frl6q7hn.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <m2frl6q7hn.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:ZkHYBkdr/tCRztuowZYlLcNbVubiMcs/ne7r5vwW6G+zbOACpST
 a8kOUnGyhK0mp3aJPSqWxL8WNrQ48BCDce7uFH/LnzhxEL2ZmCCFKLuOH2o7gDwb2KQioId
 /E6uWAtvyo/iDwcRnc0ciD0XfZiNSMhIKyxoSqBrupGqX8tPLBZSmiOPpEOM0Hsw3Oi34V0
 1cKDEyl4dAQqjg+CuTIBA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:VAQcR1wAWA4=;43vqKSvNAz9Ul0Y1edTC43GZT5z
 dJQMplO0jvVTeGVv7p4dNM8DlH+lVG5t4+IuSbGK8lOTwNEz54CrwJr+wS5XTkcKkTRHkj/Lj
 kJ/M9sX+J8MSAUzSywWnfM4N07Nru3xfao1be6WFsC7Ym3Y2Ozf093RMPdOm6wbrSP+2M5lzQ
 TJS30J++hXcfwHAW+FbZWfHUIDje09j3Ix5A94BGyRvKNkD/PiObnlElxqGZ5mTfUdlXba2II
 4+EYErhCBBqL4xKZgpzVXTGcSoM+3f1TpTL1cdhuEel6HYmLt39KRBc22gT+i98ie2ylcqudB
 1pasLu5O47Kqf+IapKkjfTWkKnzouGgL10YIYAmNC/uWM+XNIxs2Sbb6F502hliucKFlM7z4u
 upcnO8FlebKEuGZR46Vd55EhfjYLPHayKjqSiLqVub+7S/N4YU9yxH7jBfl34U+4PdQFV08RU
 MhCpNsuuJMnLQ+xVubMmODDY1o8pFIHn2xisfjodGwOMPkyoyxlxDedMLIYiVDNlWTV/mkpyh
 Mr77x/4U+ceCBEXTdll9gACjKARNt4GVhR8WlQ2VTW/e+4EW2Z6+duTy+TcLpuLKT/oXl0fXA
 0TjtcajwokBXYAZQAYFZ6OKnhiOQiZcgV3t5F5O+iRnIoNel4Cpzc2RIrDcGMqrA6TVBk2IU4
 uVy+Iv+YnH+3lyDF16epniEDc0wGbVbbMqZGZUJeRqy+SLd3gIdEh2odBC0FReRcJbSiTaULQ
 0wmuLNBK6stXovo0iWis+3hKTLwz8UAKOLlA3dHK0jFg+UV9WZfr5oyhlpBqfNsIxaqvWi2vP
 QbU2up68qvPUC3xbexyCijihZ62TY+ySy4D8JULTrZ2Y4+Pxjqg2PYhG6GBYvV1Me2c28CXB8
 TiLREtS/w14KCfh52SYSdhs03lx06L0AxpRarzz/laZsz08O7/WxiV4hQS1EuhpxXMAh02Ye+
 8iP124H8jxfGS6AIfRB9/Y3ETc5w4z+7AwYAWQ4JPe1fSt6ufTMMgFG2tkXV3VQSEGMlbtPN6
 A8IXOCYoHLQ/g3NmsBt3qUoaIng2JbFtLPEHUpvmYP/CSrUWrPXRmqrxkx6Rz0ded0dCZg6yW
 SqqTxHWtrHpMEn/OMp6kcJEyXSJ6il81mkepI4QtU5vGX25sf6U8CvngvNW11v8P8dfm/QtYj
 zfFvNBpV8CoHl8tjz9qYOrDjz8+TevCs2pjSBkedCzA==
X-Spam-Score: 2.8 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 Content preview: >> So it is still true that a frame other than the top frame
 returns t >> from frame-visible-p, right? Here's the recipe: >> >> emacs
 -Q -nw >> C-x 5 b RET >> M-: (frame-visible-p (next-frame)) RET > [...] 
 Content analysis details:   (2.8 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
 The query to Validity was blocked.  See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243
 for more information.
 [212.227.15.15 listed in sa-trusted.bondedsender.org]
 3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
 [213.142.97.103 listed in zen.spamhaus.org]
 -0.0 SPF_PASS               SPF: sender matches SPF record
 0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
 provider (rudalics[at]gmx.at)
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
 low trust [212.227.15.15 listed in list.dnswl.org]
 0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
 query to Validity was blocked.  See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243
 for more information.
 [212.227.15.15 listed in bl.score.senderscore.com]
 -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
 [212.227.15.15 listed in wl.mailspike.net]
 -0.0 T_SCC_BODY_TEXT_LINE   No description available.
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 1.8 (+)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 
 Content preview:  >> So it is still true that a frame other than the top frame
    returns t >> from frame-visible-p, right? Here's the recipe: >> >> emacs
   -Q -nw >> C-x 5 b RET >> M-: (frame-visible-p (next-frame)) RET > [...] 
 
 Content analysis details:   (1.8 points, 10.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
  0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
                             The query to Validity was blocked.  See
                             https://knowledge.validity.com/hc/en-us/articles/20961730681243
                              for more information.
                          [212.227.15.15 listed in sa-trusted.bondedsender.org]
 -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
                             [212.227.15.15 listed in wl.mailspike.net]
  0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
                             query to Validity was blocked.  See
                             https://knowledge.validity.com/hc/en-us/articles/20961730681243
                              for more information.
                             [212.227.15.15 listed in bl.score.senderscore.com]
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
                             low trust
                             [212.227.15.15 listed in list.dnswl.org]
  3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
                             [213.142.97.103 listed in zen.spamhaus.org]
 -0.0 SPF_PASS               SPF: sender matches SPF record
  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
  0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
                             provider (rudalics[at]gmx.at)
 -0.0 T_SCC_BODY_TEXT_LINE   No description available.
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager

 >> So it is still true that a frame other than the top frame returns t
 >> from frame-visible-p, right?  Here's the recipe:
 >>
 >>    emacs -Q -nw
 >>    C-x 5 b RET
 >>    M-: (frame-visible-p (next-frame)) RET
 >>     => t
 >>
 >> This is different from GUI frames, in that z-order is not considered
 >> on TTYs.
 >
 > That looks like a bug to me. I think it should return nil. (Although I'm
 > never 100% sure with the frame code.) Opinions?

The doc-string of 'make-frame-invisible' says that

   This function has no effect on text terminal frames.  Such frames are
   always considered visible, whether or not they are currently being
   displayed in the terminal.

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 09:13:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 04:13:16 2025
Received: from localhost ([127.0.0.1]:54412 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbyhg-00031P-8B
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:13:16 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:42450)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tbyhd-00030z-1I
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:13:14 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tbyhW-0007Vf-N6; Sun, 26 Jan 2025 04:13:07 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=/RUI/U7mMa53LaSMlkYQuXFKji/p890RP3+3ko0joZo=; b=ZfbZA0LjJY3f36H5SwyR
 bW9X9KA7jOlAvIaYdfkJwgYtIGDvAuz4oh9XXhx/LQrKluVgG7mVRD7O7baWg4yg0ndxc8cNIFPPn
 893qQk96KpXu5ysf9gNbfoKskn+gkor70lsxpV77tfieBYB/J6qohYIPPnLUchY11oIySIf2M4v1C
 qQWHY6YpMUMUDfTlGyl+s+mM8ZIGcnFFCrdOL6SJYdr3EM1ha1+1WcdDHvXEMROIb4V2AzcaN4DOm
 GnN2qPt8IwEfklpCbtRtEyiD1AbPndvfu/dU8pG4G0WG9KKSwIqvzJPv4aEJQ37eHs34Yvt1XMbyv
 sSLMOls7q/xL7Q==;
Date: Sun, 26 Jan 2025 11:13:02 +0200
Message-Id: <86plkarl9d.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Gerd =?iso-8859-1?Q?M=F6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <m2frl6q7hn.fsf@HIDDEN> (message from Gerd
 =?iso-8859-1?Q?M=F6llmann?= on Sun, 26 Jan 2025 09:55:48 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <m2o6zuq9i6.fsf@HIDDEN> <86zfjernal.fsf@HIDDEN>
 <m2frl6q7hn.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: rudalics@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Cc: rudalics@HIDDEN,  lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
> Date: Sun, 26 Jan 2025 09:55:48 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> >> (Where "top" in that case is not a z-order thing, but all root frames on
> >> a tty are just part of the frame lists in parallel to each other, like
> >> before child frames. AFAIR, something in tty_display_info
> >> says who owns the terminal.)
> >
> > So it is still true that a frame other than the top frame returns t
> > from frame-visible-p, right?  Here's the recipe:
> >
> >   emacs -Q -nw
> >   C-x 5 b RET
> >   M-: (frame-visible-p (next-frame)) RET
> >    => t
> >
> > This is different from GUI frames, in that z-order is not considered
> > on TTYs.
> 
> That looks like a bug to me. I think it should return nil. (Although I'm
> never 100% sure with the frame code.) Opinions?

It's the way Emacs behaved until now with TTY frames.  We can decide
we want to change that in Emacs 31, of course, but then we need to
update the documentation accordingly.  E.g., see "Raising and
Lowering" in the ELisp manual, and the functions mentioned there.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 09:10:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 04:10:29 2025
Received: from localhost ([127.0.0.1]:54398 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbyew-0002uj-5p
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:10:29 -0500
Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]:53273)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbyem-0002ta-0n
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:10:16 -0500
Received: by mail-wm1-x32d.google.com with SMTP id
 5b1f17b1804b1-43624b2d453so37163985e9.2
 for <75056 <at> debbugs.gnu.org>; Sun, 26 Jan 2025 01:10:15 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737882610; x=1738487410; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=sak7u54HA1xQug3hfcz16ImvY1eylAYi/SD2gRjFpj8=;
 b=JE+qulfQGyfkumX6IJOmzxk+EPDLivnzm6w6ImoGji0Y0OaPfK6/tyOr287b80ug5s
 PLUDVPCmr0+wvREEWzoLNUbb20nMVhb6WF1/yCqk1f0gaBtgpCLfHGIQlv6uqFoxb8p/
 GHn+WO0dZwQ/4vS6veynAW4jFB64hxsmlFg6DD8hvhtUjekYB79QPkoMxeyPdCGwrMV1
 kfnqcA6jPxTHWJz7ZrntY7YE2QYXGBf1Xq8nmL+ywMhKFVsz9y/q5+JDF9X/ZmW5eYSM
 JT8B5FKd4DiBHkhg+cGNIcNwHVxnqd62nmzcdSjJegBRANIr+jjceKo3wrwwynXG6QWS
 Kdcw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737882610; x=1738487410;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=sak7u54HA1xQug3hfcz16ImvY1eylAYi/SD2gRjFpj8=;
 b=Xjv1kk7J4zEZI14kXBTohvbjiPZVyMK4DY+vNs4vAzrerAlpP1CNe8aEswQf4Uu8Z/
 Ihw+fyFDz8D1BO3aQ2rytE1pDX7XhYPwP3Oxsljh/yTOuecRRSxWqUbfheX6z0hOYnIg
 iYjWg9jAposYYQfdMk+nknp8u1c3Ibg3eGPw7qY6FGa7/noT5hUKsWRLIwN6PEyX64Sb
 2hjGDy2f5pFuzNSlhp+a6SaFGppk9n7yvWspnlX5HP72y4zZpPI56aKSQ5wIB2zQGqAn
 glZTIb/OAEZh3Y3mKNBw0hkt8Z/aHPTyEq5ApFOYyPy2w0heA+ED+iNSYQeaW8Nw4f60
 mGcA==
X-Forwarded-Encrypted: i=1;
 AJvYcCWznBioUKuFC1H2IgGcZLFkXqVrkWogciuy0e0nrPirANYUzoXEVQtBnY6DBprrfAuNlMmyTg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yx49RiUqV1vzeFJJ9VMTYiiJN86LdrsuVcvXagNveGe6Bfs+Fnv
 A6OA4SOkA9HBF7p+mwcNufEMJtggX9Lnq8SJgm8a45jpO1Rc8i7Y4fKGOw==
X-Gm-Gg: ASbGncuOsASBmRZU1OCu7dFX64ZFsMfRnZC5y6DJck6kYC/HFUDXiHjAQbnk5T6Dn6F
 2G/jNEWgS9VW24ckw6C17g8Tfnc7rJf7RykJlD7GjiFg2ueYkyu4zxX29UItcYRM6rXOCtUCzIB
 JUPlW6Kz6HjUM3mkjUrH0BWmR2W46gF0xclljMsbRUvgwnSAOhM6s4NVxEzv5vUVD8PjyzzMWym
 wioz8hmaq4FDRws1rzbdzSsTDT9xjPYVLn3HZkt3oJW45G9xTHLUolVCB5tEI7hoBIfTlIT12iM
 kgjwHinuCUHT06E6N1qqmo6I32XfThSpQ0ZwB4BDDPUNUxIxb9ovlLRmuVSLRRSr2yNQrMHdQug
 Q0YroNpIRu+8hGw==
X-Google-Smtp-Source: AGHT+IF1/+HQBweb65RcjoTDNLrO8gQPeW2mQXoL36uRYv/4v6mP8naob5QRvY1MGuLS12PNfcJyHA==
X-Received: by 2002:a05:600c:3d86:b0:436:e751:e436 with SMTP id
 5b1f17b1804b1-4389143b372mr315595805e9.19.1737882609520; 
 Sun, 26 Jan 2025 01:10:09 -0800 (PST)
Received: from pro2 (p200300e0b73e84005db9294b38aae576.dip0.t-ipconnect.de.
 [2003:e0:b73e:8400:5db9:294b:38aa:e576])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438bd485007sm89298165e9.12.2025.01.26.01.10.08
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 26 Jan 2025 01:10:09 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> (martin rudalics's
 message of "Sun, 26 Jan 2025 09:53:19 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN>
Date: Sun, 26 Jan 2025 10:10:08 +0100
Message-ID: <m28qqyq6tr.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

martin rudalics <rudalics@HIDDEN> writes:

> I still wonder what happened to the "when one frame completely obscures
> another" visibility state issue.  Has that vanished?  IIUC it would make
> a child frame (and possible even a root frame) practically invisible
> when no part of its drawn by redisplay.  On a GUI the WM would decide
> that and we don't have to care (IIRC we did care on Windows in the past
> - at least when debugging).

I can't claim that I understand completely what the problem was/is, but
here is the situation on ttys:

On ttys, child frames which are invisible are not copied to the frame's
desired matrix, so they disappear. If children are obscured by others
is handled by copying in reverse z-order, from bottom to top. No
smartness invested in determining if we can avoid copying a child
because it is obscured by another. 

Above combine_updates, in the glyph generating code, child frames are
handled completely independent of each other, as if they were the sole
frame on their own terminals. So no obscuring, nothing of that sort.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 09:10:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 04:10:15 2025
Received: from localhost ([127.0.0.1]:54395 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbyel-0002uA-84
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:10:15 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:41854)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tbyei-0002rF-2Y
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:10:12 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tbyec-0007I7-AJ; Sun, 26 Jan 2025 04:10:06 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=6mdjZPNwzkpPQcvcPvrCg/kkDxwYIRrWv2Ws4ZQaxBo=; b=mmt7O6iOe58i
 v0JQUrEhiC2cYnhvNmwyj1nO81eWuTnRkKCLRmG5kNBy38ycCs2oG98DhQZcSxmKjYT/+6KDrZ5EO
 1BaZZ/mOGl8xI48lWuA4SmSprS1zsGD0Ug1+oG+HiBL1odn5vGbbqZkk6Dr0rQRzWulOvTPtjjJqg
 gGeOwhWcx2Jq9vmM9OpTZWIs+QQICyKl1DfHf1nAjOLs4dolL2v2ig43KXGlQnJ2HrS0ZV/uFKM9q
 YlRT96ICXNDXyfGT8FwjAjlzY6FPiWZlov3iBkOdywjB/EXu1bWDhmLqFYIsnGWyafpYu2gV2TkWv
 qtw8DQE2lk6Dd+XC5Iv7iA==;
Date: Sun, 26 Jan 2025 11:10:03 +0200
Message-Id: <86sep6rlec.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN> (message from
 martin rudalics on Sun, 26 Jan 2025 09:53:19 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Date: Sun, 26 Jan 2025 09:53:19 +0100
> Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
> From: martin rudalics <rudalics@HIDDEN>
> 
>  >> Martin mentioned in passing that he thinks iconifying frames on ttys
>  >> should perhaps do something. So it's maybe a "not yet".
>  >
>  > What could that "something" possibly be?  Martin?
> 
> See the option 'iconify-child-frame'.  We have to explain its semantics
> for tty child frames: The two obvious choices are to either do nothing
> or make the child frame invisible.

OK, but then this is only relevant to child frames on a TTY.

>  >> Yes. C-x 5 2 can make a new root frame, and only one is visible on
>  >> the display.
>  >
>  > So only the top root frame now returns visible = t?
> 
> What is the "top root frame"?  Have we defined it somewhere?

See tty-top-frame.

>  >> raise-frame is make-frame-visible + changing z-order, make-frame-visible
>  >> and make-frame-invisible change the "visible" flag. (Just notices
>  >> make-frame-visible talks about "X window", hm.).
>  >>
>  >> Did you mean these doc strings should be changed, too, or did you mean
>  >> something else?
>  >
>  > I wanted first to understand what happens with this on TTY frames.
>  > Then we'd need to update the doc strings and also the manuals.
> 
> I still wonder what happened to the "when one frame completely obscures
> another" visibility state issue.  Has that vanished?

No, we still ignore that on TTYs, for non-child frames.  See my other
message.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 09:00:54 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 04:00:54 2025
Received: from localhost ([127.0.0.1]:54332 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbyVh-0002NA-JV
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:00:53 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:41860)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tbyVf-0002Mt-Hm
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 04:00:52 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tbyVa-000653-7R; Sun, 26 Jan 2025 04:00:46 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=MJmMJkLkNt5w/5sY2IKfGeurG4Xm3jZdks2iQKvMWd0=; b=ZQrbN4seW4d+Uvqu4Q0g
 0D11O/cd5SFTgrovmrGcatg77Ewz3TUCcXpUSWmWNbo8uA78cOHCkju+jXzLKJDQMr+E13ntyIUPC
 PJmijjZS1mhXkakYJFYwy+ZuQcVsC54qlrR8w3z/WPtbEoH9aiAwwwGJueFloY4VA4FJ5NadqqQCG
 a8r4r1vzw/EFLxax6W8wk0rlOG0sCAj3XY9yc4j91NDSTi+TGW7b5ueKzr6cd0BFTgrXUxU8uj3Og
 DNqgsBztLBrULHS6E41/exKkiDVC5Kpm6qi/09iwm+Y1Y+HPWq0vNQFhJx6c6YeLU474moR/ZSrEf
 YzPrlk/bdNE3Fw==;
Date: Sun, 26 Jan 2025 11:00:41 +0200
Message-Id: <86wmeirlty.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <861pwqt2nt.fsf@HIDDEN> (message from Eli Zaretskii on Sun, 26
 Jan 2025 10:11:50 +0200)
Subject: Re: bug#75056: 31.0.50;
 tty-child-frames with server / multiple clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN>
 <CAOGVwe=coO-8NxNV141G2hMgv4k9v--XoDFrw=5EA+sY6e-X2w@HIDDEN>
 <m2msfe18hp.fsf@HIDDEN> <867c6it4fa.fsf@HIDDEN>
 <m2sep6qaix.fsf@HIDDEN> <861pwqt2nt.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
> Date: Sun, 26 Jan 2025 10:11:50 +0200
> From: Eli Zaretskii <eliz@HIDDEN>
> 
> > From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> > Cc: lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
> > Date: Sun, 26 Jan 2025 08:50:14 +0100
> > 
> > Eli Zaretskii <eliz@HIDDEN> writes:
> > 
> > > What happens in this case is that F2 cannot be communicated with:
> > > typing anything there gets no response, until we exit the minibuffer
> > > on F1.  Then everything you typed on F2 gets processed.
> > >
> > >> Find in the code what actually happens when switching from F1 to F2 and
> > >> compare that with admin/notes/multi-tty has to say about that. Does that
> > >> document say something about what we've seen the code doing? Open issues
> > >> maybe? Or general considerations?
> > >
> > > What the code does when Emacs enters a minibuffer is switch to a
> > > "single-keyboard mode", whereby it only processes keyboard input from
> > > the frame which entered the minibuffer.  This is because Emacs has
> > > only one input queue.
> > 
> > I would perhaps check how that switching to single-kboard is done. That
> > is, which C functions do that, what does do_switch_frame do and so on.
> 
> See temporarily_switch_to_single_kboard in keyboard.c.

Btw, when I do that on the current master branch, I see some
unexplained cursor movements.  Recipe:

  $ emacs -Q -nw
  M-x server-start RET

Now on another TTY display:

  $ ./lib/src/emacsclient -t ./src/dispnew.c

Now observe how the cursor on the first display (where we started
"emacs -Q -nw") is positioned at the left edge of the mode line,
instead of keeping its previous position.

Now switch back to the fist TTY display and press some key.  The
cursor is moved to its correct position, but now the cursor on the
second TTY display is a the beginning of the mini-window!

Now switch to the second TTY display and press down-arrow: the cursor
on that display is now correct, but the cursor on the first display is
now at the beginning of the mini-window.

Here's another problem with cursor movement, which doesn't involve
multy-tty at all:

  $ emacs -Q -nw
  C-x 5 b RET
  M-: (frame-visible-p (next-frame))

After typing the last line above into the minibuffer, don't press RET.
Instead, move the cursor left one character with C-b and type "C-x
C-e".  This should evaluate the (next-frame) part and show the result
in the echo-area.  But note that, while showing the result of the
evaluation, the cursor is not at the end of the value returned by
next-frame, but several places to the right, after some empty space.
This doesn't happen in Emacs 30.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 08:55:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 03:55:59 2025
Received: from localhost ([127.0.0.1]:54317 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbyQx-000251-3Q
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 03:55:59 -0500
Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]:53715)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbyQu-00024i-Kv
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 03:55:57 -0500
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-38a88ba968aso3411279f8f.3
 for <75056 <at> debbugs.gnu.org>; Sun, 26 Jan 2025 00:55:56 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737881750; x=1738486550; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=+ZcEj3EWmj+EGQb3ZrUbUIclwGQRX8kXKBkKJQHunG0=;
 b=lPeYuzZXgkYF9ZvCNrPig6KWrSBzYvDf26XVEXaRs4fvw/wwRQX74ByHvdx8ahH4LX
 ApWks7yIUeNYL0yVQeSQ2n/yfl53pXl1vfeLMs0U2WKwraPeZo0mY8a6SrcmJcIP4SQP
 NMvyXmkMF2UAaQGSucB0WoQ4q4pvutq36pHQ3vSsxzLqYGf407z5BdLShWBcBS+MKiJ0
 vYBHkOQIGi5Zvb3gj8zvPu3bV6Xc2ZYxXWeAZjlziDjubnylzmfk6gT955uraq31A5CY
 mT+8INxHyyjVMb82ucoVo3MzxbDE+wnEKnZcinTK/dGeQ1qdd2fsqUVLuXHhvdm6Ku/N
 +RtQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737881750; x=1738486550;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=+ZcEj3EWmj+EGQb3ZrUbUIclwGQRX8kXKBkKJQHunG0=;
 b=PPfM7+2WDlLdzYdctHAx1eePTAB00+29xjGthej8odATOLQZOt29RZhkfttTi1wUS8
 amVUopZI6qJJGYCxGjCMhrysTgf+iw3g1Jdi8w9p00CQpqgGW4zWMo3ml6v7RgbEyT6+
 pgf9mGBt/32GmU6OQ0QtRCeuMGlrtnImzTW2CsFaEjOlyPzEnP6a84DMp6oRycEBkU9n
 Fu2sFUIT6a7S3ktdt/FgzCZ+gfgu+nZe8cuydsaRXO0eNdWudV4WN4kZtDSH6U3BkWTj
 FLCcKg4oY8CeTMuXBGncYmWBaPlP6+j37lWTay2+OdeXlJxtNgE5fnHjCiwGz+PUGuKq
 //Dw==
X-Forwarded-Encrypted: i=1;
 AJvYcCV15icisSreKK6scH6TBiZNmggIPO3Nrf6bhtKxl/P3RlnJ3d09wvtKvGXpL0XmEt/6HXymBg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yz2UpoCwCzgkvfS/bDUmYgDfZlUFZaQs5k9GnNxZP3haSbVAbwY
 k7XM6y81gd8t7MQsK3TuvUoiLAHrVJxy3a/I9sKJVvw4FH7mJmuP0R8YHQ==
X-Gm-Gg: ASbGnct0Ddsptxz2Eos6/woZWKG85SiMoNeVfgPdvC/dIytUGPaZsyBx/hvQ08upkSO
 k2sw5w8e29o9Wy75AQGO/pbbYzC2Wd7Z5rt7RlkrdSHZfqKfY+TOVwjqklgTokVAXSv6o7pjjhY
 3osx/qunMB7UnfC41/rvhKYLSmhvBzcKHWKU/5BZRLgN8wQHF7F6bZxYxapSK5ErmyGBLHkFOTi
 ZS4aGoQQUp4jbbTdsR6CiEHfKILUoh9IRhQFNvNCnF4PKfILWdBK0K4oQTTv4RLAvdWpyQRK1nB
 AMP8PWKrh4jyVgBkgu2Pk/4HaURl/q5nW0RjPakcsIq1JcJvcseOnVvY5kbCwZjZ+O8DH/bGdUv
 6mhvr0Cj7ZzIIsw==
X-Google-Smtp-Source: AGHT+IEXbIXMXbZ0wZ3Uvam7VLaa5i7lPKIW0QE6TC+iMP6y3vipUUH1rUGFHgbdVhjtW+t3unUSrw==
X-Received: by 2002:a05:6000:1562:b0:38c:3f12:64be with SMTP id
 ffacd0b85a97d-38c3f126762mr1013845f8f.35.1737881750008; 
 Sun, 26 Jan 2025 00:55:50 -0800 (PST)
Received: from pro2 (p200300e0b73e84005db9294b38aae576.dip0.t-ipconnect.de.
 [2003:e0:b73e:8400:5db9:294b:38aa:e576])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38c2a1c403asm7718989f8f.93.2025.01.26.00.55.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 26 Jan 2025 00:55:49 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <86zfjernal.fsf@HIDDEN> (Eli Zaretskii's message of "Sun, 26 Jan
 2025 10:29:06 +0200")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <m2o6zuq9i6.fsf@HIDDEN> <86zfjernal.fsf@HIDDEN>
Date: Sun, 26 Jan 2025 09:55:48 +0100
Message-ID: <m2frl6q7hn.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: rudalics@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> (Where "top" in that case is not a z-order thing, but all root frames on
>> a tty are just part of the frame lists in parallel to each other, like
>> before child frames. AFAIR, something in tty_display_info
>> says who owns the terminal.)
>
> So it is still true that a frame other than the top frame returns t
> from frame-visible-p, right?  Here's the recipe:
>
>   emacs -Q -nw
>   C-x 5 b RET
>   M-: (frame-visible-p (next-frame)) RET
>    => t
>
> This is different from GUI frames, in that z-order is not considered
> on TTYs.

That looks like a bug to me. I think it should return nil. (Although I'm
never 100% sure with the frame code.) Opinions?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 08:53:32 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 03:53:32 2025
Received: from localhost ([127.0.0.1]:54310 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbyOa-0001uP-9W
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 03:53:32 -0500
Received: from mout.gmx.net ([212.227.15.15]:37051)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1tbyOX-0001u0-8v
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 03:53:30 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
 s=s31663417; t=1737881600; x=1738486400; i=rudalics@HIDDEN;
 bh=g+MjdGDDWJNIq/flaXXt4VaLsLWZoayrZr/K13SWXSM=;
 h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:Cc:
 References:From:In-Reply-To:Content-Type:
 Content-Transfer-Encoding:cc:content-transfer-encoding:
 content-type:date:from:message-id:mime-version:reply-to:subject:
 to;
 b=Gitf0BeCLBUUdu7HV+FFlmQhf+ojCfdgw4rdodSJse2S9jlSPi8Fxj4qu/ZSm5tb
 JZP2TJ0Ql2VCUy2LLUPnOYQg/+m7oMmxj+06wKfHl5+Xvog989UuAc1d7hVsTf4BN
 4vR926DAIRKi3+cliRbNLEnmNteTUjW4pqg+8LVnqTLWRuu79Od9+skaiDURj4oZu
 cURe21lbY9DRonm6yje6PYXPcftZWEEASqw3eXmtlq3qw9LBtsYw/Lvriqzm2ELuD
 TvFfgFmLZzofqMeRUdO5z/bkNX6WBerjk4iX6mr1ADlTEDSpbyMqVzM7ZbGqX710P
 1yfBpRppxBW/rbgf2A==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from [192.168.31.113] ([213.142.97.103]) by mail.gmx.net (mrgmx005
 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N6KUd-1tQR0D1MZl-00tx5H; Sun, 26
 Jan 2025 09:53:20 +0100
Message-ID: <52e10bc6-7281-47a0-974a-53922d710006@HIDDEN>
Date: Sun, 26 Jan 2025 09:53:19 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: Eli Zaretskii <eliz@HIDDEN>, =?UTF-8?Q?Gerd_M=C3=B6llmann?=
 <gerd.moellmann@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <8634h6t3bm.fsf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:Iqo6MEDtbH22YCkUzLgoOKeX8NGLmS3O/JLk3ErrRpbhB9oLRms
 7s9Q/viy1KmXzAQN5FCXJ6FN+6E+09zn434TkbfAv+1OPiv4BqQw7TfYrFZyX662+pTzyyn
 l7AO6DnGoIjdByPzK15jj9d/aqdLju5dlHuuFvqcmTDYhJvfEO0RF1Qgxr4Ct4PQnH6848g
 Q+xVpsSgsk74cOA3mDIxA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:oBmLfmt6NSM=;6R4CqbnCAos0eYQWwEzIL0+87+y
 naHitKz/cDQr6A1jWRStPKhdc0J/O+tqfHegfyvzUB+zEtQvchi28AGraFn3AS7e+JB/ix7v0
 4Sf+FoLfedHwrCcPz8IyhpHHYt9Ahf59wCK/MW+ZpOJI68geTahdm5qRGFiwUewDW9pD6YKgU
 IXHMNx5mYIiTqku0qs1b0F+ykcfIHyc96SJJXNVvL/ZWtOeUVwALb3/hPdvLAy4kvWNXU1Hjg
 62ZzJcOBgkCT0k/0TcIvX3wJmZmE/Xj3Z66P0AvAz6vMYIcuKQm3zB0y+/SefM/FSPgLW//wO
 0O5Q/ZpyeP2r7YJRD93RVsHn4M1lae2ah4XX5x0tHhdwHs6i4AvCRMKdnFdT7tP5QGXlrL/Ou
 x3sQU3VwImEwPUpSLXACuPfYHUGU5jpCXQERPxKy2g0IqvT7ZFyp1//g0avpp17NGJDKF/U6S
 E57Zxm4uWRSYvQqB7qxutyA2ZYbi2Z6476ih0lZs8UZStIUvFnTKVKEcq7ZbaL+72Ie/D272r
 5CRt8+husUuzhB26dc6wNGCZ4v3fqo2+olks0AQBPbThUU6C2jNHJIt/BxSs2fVhAfNnJ7m/g
 y2mj8iombNcSYtQ4XuJ3GcCYOpJGuIoxKxmLlupvQ5ee66gcxXThqyeLJSw0QJIOnFP5MQDzM
 aT+ichPiupys4K+QoGphfk46h6LeI7tSz8rcf8Mid56mBt39oTy0m15rmEyUff+IGwAtPs5+9
 qUpA3RsLz5+IwXIUqcovs24wmIx99SkM2hXMLmXYmUA97vlDEo2wXfNb9+mVby7WcrdK9SETM
 /CoDgPhwJdHmd3lVn/ygXy1KYoSsJb+nEdH1WhTbTW8KdiCw++7EqVFzwJaSGRSPjHRiTc1Tf
 L5c8BZyc5F0Zy2om7PYQahyalzr+Emf4DLHLpN/pkXKQ0SDH7V+7yuam+ph2is0twy49Oog0D
 ubDwheOJQmZJYZia3yHyrLfRiwoUcUs3Of3SidBw37L0s+tGbFyu2/LYjv8tjmzvfJKZSY/0/
 9bDXkQwPfv9QzJ//yxZIfLaT6gwyBNU7zT1PMHXT/U3bInHxYhMSnRUM60baubyKBBs2Vtcjy
 2l8DJWlHLbqtmu8Ujbtaps+Q1tI5aIXGdMORpKIHtBvRj+ZvVoD/Y3H6M8YmflpiuAYcyZN9x
 iNVJ7OXM2Izb3hiLVypZT9XF/wXVLL6LeqyO8IM0Epw==
X-Spam-Score: 2.8 (++)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 Content preview:  >> Martin mentioned in passing that he thinks iconifying
 frames on ttys >> should perhaps do something. So it's maybe a "not yet".
 > > What could that "something" possibly be? Martin? See the option
 'iconify-child-frame'.
 We have to explain its semantics for tty child frames: The two obvious choices
 are to either do nothing or make the child frame invisible. 
 Content analysis details:   (2.8 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
 [213.142.97.103 listed in zen.spamhaus.org]
 0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
 The query to Validity was blocked.  See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243
 for more information.
 [212.227.15.15 listed in sa-accredit.habeas.com]
 -0.0 SPF_PASS               SPF: sender matches SPF record
 0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
 provider (rudalics[at]gmx.at)
 -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
 [212.227.15.15 listed in wl.mailspike.net]
 0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
 query to Validity was blocked.  See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243
 for more information.
 [212.227.15.15 listed in bl.score.senderscore.com]
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
 low trust [212.227.15.15 listed in list.dnswl.org]
 -0.0 T_SCC_BODY_TEXT_LINE   No description available.
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 1.8 (+)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 
 Content preview:  >> Martin mentioned in passing that he thinks iconifying
   frames on ttys >> should perhaps do something. So it's maybe a "not yet".
   > > What could that "something" possibly be? Martin? See the option 'iconify-child-frame'.
    We have to explain its semantics for tty child frames: The two obvious choices
    are to either do nothing or make the child frame invisible. 
 
 Content analysis details:   (1.8 points, 10.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
  0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE:
                             The query to Validity was blocked.  See
                             https://knowledge.validity.com/hc/en-us/articles/20961730681243
                              for more information.
                          [212.227.15.15 listed in sa-trusted.bondedsender.org]
 -0.0 RCVD_IN_MSPIKE_H2      RBL: Average reputation (+2)
                             [212.227.15.15 listed in wl.mailspike.net]
  0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The
                             query to Validity was blocked.  See
                             https://knowledge.validity.com/hc/en-us/articles/20961730681243
                              for more information.
                             [212.227.15.15 listed in bl.score.senderscore.com]
 -0.7 RCVD_IN_DNSWL_LOW      RBL: Sender listed at https://www.dnswl.org/,
                             low trust
                             [212.227.15.15 listed in list.dnswl.org]
  3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
                             [213.142.97.103 listed in zen.spamhaus.org]
 -0.0 SPF_PASS               SPF: sender matches SPF record
  0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
  0.0 FREEMAIL_FROM          Sender email is commonly abused enduser mail
                             provider (rudalics[at]gmx.at)
 -0.0 T_SCC_BODY_TEXT_LINE   No description available.
 -1.0 MAILING_LIST_MULTI     Multiple indicators imply a widely-seen list
                             manager

 >> Martin mentioned in passing that he thinks iconifying frames on ttys
 >> should perhaps do something. So it's maybe a "not yet".
 >
 > What could that "something" possibly be?  Martin?

See the option 'iconify-child-frame'.  We have to explain its semantics
for tty child frames: The two obvious choices are to either do nothing
or make the child frame invisible.

 >> Yes. C-x 5 2 can make a new root frame, and only one is visible on
 >> the display.
 >
 > So only the top root frame now returns visible = t?

What is the "top root frame"?  Have we defined it somewhere?

 >> raise-frame is make-frame-visible + changing z-order, make-frame-visible
 >> and make-frame-invisible change the "visible" flag. (Just notices
 >> make-frame-visible talks about "X window", hm.).
 >>
 >> Did you mean these doc strings should be changed, too, or did you mean
 >> something else?
 >
 > I wanted first to understand what happens with this on TTY frames.
 > Then we'd need to update the doc strings and also the manuals.

I still wonder what happened to the "when one frame completely obscures
another" visibility state issue.  Has that vanished?  IIUC it would make
a child frame (and possible even a root frame) practically invisible
when no part of its drawn by redisplay.  On a GUI the WM would decide
that and we don't have to care (IIRC we did care on Windows in the past
- at least when debugging).

martin




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 08:41:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 03:41:20 2025
Received: from localhost ([127.0.0.1]:54271 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbyCm-0001KK-Fe
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 03:41:20 -0500
Received: from mail-wr1-x42a.google.com ([2a00:1450:4864:20::42a]:58479)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbyCi-0001Jr-J8
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 03:41:18 -0500
Received: by mail-wr1-x42a.google.com with SMTP id
 ffacd0b85a97d-385eed29d17so1784874f8f.0
 for <75056 <at> debbugs.gnu.org>; Sun, 26 Jan 2025 00:41:16 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737880869; x=1738485669; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=g3ZcV/LWrYSfq8ADXPQn7c6n0fRkEWSNLWROMRtn9Rk=;
 b=AEr3zKMt5DvSXwvsXix4hVhLyjENhMRyiqHdAUBVcnND8i21XhtBuOpN+pSYjiF0fK
 Jw4JAbBw4G3vsktJFBDkkFkz3lG5bzb85/j1Lpfc8HxRZWAEu3TMabLeouJ9CoDQSAz0
 os7wMr5A/xN3ObknpTZG8Y+e7Rri3N+S1hvpjpWVzqKb+42fxSGo/fUBIhbthZIuerQ4
 dPU+lQMnRW9RAqZww6heB7ksB7bVO54vF/Q++56wJ1Bqec8kRlAc2CTFBZwQBHwx+gsy
 aMHU+Z7SegAVk4psKafpqagarS2Kwan++jZcZsBrXpK7WypXqlxjB5sSftOcO7gMV374
 rweA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737880869; x=1738485669;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=g3ZcV/LWrYSfq8ADXPQn7c6n0fRkEWSNLWROMRtn9Rk=;
 b=NhJqSCTV7gxQFMTuCgOL/MwsD4kwU8hJGj3j5FYT4/5fOYUx02XQ95Wk08XVwPekbX
 RbekHSHzGPaZz6oipHTbirbFr9Oe5YeFPDBXzj/fYJpkl8dFh3t6ar1J1K/8wZGR3FXb
 dT9qXPDped9PZXU+QdFuqaAUR5qc0PDjlYnLFevDDskR6jaLn0bFOGSOkbPrBoPjhgjl
 Qwx1ZKJWmK+oi4/LQtZGfF5Rbf61XySkDW4PaW84Aey33OBn/kA2l2CdscP1V5HSdY/G
 U62mSG7KvJKsjc5LzSbbBEa6rCLB0it40etLES5mRJMrwXQ+PtR/ASpn7HCcWxpRUdFN
 rjRg==
X-Forwarded-Encrypted: i=1;
 AJvYcCUEFsW/2UFMUHezX1P8TIHkGydt8cLmNtJe/uI8ONobI3Huy+dRb4ZkUX1e/vJGmtb+GZTUeg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyITeI9Z748QHqSvz6SiX2p0Ctq1biHbX+UvGQX8pYcdVAz+cZ4
 Rovvo/uZlU+sniMXwb5sv5Puk4btteUMtpmbT8lQkkClLfrhekdQ3a959g==
X-Gm-Gg: ASbGncvyFs6eq3pFst8H0Nt0lVsXc2OXVqvSpAYNWCo2wdvPIfHygrYAOxelwLwW1b0
 0jlccxrKTYp3C3jl6T+X48jpuS3LKlJ7riD1xEVohWHusPN0rJ3EUKgsb9VQTthBIqq+9IlS0iq
 fMiMnLWukNPw2dONR/QxXLfoPZ5H7wG9eoKPcX0plNaS/NDHoj6kCdWL3Pv96sP+O9/e1D90VbM
 hr87urazhCYVD06/aL8qRWgZclgkS/RtZVWJ9dOqmXhnfElycW75F4EGGI2lZ4Yhs/sAqydQPi+
 SIXU5IDxQjcYu8j03V3CZATWyx9jIHQHuBzXBzipzfNPiyDZo7d4qLHljdkXc7s49mJDklgnDxF
 14q+svLkZJaR6Sg==
X-Google-Smtp-Source: AGHT+IELvmnzQefvvCBzd3q0eXh+iohYWFMwd9mJRWJNImof4RhEuvoV3pqPdufsTrpkhkOaksu/EA==
X-Received: by 2002:a5d:5f54:0:b0:38a:4184:151a with SMTP id
 ffacd0b85a97d-38bf57a662bmr30340495f8f.37.1737880869136; 
 Sun, 26 Jan 2025 00:41:09 -0800 (PST)
Received: from pro2 (p200300e0b73e84005db9294b38aae576.dip0.t-ipconnect.de.
 [2003:e0:b73e:8400:5db9:294b:38aa:e576])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38c2a1885besm7470670f8f.49.2025.01.26.00.41.08
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 26 Jan 2025 00:41:08 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <861pwqt2nt.fsf@HIDDEN> (Eli Zaretskii's message of "Sun, 26 Jan
 2025 10:11:50 +0200")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN>
 <CAOGVwe=coO-8NxNV141G2hMgv4k9v--XoDFrw=5EA+sY6e-X2w@HIDDEN>
 <m2msfe18hp.fsf@HIDDEN> <867c6it4fa.fsf@HIDDEN>
 <m2sep6qaix.fsf@HIDDEN> <861pwqt2nt.fsf@HIDDEN>
Date: Sun, 26 Jan 2025 09:41:07 +0100
Message-ID: <m2jzaiq864.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> I would perhaps check how that switching to single-kboard is done. That
>> is, which C functions do that, what does do_switch_frame do and so on.
>
> See temporarily_switch_to_single_kboard in keyboard.c.

After reading admin/notes/multi-tty, I don't want to go down that rabbit
hole :-).

>
>> And why does the mini_frame in redisplay_internal end up invisible? Is
>> F1 invisible now, and if so why?
>
> I don't think I follow: what mini_frame are you talking about?  AFAIU,
> the scenario described in
>
>   https://debbugs.gnu.org/cgi/bugreport.cgi?bug=75056#92
>
> said that the child frame (which is the minibuffer frame in this
> scenario, right?) was dismissed, so the fact that it becomes invisible
> is explained by that?

(In message #77 I mention the mini_frame in redisplay_internal which was 
invisible for some reason, and that led to a crash in
combine_updates_for_frame.)

In #92 I think Len means disappeared from the screen. As far as I know,
if Len is using Vertico-Posframe, this means the Posframe child frame
has been made invisible (not deleted).

Everything normal up to this point.

Then he switches to the other frame and strange things happen.
Apparently someone somewhere gets confused. The Posframe that was just
made invisible is made visible (why?) and the mini_frame was invisible
(why?), although in another case.

From what I've read so far, I can't explain that. That's why I came up
with my description of how I would try to understand this, without child
frames first. (I don't want to debug this, sorry.)

> Or maybe I didn't understand what was described there, since,
> unfortunately, this uses Corfu without telling enough about what's
> going on for people who are unfamiliar with Corfu. AFAIU, the scenario
> described there was talking about child frames, and the problem was
> that the child frame got displayed although it was dismissed before.

It's Posframe. It does things to display the minibuffer in a child
frame. without having a minibuffer. Also involved is Vertico which is a
completion framework that also does complicated things.

As I said, I would start to try understanding this from the ground up,
and add the complicated stuff step by step. First without anything, then
add Vertico, then add Posframe.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 08:29:19 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 03:29:19 2025
Received: from localhost ([127.0.0.1]:54247 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tby19-0000dR-JN
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 03:29:19 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:33418)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tby16-0000d8-Se
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 03:29:17 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tby11-0002KS-0Z; Sun, 26 Jan 2025 03:29:11 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=t3dtuFsE2Q7JQGMZoCxXplFh00TPj1NKvRbfVTiKdRc=; b=lcd57gJRCSBtpHdgmc1O
 P2SIT/G0Lamf9yoPSRqEKYKU/h7aIa8Tc0igWgXprchnNL9IFeVyusTvqsh5ifKev8HH2PHqY0WPH
 ETGaWEdAbuy0XWld3J1fHRnoI4VNAr1/Xhxf4bT59bJ7hCVp6z7SMPk1meb+KmqMcCcYD5aNG+Tx0
 WxioqpsuUQBDGASJIte8QwgrYCwFJYQqE22GkRL3NvbZEbGaNbRM1vpf/Gm7RZeLOrzhjP1aEuV4i
 9e+FCGMBlJPikcHVcTcpOlIsTxzGTPKeLnnMrwDNolOiAxjnoGMmVVTIAaStFCHfROKhMCT6cprx+
 0ugQlORSQ1VwVg==;
Date: Sun, 26 Jan 2025 10:29:06 +0200
Message-Id: <86zfjernal.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Gerd =?iso-8859-1?Q?M=F6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <m2o6zuq9i6.fsf@HIDDEN> (message from Gerd
 =?iso-8859-1?Q?M=F6llmann?= on Sun, 26 Jan 2025 09:12:17 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
 <m2o6zuq9i6.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: rudalics@HIDDEN, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Cc: martin rudalics <rudalics@HIDDEN>,  lenbok@HIDDEN,
>   75056 <at> debbugs.gnu.org
> Date: Sun, 26 Jan 2025 09:12:17 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> >> Yes. C-x 5 2 can make a new root frame, and only one is visible on
> >> the display.
> >
> > So only the top root frame now returns visible = t?
> 
> Yes.
> 
> (Where "top" in that case is not a z-order thing, but all root frames on
> a tty are just part of the frame lists in parallel to each other, like
> before child frames. AFAIR, something in tty_display_info
> says who owns the terminal.)

So it is still true that a frame other than the top frame returns t
from frame-visible-p, right?  Here's the recipe:

  emacs -Q -nw
  C-x 5 b RET
  M-: (frame-visible-p (next-frame)) RET
   => t

This is different from GUI frames, in that z-order is not considered
on TTYs.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 08:12:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 03:12:29 2025
Received: from localhost ([127.0.0.1]:54205 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbxkq-0008Eb-Rt
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 03:12:29 -0500
Received: from mail-wm1-x32e.google.com ([2a00:1450:4864:20::32e]:53720)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbxkn-0008EI-Iq
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 03:12:26 -0500
Received: by mail-wm1-x32e.google.com with SMTP id
 5b1f17b1804b1-4361f796586so36874745e9.3
 for <75056 <at> debbugs.gnu.org>; Sun, 26 Jan 2025 00:12:25 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737879139; x=1738483939; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=uJFmfzAXrXGAkw9u81dlFQE5NGsS5MEHyqM7YaGVbN8=;
 b=Mllo9GJ3PyCzK2cT+eLqRIEdLO0ZWLIvuc04b0VMJYVQPOeBPTF6cN5gl2Fg7gjhL/
 /KbBevFkBDrqgLhR2TZzH5AEHtpYoJiTr7kpxz1oWgymgcuw+SAFSxefqveYjBTUAZwR
 BWxf37HPc3rfP8Eg2tXau0s0d+fwGNIg5RTkgkfKeRBBiKLGcyG8hv3Y7rsD5aIF5hXa
 4WE4z9WkzNSc1+ezXH0BvtJmEvTEz0DFXp7pq2C6IsjQVx3uuqODaSwnRlVA9Xo0GUpp
 rKUBcluOchQu0aFbtbKPPeN31mt/hllkyXEOD2C5n+34ogwzkqcYaoil7/22q29ik6XM
 tXCw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737879139; x=1738483939;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=uJFmfzAXrXGAkw9u81dlFQE5NGsS5MEHyqM7YaGVbN8=;
 b=hctY6skb5qSVuX05x6oggfNa1tnPC5jXOeTgDhlX/Co7SHHT5Jfyjy24MkSdaGCeGr
 07WwADx1PlMtDjyorcIkHieXz80it3erihkpb3Ahqvn/g6OGfVO4H6UqW1hwzOFxic6L
 OXM1+I0mYMrrt59Gmhx3nQQPcGOwA7PUWjqb1MWMBhBn62U95b9/tUJqwhtnRINFOPXh
 nzq8cY5Xncu1bbSx3q2Ky1fy6NhQOgAleQLyailn1vAuEJtnYskJsRZvVgktuKm94vw3
 H2AcbNJzFuL9oMW1G2xaz39xj0piadn/y6YOfJS9TjiMtoYuG34gqR4BPUc5LX2/CNq5
 Frnw==
X-Forwarded-Encrypted: i=1;
 AJvYcCXHfUc6y4DfqkMYymfrbuq2aFl3xxzyH9QUY/RghaVskX1SXRFi5AXG2WLW87fLEkcMaBR4XA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzAud0UPO+006q7CMaewHVkr+zvALFIHiNeddKVRnlmfMsNLy+E
 Uyt/rN4GY15ENZUK9C+ReFTNgR7StU/0AvYrYYhdKhVVMKAVrzwVAZDVeQ==
X-Gm-Gg: ASbGncu8y2RmHjTDTvgWjmYNjmQzoLiRYCtzddtpSABrHahnxW0T+6cgGUV+9rT0dXp
 Qlu3RuFZovepfxXxsLKoCLFIwur9RxaS9Di7U0XmDRceQe3fqmGBg+2mcI+Yu2KAPr8lM7Suz6f
 7BTsVzDTmwKwkFupbUCcYjlFo1Vvi8FwYEqFAkuuZyFFYB7KRw8EKkjDipBc4eivCZ+6fy6XjhC
 Zl8nBaxga2Jw8OHDnlZpncEh2bwFXKSc1eeJqjEQRMq/6iGZ7xoo49RCBHnQ2XsTMm/s2ZTClbd
 gp18ixhZS4eH5qtJXYrTkY3wNFDWc3SYzLYjVacuReRRKlp1lGavL0Gm7RprSxuV8Vw/KcEMeO1
 1HBGLCK82ovwhSw==
X-Google-Smtp-Source: AGHT+IHGiD23ZVuMwE5bGtei37RQdNq7T2g/Ayov8/MF2ModgfXRhDM7A0UOiTew/QovXVtpGetnaQ==
X-Received: by 2002:a05:600c:4253:b0:436:18d0:aa6e with SMTP id
 5b1f17b1804b1-43894744f5amr356757935e9.5.1737879138817; 
 Sun, 26 Jan 2025 00:12:18 -0800 (PST)
Received: from pro2 (p200300e0b73e84005db9294b38aae576.dip0.t-ipconnect.de.
 [2003:e0:b73e:8400:5db9:294b:38aa:e576])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438bd4d2c0esm86364535e9.33.2025.01.26.00.12.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 26 Jan 2025 00:12:18 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <8634h6t3bm.fsf@HIDDEN> (Eli Zaretskii's message of "Sun, 26 Jan
 2025 09:57:33 +0200")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN> <8634h6t3bm.fsf@HIDDEN>
Date: Sun, 26 Jan 2025 09:12:17 +0100
Message-ID: <m2o6zuq9i6.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: martin rudalics <rudalics@HIDDEN>, lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> Yes. C-x 5 2 can make a new root frame, and only one is visible on
>> the display.
>
> So only the top root frame now returns visible = t?

Yes.

(Where "top" in that case is not a z-order thing, but all root frames on
a tty are just part of the frame lists in parallel to each other, like
before child frames. AFAIR, something in tty_display_info
says who owns the terminal.)

...
>> Did you mean these doc strings should be changed, too, or did you mean
>> something else?
>
> I wanted first to understand what happens with this on TTY frames.
> Then we'd need to update the doc strings and also the manuals.

Okay. Maybe we should wait a bit to see how far Martin goes. AFAIU,
minibuffer-only child frames are possible now, for example.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 08:12:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 03:12:02 2025
Received: from localhost ([127.0.0.1]:54201 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbxkQ-0008Df-6y
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 03:12:02 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:59318)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tbxkN-0008D4-RR
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 03:12:00 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tbxkI-0000k2-83; Sun, 26 Jan 2025 03:11:54 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=wbMaAWn0BKcpeNe2PdzRwV0wUC2yPXwQjRyenT1YKkc=; b=SkHtNJuzZIIqc8R40y57
 cXQ+bCCK9U9q36JyqZdi5xehlbqPJfYyPWcXTLVI5cTeQk7eJflFfsiJLDt2J9Fo8zoNs84NVeQDb
 AeI3BY4j2iK25/w0V6THPHPPVi5KYeGXm4cSwBDB0mvhdQIBFNDvXGcCjTjXZphLS+MzlvdifHgyj
 j7lVBeonDbFMNl6cx8Cpws9oOb9wHlmNR8nvPAJgxHKFhafLdMv5HeNQ33/6KN3u1zrUy4gnk1eBc
 v6mNaCmc4hv73+UsUYjjPXBLDkUdYYFwV1Qsruv+S7FPpfwYOoB/58dQ5W8fokbi+hyN7KwHB0ojp
 udsYT7WYP8CPYg==;
Date: Sun, 26 Jan 2025 10:11:50 +0200
Message-Id: <861pwqt2nt.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Gerd =?iso-8859-1?Q?M=F6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <m2sep6qaix.fsf@HIDDEN> (message from Gerd
 =?iso-8859-1?Q?M=F6llmann?= on Sun, 26 Jan 2025 08:50:14 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN>
 <CAOGVwe=coO-8NxNV141G2hMgv4k9v--XoDFrw=5EA+sY6e-X2w@HIDDEN>
 <m2msfe18hp.fsf@HIDDEN> <867c6it4fa.fsf@HIDDEN>
 <m2sep6qaix.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Cc: lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
> Date: Sun, 26 Jan 2025 08:50:14 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > What happens in this case is that F2 cannot be communicated with:
> > typing anything there gets no response, until we exit the minibuffer
> > on F1.  Then everything you typed on F2 gets processed.
> >
> >> Find in the code what actually happens when switching from F1 to F2 and
> >> compare that with admin/notes/multi-tty has to say about that. Does that
> >> document say something about what we've seen the code doing? Open issues
> >> maybe? Or general considerations?
> >
> > What the code does when Emacs enters a minibuffer is switch to a
> > "single-keyboard mode", whereby it only processes keyboard input from
> > the frame which entered the minibuffer.  This is because Emacs has
> > only one input queue.
> 
> I would perhaps check how that switching to single-kboard is done. That
> is, which C functions do that, what does do_switch_frame do and so on.

See temporarily_switch_to_single_kboard in keyboard.c.

> And why does the mini_frame in redisplay_internal end up invisible? Is
> F1 invisible now, and if so why?

I don't think I follow: what mini_frame are you talking about?  AFAIU,
the scenario described in

  https://debbugs.gnu.org/cgi/bugreport.cgi?bug=75056#92

said that the child frame (which is the minibuffer frame in this
scenario, right?) was dismissed, so the fact that it becomes invisible
is explained by that?  Or maybe I didn't understand what was described
there, since, unfortunately, this uses Corfu without telling enough
about what's going on for people who are unfamiliar with Corfu.
AFAIU, the scenario described there was talking about child frames,
and the problem was that the child frame got displayed although it was
dismissed before.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 07:57:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 02:57:48 2025
Received: from localhost ([127.0.0.1]:54145 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbxWe-0007Rv-0f
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 02:57:48 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:53566)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tbxWa-0007Ra-KO
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 02:57:46 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tbxWU-0007lR-UV; Sun, 26 Jan 2025 02:57:38 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=IwkU+5SKYar7aHg9cXEkD65gK51wFsXJiFP75+rHIF4=; b=D6K+MbusWvWG7xJy0FHw
 bAkyHahgg4ruMwd+U3+GBvpWEu/2APTvSpIMddyMzMUOwab1bZ3dwf1Uc+8LJjwPZXMCQAtM4taDE
 GSGuu+X7Eey4Su7nHH/76XDem3mF3LG+AJenqaKqt3i3NfyHy9rp/4JjWPun11hmL0pPQtHyB6+b+
 9m0QELVnYGH7jzxFcQ6TYVC7IvLv98xWsfvchQeBXwSHnaMcDYJu6Dl1FpdT67+uJnIH7MHmJborZ
 496fSebgxeRF00buH1vgwm5tSULuJlCbJ85y9eTjwEC8q3pCW1rFq96zsP+AxZmuxGBUU3I8/npS0
 5ttwS9Vf6vwTFg==;
Date: Sun, 26 Jan 2025 09:57:33 +0200
Message-Id: <8634h6t3bm.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Gerd =?iso-8859-1?Q?M=F6llmann?= <gerd.moellmann@HIDDEN>, martin
 rudalics <rudalics@HIDDEN>
In-Reply-To: <m2ed0q1475.fsf@HIDDEN> (message from Gerd
 =?iso-8859-1?Q?M=F6llmann?= on Sun, 26 Jan 2025 07:26:06 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
 <m2ed0q1475.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Cc: lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
> Date: Sun, 26 Jan 2025 07:26:06 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > 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?
> 
> Martin mentioned in passing that he thinks iconifying frames on ttys
> should perhaps do something. So it's maybe a "not yet".

What could that "something" possibly be?  Martin?

> > More importantly, what frames could have this function return nil?
> > E.g., can a non-child frame return nil?
> 
> Yes. C-x 5 2 can make a new root frame, and only one is visible on
> the display.

So only the top root frame now returns visible = t?

> > 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?
> 
> raise-frame is make-frame-visible + changing z-order, make-frame-visible
> and make-frame-invisible change the "visible" flag. (Just notices
> make-frame-visible talks about "X window", hm.).
> 
> Did you mean these doc strings should be changed, too, or did you mean
> something else?

I wanted first to understand what happens with this on TTY frames.
Then we'd need to update the doc strings and also the manuals.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 07:50:25 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 02:50:25 2025
Received: from localhost ([127.0.0.1]:54135 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbxPU-00075s-GR
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 02:50:24 -0500
Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]:43176)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbxPS-00075b-7t
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 02:50:22 -0500
Received: by mail-wm1-x329.google.com with SMTP id
 5b1f17b1804b1-4363dc916ceso28264585e9.0
 for <75056 <at> debbugs.gnu.org>; Sat, 25 Jan 2025 23:50:22 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737877816; x=1738482616; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=NDVfybWdUjH0Rt8pmGOlgUY8v8nW94N2mPsWKKzIU/s=;
 b=P0XwNA3xOkgXWkVPSDltn8bYD9kYjHUd4/hv/r/XfXPuN/9gfUs1RRvDnTyVeA7Fek
 efbheIbuD+wvtn7VKJRV9D1ftpFqc/PCBgOBTXLxM2AJF4AQpHH0fs1KHdUZvTg7ODXY
 jSjZyYD2fO5Jva6lCjJVo5SADCmaNnDrJOAEh8cdQYrirof2Q/cj/UlYMXboHGH0XQtE
 mXVjlDJisrEVdOXCiRhFyTDhTVlNhhJrlpXEgG+PvxkZKz+yXHaqnZ4ZFP/pnsrWWdSL
 IUs5I/bpAHK42ZhRqt6Wbk9IKdfGBI9cJnDqu9LfACqmIVDlU4EoDThmenp+2AajiiMj
 M06g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737877816; x=1738482616;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=NDVfybWdUjH0Rt8pmGOlgUY8v8nW94N2mPsWKKzIU/s=;
 b=P51T1C7HS/Lo42ch1anPUqVCgG6UhQxsCxvwPJD70oGdpwjrURTjv05lya9+TSc8Mo
 lXJmk6RIyiOa/nB3K4FMutn4wTp5g6qXg1QpUNL/jGJ5mthJ/hKH+p8lmnPsKWhZHdV2
 J1BX/24BWkyUcQDLc9upFcwG/P5XLm3LUioWLjPVmiDVhmKW3kUshugXQNNAEKl4QmCF
 L+y2YXDUL2HG3bLQ5UWHawsdN2l9Db8RBOHyBlHbf6sRVlLeaUBpT5bZTFgFSU5knU7f
 hiRK7GIMqiSb7qUsQN/JzlAMY8xBssWIyKHq9ntguUA/8gBd11TMXMrGwsqrVeCtcOyt
 VkxQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCUqSXarGwgIeIzAuqw02FR6mwJ6qCeCqUOmPn6vPLZYhdKJTURXGwnz1uw+eve/sXydmPtOfw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyG/Cpg2/JFrRL0eKyjeIPKF4nUvpb30VwLLcCNiV9xE7NvVpp+
 8e7AY0lECeEy6R0VPpqAkr/QGn4lmPOLm4ca1ogZl227xtDcFj9ekMakYA==
X-Gm-Gg: ASbGncsScZwzEp+u4WAKe37bhjIj69nSUjNR6NQxbRs6H4yjJWCZ4OFwFjK2fghYSXQ
 ite+mvjaKzODLOQ/yrwUHMLrtou1dxD3XSAcAG/svqMxEvzaAv5HZFFRmPgq8NLJk0K0tyd6aqr
 9VNCsVxRtL9Jc5fmTeKe5x710U2wuI2gNh9QWYmeAwzzSQ7MxSMHW8dnIxTBINUYItbJENlU09w
 Dyq4EEcfSgFcJGf9rX83IdUYzFN0fMcw32LTgXYUHDGaSkeRTvtwymhilK/SuCoSNhiinseR/r7
 NBap4/54FVyiakVVAhFlo++IRTO7wiFEwfoOD1IfE2MIC9Ev4JZdcAkNG9b+N+ZLq3ob/3vr21D
 TJwFHuM00H9kQog==
X-Google-Smtp-Source: AGHT+IFDF/Oq9M1RPTgiY9aRAdRBvNu7IZRa5oMLv07GXvq5lPFs5OpajMIisd3a8+3FAaLeu0ebhg==
X-Received: by 2002:a05:600c:3b87:b0:436:2155:be54 with SMTP id
 5b1f17b1804b1-438bd052e25mr78288065e9.1.1737877815595; 
 Sat, 25 Jan 2025 23:50:15 -0800 (PST)
Received: from pro2 (p200300e0b73e84005db9294b38aae576.dip0.t-ipconnect.de.
 [2003:e0:b73e:8400:5db9:294b:38aa:e576])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438bd4857c3sm85957645e9.10.2025.01.25.23.50.14
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 25 Jan 2025 23:50:15 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <867c6it4fa.fsf@HIDDEN> (Eli Zaretskii's message of "Sun, 26 Jan
 2025 09:33:45 +0200")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN>
 <CAOGVwe=coO-8NxNV141G2hMgv4k9v--XoDFrw=5EA+sY6e-X2w@HIDDEN>
 <m2msfe18hp.fsf@HIDDEN> <867c6it4fa.fsf@HIDDEN>
Date: Sun, 26 Jan 2025 08:50:14 +0100
Message-ID: <m2sep6qaix.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> I would first try to find out what does multi-tty Emacs do when Posframe
>> is not involved. Say we have two frames F1 and F2 on different ttys. On
>> F1, I enter the minibuffer with C-x C-b for example, and open a
>> completion window.
>
> I guess you meant "C-x b TAB".  "C-x C-b" doesn't activate the
> minibuffer.

Right, sorry, I forgot that I have consult-buffer on C-x b.

>> At that point, I switch to F2.
>> 
>> What would a user then expect?
>
> What happens in this case is that F2 cannot be communicated with:
> typing anything there gets no response, until we exit the minibuffer
> on F1.  Then everything you typed on F2 gets processed.
>
>> Find in the code what actually happens when switching from F1 to F2 and
>> compare that with admin/notes/multi-tty has to say about that. Does that
>> document say something about what we've seen the code doing? Open issues
>> maybe? Or general considerations?
>
> What the code does when Emacs enters a minibuffer is switch to a
> "single-keyboard mode", whereby it only processes keyboard input from
> the frame which entered the minibuffer.  This is because Emacs has
> only one input queue.

I would perhaps check how that switching to single-kboard is done. That
is, which C functions do that, what does do_switch_frame do and so on.
And why does the mini_frame in redisplay_internal end up invisible? Is
F1 invisible now, and if so why?

And then see if that all is what admin/notes/multi-tty says is intended,
if there are open issues, and so on.

Something like that, maybe.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 07:33:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 02:33:57 2025
Received: from localhost ([127.0.0.1]:54093 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbx9Z-00069r-GQ
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 02:33:57 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:42826)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tbx9V-00069a-Un
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 02:33:55 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tbx9Q-0005ZG-Fj; Sun, 26 Jan 2025 02:33:48 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=fbULLZaAuJ56tLtbrgPOVN1S4tp0rm+RQKePNjoQjSk=; b=KRi7rUbGl1Ce0J/Xd7HI
 56l4xBxkSb2BlsitCVRJ2bKts41I3QSJWgLw5yhHwi0bFf7jsyfWvsI5JZOUSYP+A6q/OzYQmNY1u
 HKP0RRj/Wy1zr3msScvqYENY6/xeGA12aA62iznPU+KzWwFpuVPts0HHEAnI/aeTgOscDbeeR10QQ
 f15IT2oY4Dj0BXmmi0im5a8SkvSxjHYouwi48z8SSIpyPT2YcwHQ5Znm9Bbk9yeoVgXlzz6F6XaPo
 l/Ij2u3i6HbWp18kOAEVUFzQH8r7h1PXtZxzoxHgSjEfbNll3G6ho8JaCZzvsqAT1Xzx8PcLQHfXq
 mf/mdcEwwFZ/SA==;
Date: Sun, 26 Jan 2025 09:33:45 +0200
Message-Id: <867c6it4fa.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <m2msfe18hp.fsf@HIDDEN> (message from Gerd =?utf-8?Q?M?=
 =?utf-8?Q?=C3=B6llmann?= on Sun, 26 Jan 2025 05:53:22 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN>
 <CAOGVwe=coO-8NxNV141G2hMgv4k9v--XoDFrw=5EA+sY6e-X2w@HIDDEN>
 <m2msfe18hp.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Cc: Eli Zaretskii <eliz@HIDDEN>,  75056 <at> debbugs.gnu.org
> Date: Sun, 26 Jan 2025 05:53:22 +0100
> 
> Len Trigg <lenbok@HIDDEN> writes:
> 
> > OK, so would I be correct that our current understanding of this bug
> > is now best described as "something is setting previously invisible
> > tty child frames as visible when focus changes to an alternative tty
> > client"? (Possibly some part of the multi-tty code that still assumes
> > that all tty frames are always visible). This then causes the
> > non-focused client to display the tty child frame with minibuffer that
> > then blocks input from other clients due to the existing single-kboard
> > limitation.
> 
> "Understanding" is a bit much said, as far as I am concerned. If I
> wanted to debug this, which I don't :-), my start hypotheses would be
> that this has to do with the minibuffer, yes.
> 
> I would first try to find out what does multi-tty Emacs do when Posframe
> is not involved. Say we have two frames F1 and F2 on different ttys. On
> F1, I enter the minibuffer with C-x C-b for example, and open a
> completion window.

I guess you meant "C-x b TAB".  "C-x C-b" doesn't activate the
minibuffer.

> At that point, I switch to F2.
> 
> What would a user then expect?

What happens in this case is that F2 cannot be communicated with:
typing anything there gets no response, until we exit the minibuffer
on F1.  Then everything you typed on F2 gets processed.

> Find in the code what actually happens when switching from F1 to F2 and
> compare that with admin/notes/multi-tty has to say about that. Does that
> document say something about what we've seen the code doing? Open issues
> maybe? Or general considerations?

What the code does when Emacs enters a minibuffer is switch to a
"single-keyboard mode", whereby it only processes keyboard input from
the frame which entered the minibuffer.  This is because Emacs has
only one input queue.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 06:26:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 01:26:21 2025
Received: from localhost ([127.0.0.1]:53966 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbw69-0002MP-0g
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 01:26:21 -0500
Received: from mail-wr1-x42b.google.com ([2a00:1450:4864:20::42b]:48310)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbw64-0002M5-B3
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 01:26:18 -0500
Received: by mail-wr1-x42b.google.com with SMTP id
 ffacd0b85a97d-3862b40a6e0so2440512f8f.0
 for <75056 <at> debbugs.gnu.org>; Sat, 25 Jan 2025 22:26:16 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737872770; x=1738477570; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=fNT585kcEnhHVOKOC2hnxNDJnEI9/OF0ZL/RFz1tOG8=;
 b=IHC0w+N8hn+8jv3RK+9r44S8QaY9TjqHa41anM0O8GdOJgAlv5+IqJEgz9HCgl/3E1
 Wpmo8Uq9kpZcueztOqPEef5lUlbJf10Z+DbPXFAHgcWjpyc5Iq1uLxYeyaL8PNN+Ik+i
 SvFfz5bW7j3hWi2MZgiApRhgoeHIx+GqtZ9FxVafYzmAH1RJV6TPsGiAbVUQpaMscf4N
 TlNXxhT1YDDaE/X3GRK16c56zMY6w452YGfHML0ukCiSaYCc4wNArUKk56DD7WbEMKXc
 7HyO6rPJiw8sbh+1LzX++76Z0bJ/M4zzf0fDo868YsJRmkAMd8+ag6pbqVopaOQ6w6RF
 Eagg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737872770; x=1738477570;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=fNT585kcEnhHVOKOC2hnxNDJnEI9/OF0ZL/RFz1tOG8=;
 b=jdryagkPG46de1+itTCSjZjWayutZ7P1Bplk3CxrBh+NGJbRVdF7ZTSaGErR1hUCck
 9FMbso3rGwd6it9BqGp5QiR3Mh2P4JiK+DGDT0qLIApVfIA/D0j2JExGVg1JrvVs2Fkg
 tzvYM0fs/Qh4C206T26uQJoo1fu5reMhnS6/xEBkQ5yFXHAzTxHZMt+EDRS4mItI1Mlb
 7Xj5YQOIJ/QvmVRPMhnZ9+yVP0FwzuKBh6f/yM7awzh5xpKR0yYNBZTcxMXjJM8guXiO
 qX26NcvPj8cAImcoT9SN1OKPYVKHZP2gNbVIju4llMJU/Co6fRJ5eKOJRukDrTLgusVf
 0nsQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCX4w2ctL0Ihei2/CEDlimro7J4qbzZjc5DsSdlMWtk6St11JSWauGUIf9xhESYjFH/i6vJYfw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxJSLbz8bwiq2tDhWUYeblz4invky7pKZnarTM14BEm2jghriUi
 jqkO0QG9p9WQ7a5qgqMT6D2AmIqZDm0V16VJTcZSlm+bNQPGsFrMkbuewA==
X-Gm-Gg: ASbGncuj/q9swx6MIHfiVyP7lJrF2U6sIdhYGstSwa4q0qNTY5M7bgi2MjJe1h3rvvc
 TK5F7ilAB0MHN/Gn5j44wV4AXgaEP4KuesnmfazN1kHN1Ui3moaAshXVtuotM5V9+SEzcp2ZXTO
 Y/lzytzDIDUCeltF/d2dW+nJU7fFOcqE+sgusQpvyL7du1jIGbfEx655Z5Dz+o520k9ld1keCD0
 dfIpSVq2JDN9vO8F7/3es8LZxuTki13UVSIVHdGKUPjrPzIvaYNIWHB5EnjlnBhVAd+myzzLG90
 bwh2FKQLSCNqa6vGRQv836D1kf54OCyQWsOAAgzK0AoCJFCGWLJ0GF/sT495BFQ6EMPza2BOstZ
 JRPaQg1viu4eOuw==
X-Google-Smtp-Source: AGHT+IElVpPe0DTofNIEjWT2MJXcKUz7ThNGhH1XN3V1FkRHD0vCvStzReLf9qZRaZt15HoGz94tqQ==
X-Received: by 2002:a5d:64ec:0:b0:38a:88ac:ed15 with SMTP id
 ffacd0b85a97d-38bf564d6aemr28568087f8f.4.1737872769479; 
 Sat, 25 Jan 2025 22:26:09 -0800 (PST)
Received: from pro2 (p200300e0b73e84005db9294b38aae576.dip0.t-ipconnect.de.
 [2003:e0:b73e:8400:5db9:294b:38aa:e576])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38c2a17630asm7369962f8f.6.2025.01.25.22.26.07
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 25 Jan 2025 22:26:08 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <86msfet8d4.fsf@HIDDEN> (Eli Zaretskii's message of "Sun, 26 Jan
 2025 08:08:39 +0200")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN> <86msfet8d4.fsf@HIDDEN>
Date: Sun, 26 Jan 2025 07:26:06 +0100
Message-ID: <m2ed0q1475.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

> 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?

Martin mentioned in passing that he thinks iconifying frames on ttys
should perhaps do something. So it's maybe a "not yet".

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

Yes. C-x 5 2 can make a new root frame, and only one is visible on
the display.

> 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?

raise-frame is make-frame-visible + changing z-order, make-frame-visible
and make-frame-invisible change the "visible" flag. (Just notices
make-frame-visible talks about "X window", hm.).

Did you mean these doc strings should be changed, too, or did you mean
something else?





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 06:08:49 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 26 01:08:49 2025
Received: from localhost ([127.0.0.1]:53934 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbvpB-0001N1-6T
	for submit <at> debbugs.gnu.org; Sun, 26 Jan 2025 01:08:49 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:42638)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tbvp8-0001Mn-GK
 for 75056 <at> debbugs.gnu.org; Sun, 26 Jan 2025 01:08:48 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tbvp3-0006R3-6n; Sun, 26 Jan 2025 01:08:41 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=By/UMQb3YXclo8RixwqXqEYytys3PEK+86pAYNeUxPU=; b=f/UrEa16hDzQZFHP4dny
 WFG7UPWCFy3xMWZmSPKG33Lfmgn45EyVD00+aIkUB2F1Rc5sByhGKg1OAm499jqWbcQ9JHgIfitTl
 BT4KkwA5RablPIYGma61aqi8sJvZ/MJGPFyOCmMJg8Mbl3QDMU6aXeuw9Lty0s88xMbiDKhCrKW7x
 y6pDt/5Mn7/Q4/Q1vlhuEaB2RfCeqwc/egYpqTbrVG8SbGBoY59AyCJpaGD9jfsmKnDHvteT9/4u5
 sxltaRxSARtxGrWSqixLXDKf8fSH0tBCn+iikYfWs3hQJRrndFh1WgXr/kXKmYSKRvHXFSS1cIg6+
 ip+lfx2bpM5tGg==;
Date: Sun, 26 Jan 2025 08:08:39 +0200
Message-Id: <86msfet8d4.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Gerd =?iso-8859-1?Q?M=F6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <m2r04q1wrz.fsf@HIDDEN> (message from Gerd
 =?iso-8859-1?Q?M=F6llmann?= on Sat, 25 Jan 2025 21:08:48 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Cc: Eli Zaretskii <eliz@HIDDEN>,  75056 <at> debbugs.gnu.org
> Date: Sat, 25 Jan 2025 21:08:48 +0100
> 
> Len Trigg <lenbok@HIDDEN> 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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 26 Jan 2025 04:53:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jan 25 23:53:36 2025
Received: from localhost ([127.0.0.1]:53804 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbueN-0005kD-Ov
	for submit <at> debbugs.gnu.org; Sat, 25 Jan 2025 23:53:36 -0500
Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]:51479)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbueK-0005jX-8x
 for 75056 <at> debbugs.gnu.org; Sat, 25 Jan 2025 23:53:33 -0500
Received: by mail-wr1-x42f.google.com with SMTP id
 ffacd0b85a97d-388cae9eb9fso1868856f8f.3
 for <75056 <at> debbugs.gnu.org>; Sat, 25 Jan 2025 20:53:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737867206; x=1738472006; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=+5zphUyptayFBa0lDjDXty3VBJsixL+wniIQxw9P6xY=;
 b=IeXQUOuAI7xjRrNgmFUfEnHvfOQtpwDkDanm351yWUUa4+CFHwLQWGf2ScQV/zTOf/
 oF6nClfrFmo2XN80FhrvLawqRuC4BwRasPWp/xrXZw14pkJYj01RxhbTA/Y50HDbVxpO
 H9UL+RvNEfzYF6N3TNSb3huO2qgDGr6a9rkEe8LO0vdh19CRNoT7yR4zJgrbcjGjDJKZ
 g19KuuBC188EEaz6pwgGpojkl986nvrM/+Jw+9HeWnfi8aDWRAWqRJEZ1UD8vvf4tYXE
 tpx1Lf13hR/h5uJyqTJD+rAxpbwtU9d9kTG2170AB5TzN0Efq47NBURL8AAZ5WuSgG+w
 UwOQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737867206; x=1738472006;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=+5zphUyptayFBa0lDjDXty3VBJsixL+wniIQxw9P6xY=;
 b=WuT6IdbV0TkWV0FzgK6UYUOBAa2ZHq1Ewi8D1bsjt2+ebkQdgRS52wxnp+4txUNG+0
 LwoJE9mwPtCWPPdz6XCQUw4et7o7ZiuzvG9EoAwH9yvEwqC3phSm6g2R6Y5EcYAC0Gkv
 Mi3I/W+oJHogMCM4B4Ln+WEt+EoqBKF/GUI1BHn2Exr8R/rQFD5NxjK0rLBp94n07b8c
 qT4QrPkwZYs8Tx5aJ8cRdz+gUALtx56OUSznh9Ih3H2OyJmzEB90nDDbE0zui0PFsz8p
 p5cY5c1g1c1szDC5WjsKZ7d487vQ7gIZSmfmjVkktHCZCVq9j8GtBZXjqvRTqBkdWcJ8
 5v6g==
X-Forwarded-Encrypted: i=1;
 AJvYcCV5Dc24cQSdn9DzWNqVGfHZQCfDc1LOudv+3N4grlDJcxyYT5wPkahm4GEJNwWftvU6iXuC9w==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwDw7zVQ9eCG7K5qIsiSsW5lR6TMlKr9NqRylwZJr7oF5044jMx
 5Ey9cbxyRUVSyolU7yFiuJdaRoEG6ukUy1SSfOmEKA1lq/YwtUIyToj+bA==
X-Gm-Gg: ASbGncubOwL2csUMmtLM32z9GQacswvJpe+Qq9n4az/phmUqD1Ny8IVe6lbD6H5fG5v
 M5u4Z9iNgt8u2mH2+PdB9wTUrbcTWhEXBedeQF71fe8YceW5DkcFs5nMRW9xD00JZH7gw8OzK/Y
 jIxKNvjfPfNmo8QGk/imWBaWhDymqBVTM9Sb+4A+IeZj1JDj8SJ93MVxgJXnk/s0RVyAYhwik/L
 ohlbGSLU8ByLFyCpDhznZexasBCNBl+VtcSaax1fs5aqp2e8fnLJy58KHrc+dNBJUNXhSdI22yI
 kHOjdfdoNz1CimgYMhkb87ixxEJYe7++mSp7Sa6bAaYBeR+BfwULKrIFQobkO2PyxbbPX1GU89s
 3UOl6YA3XVEwrdg==
X-Google-Smtp-Source: AGHT+IGJXzJ8gYBCukDc+CPc9ZM2O/t1S60M5d6v25qoBt1PU+hxAak5JKdxVmeAlqoIFjC6ojAEFg==
X-Received: by 2002:a5d:5f50:0:b0:382:49f9:74bb with SMTP id
 ffacd0b85a97d-38bf57a9a6bmr37203721f8f.35.1737867205472; 
 Sat, 25 Jan 2025 20:53:25 -0800 (PST)
Received: from pro2 (p200300e0b73e84005db9294b38aae576.dip0.t-ipconnect.de.
 [2003:e0:b73e:8400:5db9:294b:38aa:e576])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38c2a1144f6sm7148320f8f.0.2025.01.25.20.53.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 25 Jan 2025 20:53:24 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <CAOGVwe=coO-8NxNV141G2hMgv4k9v--XoDFrw=5EA+sY6e-X2w@HIDDEN>
 (Len Trigg's message of "Sun, 26 Jan 2025 11:39:33 +1300")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN>
 <CAOGVwe=coO-8NxNV141G2hMgv4k9v--XoDFrw=5EA+sY6e-X2w@HIDDEN>
Date: Sun, 26 Jan 2025 05:53:22 +0100
Message-ID: <m2msfe18hp.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Len Trigg <lenbok@HIDDEN> writes:

> On Sun, 26 Jan 2025 at 09:08, Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN=
m> wrote:
>
>  > 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.
>
> OK, so would I be correct that our current understanding of this bug
> is now best described as "something is setting previously invisible
> tty child frames as visible when focus changes to an alternative tty
> client"? (Possibly some part of the multi-tty code that still assumes
> that all tty frames are always visible). This then causes the
> non-focused client to display the tty child frame with minibuffer that
> then blocks input from other clients due to the existing single-kboard
> limitation.

"Understanding" is a bit much said, as far as I am concerned. If I
wanted to debug this, which I don't :-), my start hypotheses would be
that this has to do with the minibuffer, yes.

I would first try to find out what does multi-tty Emacs do when Posframe
is not involved. Say we have two frames F1 and F2 on different ttys. On
F1, I enter the minibuffer with C-x C-b for example, and open a
completion window. At that point, I switch to F2.

What would a user then expect? I can't really answer that question
because it's not a use-case I'm familiar with. Maybe the minibuffer
should somehow be "migrated" from F1 to F2? Including the completions
buffer? Or should Emacs display an error when we select F2 and maybe try
to switch back to F1? No idea. If the minibuffer is migrated to F2, what
would I expect to happen on F1? Closing the completions window, leaving
the minibuffer?

Then see admin/notes/multi-tty. What does it say about things? Or maybe
Elisp Info.

Then look at what really happens, and compare.

Find in the code what actually happens when switching from F1 to F2 and
compare that with admin/notes/multi-tty has to say about that. Does that
document say something about what we've seen the code doing? Open issues
maybe? Or general considerations?

I think only if that all works as expected, including Vertico and others
which play with the minibuffer, only then I would bring Posframe into
play.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 25 Jan 2025 22:39:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jan 25 17:39:58 2025
Received: from localhost ([127.0.0.1]:53025 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbooo-0000Bc-D0
	for submit <at> debbugs.gnu.org; Sat, 25 Jan 2025 17:39:58 -0500
Received: from mail-lj1-x233.google.com ([2a00:1450:4864:20::233]:49572)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1tboom-0000BK-Ab
 for 75056 <at> debbugs.gnu.org; Sat, 25 Jan 2025 17:39:56 -0500
Received: by mail-lj1-x233.google.com with SMTP id
 38308e7fff4ca-30613037309so33010381fa.3
 for <75056 <at> debbugs.gnu.org>; Sat, 25 Jan 2025 14:39:56 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737844790; x=1738449590; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=YvzGjEfpn2mNCnplSywLoKTftx5G4reFwysyJZdvaH8=;
 b=aful9u//My1hXFmryQV//HrwiZcUx/5Z18UoNCpU29nXgmuDxrQ24pekQEVyDMszc3
 keRWOWZyMc9a8YoXUjLlZb36aY8pnQlG9yzqeSE15idOrDAzej+qPkOzBms63TZ2pVlL
 ezXRh1ZvPD+V0tn5cMD/BfFfruwOR8wNVTt1Mdcunaln98PQUXsSPm8oZ6C/F3X8LhZf
 10rnJNdd4wGT/auUTlXDVvnukOKClfBDkLPuOEqxh1iUJI9wcyRLNNJeob/5OhGf69X9
 wq1v4WRN1b1xUAj8sVBH+3ujSlzmiKgPLpQ018ayOGSWLlrcjKU5tWwtaXFd/OL7AhyR
 GX2Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737844790; x=1738449590;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=YvzGjEfpn2mNCnplSywLoKTftx5G4reFwysyJZdvaH8=;
 b=SdyNAou/vppoDH2eSBO1tC81W8OnjrBDYxTRgAsVeYCV4av1oInqBDtxS37mVfw8yN
 9fJMllUOz3C//TWSCIRWWpGd6eeQsETGvKi8vRKRTzFXe9BPspbbKufnnDN9Q8aYyIhl
 /I5ocQH65ENtgLbGvNKuwny58affXgoZtxvD4k2eMJnkoYBlIvnC0YgKrLouCzj1yOVe
 RrCWTS1oH/fSoxfnyYW3TSWScQhtQvOqp5QuY7ah2pfYwL5GuFgMfKAaatuCZ5ovutwS
 ID+tK/kMfHVD6WqEpMRXYNnfyMCQfeOVQegs8NZoycJMBjWftQHoGWDDzXzZ5rrRV3Bc
 KAqA==
X-Forwarded-Encrypted: i=1;
 AJvYcCXghJlwEFrZlcKhACKWve4pVd3+tCgSNxvHjE9StfgP1ebT4w1OAkU5EHc+Dop/4PUgyXVuIg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzOJE1SunwKxzbpQF7amdG/mBZJTsk+xR9HoaBynAiG4FOT1J0r
 dPBsAo1vDJfoxhivD9UbK8Fgf/FTlm7niPzdfNH4oF17CKX7NwecGDXgK6Ll+8vd5bZS6H83e0d
 +kmi8j3jso0vw7zVMGgbHgrx385M=
X-Gm-Gg: ASbGncuw2K6ZRFs8iqnybOYKrPPOlu8k2xtiUCbdJbdexlqY2VbvpD81sUgG1n8Vwhp
 vL1cdpwWyBKvs1Tp4+DFvqq5iqm91M4oiU1vFdLrTU2OfZwWrdaKAf4FdH5Sv
X-Google-Smtp-Source: AGHT+IHefos89uZPnp97ZeWpAEznygz7GPVBy3DzpC1Ie/6J8lEU70dzfxxBmCa4esJip0a1k6rDZyjni45OtUSbn5Q=
X-Received: by 2002:a05:6512:485c:b0:540:2122:fae9 with SMTP id
 2adb3069b0e04-5439c2859d1mr9371186e87.46.1737844789536; Sat, 25 Jan 2025
 14:39:49 -0800 (PST)
MIME-Version: 1.0
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 <m2r04q1wrz.fsf@HIDDEN>
In-Reply-To: <m2r04q1wrz.fsf@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Sun, 26 Jan 2025 11:39:33 +1300
X-Gm-Features: AWEUYZmtnhSZUr0tNTfUrEDfzO3mNTL1rpga_DEcy6A-5eXYXC0ie_8G-WYFFRw
Message-ID: <CAOGVwe=coO-8NxNV141G2hMgv4k9v--XoDFrw=5EA+sY6e-X2w@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Content-Type: multipart/alternative; boundary="0000000000005aef1b062c8f85be"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--0000000000005aef1b062c8f85be
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sun, 26 Jan 2025 at 09:08, Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
wrote:

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

OK, so would I be correct that our current understanding of this bug is now
best described as "something is setting previously invisible tty child
frames as visible when focus changes to an alternative tty client"?
(Possibly some part of the multi-tty code that still assumes that all tty
frames are always visible). This then causes the non-focused client to
display the tty child frame with minibuffer that then blocks input from
other clients due to the existing single-kboard limitation.

Cheers,
Len.

--0000000000005aef1b062c8f85be
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote g=
mail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Sun, 26 Jan =
2025 at 09:08, Gerd M=C3=B6llmann &lt;<a href=3D"mailto:gerd.moellmann@gmai=
l.com">gerd.moellmann@HIDDEN</a>&gt; wrote:<br></div><blockquote class=
=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rg=
b(204,204,204);padding-left:1ex">
&gt; I could see that prior to tty child frames that was necessarily true,<=
br>
&gt; but now we have tty child frames shouldn&#39;t that documentation be<b=
r>
&gt; updated? (I&#39;m assuming at the code level it&#39;s no longer true s=
ince<br>
&gt; posframe hides it&#39;s frames by simply making them invisible).<br>
<br>
Yes, that&#39;s right, The visibility thing on ttys is now more like on<br>
GUIs. We have to change the documentation.<br></blockquote><div><br></div><=
div>OK, so would I be correct that our current understanding of this bug is=
 now best described as &quot;something is setting previously invisible tty =
child frames as visible when focus changes to an alternative tty client&quo=
t;? (Possibly some part of the multi-tty code that still assumes that all t=
ty frames are always visible). This then causes the non-focused client to d=
isplay the tty child frame with minibuffer that then blocks input from othe=
r clients due to the existing single-kboard limitation.<br></div><div><br><=
/div><div>Cheers,</div><div>Len.</div><div><br></div><div><br></div><div>=
=C2=A0</div></div></div>

--0000000000005aef1b062c8f85be--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 25 Jan 2025 20:09:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jan 25 15:09:00 2025
Received: from localhost ([127.0.0.1]:52803 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbmSh-0001A2-Um
	for submit <at> debbugs.gnu.org; Sat, 25 Jan 2025 15:09:00 -0500
Received: from mail-wr1-x42e.google.com ([2a00:1450:4864:20::42e]:42133)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbmSf-00019g-O2
 for 75056 <at> debbugs.gnu.org; Sat, 25 Jan 2025 15:08:58 -0500
Received: by mail-wr1-x42e.google.com with SMTP id
 ffacd0b85a97d-3862d16b4f5so1952302f8f.0
 for <75056 <at> debbugs.gnu.org>; Sat, 25 Jan 2025 12:08:57 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737835731; x=1738440531; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=ZM4blquCb6uvAuMD/9LtpFYTUCDuoG+fmFTg0KVuJwY=;
 b=ZumtJ9Rd6tPJMRWrSBLgBK6xgk5uLzKGHN52bjT6j8bRjUiJXs5yLUe2l4VnbLl0W/
 ylQc6CWRm6M/f8WJCuSN8Cpz7Mrrt5c2j32csA950z2bIWRhqGhKLbudj1MrXnCdBvcc
 TbXqR7CMxJuL/e++Ak/DLBcDzu7HsPFVQNBswcl9sDXsz/6VhbjEnEz9RKDJdkN5n1+y
 Hs52HX6nbHGsSoEXOXbLRr3J+DhHOcIJs+e4kanW46Hwl8nbQtX2TSFeBpX4dJIbRfle
 etds88Ge14TnbEGzYYubBhftkbNFiJkjOT5E+09NRyBZlv74Qqjp+wNwSPwPDvcZtPWB
 GEaQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737835731; x=1738440531;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=ZM4blquCb6uvAuMD/9LtpFYTUCDuoG+fmFTg0KVuJwY=;
 b=jeQ7QnkDr2tXQuyrj4hQi2IVJREuCyGYsOY1LEhQiNM419af2mthxTn8mosgAFrTq/
 JS77lzQsXBFE9cBGNDpsjjmM1cVnLwUrN3Z8yCObLCYKgDR7vOzxz4j4QeYn3H1M8bZv
 j764uySI0w7rgfDebNrSag6uCqBfBua6g6dUANZkMidHpEwBHg1zH4zG5J7mK22izOrq
 WisgZUM+Gnb0hECrpALQOV9wCin58frCAzLb8pRZP2mgHkRMh+dYwDvVWvN5invcqfKK
 iT85y3G/p6sioVdx3q/N0OyaEfC278JOCVaK5iaX5bbpOlaz+ep3yhK5LpA9tdtdH3wz
 dmLQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCXLOGXA6fRKUawX4W+b1y4KEf/uDZnHEoZGnhYORtllAadq81JvJD0GNoADIZGyjbIpyNBgEQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yw0++JH2VOL1vJ79t+LPnpuj0lJc/4QzMjKrIHxZ0DuUQqjeHL9
 wnbX49qxfGLDW7FJGnKlBBewGpe1q2ZZzoi4pMMVIbpkqStFSxF0iquHlg==
X-Gm-Gg: ASbGncujWAN/qMakdbuzl3AC8cQRgr+rg6khswiXueFXvlm1EUwZ9G0eP/pjx6zp3gt
 hp0DeS4GYaOiv1O/wtkofpcFGAFup6nIPOvDc6K8olAN9TWV/xS3J+G+HnyeOyzWbqqaHScUyuU
 vwb0h0fCSUscUp6JkusTpUrnJ+KEfminZEL9tg9gbjbwBtej6MCwnCTIL+jdXnoE39JvubbW0+N
 lhOn/J6mQ/8HZjP0WxrKCSuuzS9ZUb4h4rJWR6OziGU2vquxz1t0PpH4ogA/nsXMfY0aXdZZM6W
 ysrWTk9ytm8ve3X/Td2J4WGJIxTv1DdQ6+km00pl6iOJYQBvLKbOlVyS5P28XNOfKcACaEDUwi6
 WFge3v6DAPmCJEtRUC9sIQnfv
X-Google-Smtp-Source: AGHT+IFilcilFdJjbhgrP3R7trNeW9hU7OK9KcxwRa8Pd/uy83ohwlSFZzdjfNJELcevZoMftxc6lA==
X-Received: by 2002:a5d:59a3:0:b0:38c:2745:2ddb with SMTP id
 ffacd0b85a97d-38c27453024mr12577531f8f.2.1737835730734; 
 Sat, 25 Jan 2025 12:08:50 -0800 (PST)
Received: from pro2 (p200300e0b72d4b00903defc95002bea3.dip0.t-ipconnect.de.
 [2003:e0:b72d:4b00:903d:efc9:5002:bea3])
 by smtp.gmail.com with ESMTPSA id
 ffacd0b85a97d-38c2a17d6e2sm6331484f8f.23.2025.01.25.12.08.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 25 Jan 2025 12:08:50 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
 (Len Trigg's message of "Sun, 26 Jan 2025 08:24:50 +1300")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
 <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
Date: Sat, 25 Jan 2025 21:08:48 +0100
Message-ID: <m2r04q1wrz.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Len Trigg <lenbok@HIDDEN> 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.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 25 Jan 2025 19:25:45 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jan 25 14:25:45 2025
Received: from localhost ([127.0.0.1]:52670 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tblmq-0004PE-TP
	for submit <at> debbugs.gnu.org; Sat, 25 Jan 2025 14:25:45 -0500
Received: from mail-lj1-x229.google.com ([2a00:1450:4864:20::229]:52440)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1tblmM-0004La-1F
 for 75056 <at> debbugs.gnu.org; Sat, 25 Jan 2025 14:25:16 -0500
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-306007227d3so31286121fa.0
 for <75056 <at> debbugs.gnu.org>; Sat, 25 Jan 2025 11:25:13 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737833107; x=1738437907; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=cKXI2v5DW1Xs9FACU4oc8tkNIBisfho88a3m/okugmg=;
 b=GKGlDoU/NJ07g/puFkbY95ewblkS0LD+vNP/2nJso/V6vMvGDKsqCQNktrBJXZoG2r
 P8DTXPxCiwzBsZzg5LE6Q302WGew90QiH4RLhV8/UISWxftM2wT5Tw2PeMAUIf9/gVvI
 fgM+s3XKLXm1crSevmbo8nwOtD33SkxFf0upQfXKWk4liSTpoSgdxsA4kgUbAzKNer+B
 p0xu09YHK1rv7kCkpq628rPIwdk+2tqueNoDoehpyxmIpz6Vbwp335zoGfPIkTaCDwWD
 2P0JvuHrRO6umqnieN4BWQ0woYLTEnPtCEl06d4P1ydLxSoWx7r23be2w9ORmErtA0rD
 OauA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737833107; x=1738437907;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=cKXI2v5DW1Xs9FACU4oc8tkNIBisfho88a3m/okugmg=;
 b=l+ob0HJdcDqtch0/jmyKQxjjDH0WEEXP3h3mkE+I/hy1bMM4GxH9LXQC1TYaeh7kCb
 lbYiFJKihFB5pzbsitHNK4ov5Jrmmu0SrqwT+axVOn6SVefX14J3H0ssqfG9XYzJHyTg
 zsnLSXygMYkPonaQ8jhFKJ47PgRzfS0NUC+yqan7h13FMmhghpQqbA0V4E3OsGW+X20V
 eLGozen3ooRWeRP9sx7bWSuPdglcHXt+HJzLDYL6xJ71pWWMPZFxl+F8t6l4IVl0cI6a
 N56/F/08lUIVvF9vhTbv9vXml7grnb8VBDMJdFPmXKTzWLyjA6mixcZGcbHnI5EZGvFo
 apDA==
X-Forwarded-Encrypted: i=1;
 AJvYcCWIyf6XUb5lrlYsoAQAohUdcKStEdrGo9136FksqcPgEgSdtTjFw/pPVdVCgWfveFbKEBt7sA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Ywjhjc+FLoSDOE9VDZ0gzFNnbv8HWgdX0R+ts9EN8oDthGs9RDx
 qEuVXhmJPg6+c6BgwiCrmzO7EyEgNVT+aHydBkPakyy0jJHCkdLW2TXQd+pwWXRgrcxKlgWP0DQ
 OOtN4dPcnvJIWKc2knr09t6RrvHg=
X-Gm-Gg: ASbGncsO4d+bsWly+gIQ3sH67OKCfqK5zqR+F6OPVi6B3oihFcRCTlnEoN8/jlusLJ4
 YoS6zVjgamKG1yPSy3iP2uj7rmYtqljQi2+PqrEEOnhnMEU4hNVMnELw+y3VC
X-Google-Smtp-Source: AGHT+IHBBE0WEY5vPsVCjxXzHP7lU0PxhFayLIH9hPPiGRtEYD3DPJQFp9rQqZmAUSIFwDxjxvwkJ5HyCyqb/KkaV4k=
X-Received: by 2002:a05:651c:b0e:b0:2ff:df01:2b43 with SMTP id
 38308e7fff4ca-3072ca9abd3mr159021881fa.18.1737833107187; Sat, 25 Jan 2025
 11:25:07 -0800 (PST)
MIME-Version: 1.0
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN> <m2lduz9f9f.fsf@HIDDEN>
In-Reply-To: <m2lduz9f9f.fsf@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Sun, 26 Jan 2025 08:24:50 +1300
X-Gm-Features: AWEUYZkpB6IoiPQc6jMxGRAUPWKYh5kUo9nCUR62GXeKq9_b2TGdvLo35tZiORg
Message-ID: <CAOGVwe=fKsr4fW_-7N+wP53ci+cZj1OBbq-OKn49V-ucRhJDEg@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Content-Type: multipart/alternative; boundary="000000000000086fdd062c8ccd1c"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--000000000000086fdd062c8ccd1c
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Thanks, so far I haven't been able to produce that segfault, so hopefully
fixed.

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

Cheers,
Len.










On Sun, 26 Jan 2025 at 02:47, Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
wrote:

> Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
>
> > Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
> >
> >> Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
> >>
> >>> You either have a very wide display (x=3D...), or the selected frame =
at
> >>> this point is a GUI frame. I guess I can fix that over the weekend.
> >>
> >> I've pushed something to master for the crash. Please give it a try.
> >
> > I had to revert that for now because I have introduced a bug somewhere,
> > and can't fix this fast enough, sorry.
>
> Fix now on master.
>

--000000000000086fdd062c8ccd1c
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Thanks, so far I haven&#39;t been able to produce tha=
t segfault, so hopefully fixed.</div><div><br></div><div>I noticed that the=
 documentation for frame-visible-p says:</div><div><br></div><div>&quot;If =
FRAME is a text terminal frame, this always returns t.<br>Such frames are a=
lways considered visible, whether or not they are<br>currently being displa=
yed on the terminal.&quot;</div><div><br></div><div>I could see that prior =
to tty child frames that was necessarily true, but now we have tty child fr=
ames shouldn&#39;t that documentation be updated? (I&#39;m assuming at the =
code level it&#39;s no longer true since posframe hides it&#39;s frames by =
simply making them invisible).</div><div><br></div><div>Cheers,</div><div>L=
en.</div><div><br></div><div><br></div><div><br></div><div><br></div><div><=
br></div><div><br></div><div><br></div><div><br></div><div><br></div></div>=
<br><div class=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class=
=3D"gmail_attr">On Sun, 26 Jan 2025 at 02:47, Gerd M=C3=B6llmann &lt;<a hre=
f=3D"mailto:gerd.moellmann@HIDDEN">gerd.moellmann@HIDDEN</a>&gt; wrot=
e:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0=
.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Gerd M=C3=B6l=
lmann &lt;<a href=3D"mailto:gerd.moellmann@HIDDEN" target=3D"_blank">ger=
d.moellmann@HIDDEN</a>&gt; writes:<br>
<br>
&gt; Gerd M=C3=B6llmann &lt;<a href=3D"mailto:gerd.moellmann@HIDDEN" tar=
get=3D"_blank">gerd.moellmann@HIDDEN</a>&gt; writes:<br>
&gt;<br>
&gt;&gt; Gerd M=C3=B6llmann &lt;<a href=3D"mailto:gerd.moellmann@HIDDEN"=
 target=3D"_blank">gerd.moellmann@HIDDEN</a>&gt; writes:<br>
&gt;&gt;<br>
&gt;&gt;&gt; You either have a very wide display (x=3D...), or the selected=
 frame at<br>
&gt;&gt;&gt; this point is a GUI frame. I guess I can fix that over the wee=
kend.<br>
&gt;&gt;<br>
&gt;&gt; I&#39;ve pushed something to master for the crash. Please give it =
a try.<br>
&gt;<br>
&gt; I had to revert that for now because I have introduced a bug somewhere=
,<br>
&gt; and can&#39;t fix this fast enough, sorry.<br>
<br>
Fix now on master.<br>
</blockquote></div>

--000000000000086fdd062c8ccd1c--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 25 Jan 2025 13:47:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jan 25 08:47:53 2025
Received: from localhost ([127.0.0.1]:48981 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbgVt-0000Rk-CB
	for submit <at> debbugs.gnu.org; Sat, 25 Jan 2025 08:47:53 -0500
Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]:48296)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbgVo-0000RI-Qe
 for 75056 <at> debbugs.gnu.org; Sat, 25 Jan 2025 08:47:51 -0500
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-ab2c9b8aecaso541017766b.0
 for <75056 <at> debbugs.gnu.org>; Sat, 25 Jan 2025 05:47:48 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737812862; x=1738417662; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=G3bUHoNUvu60/qW9rOrjnF74J3Xopw2J4Q+yVQzpTBI=;
 b=cA48NR2KcupEjMMmd6IRrTYHmK1hiL5aUoShQKygZ+PW+tnqO1qblQvhn7NP1fUlu7
 5kyxejJ2rMAVRc4DWDEmeUf9Rta4dJCW3PLScwjs+lijCRXz+6YfinHLX+7Mt+AA37kt
 9xYs0Y3YsQCx5FXDz17PlVjhVJryQmvCcWqI8t/oMMpMP+zeAet1X5dRJEMtfiNigzzD
 GXFae/SunuNqvyCEcOSmN07gnZagYiS6HVl/5OmtmV3jFVBJx03dG7zd4k75dH71Wkh9
 Mjg5ki0hlKeF8jZVeetQ0sRXCXyZ57eorOd4pY1BSGNgUAfmdlA1EumPJiitutYS4GG1
 a6bg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737812862; x=1738417662;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=G3bUHoNUvu60/qW9rOrjnF74J3Xopw2J4Q+yVQzpTBI=;
 b=DBdJRxXFE3NGxDyw3XLtH98PVdwjVolCEVSEbTOmPkjkJoF8vUSQSHzwHFhqsRtAv4
 cumr5imOa7MpbIhze6Daslx6cJL4IdaBTmr6duqyDvqKv1Lfo2CvUF6NesfnRp8lESTq
 pt5P8zaUN/aaefDwjDpKslf+N2XhvZG/F8AcJBZQBc28doWVmpVYsIRpqQqvIOvS03NL
 T92l8CnFhVOSsj7PAeQUd+lK1ZmqsXtK/IawostodfUg1u6cY5rPlnFG2LTQqkT+4h12
 kH3vBEAK4oNU18mgpE4S6b0iW8LE9bSB/awn8oGqYbDMPqR95+x9/RrBNYbyYXctPu4f
 PI9w==
X-Forwarded-Encrypted: i=1;
 AJvYcCWPpR1ufjKFSVpVBPgFhUBoa3noCWglNQe1HWfEdVDpXcjDZLKLRZLqKHSmDfaS9TdDjOXNRg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyE3HgfInjMdkdvKmRkjMRoawOXyWML9kt5mn28g+01nllKpx+I
 1Of3YHaHfRwCQGtEPzQcqbxmi/UM8DO6sFLQ7FuNBf0EGqougsnNSCL6yQ==
X-Gm-Gg: ASbGncvBJASGMS3b4eIBnn56CQS9J8pRoKQjl2kihnUmC+ssTsR//5PXh2kjj5KrocN
 4nUYfdT4c0K3F8w/pi+T/egj5buUt3fCf5h5kPwnlfKCPVfeljX6Bj+byJWLjhvl7d8bUIudYEN
 +QwFcgprWU1D3nIZvk29LCKTeRd91bRAsk0RzAQkuAOVmUlLu6n25QpXqkVlm5LRQJ9IhekYOez
 Q0LxWHdP7+md5DOhuG/eylQMJl3e8GfM2UWsDAWQMJjoAuFi8Yq413oFnXnErfzlz/s7CrHdjbA
 6vSy6dAYQ6LDWnwEYLkUlg7yJNK3T8cOlsdTmu5rO9R74B8czCxFVXeuAsQ/9EtvWACKgYROt7K
 NZ3LG03zt/1+2Cg==
X-Google-Smtp-Source: AGHT+IGfERNGK4r7ytCE7pe/sRy2m66saIZoJ0aAPSuKkvrIEjYA89ULuV3B0CVZB8cVOmP8MRbTbA==
X-Received: by 2002:a17:906:c143:b0:aab:9842:71f9 with SMTP id
 a640c23a62f3a-ab38b10ffbfmr2914246466b.22.1737812862013; 
 Sat, 25 Jan 2025 05:47:42 -0800 (PST)
Received: from pro2 (p200300e0b72d4b00903defc95002bea3.dip0.t-ipconnect.de.
 [2003:e0:b72d:4b00:903d:efc9:5002:bea3])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab69179d7c7sm56908566b.112.2025.01.25.05.47.41
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 25 Jan 2025 05:47:41 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <m2h65ni8rk.fsf@HIDDEN> ("Gerd =?utf-8?Q?M=C3=B6llmann=22'?=
 =?utf-8?Q?s?= message of "Sat, 25 Jan 2025 09:43:11 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
 <m2h65ni8rk.fsf@HIDDEN>
Date: Sat, 25 Jan 2025 14:47:40 +0100
Message-ID: <m2lduz9f9f.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:

> Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
>
>> Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
>>
>>> You either have a very wide display (x=3D...), or the selected frame at
>>> this point is a GUI frame. I guess I can fix that over the weekend.
>>
>> I've pushed something to master for the crash. Please give it a try.
>
> I had to revert that for now because I have introduced a bug somewhere,
> and can't fix this fast enough, sorry.

Fix now on master.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 25 Jan 2025 08:43:22 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jan 25 03:43:22 2025
Received: from localhost ([127.0.0.1]:48368 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbblC-0001B8-4C
	for submit <at> debbugs.gnu.org; Sat, 25 Jan 2025 03:43:22 -0500
Received: from mail-ed1-x52c.google.com ([2a00:1450:4864:20::52c]:50218)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbblA-0001Ao-Jz
 for 75056 <at> debbugs.gnu.org; Sat, 25 Jan 2025 03:43:21 -0500
Received: by mail-ed1-x52c.google.com with SMTP id
 4fb4d7f45d1cf-5d3cf094768so5382938a12.0
 for <75056 <at> debbugs.gnu.org>; Sat, 25 Jan 2025 00:43:20 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737794594; x=1738399394; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=8gqcYGIIcijlTNHIKd6PUKKnJ/O97jhhZm20+e+R76g=;
 b=KfMXPeE3fTckZ6WYzFL10cn4DY8sq13z0ohcsvmCs27FcQP1QGMfZ36FNG6qY9D+xS
 a0xbPsE0Pfm9rc5rn1lNct+e4Av0gASUKdLRargCx5tCIHIWZQYtAnKJryQJWygTz0JC
 ZuvdVVVS7w8lCMiMVOq2GYam+L2BgAXYphT1wBj6rsjbxN0pBj3w2bfbpY2MLxxHV2o6
 JmGFhK3HXWmpSu0lJv7XB0g8gggLlLYP+qwYI1a793OMmberARYmqoeQIy54iTSSMbYt
 +rXC7WS86DKYUNoSJsZdzLMxxchsu6vhY3XbG+Vt00YXVT+VbnHadBEIO9ajxOit8TIH
 HFFg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737794594; x=1738399394;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=8gqcYGIIcijlTNHIKd6PUKKnJ/O97jhhZm20+e+R76g=;
 b=wTMPfzFq7oL3lzDd+9kcldyJIsBPDt/yLLgEmkGNEW3LECevdrMN2Jt3J/YpzJtElp
 JFYW6kgH4YNGHdW8v0SsIOhaJBePmLey7CgeUL1KlbXCfByEwef2XMUO3xhso6fv2SVi
 1syWRX/ZUT8DedPcbN7tw1zjY0whrn0p4RvzMwPnhSSwJKApnbhu670kkrLMUifgfygh
 Xm4J9YWsxrj24MjkGTLeHjpXNjngZyJ0K+r5ue5w/aypacs0aJ+dSl/VECVnQrmB2B3n
 1HgqW7B6og9j4uwFYMoYM88lK8YcAdUtRmZgFK1z2RtUcJo+fuX3xF/tfpzR68BINrgU
 l2cA==
X-Forwarded-Encrypted: i=1;
 AJvYcCWL+fmi47RiFRkiMJ5pU8b/2LSONtzL+AFo6o/yIVgeq0R0k7AiYy5OkAjpGtNlyTL0NF6g3g==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwKTfse/HuqDche8tOJ6utws5vlV/IU9pGHp4XyM1TMoiXSUbX3
 cvb44cvQGYVg9e7tpTqm4YlwT670x1Au+CJA9hvoVx7a3JgUMM+qJC3B3g==
X-Gm-Gg: ASbGncvMI/PZuz7VBWEVjzjxk1IbXAdpt6fkPwOWi1EZBS9EdNjqsbwxGlZyvbYrFKN
 ZsYvsAkllMgEfv0rCIr+Ds5kwj14B3Wdzp6Qgl5Fg46bjhBxR5nWTPPmc9uzYnqoqVXGnzxc6gV
 /3cAunsrNOmL21EtQcR9xol94WTE1eGu3G8bvbzx5qFuOKP/b36qjSAHBLQcuPut7R/Fy9jN/wm
 AbIxenpqGWtmqH6EzYfu7dRG7CllEgglYMZiBlLvNNN7Y3GqVTJKxk++WXVrTCYM7Q1f128EDXH
 V9XK0ATgqlm5JNWG4GAqa8oEew/jpuPpwYSnCyK9H7wmY4D1Ke9xSk7GfKEx/lHsHjP3sNeEr13
 EimZGp78jPnuhtw==
X-Google-Smtp-Source: AGHT+IElBT5+igQ7hAfqpPaQi4vINBkjjdLCgZcoHVVaqw8j4nmQopSR5tDtS87G0HDO72ljMQ80kA==
X-Received: by 2002:a05:6402:2552:b0:5d9:f9b8:e7fb with SMTP id
 4fb4d7f45d1cf-5db7d8272fbmr30021446a12.22.1737794594124; 
 Sat, 25 Jan 2025 00:43:14 -0800 (PST)
Received: from pro2 (p200300e0b72d4b00903defc95002bea3.dip0.t-ipconnect.de.
 [2003:e0:b72d:4b00:903d:efc9:5002:bea3])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5dc18638ed2sm2286900a12.36.2025.01.25.00.43.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sat, 25 Jan 2025 00:43:12 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <m2v7u3nzpi.fsf@HIDDEN> ("Gerd =?utf-8?Q?M=C3=B6llmann=22'?=
 =?utf-8?Q?s?= message of "Sat, 25 Jan 2025 08:02:17 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN> <m2v7u3nzpi.fsf@HIDDEN>
Date: Sat, 25 Jan 2025 09:43:11 +0100
Message-ID: <m2h65ni8rk.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:

> Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
>
>> You either have a very wide display (x=3D...), or the selected frame at
>> this point is a GUI frame. I guess I can fix that over the weekend.
>
> I've pushed something to master for the crash. Please give it a try.

I had to revert that for now because I have introduced a bug somewhere,
and can't fix this fast enough, sorry.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 25 Jan 2025 07:02:29 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Jan 25 02:02:29 2025
Received: from localhost ([127.0.0.1]:48217 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbaBZ-0004h2-4f
	for submit <at> debbugs.gnu.org; Sat, 25 Jan 2025 02:02:29 -0500
Received: from mail-ej1-x62e.google.com ([2a00:1450:4864:20::62e]:58517)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbaBW-0004gi-GW
 for 75056 <at> debbugs.gnu.org; Sat, 25 Jan 2025 02:02:27 -0500
Received: by mail-ej1-x62e.google.com with SMTP id
 a640c23a62f3a-aa68b513abcso591872966b.0
 for <75056 <at> debbugs.gnu.org>; Fri, 24 Jan 2025 23:02:26 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737788540; x=1738393340; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=uhohBCOfPaurDVR3nKMfkAlCRPw8k7Pg+AVeY+W20sg=;
 b=HbCpmT2SCENzOQcC1+i7U5X/8JqIbotHQiXj7kxU4QXMQp60EWPfmA0vTF0tKN/z0a
 9C0V1N+ITUfnawDieOVaXv/XubMGjiJSWar9Bcehk8vKc3FNc72L4piz6mtpAYdrxObK
 yUyZtKETT7gatpJKJLzu3tsAAnPY1tA5WQoC78XzZps0dMNa6ZvPWrP/kIyIV1JEl4i0
 ozoLmaJcyc+Dry5S/pWSQE3uXKHVl2bjnNtXi4zDJKE+DiT8YVC/fOJD09X9Z7UO6w2x
 gUQZaQiovp7IZ+gmnyeK8Zm59PMUxO5bw0qwy2oV3KXQYazAzsFnHM38vPfB6WLD1Q20
 Lzqw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737788540; x=1738393340;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=uhohBCOfPaurDVR3nKMfkAlCRPw8k7Pg+AVeY+W20sg=;
 b=mCFk3TC9mrOUomK4LQ1tB73VvBoR6qrbHM13WaIaDaZIvK+PD8xxk4cNX05pPzEJyo
 AYdBKjva9o/VGKLF1TTkN9rrIdPve4PEDdb2O8XmMTmZg6lXAsZzz/2aVUjkkZLgar7Y
 UyF0/Q9Nq3vPPEzEvs975CvzlUERTZ6AOHBfcyjn0FSz+XbN0MbYmYiRXg29e94JRQjD
 J9Y2Pr3sJTyD2Krm7d/Oent98MdPTf4MkZA4FPqtH3VHnBpEVLV8a5qfdiLBqUBryCDD
 nqFe0pnH9lIdK4rwBC4LuRRpbJLHzCabGZrnnFZ/x0BpDQBE4bjA0L1lJx1bQGKn/iHd
 jymA==
X-Forwarded-Encrypted: i=1;
 AJvYcCUBvVA1VkVq70mUUTDjvmNih0K3boruN3YwBKsw90r+jjZgBnQ5JDljDAfKSVOD73gk66ALog==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yy9PaJH4O2ri8SCXbYKFxv/WImE+1Et4k/9dXLEi0b/5IpSTx6z
 q+j7ly1WnBJxKZY/EAPIzzCojzjstVy1ASvHfeo6ay6NSF1MzYH2DLgHKQ==
X-Gm-Gg: ASbGncsRlTsxogrw2seKFU7x/t1ECbb8EGSnVbvQRPH+c6kOGQkM+pCiFrsuh4Sb/IN
 /XXslNyO/Ee6UPZbqPcBBWDmIvENCG2VpdYYxRO5qGCm0h7JJpNRX0OLM4x/ILpyr85/zCMCnX0
 F+D9o0iu87lu8ld0g++bVyE42kbyEQeezwTfbQRH/dFnEDM07u0vwaOV8MQzzo57IlICTB43EIU
 hB6+rrvkq8Il2f9GOZEHiwutbysnltWPGYq72fSMkzqUSKegYp9wvirTJm8Qlsa/jbUlSRnYCiM
 QV8X9QChRahmKyCFHj5HswgNZ7DegaqoGF/6lyNIBTwydWJoqO2X8/OiBbHE+7Ws/O2nC/3xhPJ
 On/SVmQ7aEK+3Sw==
X-Google-Smtp-Source: AGHT+IGOCEz6kBUXdRHfBBDW5XIXugU/QS1hqcDaPdHL4Sad0N8gLmIxxloaHp+TYM664Voxnpgv6Q==
X-Received: by 2002:a17:907:1b1c:b0:ab2:c0ba:519e with SMTP id
 a640c23a62f3a-ab38b3701d1mr2890634566b.35.1737788539619; 
 Fri, 24 Jan 2025 23:02:19 -0800 (PST)
Received: from pro2 (p200300e0b72d4b00903defc95002bea3.dip0.t-ipconnect.de.
 [2003:e0:b72d:4b00:903d:efc9:5002:bea3])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab6760ab31dsm238014166b.89.2025.01.24.23.02.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 24 Jan 2025 23:02:18 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <m2frl8ouco.fsf@HIDDEN> ("Gerd =?utf-8?Q?M=C3=B6llmann=22'?=
 =?utf-8?Q?s?= message of "Fri, 24 Jan 2025 21:00:23 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <86v7v5wbqs.fsf@HIDDEN> <m2ed1tfg36.fsf@HIDDEN>
 <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN>
Date: Sat, 25 Jan 2025 08:02:17 +0100
Message-ID: <m2v7u3nzpi.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:

> You either have a very wide display (x=3D...), or the selected frame at
> this point is a GUI frame. I guess I can fix that over the weekend.

I've pushed something to master for the crash. Please give it a try.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 25 Jan 2025 03:46:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 24 22:46:35 2025
Received: from localhost ([127.0.0.1]:47992 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbX7z-0003Ty-GN
	for submit <at> debbugs.gnu.org; Fri, 24 Jan 2025 22:46:35 -0500
Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]:55503)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbX7w-0003Td-Lk
 for 75056 <at> debbugs.gnu.org; Fri, 24 Jan 2025 22:46:33 -0500
Received: by mail-wm1-x32c.google.com with SMTP id
 5b1f17b1804b1-436a03197b2so18332375e9.2
 for <75056 <at> debbugs.gnu.org>; Fri, 24 Jan 2025 19:46:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737776786; x=1738381586; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=uhNjKveV0K28l0IFAizvJdnfEz0pCEql7Q+WZ9hHzWQ=;
 b=H5W2eCe6lVreRVgkXm+jIxe2FOd0E55GFdO1UBCyGMEKK72XGwWuqDnhhsKaacqGrg
 VIxhwQsRQycA8jgUUx2VeR83dZq+CGUHEYo4/KJ5IiU9fkBUF5iprWYF95j08zNlMXK6
 Op9h+vTSfdAQ3BOxzuPuYsPia0KRh402w7+xXU9OVgpOuNPKUegFlZdg25RTXcyQ+PzT
 0gvwEp3EHzD1dSJBfX53EgfVd7Gi55ZrL0SSvhyFSzPpwqJVmjdnwJur4Ummrihw0E76
 iLuuZiCONxwQDTQ0nuglxfOYYT3fq48Pw/KSMlmUd+A0ae8T3EnZjmwo4w0u57nACZot
 cAQQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737776786; x=1738381586;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=uhNjKveV0K28l0IFAizvJdnfEz0pCEql7Q+WZ9hHzWQ=;
 b=TmGG+SaoLyXHOOz8GZdOREY8qGwoPklbKH+Ux54J5rVcQMnrLjyaey4f2oAIzIAl+r
 PulsvPF+1QbW/s/C4unIdT388f9Bptlr2dk0Fzy88Pf0z7OMhfcMhy8+prJ6L1g3/CKt
 bXKuFYPjQOovSClvTSnACWPrgYuyoVeX7Unw7TTCtExvT92+J4uXAikfhGjq8rvh1EV7
 cTZRrIG1h1TQEGuQAaQLi0n+thygMAnmnsM0O5fEgqaZOT4Nl9y0UlwZ+ZtENMaCIQqz
 +BiTmveImy1IYIFdi+x0Le4c/Fz6Wst55atnCq4RVUNffc1CerDtC12xnW4DE7XH5ZNO
 oWTw==
X-Forwarded-Encrypted: i=1;
 AJvYcCXQ4yxa0hC1NyNTyKvslMfLQj1dKuB2aqzsIW25B0kFeCHHiNR4pk84vvPZYrmxxXgn03XCxw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yz3kObth9gMJns5nqUlENsJM9VPYm0ALPnHvZSEaglrmRlYtRpi
 BNGz6BQ+Cu8RQ5ucBQSiKYmf/sesGKa9p+3ySarZg4jDg5IrEts+mNTaEw==
X-Gm-Gg: ASbGnctUpoPWi7TTABGtHZ5lmZ4kmM0cTl1gjcgMyaBYrlxU11gGur1R2cn8Iha4d0B
 qv6s4r2fZEfs0Cdr5ETshnZnlitDrzHNSeM76UVZ5UcLbMB3ztKzigjBBgI0VFsAzvqQ9CDPq1e
 CBujOZY8r0pt7sgWY4xX0DqdHdRa2RpVIiyQxm/sPa1cNmrpkU1vV4DCjCWkEflE4540IYgEjMX
 OWS4IFla6wSWKxNBDU4ocYroXFSntM7/0AJqNog6Q0JL5IHF7V4HVB2qpw6bMIkp+WF7vekcKws
 S9BQmfn3mVuAo2b4eGmO5o4pmFF4QZouKmucD2xC0NlhTlNlH7F/4FZiWjrM9baHpvOcIGUelkF
 EimuxI3sQEA2rLQ==
X-Google-Smtp-Source: AGHT+IFQwo77BTEgivUwVvXXjT4gCT9zceHVMKRYRdxKQ+6DQ+8KP6Zf2xFBc4cUDkmLlW1mLxwZIQ==
X-Received: by 2002:a05:600c:1c93:b0:42a:a6d2:3270 with SMTP id
 5b1f17b1804b1-43891426ebcmr250083245e9.21.1737776785626; 
 Fri, 24 Jan 2025 19:46:25 -0800 (PST)
Received: from pro2 (p200300e0b72d4b00903defc95002bea3.dip0.t-ipconnect.de.
 [2003:e0:b72d:4b00:903d:efc9:5002:bea3])
 by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-438bd4857cesm46166255e9.13.2025.01.24.19.46.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 24 Jan 2025 19:46:24 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <CAOGVwenb1-sfnGeNiudsLUVHZFiXouO0zcE8vXGQL6WE27VtNw@HIDDEN>
 (Len Trigg's message of "Sat, 25 Jan 2025 09:40:27 +1300")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN>
 <CAOGVwenb1-sfnGeNiudsLUVHZFiXouO0zcE8vXGQL6WE27VtNw@HIDDEN>
Date: Sat, 25 Jan 2025 04:46:22 +0100
Message-ID: <m2bjvvpnch.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Len Trigg <lenbok@HIDDEN> writes:

> On Sat, 25 Jan 2025 at 09:00, Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN=
m> wrote:
>
>  You either have a very wide display (x=3D...), or the selected frame at
>  this point is a GUI frame.
>
>=20=20
> Or possibly both? (My monitor is 3440x1440, and I had it with the GUI ema=
csclient frame in the
> rightmost third).

At that point in the code, pixels =3D=3D characters, so if that were a tty
frame, you'd need something like sub-pixel eyesight :-).




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 24 Jan 2025 20:40:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 24 15:40:53 2025
Received: from localhost ([127.0.0.1]:47212 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbQU1-0007ZG-DZ
	for submit <at> debbugs.gnu.org; Fri, 24 Jan 2025 15:40:53 -0500
Received: from mail-lj1-x22c.google.com ([2a00:1450:4864:20::22c]:56706)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1tbQTy-0007Yy-W4
 for 75056 <at> debbugs.gnu.org; Fri, 24 Jan 2025 15:40:51 -0500
Received: by mail-lj1-x22c.google.com with SMTP id
 38308e7fff4ca-3003c0c43c0so25380791fa.1
 for <75056 <at> debbugs.gnu.org>; Fri, 24 Jan 2025 12:40:50 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737751244; x=1738356044; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=QlAaj9J0PgpD58inKNl6WB+nklIxR/TpND3x3ojw8DU=;
 b=JKLOFKSr04/ZXjakhReRCpcc4kImEaRk1TNIGhEjb3osKEFo4DjrfDP3g2aik2MFXA
 IIUbK/myKR3glFcJafO96k2YFjFE87vK1DE6kT8gt9R1ovqO+2bixHcEgwy4hKCFYRid
 lBsv9/IB2yAo0qmnhsxR0tdZf0ZMawkUMXjCHAhH2nOuAuDgLk1sZK6SbTYeOIuuyRxV
 g3G3qaoebk4ZZPdZRnc0UL4HbDMpRE4WTZ7T43Ll9CKb2qWaEny0GOV59nU32I+LvcBN
 ApjHegGl65C1Oy4VYzp6j4dft3fM7PciCDwfMRFSmI4VcfLNXSliLEYTxLliAqfEBNLT
 IlCg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737751244; x=1738356044;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=QlAaj9J0PgpD58inKNl6WB+nklIxR/TpND3x3ojw8DU=;
 b=HmJurjMDHJkClDt2ZaG+OeqFmcGsB+ttiSPnFvco7sePJrh5LEPeEVScQYS08fzFsV
 +lHjrhRMZu7/36sclGCktZL9MA/CIv4QvAeiZQMOA5o1eokMfGKHrXTnFxnpxVZmmVp3
 yO6WtlL4nLJbiKdPnT08yFVz/uh9mdCyYzUiltxhjCEb8nMfotR2FHksqlxzgQNHqzOA
 m+7kMc+0hvSL6a94I6ACNVIi2xotWmb8vSBYh9eCsEAHk+nCoZ1ZkRBHTaspviaNWAB2
 0WFKD35QwDWihAA4M0pJktS87JJnnDnSQ0sysZaYny/Dj8O3C1qDgQje7vtJoYKPXOFb
 q5/g==
X-Forwarded-Encrypted: i=1;
 AJvYcCVc4QJ85vTDcvt/8TX6ba+T+Wf22t/mb7fJG5/ukI1gSPN5T3+yrxIOGgte+TSXHQe+NV+//Q==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwHs2uAYx+ub69II6MDya+4dxH3W6jBIRUpl56+hSU8Noh4YnLX
 hi0ovUJUX8tEUBhoDmDSf2OzQwZZl1VqVp0HtzHfEBAB5RN1XOsSpLfL1kytxKfE762E2fJuHWD
 sNjCtUJQ7rbmiIInpyCIHByN9bqY=
X-Gm-Gg: ASbGncvuyXBxb/ifIvpaXrPAF6Ph3Bde3Wjn0ytPyovPWdMX48qY8kR6HRrogNPfxjE
 3n0lKmMHTexijx3Mor8BtUESGBorD9gcNQJlP/HalF4qA+6iCTdT1TfbEcNFY
X-Google-Smtp-Source: AGHT+IG7JRi3F1UjdFV/6Oi8fcwsfvDvXS7TdCAv2cmtoSttsZHYhTS5HOTq6ItHMpN/jnQ/34qnzrG7Vc06WPt6JWY=
X-Received: by 2002:ac2:4463:0:b0:540:1f75:1b05 with SMTP id
 2adb3069b0e04-5439c229169mr9095289e87.19.1737751243971; Fri, 24 Jan 2025
 12:40:43 -0800 (PST)
MIME-Version: 1.0
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN> <m2ed1tfg36.fsf@HIDDEN>
 <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 <m2frl8ouco.fsf@HIDDEN>
In-Reply-To: <m2frl8ouco.fsf@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Sat, 25 Jan 2025 09:40:27 +1300
X-Gm-Features: AWEUYZlaJuzR3hbsHpN-rA2hdqo1r9szdrXFxCPq5OaKl8lHQUiWCPF0M4Dq2Q0
Message-ID: <CAOGVwenb1-sfnGeNiudsLUVHZFiXouO0zcE8vXGQL6WE27VtNw@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Content-Type: multipart/alternative; boundary="0000000000009ae501062c79bdea"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--0000000000009ae501062c79bdea
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Sat, 25 Jan 2025 at 09:00, Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
wrote:

> You either have a very wide display (x=3D...), or the selected frame at
> this point is a GUI frame.
>

Or possibly both? (My monitor is 3440x1440, and I had it with the GUI
emacsclient frame in the rightmost third).

Thanks,
Len.

--0000000000009ae501062c79bdea
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div class=3D"gmail_quote gmail_quote_container"><div dir=
=3D"ltr" class=3D"gmail_attr">On Sat, 25 Jan 2025 at 09:00, Gerd M=C3=B6llm=
ann &lt;<a href=3D"mailto:gerd.moellmann@HIDDEN">gerd.moellmann@HIDDEN=
m</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin=
:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"=
>You either have a very wide display (x=3D...), or the selected frame at<br=
>
this point is a GUI frame.<br></blockquote><div>=C2=A0</div><div>Or possibl=
y both? (My monitor is 3440x1440, and I had it with the GUI emacsclient fra=
me in the rightmost third).=C2=A0</div><div><br></div><div>Thanks,</div><di=
v>Len.<br></div></div></div>

--0000000000009ae501062c79bdea--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 24 Jan 2025 20:00:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 24 15:00:36 2025
Received: from localhost ([127.0.0.1]:47181 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbPr1-0005du-To
	for submit <at> debbugs.gnu.org; Fri, 24 Jan 2025 15:00:36 -0500
Received: from mail-ed1-x52e.google.com ([2a00:1450:4864:20::52e]:51376)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbPqy-0005dd-LH
 for 75056 <at> debbugs.gnu.org; Fri, 24 Jan 2025 15:00:33 -0500
Received: by mail-ed1-x52e.google.com with SMTP id
 4fb4d7f45d1cf-5d7e3f1fc01so5002185a12.2
 for <75056 <at> debbugs.gnu.org>; Fri, 24 Jan 2025 12:00:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737748826; x=1738353626; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=jjavkk9/2FlSQCMLp2OayqkkLlt4FB94R1+gbUdteu0=;
 b=Hobqg44odWcRNcNY0d2a5zUQWI7eut7A8XBoQvQ/lphJSken0/l1Jr7enJYnB/gw5/
 K3LsrgebO9md3ebQU8qj4odIu/GBR/FdJgvqdXTE9zfh2P5cOutbC3PqqVg9S2Dj4Sh8
 dMxENOD/MLvVR7Zs2ICKOdmXLxQ9NCCkh6MMbqhyF8cRkszvIGJbuSK3hstR5gzzvfss
 CTXz66U9izQdmaD4+D5MTZTQTR9nurJ74D7vFit0sUFkWRb73/skm1mm3Ojwain3MANf
 4MgP6Q/JGe1f1Hm+lnmYDIpmN6mgZjAlgQMT4D9TwNvgi1Qbik/qdaGykvTX/KO4L359
 glzg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737748826; x=1738353626;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=jjavkk9/2FlSQCMLp2OayqkkLlt4FB94R1+gbUdteu0=;
 b=lo3WTk3mAxdENSOEsV3afX6YAsa48OxsUu+1m3C4tI7WoW752xfPtDVILvwu8ahLbj
 1/ZM5Zll7C9FIN0Ui/mv915N7fJ5JDyuw0BRPVqrwMMP9BWVVcHTJT9vnGJh472JNWIs
 rcErHrhHwy/YxZuaJRhneOwSOlvIRevseMgqTej8Wb0j6dNhtGsseRgbZ/TXWOhXJOnz
 Mqoxhu9nxeGQ5KmhwQpNkCck9HXXaFJRlKfZ44R7bpJf15/Z2egKuUTOEiWjM9vMAaC+
 XgIHV0GioAgrU+g/ydXC5/HXwHs2VOmHr4bBxYmKDv8+Z/ySel2n1hzN+MCxNDNySLJR
 +7BA==
X-Forwarded-Encrypted: i=1;
 AJvYcCW28Jn3UAQ6ZHaIavMZfBlxZA0BwvW0Ecq/AGBcbJlPtnTmQ3GpuFcmYJ1jsIiYFaTbugf1iw==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxQmXi1Sptp+/bNckwUC8Q3ddFhAQeQEzS0glBxe9IPOsVK0Alo
 FRC1HQS3MliIWUi5Y8dO1dV39bry52Sio41Msrr7SRdvkUlMDWHxgmgbSw==
X-Gm-Gg: ASbGncvIw3A8WlntJjud8c2eKiqaB0bh2mymU0UpGB6KxJhA93FRoHh67QeIkIjG66V
 OpwRcP7VZmqguh1/H5Ys3ZNhVQA04uqrQ+Eli7ofzUfKn+ql2g4gx5WVz7RIUhBqEDeAuxUx3JZ
 feivUD+oMrbaGmSYtXCfAjI7h7hu+G8GXkgfFUdUrO2onZwehCwkMiG/hnew3RSZCkMaFleZ/Kg
 0nWb/ljFrT+tseV7YAx10jqG8jjYdORAC4a3ia3olbUjURjPsB6NpNrLOE/L3iNE6droe9BKLer
 md20j31FjVTEYGz/fG9CvUTBmAkdiqd+WmN/7NrAeDFyA32E3OXojxS3SE7+jYkNSBMte6a5BuL
 bmPEZcqWSyrD3Wg==
X-Google-Smtp-Source: AGHT+IHTEK6PtVUbhimEV6WcTqj7Z/w/Rq52DzGFWpLoFxZ8HVey2xDa+lZn5wiA8VMk7RSEU9Z4UA==
X-Received: by 2002:a05:6402:1ed4:b0:5db:69ee:9149 with SMTP id
 4fb4d7f45d1cf-5db7d2fc229mr31324779a12.11.1737748825763; 
 Fri, 24 Jan 2025 12:00:25 -0800 (PST)
Received: from pro2 (p200300e0b71e1a00b5c722abfa07c989.dip0.t-ipconnect.de.
 [2003:e0:b71e:1a00:b5c7:22ab:fa07:c989])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5dc1f15b6ecsm785175a12.47.2025.01.24.12.00.23
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 24 Jan 2025 12:00:24 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
 (Len Trigg's message of "Sat, 25 Jan 2025 08:19:20 +1300")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
Date: Fri, 24 Jan 2025 21:00:23 +0100
Message-ID: <m2frl8ouco.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Len Trigg <lenbok@HIDDEN> writes:

> BTW, I triggered another segfault (this time I had two terminal clients and one gui client and was cycling focus between
> them):
>
> 0x00005555555bdf65 in is_in_matrix (y=48, x=2297, f=0x555556f60048) at dispnew.c:3893
> 3893      if (x < 0 || x >= root->current_matrix->matrix_w || y < 0
> (gdb) where
> #0  0x00005555555bdf65 in is_in_matrix (y=48, x=2297, f=0x555556f60048) at dispnew.c:3893
> #1  is_cursor_obscured () at dispnew.c:3913

Thanks for the report.

You either have a very wide display (x=...), or the selected frame at
this point is a GUI frame. I guess I can fix that over the weekend.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 24 Jan 2025 19:48:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 24 14:48:07 2025
Received: from localhost ([127.0.0.1]:47167 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbPew-0004zJ-KK
	for submit <at> debbugs.gnu.org; Fri, 24 Jan 2025 14:48:06 -0500
Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d]:50412)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbPet-0004yk-VJ
 for 75056 <at> debbugs.gnu.org; Fri, 24 Jan 2025 14:48:04 -0500
Received: by mail-ed1-x52d.google.com with SMTP id
 4fb4d7f45d1cf-5d3cf094768so4722421a12.0
 for <75056 <at> debbugs.gnu.org>; Fri, 24 Jan 2025 11:48:03 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737748077; x=1738352877; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=erL4WzUclSTF21aLGX0WugIXJIe3ixm+xiHZ4kTNoaI=;
 b=AHjzk2VHJt7R1cgu+bZ2tEDccPsgtCfO0m14CTFj6hEYgaAg/6ood9ATb+hPIbFbxO
 BOgaj/GT0LliM6a0RWbgb7WUhiNtAxfbuyCE46a5MW/u2lRnoQntwV/0o/HZFKUltwPo
 BwF9kibEj4eXb3OyQI5Qk6zC/eX+mxmO/qQPZdOH9i5CTxNQJS7f7B1gw9C98qpSBD0R
 NGNIWFBZU2DK2n4vQ5daLBoVjvHsc6qqJLI74jqrWWel5kHfz5QsOZ/5g0Dm5KUNCRr3
 7No3tZ6L79IPCzu9FKC3azO8o9iOFByPWUH5/uaut3Tf80eo8tWRTP5VpgmsSjB2OoAI
 Wltg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737748077; x=1738352877;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=erL4WzUclSTF21aLGX0WugIXJIe3ixm+xiHZ4kTNoaI=;
 b=uHvtXvOI45XosXrhJpgazlx2yJhvvW0lJjzomypvYeJiVPCc3XQUPzokVs+AGYKu8p
 Hnmpkr9aUltgwyFRU2dn7lnjRA81eTCN+RhdbfhIF21HAdMjYOMIbJQJqPLtwIZgSKHn
 BEShs111IFLdwbqxIefqCeP2vvn2cp03j+dMVGpjWwcqNZh+kl7gowz/e4iRNtxjdTZj
 oAgEeSaBperRneb3Eo9+nBiRfcMqBFQFsm72MK7TxJWXTSE/I2CCP4fYZr/m2tq5h8TE
 mql57XhcsD+cW97mSBggXDlZN0cPFjxmDqoO06ach0h65R0iQJ51V+/5PuPO47ytF0jE
 ed7w==
X-Forwarded-Encrypted: i=1;
 AJvYcCUrLtzMt2/2pe17L9IU3IKNMfAtlYTIgh/LKklxBEq7W6mqhwrXk+klemvvCgY2dwYWcIIXog==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzA82GIVTg7gpUFMB7VxLzlD76NXKHOYn6XY94j4DX01iKoy5xL
 yEau+KPxPnTgYvWRJUxB/fQ+SG9XOR/oyHapCgMViEIbN+6Di1f27b/WfA==
X-Gm-Gg: ASbGnctheR39TJYjPkVPkK5cszw7+ZhZkWrTKvBejjSmg0mY0TxlT8ZXQJXwwnmKW6k
 sbd21ri03NYkL93wDo8hr1AJ5kilDL4qYC9g9QpkyoBn9riimgKNTd9tf0iWurYgyxELZhvQorR
 gqUQam3r+gDLzOmkPxfoKxfydclCOQ8fcxDyXdTEbjC3vhGDKB8PsmXhamNOtmgthZONlrfn6zZ
 YGcbZmrxtCPmKm0iVwQB4bK29Pfh8vpjYhPtlUXCBj5Cv8lEWyh40BLgeN/tB7nTT7sTfZd6v8N
 EdUYmbUgu4MRyAr8wRs5iUCJnlRQpHla75dPtCXoFYiNz6m2TphIoFzDrny4A1z/fcrfivsigl8
 YrSl8uYhf3UsWJA==
X-Google-Smtp-Source: AGHT+IGYFcNdRRou8XNhMD4O7552CRyUJg7zeixwkJFbOmg/XQV1TnOuafWoWnGs0CKl/f3rY1e1ow==
X-Received: by 2002:a17:907:7ea7:b0:aaf:5c9:19f9 with SMTP id
 a640c23a62f3a-ab38b1627damr3100159466b.27.1737748077229; 
 Fri, 24 Jan 2025 11:47:57 -0800 (PST)
Received: from pro2 (p200300e0b71e1a00b5c722abfa07c989.dip0.t-ipconnect.de.
 [2003:e0:b71e:1a00:b5c7:22ab:fa07:c989])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab675e12512sm175724466b.19.2025.01.24.11.47.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 24 Jan 2025 11:47:56 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <CAOGVwemYKXrZLZ-F6CZ69Kg+GgM_2PDQr4sQBqJqX1nbappxsw@HIDDEN>
 (Len Trigg's message of "Sat, 25 Jan 2025 08:06:40 +1300")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
 <CAOGVwemYKXrZLZ-F6CZ69Kg+GgM_2PDQr4sQBqJqX1nbappxsw@HIDDEN>
Date: Fri, 24 Jan 2025 20:47:55 +0100
Message-ID: <m2jzakouxg.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Len Trigg <lenbok@HIDDEN> writes:

> On Fri, 24 Jan 2025 at 22:32, Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN=
m> wrote:
>
>  I think the rest of the behavior is somehow multi-tty. We talked about
>  that already. I don't think I'll tackle that, sorry.
>
> You mentioned in the earlier email about single-kboard mode being a
> limitation too big to address, but I'm confused as to why the child
> tty frame (minibuffer?) that the user had actually dismissed then
> magically reappears when the focus was moved to another terminal. Is
> it that the child tty frame needs to be fully destroyed upon
> dismissal? (Is that something posframe could do?) Could you please
> provide a description of what you think is actually happening?

I don't want to go down the rabbit hole of finding out what exactly is
happening, because that would mean I would begin to debug multi-tty,
which I wouldn't poke with a 2 meter stick after reading
admin/notes/multi-tty :-)

I have only one hint: the crash was because mini_frame in
redisplay_internal was invisible, and we updated it in
combined_update_for_frame. Updating an invisible frame logically makes
no sense, why is it invisible then? When that mini_frame is invisible,
is there another frame visible now that _should_ have been invisible
instead of mini_frame? If so, which one? And could it be that child
frames of that frame are now displayed? Possibly.

Question upon questions :-)





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 24 Jan 2025 19:19:47 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 24 14:19:47 2025
Received: from localhost ([127.0.0.1]:47081 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbPDW-0003YZ-E2
	for submit <at> debbugs.gnu.org; Fri, 24 Jan 2025 14:19:47 -0500
Received: from mail-lf1-x12b.google.com ([2a00:1450:4864:20::12b]:43098)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1tbPDT-0003YF-Gz
 for 75056 <at> debbugs.gnu.org; Fri, 24 Jan 2025 14:19:44 -0500
Received: by mail-lf1-x12b.google.com with SMTP id
 2adb3069b0e04-54287a3ba3cso3308921e87.0
 for <75056 <at> debbugs.gnu.org>; Fri, 24 Jan 2025 11:19:43 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737746377; x=1738351177; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=e7oWQTaXLCNBWUHhVoz5cWKH87hGPBh08tbdzhoFwdk=;
 b=gCV6etsNuUQDpC32ZlmitrFMB6+E8BhcTDsOQ83ls++yfYiYcZ+CeK28QFjFNEAqpK
 2+cuE2YgRoy7hVZnrRZ+zJoSIgiU1zZluOEj79BtcezaPf0mkz9ScIlHTg8WFZO17Gvt
 Z8Zs0RNcJuZbP7uIcFk8EyDZywXYRt/Wihg4KHlVd60KTbMzZaGge8WbEh+zL2YIdZKQ
 dlP2KFPdjaUVBW28nqX+4UGs1jrAai4pgnN/MxRI/67ZNnwq8thHCs1sr0qCxUO344Dn
 kjULnCG7Kq1bwCFifxhzdHpySBB08nuC4QIhnl5mND84ixiE9zvFFd1f0NqNF1qxrCa3
 E/Bw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737746377; x=1738351177;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=e7oWQTaXLCNBWUHhVoz5cWKH87hGPBh08tbdzhoFwdk=;
 b=Hqz8wTYMOuGYnwqI3ZOlM6DYnfaRqZCN3K/7almIL7IVG7Ogw/9bwMzTA6F4iT9QwP
 loPeSn4LrEMRilFXGHSXFKxapskEIHYokv0WD2lp5+ANKZWEuPhfWzrAD1uzFbucuP6v
 DacipYF4rFaH5aiEzA14eDjlFnxcsrZcqpwKGugN410uAIMLiveQ6iZwoZiTuYL5fZch
 n7VZDrmaA7XFdsGijvesmn9/kC0SNbT4GV/d3s3MJkX+NurUXL+OHObTGLTru435Mv8s
 tcHU5A4oNUHVGgdlYlpOkVo3ei/H49bOGZehI+FiJcpd4KMbBkUqmiFvYf9WrIkSD1UH
 yfpg==
X-Forwarded-Encrypted: i=1;
 AJvYcCXFoFNpjOQER5F2wksVsDZume96Wq+qoTg2PPepghtebBvinvGuyOdgdnRND3B2gpeK9VtI1g==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwVj4yyJBZvTlR2DEBgD5zO6T4icX/eEYXZYhHY5A4M1VsNTpZr
 kJC8cTX4FvC3CDxdGdTINOPYtfracgDLLa5RCzZiwBeYE2dl8b8AlrGDccH1hZ2tMajO6rNU1LW
 X7POOAQPCY2+7xtt2jOBtWrUUxZ7paKeR8uw=
X-Gm-Gg: ASbGnctJfbFaoSoQA3R71ZfC5cSU8fnrZkHTRQZzyh/qhcq5axUS0wx0GQFX+mRIUiw
 il/y3Vz6xKg4C8NIR5RCWBEGWZtrq/I016lh/AQUNbnXh87nduzet/Onf5VnH
X-Google-Smtp-Source: AGHT+IHe7SlI1FDhCCKQy9ApMjhmKPHE+sBBZLDwl92YKUHH2VhuBImDGWsQUi98mfjmECcFO0U241fm25Z2X27x72M=
X-Received: by 2002:a05:6512:3b94:b0:543:bae7:eada with SMTP id
 2adb3069b0e04-543c221cc0amr3423976e87.14.1737746376827; Fri, 24 Jan 2025
 11:19:36 -0800 (PST)
MIME-Version: 1.0
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2zfkhfr7r.fsf@HIDDEN> <86wmflwlok.fsf@HIDDEN> <m2r05tfqea.fsf@HIDDEN>
 <86v7v5wbqs.fsf@HIDDEN> <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
In-Reply-To: <m2frl8muao.fsf@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Sat, 25 Jan 2025 08:19:20 +1300
X-Gm-Features: AWEUYZkkucP7Gp0kskgvZ7AtQjOk5eDkQLL3ho6-u6jCcUCN83GDc9LbFOdt4h8
Message-ID: <CAOGVwe=cNc=AkY8SCYwUko2XAoOe3BfJSxm7Gcyj3C641tzkrg@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Content-Type: multipart/alternative; boundary="000000000000802c58062c789b81"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--000000000000802c58062c789b81
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

BTW, I triggered another segfault (this time I had two terminal clients and
one gui client and was cycling focus between them):

0x00005555555bdf65 in is_in_matrix (y=3D48, x=3D2297, f=3D0x555556f60048) a=
t
dispnew.c:3893
3893      if (x < 0 || x >=3D root->current_matrix->matrix_w || y < 0
(gdb) where
#0  0x00005555555bdf65 in is_in_matrix (y=3D48, x=3D2297, f=3D0x555556f6004=
8) at
dispnew.c:3893
#1  is_cursor_obscured () at dispnew.c:3913
#2  terminal_cursor_magic (topmost_child=3D0x555556c1e900,
root=3D0x555556bacd08) at dispnew.c:3932
#3  combine_updates_for_frame (f=3D<optimized out>,
inhibit_scrolling=3Dinhibit_scrolling@entry=3Dfalse) at dispnew.c:3997
#4  0x00005555555be0f3 in combine_updates (roots=3Droots@entry=3D0x7fffec96=
0b33)
at dispnew.c:4023
#5  0x00005555556054f6 in redisplay_internal () at xdisp.c:17599
#6  0x0000555555606fe9 in redisplay () at xdisp.c:16656
#7  0x00005555556f25ba in read_char (commandflag=3D1,
map=3Dmap@entry=3D0x7fffec962463,
prev_event=3D0x0, used_mouse_menu=3Dused_mouse_menu@entry=3D0x7fffffffc6ab,
end_time=3Dend_time@entry=3D0x0)
    at keyboard.c:2672
#8  0x00005555556f5ad7 in read_key_sequence
    (keybuf=3Dkeybuf@entry=3D0x7fffffffc800, prompt=3Dprompt@entry=3D0x0,
dont_downcase_last=3Ddont_downcase_last@entry=3Dfalse,
can_return_switch_frame=3Dcan_return_switch_frame@entry=3Dtrue,
fix_current_buffer=3Dfix_current_buffer@entry=3Dtrue,
prevent_redisplay=3Dprevent_redisplay@entry=3Dfalse,
disable_text_conversion_p=3Dfalse) at keyboard.c:10746
#9  0x00005555556f7734 in command_loop_1 () at keyboard.c:1424
#10 0x0000555555775607 in internal_condition_case
(bfun=3Dbfun@entry=3D0x5555556f7570
<command_loop_1>, handlers=3Dhandlers@entry=3D0x90, hfun=3Dhfun@entry=3D0x5=
555556eb190
<cmd_error>) at eval.c:1607
#11 0x00005555556e2cfe in command_loop_2 (handlers=3Dhandlers@entry=3D0x90)=
 at
keyboard.c:1163
#12 0x0000555555775549 in internal_catch (tag=3Dtag@entry=3D0x12360,
func=3Dfunc@entry=3D0x5555556e2cd0 <command_loop_2>, arg=3Darg@entry=3D0x90=
) at
eval.c:1286
#13 0x00005555556e2c91 in command_loop () at keyboard.c:1141
#14 0x00005555556ead05 in recursive_edit_1 () at keyboard.c:749
#15 0x00005555556eb0a4 in Frecursive_edit () at keyboard.c:832
#16 0x00005555555b4e3f in main (argc=3D3, argv=3D<optimized out>) at
emacs.c:2628



On Fri, 24 Jan 2025 at 22:32, Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
wrote:

> Len Trigg <lenbok@HIDDEN> writes:
>
> > OK, that's fixed the crash, but my original problem persists, with a
> > new artifact. This time slightly different repro steps to make things
> > more visible:
>
> Okay, that's what I intended to fix. Thanks for the feedback.
>
> I think the rest of the behavior is somehow multi-tty. We talked about
> that already. I don't think I'll tackle that, sorry.
>
> >
> > - Open two terminal windows side by side
>
> > - In the first terminal: emacs -nw --init-directory=3D~/emacs-test
> > (using the original init.el I sent)
>
> > - In the second terminal: emacsclient -nw, followed by C-x b C-n RET
> > (to switch buffers using tty child frame, leaving the cursor in
> > *Messages* and the tty child frame has been dismissed)
>
> > - Back to the first terminal: C-x b C-n RET (as above, this switches
> > buffers using the tty child frame, leaving the cursor in *Messages*
> > and the tty child frame has been dismissed.
>
> > - Now, notice that immediately upon switching focus back to the second
> > terminal (I use focus follows mouse) we find the emacsclient "hung",
> > but back on the first terminal the tty child frame has magically
> > represented itself even though it had been dismissed!!!
>
> > - If we move the mouse focus back to the first terminal, the tty child
> > frame disappears.
> >
> > On Fri, 24 Jan 2025 at 18:26, Gerd M=C3=B6llmann <gerd.moellmann@gmail.=
com>
> wrote:
> >
> >  Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
> >
> >  > Anyway. I'll develop a fix for that immediate problem tomorrow. I
> think
> >  > I'll just make it not crash for now, and perform the update anyway,
> >  > which I guess 30 would do.
> >
> >  Pushed to master.
>

--000000000000802c58062c789b81
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>BTW, I triggered another segfault (this time I had tw=
o terminal clients and one gui client and was cycling focus between them):<=
/div><div><br></div><div>0x00005555555bdf65 in is_in_matrix (y=3D48, x=3D22=
97, f=3D0x555556f60048) at dispnew.c:3893<br>3893 =C2=A0 =C2=A0 =C2=A0if (x=
 &lt; 0 || x &gt;=3D root-&gt;current_matrix-&gt;matrix_w || y &lt; 0<br>(g=
db) where<br>#0 =C2=A00x00005555555bdf65 in is_in_matrix (y=3D48, x=3D2297,=
 f=3D0x555556f60048) at dispnew.c:3893<br>#1 =C2=A0is_cursor_obscured () at=
 dispnew.c:3913<br>#2 =C2=A0terminal_cursor_magic (topmost_child=3D0x555556=
c1e900, root=3D0x555556bacd08) at dispnew.c:3932<br>#3 =C2=A0combine_update=
s_for_frame (f=3D&lt;optimized out&gt;, inhibit_scrolling=3Dinhibit_scrolli=
ng@entry=3Dfalse) at dispnew.c:3997<br>#4 =C2=A00x00005555555be0f3 in combi=
ne_updates (roots=3Droots@entry=3D0x7fffec960b33) at dispnew.c:4023<br>#5 =
=C2=A00x00005555556054f6 in redisplay_internal () at xdisp.c:17599<br>#6 =
=C2=A00x0000555555606fe9 in redisplay () at xdisp.c:16656<br>#7 =C2=A00x000=
05555556f25ba in read_char (commandflag=3D1, map=3Dmap@entry=3D0x7fffec9624=
63, prev_event=3D0x0, used_mouse_menu=3Dused_mouse_menu@entry=3D0x7fffffffc=
6ab, end_time=3Dend_time@entry=3D0x0)<br>=C2=A0 =C2=A0 at keyboard.c:2672<b=
r>#8 =C2=A00x00005555556f5ad7 in read_key_sequence<br>=C2=A0 =C2=A0 (keybuf=
=3Dkeybuf@entry=3D0x7fffffffc800, prompt=3Dprompt@entry=3D0x0, dont_downcas=
e_last=3Ddont_downcase_last@entry=3Dfalse, can_return_switch_frame=3Dcan_re=
turn_switch_frame@entry=3Dtrue, fix_current_buffer=3Dfix_current_buffer@ent=
ry=3Dtrue, prevent_redisplay=3Dprevent_redisplay@entry=3Dfalse, disable_tex=
t_conversion_p=3Dfalse) at keyboard.c:10746<br>#9 =C2=A00x00005555556f7734 =
in command_loop_1 () at keyboard.c:1424<br>#10 0x0000555555775607 in intern=
al_condition_case (bfun=3Dbfun@entry=3D0x5555556f7570 &lt;command_loop_1&gt=
;, handlers=3Dhandlers@entry=3D0x90, hfun=3Dhfun@entry=3D0x5555556eb190 &lt=
;cmd_error&gt;) at eval.c:1607<br>#11 0x00005555556e2cfe in command_loop_2 =
(handlers=3Dhandlers@entry=3D0x90) at keyboard.c:1163<br>#12 0x000055555577=
5549 in internal_catch (tag=3Dtag@entry=3D0x12360, func=3Dfunc@entry=3D0x55=
55556e2cd0 &lt;command_loop_2&gt;, arg=3Darg@entry=3D0x90) at eval.c:1286<b=
r>#13 0x00005555556e2c91 in command_loop () at keyboard.c:1141<br>#14 0x000=
05555556ead05 in recursive_edit_1 () at keyboard.c:749<br>#15 0x00005555556=
eb0a4 in Frecursive_edit () at keyboard.c:832<br>#16 0x00005555555b4e3f in =
main (argc=3D3, argv=3D&lt;optimized out&gt;) at emacs.c:2628<br><br></div>=
<div><br></div></div><br><div class=3D"gmail_quote gmail_quote_container"><=
div dir=3D"ltr" class=3D"gmail_attr">On Fri, 24 Jan 2025 at 22:32, Gerd M=
=C3=B6llmann &lt;<a href=3D"mailto:gerd.moellmann@HIDDEN">gerd.moellmann=
@gmail.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=
=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding=
-left:1ex">Len Trigg &lt;<a href=3D"mailto:lenbok@HIDDEN" target=3D"_bla=
nk">lenbok@HIDDEN</a>&gt; writes:<br>
<br>
&gt; OK, that&#39;s fixed the crash, but my original problem persists, with=
 a<br>
&gt; new artifact. This time slightly different repro steps to make things<=
br>
&gt; more visible:<br>
<br>
Okay, that&#39;s what I intended to fix. Thanks for the feedback.<br>
<br>
I think the rest of the behavior is somehow multi-tty. We talked about<br>
that already. I don&#39;t think I&#39;ll tackle that, sorry.<br>
<br>
&gt;<br>
&gt; - Open two terminal windows side by side<br>
<br>
&gt; - In the first terminal: emacs -nw --init-directory=3D~/emacs-test<br>
&gt; (using the original init.el I sent)<br>
<br>
&gt; - In the second terminal: emacsclient -nw, followed by C-x b C-n RET<b=
r>
&gt; (to switch buffers using tty child frame, leaving the cursor in<br>
&gt; *Messages* and the tty child frame has been dismissed)<br>
<br>
&gt; - Back to the first terminal: C-x b C-n RET (as above, this switches<b=
r>
&gt; buffers using the tty child frame, leaving the cursor in *Messages*<br=
>
&gt; and the tty child frame has been dismissed.<br>
<br>
&gt; - Now, notice that immediately upon switching focus back to the second=
<br>
&gt; terminal (I use focus follows mouse) we find the emacsclient &quot;hun=
g&quot;,<br>
&gt; but back on the first terminal the tty child frame has magically<br>
&gt; represented itself even though it had been dismissed!!!<br>
<br>
&gt; - If we move the mouse focus back to the first terminal, the tty child=
<br>
&gt; frame disappears.<br>
&gt;<br>
&gt; On Fri, 24 Jan 2025 at 18:26, Gerd M=C3=B6llmann &lt;<a href=3D"mailto=
:gerd.moellmann@HIDDEN" target=3D"_blank">gerd.moellmann@HIDDEN</a>&g=
t; wrote:<br>
&gt;<br>
&gt;=C2=A0 Gerd M=C3=B6llmann &lt;<a href=3D"mailto:gerd.moellmann@HIDDEN=
m" target=3D"_blank">gerd.moellmann@HIDDEN</a>&gt; writes:<br>
&gt;<br>
&gt;=C2=A0 &gt; Anyway. I&#39;ll develop a fix for that immediate problem t=
omorrow. I think<br>
&gt;=C2=A0 &gt; I&#39;ll just make it not crash for now, and perform the up=
date anyway,<br>
&gt;=C2=A0 &gt; which I guess 30 would do.<br>
&gt;<br>
&gt;=C2=A0 Pushed to master.<br>
</blockquote></div>

--000000000000802c58062c789b81--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 24 Jan 2025 19:07:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 24 14:07:07 2025
Received: from localhost ([127.0.0.1]:47070 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbP1G-000300-VX
	for submit <at> debbugs.gnu.org; Fri, 24 Jan 2025 14:07:07 -0500
Received: from mail-lf1-x12f.google.com ([2a00:1450:4864:20::12f]:54333)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1tbP1E-0002zQ-TH
 for 75056 <at> debbugs.gnu.org; Fri, 24 Jan 2025 14:07:05 -0500
Received: by mail-lf1-x12f.google.com with SMTP id
 2adb3069b0e04-53e3778bffdso2650179e87.0
 for <75056 <at> debbugs.gnu.org>; Fri, 24 Jan 2025 11:07:04 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737745618; x=1738350418; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=dc5EwbZoHxDGGS5P5Ag233RhkDpW8h0hIfM2+VQC210=;
 b=gcYZavoVG+w8VqqLT8b1X5mFkPAWbJ/lehes/2t6eUp6LmANW1I9FIe2JsPR3cbb8t
 qlWilN2QXEAqMY6itD1dy1HpW/Q9J2N5u1TdfSs0Fw/nI96eAwGdcPdIM1RRW11q59L+
 DScrFMlwuIU53JHCMOFNMp7arNEvwiirG5cJB4wRNyBi9bquk9mxoPNrPj7Li6yv/GCy
 E5sB6ujRPn5svvZf/WkC3kuKXTc90SCBZd21543cLG40f5WTm3c/YAG5I/BEsLs48u7o
 LoUZ3+mHnPo6z59lJqd7zZQbeatIY31Rlyino+gJefTBKxoO4RETN0tznJUO2FgieDFT
 rxBQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737745618; x=1738350418;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=dc5EwbZoHxDGGS5P5Ag233RhkDpW8h0hIfM2+VQC210=;
 b=cpSMU6IJH+wbInpfDeiaxGwCoL8SFGzp5gFLRdw+vYX1LeZn1zyM3urBEAxvNm6lK2
 OZVrFcJfaX1MjjKdz9cm5OZwFWJ9FEcxMOJN3v+y9MUlf8zicC1a8/lCgKufEZMPiuF6
 d4ESrAfG3zVj9TafEOk7wWzRv77CO0xJHI5NiYeFDBy37R5Sllnm5wCbCw387M342Ymt
 rf2nOgiM9CUdnmpRkWHKu+iik5FtIBbGtO42eZ5ibfkH+OiyxWKKyTkRCBIHQ07xbDsk
 p88V15O2e2ouMY77y6GgGwEkrrsU26qD3UhjoRe98lhXrB2dMHMewbseQG6XATqG7WNY
 Rg4A==
X-Forwarded-Encrypted: i=1;
 AJvYcCWHvwwXKfoWX1n1A1WAeCFbFMiwAVchNzswwh5WXDaeOo4BMf7H4DKmICWYl0G43eQPzUHt9A==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxyESyUp33dBNbmCKpjfCorIW1vxSo/bGAR9lslFXiQEZnEAB8G
 fa+Xn7rPrQuSDEn0E2ZD/knCeChzM1spso2XYlxit7ytgNFKB/A1siYYL/Q4cn/ZD0j5EEzS5F/
 ixf0+ecNFCQenPnN4hKEqKEpza+w=
X-Gm-Gg: ASbGncs8vla5UZhgobLZdVxY0a/iZ1k9eLNAKHmof9mU+UMISDOw0sQ9KsJESyOqTF/
 cswdz2Uro1Qdu5YaXgf2mt1AoVP+ZPTk/pO+1D6RuriJdA31/4Ai8vVsJKsKn
X-Google-Smtp-Source: AGHT+IHtIi2GNwU1RLPWhEP7Wd14dGYPme8Y78ST/KcahRArqI5dkfLjw1sudtbPe0nL9Tmk5LfZUnrN/uzhiVs05ho=
X-Received: by 2002:ac2:54b5:0:b0:542:249c:215f with SMTP id
 2adb3069b0e04-5439c22a8f6mr10066905e87.4.1737745617486; Fri, 24 Jan 2025
 11:06:57 -0800 (PST)
MIME-Version: 1.0
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2zfkhfr7r.fsf@HIDDEN> <86wmflwlok.fsf@HIDDEN> <m2r05tfqea.fsf@HIDDEN>
 <86v7v5wbqs.fsf@HIDDEN> <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 <m2frl8muao.fsf@HIDDEN>
In-Reply-To: <m2frl8muao.fsf@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Sat, 25 Jan 2025 08:06:40 +1300
X-Gm-Features: AWEUYZndGsL_wIKXLMgoqTU4foJO1plpk0fmVQfvfHnAGPjRLk9sHERr5MZ45AQ
Message-ID: <CAOGVwemYKXrZLZ-F6CZ69Kg+GgM_2PDQr4sQBqJqX1nbappxsw@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Content-Type: multipart/alternative; boundary="0000000000003d8c9e062c786e0d"
X-Spam-Score: -0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--0000000000003d8c9e062c786e0d
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, 24 Jan 2025 at 22:32, Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
wrote:

> I think the rest of the behavior is somehow multi-tty. We talked about
> that already. I don't think I'll tackle that, sorry.
>

You mentioned in the earlier email about single-kboard mode being a
limitation too big to address, but I'm confused as to why the child tty
frame (minibuffer?) that the user had actually dismissed then magically
reappears when the focus was moved to another terminal. Is it that the
child tty frame needs to be fully destroyed upon dismissal? (Is that
something posframe could do?) Could you please provide a description of
what you think is actually happening?

Cheers,
Len.

--0000000000003d8c9e062c786e0d
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><div class=3D"gmail_quote gmail=
_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Fri, 24 Jan 2025=
 at 22:32, Gerd M=C3=B6llmann &lt;<a href=3D"mailto:gerd.moellmann@HIDDEN=
m">gerd.moellmann@HIDDEN</a>&gt; wrote:<br></div><blockquote class=3D"gm=
ail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,=
204,204);padding-left:1ex">I think the rest of the behavior is somehow mult=
i-tty. We talked about<br>
that already. I don&#39;t think I&#39;ll tackle that, sorry.<br></blockquot=
e><div><br></div><div>You mentioned in the earlier email about single-kboar=
d mode being a limitation too big to address, but I&#39;m confused as to wh=
y the child tty frame (minibuffer?) that the user had actually dismissed th=
en magically reappears when the focus was moved to another terminal. Is it =
that the child tty frame needs to be fully destroyed upon dismissal? (Is th=
at something posframe could do?) Could you please provide a description of =
what you think is actually happening?</div><div><br></div><div>Cheers,</div=
><div>Len.</div><div><br></div><div><br></div></div></div>

--0000000000003d8c9e062c786e0d--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 24 Jan 2025 09:32:26 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 24 04:32:26 2025
Received: from localhost ([127.0.0.1]:43691 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbG38-0008OJ-3C
	for submit <at> debbugs.gnu.org; Fri, 24 Jan 2025 04:32:26 -0500
Received: from mail-ej1-x632.google.com ([2a00:1450:4864:20::632]:52534)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbG35-0008O4-00
 for 75056 <at> debbugs.gnu.org; Fri, 24 Jan 2025 04:32:23 -0500
Received: by mail-ej1-x632.google.com with SMTP id
 a640c23a62f3a-aaedd529ba1so277633966b.1
 for <75056 <at> debbugs.gnu.org>; Fri, 24 Jan 2025 01:32:22 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737711136; x=1738315936; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=rxpFttSNUZxSabdt1bfcc/8/4vjphOs77ue0tCKMTSE=;
 b=DFIQgHUW5xXU2Fle1zknp3cnIwuq+ytkeLEU7AmMkb9kcWyYrm/H3EZQuKPWZqgT2d
 1wl5y2o4eZSusIHGR83plRwdSwg18cR7QRNEeLJE3fYhZc7VcxPOkcws6D7fJoALxE9W
 dFqzkd2MjMqO27hYt8svl1qbr/pLGrEGWxLMQ9jgjzMzTc0pFLomEHTkteZTrDJhBR1L
 +KTx1CvDUQDETWJ1dMlp5hxEKYpRMswILkQQICv08sOsSHrRLS36zu7GZMA45sjWA4XA
 +8GWHL6Plt3EOfbk2pktlTWghOZjnmANqQWc/FlEUqmD9FH+9px/8vS+K+YcYQ1C6VcD
 MoFw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737711136; x=1738315936;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=rxpFttSNUZxSabdt1bfcc/8/4vjphOs77ue0tCKMTSE=;
 b=X8ATjjomHzQkdtFBF6a8ssg2lGSwk5wMo0SIxPpczE8xmUyzbwnzTX0WAWxo3910YQ
 ziYoAGb/N67+/yzxZM0kyZAjt9Mx4BwDD08nrBTRTlvxdDtFY/gJa4LViVHPTarfHxVt
 RdqxwSsHgYdqlfCbBNF9dnQttfDwUDM/KQK4VEwFCEejnUYx3Aajho83B5fZMvuIAt3/
 cQWxgyxkDgYWIPVpTKi4Hg7U5MLgbrSU3ykO3HrHqCihccbELC9Jx1IISmrqoOF3KgyT
 AsO3jJcPnj0uQfnZcDl92Y9zyTazIlB8teLStaHugFGV0JbH0imHoBnJONfo8wS1sww6
 mCLg==
X-Forwarded-Encrypted: i=1;
 AJvYcCXRFwWd2uVZcmNqMTTNSoG53lgtIyjG+ATNunb/OXhOrT8NcbukDtAdbgtWBlqYQGdWMR2bSQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxPBugq9OCxYYnA7ln/29fpEkfTHO7oKoq1gmQkHWqGcsMmH82o
 WHOaerF5PHVyMNg8dK4W5ZYt4mCXrCkwghRMfQglStmSXWeLGF7FFz/V/A==
X-Gm-Gg: ASbGncvsF1mOQLKb0JqdgUSi/KJO6srMq24xNSDp/2lfBYuxUINIs+LVdEh8/Goo2tS
 49BaaMH0jHFMCdAnq1cwRqOiGP4/RN2Q02ugRY0jfI+ax6IniE9DGWPeUWkebBxdq8hUhktZ9vd
 HJ58FvpoQheS+f6enzvwltQ8KqB//nIYQVbXxCdXKiclnD2AZ/idDhgdLjcoJZPQXoDXJbAatLj
 rLGGVB1K3pZmgiIOl0BI6AGTOtZQ68wbKF5lqsHh2Sg9u5dfX15LjJngiGnjuBO/ZS8Hi40ZgG5
 ASlKToVJX6kgq/oe2M7rvy4d0hWiwmzF0Rwtq1VJ4sHJX471xSi1/kG0ohB9TYcFtSm0cC2AFzz
 ABZw8e136wlr2Mw==
X-Google-Smtp-Source: AGHT+IECLnVA6u8fkWOUSowZQPce5c6o3TxZTkzxt2+xTeNMGfi2JGQ9cYnoPovny2LcO7QYF8sNXQ==
X-Received: by 2002:a05:6402:3587:b0:5dc:100c:1560 with SMTP id
 4fb4d7f45d1cf-5dc100c1768mr12511847a12.18.1737711136273; 
 Fri, 24 Jan 2025 01:32:16 -0800 (PST)
Received: from pro2 (p200300e0b71e1a00b5c722abfa07c989.dip0.t-ipconnect.de.
 [2003:e0:b71e:1a00:b5c7:22ab:fa07:c989])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab6760ab363sm97649166b.114.2025.01.24.01.32.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 24 Jan 2025 01:32:15 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
 (Len Trigg's message of "Fri, 24 Jan 2025 22:25:56 +1300")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m2zfkhfr7r.fsf@HIDDEN> <86wmflwlok.fsf@HIDDEN>
 <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
 <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
Date: Fri, 24 Jan 2025 10:32:15 +0100
Message-ID: <m2frl8muao.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Len Trigg <lenbok@HIDDEN> writes:

> OK, that's fixed the crash, but my original problem persists, with a
> new artifact. This time slightly different repro steps to make things
> more visible:

Okay, that's what I intended to fix. Thanks for the feedback.

I think the rest of the behavior is somehow multi-tty. We talked about
that already. I don't think I'll tackle that, sorry.

>
> - Open two terminal windows side by side

> - In the first terminal: emacs -nw --init-directory=3D~/emacs-test
> (using the original init.el I sent)

> - In the second terminal: emacsclient -nw, followed by C-x b C-n RET
> (to switch buffers using tty child frame, leaving the cursor in
> *Messages* and the tty child frame has been dismissed)

> - Back to the first terminal: C-x b C-n RET (as above, this switches
> buffers using the tty child frame, leaving the cursor in *Messages*
> and the tty child frame has been dismissed.

> - Now, notice that immediately upon switching focus back to the second
> terminal (I use focus follows mouse) we find the emacsclient "hung",
> but back on the first terminal the tty child frame has magically
> represented itself even though it had been dismissed!!!

> - If we move the mouse focus back to the first terminal, the tty child
> frame disappears.
>
> On Fri, 24 Jan 2025 at 18:26, Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN=
m> wrote:
>
>  Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
>
>  > Anyway. I'll develop a fix for that immediate problem tomorrow. I think
>  > I'll just make it not crash for now, and perform the update anyway,
>  > which I guess 30 would do.
>
>  Pushed to master.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 24 Jan 2025 09:26:25 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 24 04:26:25 2025
Received: from localhost ([127.0.0.1]:43681 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbFxJ-00087k-Cy
	for submit <at> debbugs.gnu.org; Fri, 24 Jan 2025 04:26:25 -0500
Received: from mail-lj1-x22f.google.com ([2a00:1450:4864:20::22f]:60709)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1tbFxE-00087K-Q4
 for 75056 <at> debbugs.gnu.org; Fri, 24 Jan 2025 04:26:23 -0500
Received: by mail-lj1-x22f.google.com with SMTP id
 38308e7fff4ca-30737db1aa9so17489571fa.1
 for <75056 <at> debbugs.gnu.org>; Fri, 24 Jan 2025 01:26:20 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737710774; x=1738315574; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=fJhjucgKVwJvaAE05gfrRk2OwEvkxgi1j3qbHWbrLyE=;
 b=XmKjv2hAGo1PxBdAqSRHMjVmIns0ojIP8m0ACVkSHzDA1A5n17lUS0jdUvZrkEjJ3T
 Pbpsa59fCyPnzDh3xHCmYDg5cyWC54njgG/e94jhNUozGCUWc3299QLacxyxBFtbF4rN
 N42hIX4AfVv8abOep4SWcMQgdJCg/GldUS6ZK9JOOMvU0e1tS5L6hxTt5Bn+xkBHpuGb
 WXTf/IK5cUEYj1mYp4gZ2yC73MfSbAjMI3lfTlIOxTt0wJc0wme8lBxLekneUGhMvuCc
 DwlxShZnd6FIE4u6A+RZ+XroYb1f82siTNmOFx6tK9t/RO6Pauf+o9WH+TUJN5NldhAl
 XNDg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737710774; x=1738315574;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=fJhjucgKVwJvaAE05gfrRk2OwEvkxgi1j3qbHWbrLyE=;
 b=FQxn8w5BGENmlcUoOtWPG2PCH7/5MD2NpiTqLml5H2oSJuJjfo/zcErWtSODE3kr3d
 2kPfMk3bDlkCWskpT4XWsoIslR0ilzW4k52M/Krn6ZnRl6RtBlOjzKVvieDbWdXqbUHx
 CSl5+yxbevkp+xsbDEo6bFfuEj+5XIq/1LgT4DNLM/IH30kQHuAitiUxpotEtF9wlNqW
 KB+Y2/AMixlgjS54fbJHwP/98HYsi/qIyarYRxwrjAs8QLl7ZE9BuGU6Vd4YMTib2Eu2
 Wb5Sdg6Fq20logzXTgAn4NYfoil+1ZrXQst3cJRw8/e3V7uc6hjBzoxWsNuF+Ggb7rdq
 YsNQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCWp91B4Ja0ffNEEmw9uskRsWDDZ+AFkmR+M7ugY4vHJylsU25/x43kon5IqmzfDnzjvWyeYbA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwLCFrCvXIl1ErVMFAdewH4bCNj+lV9p/3rhB2qL+VJ/NPjN0yf
 LSRh3vdAHU3tvZqyGnclV2kvKYri3vPGVbp9zeHkiRS7YsMM+XGQMeLROiGUJ0/+VfIc/qGLVzR
 IDhBgMAkFu+idjeKtjDjDkG0k6Nk=
X-Gm-Gg: ASbGncvosCKlIztIoD/lLcvkWOAmrQhTBFkBBzAPDkTI0EGQkxJBqQSS6aHBDZyrxb5
 kkWaqdTsot3Gu2BHWL6q/OTQceFJgFn3FdGKAXMzbMN5qypBd47aq6zxE4lA7
X-Google-Smtp-Source: AGHT+IHYWscwDv9UGLjKprCEIK8jNg8Hs9/oanNBDwRw62nFXupucAIm7rlODySH7w3F2facsk5U4yJzhrPY9BZRzJg=
X-Received: by 2002:a2e:a544:0:b0:302:40ec:a1bb with SMTP id
 38308e7fff4ca-3072ca99b57mr120811201fa.21.1737710773829; Fri, 24 Jan 2025
 01:26:13 -0800 (PST)
MIME-Version: 1.0
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN> <m2zfkhfr7r.fsf@HIDDEN>
 <86wmflwlok.fsf@HIDDEN> <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN> <m25xm4eq97.fsf@HIDDEN>
In-Reply-To: <m25xm4eq97.fsf@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Fri, 24 Jan 2025 22:25:56 +1300
X-Gm-Features: AWEUYZkrJWTzXyQHR4vO-7AmXPKYqMLZV4CGTPBboc6TvSp3rkzcnDnlrHHoMYo
Message-ID: <CAOGVwem22KKca2rZmjH2Z7JYa97zs67pqwtipurbiQZYuvkHuw@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Content-Type: multipart/alternative; boundary="000000000000658878062c7051b7"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--000000000000658878062c7051b7
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

OK, that's fixed the crash, but my original problem persists, with a new
artifact. This time slightly different repro steps to make things more
visible:

- Open two terminal windows side by side
- In the first terminal: emacs -nw --init-directory=3D~/emacs-test  (using
the original init.el I sent)
- In the second terminal: emacsclient -nw, followed by C-x b C-n RET (to
switch buffers using tty child frame, leaving the cursor in *Messages* and
the tty child frame has been dismissed)
- Back to the first terminal: C-x b C-n RET (as above, this switches
buffers using the tty child frame, leaving the cursor in *Messages* and the
tty child frame has been dismissed.
- Now, notice that immediately upon switching focus back to the second
terminal (I use focus follows mouse) we find the emacsclient "hung", but
back on the first terminal the tty child frame has magically represented
itself even though it had been dismissed!!!
- If we move the mouse focus back to the first terminal, the tty child
frame disappears.




On Fri, 24 Jan 2025 at 18:26, Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
wrote:

> Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:
>
> > Anyway. I'll develop a fix for that immediate problem tomorrow. I think
> > I'll just make it not crash for now, and perform the update anyway,
> > which I guess 30 would do.
>
> Pushed to master.
>
>

--000000000000658878062c7051b7
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>OK, that&#39;s fixed the crash, but my original probl=
em persists, with a new artifact. This time slightly different repro steps =
to make things more visible:</div><div><br></div><div>- Open two terminal w=
indows side by side</div><div>- In the first terminal: emacs -nw --init-dir=
ectory=3D~/emacs-test=C2=A0 (using the original init.el I sent)</div><div>-=
 In the second terminal: emacsclient -nw, followed by C-x b C-n RET (to swi=
tch buffers using tty child frame, leaving the cursor in *Messages* and the=
 tty child frame has been dismissed)</div><div>- Back to the first terminal=
: C-x b C-n RET (as above, this switches buffers using the tty child frame,=
 leaving the cursor in *Messages* and the tty child frame has been dismisse=
d.</div><div>- Now, notice that immediately upon switching focus back to th=
e second terminal (I use focus follows mouse) we find the emacsclient &quot=
;hung&quot;, but back on the first terminal the tty child frame has magical=
ly represented itself even though it had been dismissed!!!</div><div>- If w=
e move the mouse focus back to the first terminal, the tty child frame disa=
ppears.<br></div><div><br></div><div><br></div><div><br></div></div><br><di=
v class=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class=3D"gma=
il_attr">On Fri, 24 Jan 2025 at 18:26, Gerd M=C3=B6llmann &lt;<a href=3D"ma=
ilto:gerd.moellmann@HIDDEN">gerd.moellmann@HIDDEN</a>&gt; wrote:<br><=
/div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bo=
rder-left:1px solid rgb(204,204,204);padding-left:1ex">Gerd M=C3=B6llmann &=
lt;<a href=3D"mailto:gerd.moellmann@HIDDEN" target=3D"_blank">gerd.moell=
mann@HIDDEN</a>&gt; writes:<br>
<br>
&gt; Anyway. I&#39;ll develop a fix for that immediate problem tomorrow. I =
think<br>
&gt; I&#39;ll just make it not crash for now, and perform the update anyway=
,<br>
&gt; which I guess 30 would do.<br>
<br>
Pushed to master.<br>
<br>
</blockquote></div>

--000000000000658878062c7051b7--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 24 Jan 2025 05:26:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 24 00:26:58 2025
Received: from localhost ([127.0.0.1]:43226 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tbCDZ-0002HG-UF
	for submit <at> debbugs.gnu.org; Fri, 24 Jan 2025 00:26:58 -0500
Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]:42266)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tbCDW-0002H0-6y
 for 75056 <at> debbugs.gnu.org; Fri, 24 Jan 2025 00:26:56 -0500
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-ab2e308a99bso326222566b.1
 for <75056 <at> debbugs.gnu.org>; Thu, 23 Jan 2025 21:26:54 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737696408; x=1738301208; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=eu+9Rw33gocdNYMYESwticq1hlyZlgzje11affCaLrM=;
 b=UqfStnvi5rQdcc55uAG7q8rNA6JWDrbC4YAy+fT4HX5QKgDAmhHkG4go/OyHJHiWZQ
 CPQTEcYfBDg47dUnro70xbzGwdw5zlZ0+/7v9x/FpNhMSCanY8nU5+ja66pSk+7NWX94
 0voIYtuPlVFbrTi41vjhpzTEeaoQgZu7GQq0Fic48JCbnzYyU519UmzFxHSsFCHX/brd
 tRtp5ma+W4Ybn3D5R9CmyIotL74CcfOgIZaxgsoqT+sMMJNu1rHxXYTXmH/4wjpGyBEs
 LQ4YQpJUa/xOlvuL0ze4Lmv1eARLFngGedHpjthaNtUmXxUdRZaVdtXD0d1yo3XXixuw
 kZLw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737696408; x=1738301208;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=eu+9Rw33gocdNYMYESwticq1hlyZlgzje11affCaLrM=;
 b=CkC0JgUsvmaEtJ0JOj2TCYZ2YHPL8munutRk2DmJCENelcqntIo0sVart4M7gESPLl
 Tcu05HdM8zcUN7KFOidk93XRR2YE543FBh3+qBqQfYxfFlZaJao8Yg2Gghmie799MFWR
 4gEHOL2m1jq5zoeGBWKpDT9QtUr0PobgnqAaKBUo91K2HdZBZpWvHGc1h9zqaKO2dmKL
 wak9fJJc9I21n28eun7/KLifwZd2ohV/qZ0L5+2oDytUKJHaRZXRFROb8h57Qz9x9ryy
 WLE9u6Bqr6YgVqBRuH+KN6Sxd6thsE4TKJlnCPXGuUY+h9mL05L2BFJXobgY9TRVR6JA
 gbpQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCXT6cLI2FOJmr6rmvp7z+7g04OM0F+by/WJLLMjaZ7Yaewb3DcK0IhOZB37jtZyB+LBHSYJmg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyPG6/Zq/KeBkTAeBgEGMsRbCCZ5hda6hELWiEPPM9SCXnthw0R
 Xn7gZz7aBVvKeXQW5CN0jZv1syEfjtFmk/3+eggsM3HT9m8a0tu2NLhxiQ==
X-Gm-Gg: ASbGncue2zF9hFoau+Q2S5d2GzksjwIMSX+mwgr8noDAyEaIxS7uGxrfyyeDc3QelSe
 spo4X1LzNczvyOe2BpzeM5Af0KkzfI4490UcCT2BCOlpLFmIXdHYf2ANEbsJ+BnrmFckL7V72Kr
 1vyAwsAhu/wJCjp/Gfg2cIY4Gcgy5CHpgGGoZ73J7QxODSGJIAiQocB40pksQgp7xQrp1XAvDpp
 EwlGdCywVAAPvq47Xp8Td3qmg5bwtK72VhvByqhvXP/cLaghOSTpYomx8HyC48xvNhDjEjCJV+M
 mPz/PVFfgQs7TwtV5EVSlcPN2pIeqaN2/RRXfp/UnJxHz4RNU+mLDS7ecVbTrHSL7kbTb1dZCPT
 ipTF5nbZjgg2UyA==
X-Google-Smtp-Source: AGHT+IFlaRXuM+tT6H1kIqEl5FQxw3D2QArb7/TIWhnOEnEyYYkfq8GoYYETk49bAnrcbly+0/5o2w==
X-Received: by 2002:a17:907:3da2:b0:ab6:362a:3fd9 with SMTP id
 a640c23a62f3a-ab67457b6f5mr224759366b.1.1737696407518; 
 Thu, 23 Jan 2025 21:26:47 -0800 (PST)
Received: from pro2 (p200300e0b71e1a00b5c722abfa07c989.dip0.t-ipconnect.de.
 [2003:e0:b71e:1a00:b5c7:22ab:fa07:c989])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab676117b80sm65850766b.183.2025.01.23.21.26.45
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 23 Jan 2025 21:26:46 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <m2a5bhe2wy.fsf@HIDDEN> ("Gerd =?utf-8?Q?M=C3=B6llmann=22'?=
 =?utf-8?Q?s?= message of "Thu, 23 Jan 2025 20:38:37 +0100")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN>
 <m2zfkhfr7r.fsf@HIDDEN> <86wmflwlok.fsf@HIDDEN>
 <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 <m2a5bhe2wy.fsf@HIDDEN>
Date: Fri, 24 Jan 2025 06:26:44 +0100
Message-ID: <m25xm4eq97.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN> writes:

> Anyway. I'll develop a fix for that immediate problem tomorrow. I think
> I'll just make it not crash for now, and perform the update anyway,
> which I guess 30 would do.

Pushed to master.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 23 Jan 2025 20:00:47 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 23 15:00:47 2025
Received: from localhost ([127.0.0.1]:42496 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tb3Ne-0001ba-RC
	for submit <at> debbugs.gnu.org; Thu, 23 Jan 2025 15:00:47 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:35526)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tb3Nc-0001bJ-M5
 for 75056 <at> debbugs.gnu.org; Thu, 23 Jan 2025 15:00:45 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tb3NW-0001g1-Hi; Thu, 23 Jan 2025 15:00:39 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=V7O8qTHJujXQpPb9zKSlwhenUfeysNBtTyp2haaeMcE=; b=CXX4pQzGukec4ynSPxYX
 Qkqi1huD9kIGMyqnl6jteL9At34kQQ0K/wT1DrXSn499kjx6GYlJNR3EBkoB5SlGJN2/4jiGbb2e3
 lhzE8hiqugLNSnRD5RZAaImrSMo7kQnyK9hok/Cn2892fl0Q4RnEsfdqhaCkM92QZrX8KCvVJmZDB
 kGhPSKEfcl44uk28oswatF5bXDD9mQLsXyLhsOHxVWDnTa7Dsjx1ojR7Epeh7rE069vb62lNOynv7
 SREux2nW58poxO3L6hl4aZo2w6ZFWdLE8bADAX/3LH/A97sX2nd1VhLaAEUr/3EDqS7VsjTx/Z/AK
 +vH2FbnlJXAmVg==;
Date: Thu, 23 Jan 2025 22:00:31 +0200
Message-Id: <868qr1z4f4.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
In-Reply-To: <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 (message from Len Trigg on Fri, 24 Jan 2025 08:31:10 +1300)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN> <m2zfkhfr7r.fsf@HIDDEN>
 <86wmflwlok.fsf@HIDDEN> <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Len Trigg <lenbok@HIDDEN>
> Date: Fri, 24 Jan 2025 08:31:10 +1300
> Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
> 
> On Fri, 24 Jan 2025 at 06:34, Gerd Möllmann <gerd.moellmann@HIDDEN> wrote:
> 
>  Eli Zaretskii <eliz@HIDDEN> writes:
> 
>  > What is the value of z_order?
> 
>  Len, can you please print
> 
>    p root->visible
> 
> (gdb) p root->visible
> $1 = 0
> (gdb) p z_order
> $2 = (Lisp_Object) 0x0

So the crash is because we don't verify z_order is a cons cell before
we take its cdr.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 23 Jan 2025 19:38:47 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 23 14:38:47 2025
Received: from localhost ([127.0.0.1]:42450 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tb32N-0000QN-Bm
	for submit <at> debbugs.gnu.org; Thu, 23 Jan 2025 14:38:47 -0500
Received: from mail-ed1-x531.google.com ([2a00:1450:4864:20::531]:49525)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tb32K-0000Q5-S4
 for 75056 <at> debbugs.gnu.org; Thu, 23 Jan 2025 14:38:45 -0500
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5da135d3162so2220462a12.3
 for <75056 <at> debbugs.gnu.org>; Thu, 23 Jan 2025 11:38:44 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737661118; x=1738265918; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=CRWM6Q0JGSaRAaMTrmysESocrwka9+iYMahF8pXxPtI=;
 b=XZBQ9yrDu7ebbqeeX6RrEqX5LNUVPcOlZXrOBHeJSC3MUBubNUXuGAFrTi2iPq0BnA
 of5gBXEweQdQA/G7L2a7sTuZmUQUUn6jOgs2JUVGPg0aFnw4iRp6nKlwKX9LtOHAThSI
 YpajsI4brhlscTDs32sJ8ahO7jlkpxEDB87YONwOJmzJoYWkvN6M+ijjeI2c8YGDcqZZ
 0EzYDLMVz6jIKunSy2Io2wX+eHD5At1VhBYiy9Tm4CJfq5XTium1tj3ex6JWsHHNdYUq
 5CwLmVnz5iiDGMO/rxHofrBS1YLZXl5h3vdMMNjLzioTnM/LYEtkhgnxWB78kOnqyGs9
 NOhw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737661118; x=1738265918;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=CRWM6Q0JGSaRAaMTrmysESocrwka9+iYMahF8pXxPtI=;
 b=k3Jlvv7RIHMzNluT5ErUJhIZsREBw6XWL3zFcIMuYzg+nH4uoRBm4vCpkqgfJr8LTC
 CVQ49ww+UzJhkrgL2VLcqfpazwqbTC+jkV3NuvhxFN07+oyKB28aAkBjRMosoE3pkOET
 H36ff52lW+8Ovl2Ghdvdp2x10P2hOcwVrFA6F96hJx7dPsmWs1lPiyGzkBuLvPPutinr
 nRRuw4sGLKsLoSbZ0KwXCd1kcUA6JsN+NQK+fTrg9HQbrMBokdD4+R52/6S0iarVgCvk
 mvDC8eoCKceucuv1j4Tgbo3uYrftSxAW1hhwvdBFodVvvfA356cG+mB4kBmiZ9a/R9Zb
 +V2A==
X-Forwarded-Encrypted: i=1;
 AJvYcCUpb3Q1hURO77XNr4Y9si5NDOMjeyAKVbw3DcCLP2uLrmw6xMxs81rHuLzEXsJRb9WpCOLFug==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yyuy6Fu18UzcfNIymrXehjuMUAQGdoS28L+q3rjzDsGUPFnuqJB
 3JgIbDKNmZJuNENl0iK55KztF88qEf42qRveGOifEbiXOTPUfpRtrFUkbg==
X-Gm-Gg: ASbGncvUHnxK0mZyh2Olj/fgbXa6NjhKP2ebbGD2ziE0lwu64In+r5/AoFvZYb2LJHm
 MdczSff6NidKAJw3VjxyEmkCkgehTDmDa5BsnfPwUVmm3UdF1Sb8Bixl1kbne2Jhwz4tdIhdZQ8
 wdAgT/0XoACkKF4rA+Di4BhW9qO6FsyRno9scR+pXQOUsOIce40BD6DwFjM63Hdwvt7kizrvcAo
 CibiDvvLRtADUk2nUoltiJHR33+AlUMOzRBjPQgubXOjGNtmZpoiogEEGZyKjwFZYfKd4ev9L+w
 s5Ja4Ge3erSTB6KWE8o6FdB2/9no3z1oMhkVwJviKD6hscXlh2xg6zrKZox1rLj4ntjUZ1LTR0W
 kZKr1nNShzjJi
X-Google-Smtp-Source: AGHT+IHtlXZQJyEyvTjzg8dO/7NljDzNAVTN0dIxSg93DWivarO5pIgjNyAEBS6k9aVrPW/ClAF+ug==
X-Received: by 2002:a05:6402:1d52:b0:5dc:1289:7f1c with SMTP id
 4fb4d7f45d1cf-5dc1289800bmr2388151a12.29.1737661118257; 
 Thu, 23 Jan 2025 11:38:38 -0800 (PST)
Received: from pro2 (p200300e0b70b3c00a9b60a97a92ff44f.dip0.t-ipconnect.de.
 [2003:e0:b70b:3c00:a9b6:a97:a92f:f44f])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5dc186d8c3esm71865a12.80.2025.01.23.11.38.37
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 23 Jan 2025 11:38:37 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
 (Len Trigg's message of "Fri, 24 Jan 2025 08:31:10 +1300")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN>
 <m2zfkhfr7r.fsf@HIDDEN> <86wmflwlok.fsf@HIDDEN>
 <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
 <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
Date: Thu, 23 Jan 2025 20:38:37 +0100
Message-ID: <m2a5bhe2wy.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Len Trigg <lenbok@HIDDEN> writes:

> On Fri, 24 Jan 2025 at 06:34, Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN=
m> wrote:
>
>  Eli Zaretskii <eliz@HIDDEN> writes:
>
>  > What is the value of z_order?
>
>  Len, can you please print
>
>    p root->visible
>
> (gdb) p root->visible
> $1 =3D 0
> (gdb) p z_order
> $2 =3D (Lisp_Object) 0x0

Thanks, that explains the crash. I would never had expected that we
try to update invisible frames, hence the assert with --enable-checking
at the start of the function.

Now, the $1000 question is why is mini_frame in redisplay_internal
invisible? Pretty sure it has something to do with multi-tty.

Anyway. I'll develop a fix for that immediate problem tomorrow. I think
I'll just make it not crash for now, and perform the update anyway,
which I guess 30 would do.

Thanks!




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 23 Jan 2025 19:32:01 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 23 14:32:01 2025
Received: from localhost ([127.0.0.1]:42422 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tb2vj-000060-2j
	for submit <at> debbugs.gnu.org; Thu, 23 Jan 2025 14:32:01 -0500
Received: from mail-lf1-x131.google.com ([2a00:1450:4864:20::131]:48193)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1tb2va-00005U-DD
 for 75056 <at> debbugs.gnu.org; Thu, 23 Jan 2025 14:31:47 -0500
Received: by mail-lf1-x131.google.com with SMTP id
 2adb3069b0e04-54024ecc33dso1358356e87.0
 for <75056 <at> debbugs.gnu.org>; Thu, 23 Jan 2025 11:31:46 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737660688; x=1738265488; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=d7M5ummjgO5Sz34bzKPeBrf2tCefUVBP8n/KfMG4bVA=;
 b=jbDgd7PPtDODJrrwbywFeKk7HvDNObOYCbh2ibbLHtqrGNMk+MRAIuW6ljjVPOyvnf
 4OwMUdpkHFmVqhXvdwMloTWrUyKgrX5hmXFo4v9/p5URPiow2Eurmz38Kk7jSo25YcPX
 zbJ2UnqQchpNIigXU3mS6LeWMQDZX3oN8b91iWtXQX4xOUsdU4zqnVwfMqG6NUDTgAN6
 QHRpJAiN7SV7XGjR372x06i01nivdVcMbND1x71BVqCGlyc2gzXn2z+tCAalWnBGWtLZ
 bKRcmpApUAwvo2+e/1guGHzudVO4GawClPBaQg1sqhSFeK3kocYYEUGjdiCpHYTGWWMj
 gChw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737660688; x=1738265488;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=d7M5ummjgO5Sz34bzKPeBrf2tCefUVBP8n/KfMG4bVA=;
 b=V5/0sRkONway7Svn6qHasWnAXeXkAWtER07bFJ4XvVwjszKRRwqIDZZVz7d6P+Zmgz
 KJKgbZhfYe+WE+h0yztt6t8WXxle/JFJ5nybwC+r/Hk3eKb4huFEHpWe4UBawR0Wx9A5
 eUFVwFlwFDy+D2wcWtzlG0ZadudavVpTy179Tg6SL9oFDcC/S1Wa1RpcsiAfjxhaCXvi
 E6Jfyl9qfb6i32qaGlSpDDLo8miqseolbzQcJkRNASPbEoTzcjjwd1hdoVTf4dCpCe+4
 PfCfs/rhNZUBg0/WEMkFa665fHAdwnuLnd9xErDecEikf0D9Fjp7VJF9JBE1lh0T/Sgv
 OuuQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCWTK5rASEVqw/yOxhkIDtUxolmDeqOPPMj/7MzTK0N/gyhxAlgnjnj9W/54vUK0sUiyWrsmzg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yz1Nh19phSpTLZIPRFLx3xWjJ9fqiuv3KIc7Md1FHOGXH+hmTeA
 loyFsgyQkGI1st7l4mFeiW3im4eFda8ZHKSofSYpgKeSsUFnGUf9MYTBn23Si8MQ03tBlYmAevO
 TE889CECRRsDR3dh4bd3BHCM8J4c=
X-Gm-Gg: ASbGncsQ48vq61mHq9xG8iFsyjx6n+H/BRoRxxVqNo6yA2lyb8TChafTAdhPdvAbyz1
 48kfetfFlGu2SJljuvWVxFOALGfrWXLP8pQ66dYvbK7Q3r3Hart/i1vqiez20
X-Google-Smtp-Source: AGHT+IFg8IpXtDCWWnTxjefjm8KZNKf7xI2H+0DtbzpoypJHuVaUNjvM5eyVnd29caF7sniU7nBvjgEM2HIewIx3+h8=
X-Received: by 2002:ac2:485c:0:b0:540:1cb9:850b with SMTP id
 2adb3069b0e04-5439c2483bemr9090280e87.31.1737660687217; Thu, 23 Jan 2025
 11:31:27 -0800 (PST)
MIME-Version: 1.0
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN> <m2zfkhfr7r.fsf@HIDDEN>
 <86wmflwlok.fsf@HIDDEN> <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN> <m2ed0te8ny.fsf@HIDDEN>
In-Reply-To: <m2ed0te8ny.fsf@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Fri, 24 Jan 2025 08:31:10 +1300
X-Gm-Features: AbW1kvYqTVk44M-_Zd2981uHqYfZ_uX2rbHM_1JlT3qhMcifIg1IGUFc8SEAlDA
Message-ID: <CAOGVwenYec4TCkA9vLXA2kXpOtpjANQP95nLVDvMaH3YFFtg3g@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Content-Type: multipart/alternative; boundary="000000000000008106062c64a880"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Eli Zaretskii <eliz@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--000000000000008106062c64a880
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, 24 Jan 2025 at 06:34, Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
wrote:

> Eli Zaretskii <eliz@HIDDEN> writes:
>
> > What is the value of z_order?
>
> Len, can you please print
>
>   p root->visible
>


(gdb) p root->visible
$1 =3D 0
(gdb) p z_order
$2 =3D (Lisp_Object) 0x0

--000000000000008106062c64a880
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_quote gmail_quote_container"><div =
dir=3D"ltr" class=3D"gmail_attr">On Fri, 24 Jan 2025 at 06:34, Gerd M=C3=B6=
llmann &lt;<a href=3D"mailto:gerd.moellmann@HIDDEN">gerd.moellmann@gmail=
.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"mar=
gin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1=
ex">Eli Zaretskii &lt;<a href=3D"mailto:eliz@HIDDEN" target=3D"_blank">eli=
z@HIDDEN</a>&gt; writes:<br>
<br>
&gt; What is the value of z_order?<br>
<br>
Len, can you please print<br>
<br>
=C2=A0 p root-&gt;visible<br></blockquote><div><br></div><div><div dir=3D"l=
tr"><div><br></div><div>(gdb) p root-&gt;visible</div>$1 =3D 0<br>(gdb) p z=
_order<br>$2 =3D (Lisp_Object) 0x0<br><div><br></div><div><br></div></div><=
/div></div></div>

--000000000000008106062c64a880--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 23 Jan 2025 17:34:37 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 23 12:34:36 2025
Received: from localhost ([127.0.0.1]:42173 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tb16C-0002ke-FS
	for submit <at> debbugs.gnu.org; Thu, 23 Jan 2025 12:34:36 -0500
Received: from mail-ej1-x635.google.com ([2a00:1450:4864:20::635]:50327)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <gerd.moellmann@HIDDEN>)
 id 1tb169-0002kN-AF
 for 75056 <at> debbugs.gnu.org; Thu, 23 Jan 2025 12:34:34 -0500
Received: by mail-ej1-x635.google.com with SMTP id
 a640c23a62f3a-aa69107179cso262442466b.0
 for <75056 <at> debbugs.gnu.org>; Thu, 23 Jan 2025 09:34:33 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737653667; x=1738258467; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=ywLWij9JtOSEksvFA4XEonNTLrw4imvE61OebADxWts=;
 b=QtIp3ZVuDditPH4fuoAv48izH136h5nzUtrWZ1Sh74JOxaa+914goxVlg1pi9Lm2WP
 oiFsY/RXbzJPp+Rrb9LKXKYmFD+zsAkG7fIP21umrd/t/ZRyjJMrEiURfeQNoXdWJbsJ
 bUGUs4FftNXloHwwx0XJarWngPhZthI1bejAludyWCf0wN7MePcOo4hDsNchl8d0QJTn
 HYAvUh3eT4zai8I7qZtJQO7OfG7685LKXmvC7RQOatic5Oeo3+dYE7ZAgxcJSsj8PWtz
 izaK/6AgJCCgrtObYAuZlOXsNiTKrcu8V8M1mRwohY23si4XMzoa/Mw2Iz6E8PbdQr0U
 la+A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737653667; x=1738258467;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=ywLWij9JtOSEksvFA4XEonNTLrw4imvE61OebADxWts=;
 b=klipYdmp2pDlzzjmqRugVIT5dPywG3S3W3i2H+XXo8ezgIpK/ulkJ7M0IhXodxjRup
 5gk4/PCIgb2+4xgSV65iduTYiwwdBeE5DelcnO0L3PXeSS0idYv8h7rfQ4ryJgpdraBW
 VOSGfvABGFjAc0OGFr/YaEvRHhafit+yhNU8+7Z6Fj9IyGNdUYXHffMn1XO6OdQlwJLq
 ZplrLwL0vnSL3BRshz3QNF7nt8V8JoYCA6vqevoTSjrEeezrPMo9lE8uwblnn818Jda5
 JXbW6u+zw+OLLKsXW2GMyRMu2H4Y0zKeDcj7g26HSyqf//3iZEU4WZCeP6V8VIR2tJrh
 66fg==
X-Forwarded-Encrypted: i=1;
 AJvYcCUK6RligQXm7ZuD3jy9vK23RwIKqy6GZOAixfX51fUwZubAGljEehtxAya6ihZMHP4RQWcWEQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Ywd7CqCl5Yi9EQko59MZPEtfn8zJ70kdF3kk+bmcMh9JnzqCTDJ
 uj56Pthk5I6tSZCp4oDrb7ZCJWTxFdZIZqmD8S7yVf7olbGWHv7UK6e4Dg==
X-Gm-Gg: ASbGncvljkhi7WpjdWk7iDh0swfwDcudl8sSOBiHtny01MhHNXI7irbxeHTOli1gRud
 /xrXA9W7+npPFJQkOdwor5uOGcau2sZMtLCn9P0KCQ7v89OTAbneNOef4tS8G37Ug2fzwjuHszi
 M9+CkM9rZU60250gkQ+SZJ/JTbNzw3UxCUQXgh65RJQAoRKbKErfp77yMio+LyUSkL3yz+Gitv9
 poBM/Qqn2ta1sTrxcC5yViQ6rxpUlfr8bnXs13Nf+hZm/5eq1kEIUuNbYrSLRtNcEkSutUpXQBn
 8i341sqMVWLMtvsO2SIGZpHlqGVvpE9G9m+7PYOA2PGulibBQF9e4fxuo1/Oek1SQGnDiNcDYsC
 sgYM9rhcjjkx8
X-Google-Smtp-Source: AGHT+IGm7K5nG7DlM2X0YXZLxUKP79EwFvUlgUhtGSI/BilPKw0C30WDrZJnJduaSuYKECGz32hCsA==
X-Received: by 2002:a17:907:9729:b0:aa6:92de:ddae with SMTP id
 a640c23a62f3a-ab38b104bcdmr2199530166b.16.1737653666478; 
 Thu, 23 Jan 2025 09:34:26 -0800 (PST)
Received: from pro2 (p200300e0b70b3c00a9b60a97a92ff44f.dip0.t-ipconnect.de.
 [2003:e0:b70b:3c00:a9b6:a97:a92f:f44f])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ab384f87065sm1097320366b.133.2025.01.23.09.34.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 23 Jan 2025 09:34:26 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <86v7u5zdrv.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 23 Jan
 2025 18:38:28 +0200")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN>
 <m2zfkhfr7r.fsf@HIDDEN> <86wmflwlok.fsf@HIDDEN>
 <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
 <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 <86v7u5zdrv.fsf@HIDDEN>
Date: Thu, 23 Jan 2025 18:34:25 +0100
Message-ID: <m2ed0te8ny.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Len Trigg <lenbok@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> From: Len Trigg <lenbok@HIDDEN>
>> Date: Fri, 24 Jan 2025 05:00:33 +1300
>> Cc: gerd.moellmann@HIDDEN, 75056 <at> debbugs.gnu.org
>> 
>> #0  combine_updates_for_frame (f=f@entry=0x555556ca8d58,
>> inhibit_scrolling=inhibit_scrolling@entry=false) at dispnew.c:3973
>
> The crash is here:
>
>   for (Lisp_Object tail = XCDR (z_order); CONSP (tail); tail = XCDR (tail))
>     {
>       topmost_child = XFRAME (XCAR (tail));
>       copy_child_glyphs (root, topmost_child);
>     }
>
> What is the value of z_order?

Len, can you please print

  p root->visible

I have a suspicion that it might not be FRAME_VISIBLE_P. Alternatively,
you could configure with --enable-checking in which case we would see an
abort in combine_updates_for_frame.

The place in redisplay_internal where it is called is

      if (mini_frame != sf)
	{
	  XWINDOW (mini_window)->must_be_updated_p = true;
	  update_frame (mini_frame, false);
	  if (is_tty_frame (mini_frame))
	    combine_updates_for_frame (mini_frame, false);
	  mini_frame->cursor_type_changed = false;

There is no check for mini_frame being visible. At least not with a
quick look.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 23 Jan 2025 16:38:41 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 23 11:38:40 2025
Received: from localhost ([127.0.0.1]:42064 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tb0E4-000053-Hx
	for submit <at> debbugs.gnu.org; Thu, 23 Jan 2025 11:38:40 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:56384)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tb0E1-0008WS-FF
 for 75056 <at> debbugs.gnu.org; Thu, 23 Jan 2025 11:38:38 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tb0Dw-0005U1-2T; Thu, 23 Jan 2025 11:38:32 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=zzI5nc5ECS0jl+csXG1YKlNAmZ9xkk03ZIZ2ioDSJgY=; b=EJgkVC0dSh03
 Ug1z1+gdQSV5PsXLG9Nd9Y6QankEAhEWGpR5FQ6ga+ZoZtsUsr5uTAJbadh77x/QGtyHDFrWU3vr3
 /CePb8dsVdysYz6RHsAgpBhmXdOMTib7CjXwW3g21tKUo8hCyRJs58imezLQTEqSnhOXBGla1kDEA
 cDDh8AmvRlQxEXmZn6C9l9liaNDgY9Z36F8IvLbqx3uk4qAhmvJQanok+UDCKzzCNDChNY3l1mr8B
 yJsgBxBH8JV9SU33b8RkDwdT1EKDN2zYNBg4TlXzZTofJQ5K85qni9DAGGZIT58XM389RA5lys2Hz
 fEiHiAa4FxVZUajPHDUyHw==;
Date: Thu, 23 Jan 2025 18:38:28 +0200
Message-Id: <86v7u5zdrv.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
In-Reply-To: <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
 (message from Len Trigg on Fri, 24 Jan 2025 05:00:33 +1300)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN> <m2zfkhfr7r.fsf@HIDDEN>
 <86wmflwlok.fsf@HIDDEN> <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
 <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Len Trigg <lenbok@HIDDEN>
> Date: Fri, 24 Jan 2025 05:00:33 +1300
> Cc: gerd.moellmann@HIDDEN, 75056 <at> debbugs.gnu.org
> 
> #0  combine_updates_for_frame (f=f@entry=0x555556ca8d58,
> inhibit_scrolling=inhibit_scrolling@entry=false) at dispnew.c:3973

The crash is here:

  for (Lisp_Object tail = XCDR (z_order); CONSP (tail); tail = XCDR (tail))
    {
      topmost_child = XFRAME (XCAR (tail));
      copy_child_glyphs (root, topmost_child);
    }

What is the value of z_order?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 23 Jan 2025 16:01:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 23 11:01:00 2025
Received: from localhost ([127.0.0.1]:41982 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tazdb-0006Xi-Gf
	for submit <at> debbugs.gnu.org; Thu, 23 Jan 2025 11:01:00 -0500
Received: from mail-lf1-x135.google.com ([2a00:1450:4864:20::135]:46571)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1tazdY-0006XL-OK
 for 75056 <at> debbugs.gnu.org; Thu, 23 Jan 2025 11:00:57 -0500
Received: by mail-lf1-x135.google.com with SMTP id
 2adb3069b0e04-53f22fd6832so1179705e87.1
 for <75056 <at> debbugs.gnu.org>; Thu, 23 Jan 2025 08:00:56 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737648050; x=1738252850; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=fJDQjoNJI1Z8ZDeLjtIrrIMV0Rjls+XVWeTgR7/aMjU=;
 b=LvgxJhbSsd+fMVCmEY9SkFtidNcvYe4mUJjiozworI7DE4OmeE6tfy3R36e7yzpy24
 J3XQZEunNNoGsboZCDMiLk10FVTWHF6LcYBMO0iMxK3zsal8ez1VRtTitD+T3EiZm039
 hCkQez6THLZxaq0e0+vTkUPQSFEeCpSAZGeZHLOTcT3+L++aIQH95firzAesGJRGm6DX
 NbKtqvWqO2PbCIHYMGcdWVXRpL09ZpO2oC3SDCOiq/y381ycUS4bYkMUmsdOrvIphNjn
 xqJ9MyPpG4uarlqBpf5lvDwJuH9bNvMx/88moWxskhXwzhJ8L8Nih0z45vGRBkcwgCXG
 tZ6A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737648050; x=1738252850;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=fJDQjoNJI1Z8ZDeLjtIrrIMV0Rjls+XVWeTgR7/aMjU=;
 b=FfnTqOqXrUbQWZ/7oWBYcntD4PvLgIq3SVgBp+FzgKxNZY2xke7GbZ/szCvtZR+4pY
 jFz9iZAByOJoqhjTNrGDblpwiqLpUB4fBEJ8B1X+/pdv+/uXnfKOk/B/qBcbUUZ/7j9c
 8BZus/QaX7LnzTEqt0Dc7Lxy9fFlYz698m3LyKn65rLwu1hLaQkkVSdORS3x68ejddFk
 5LUOvlG8aDTTibwDpSpFvauzHEZc50e/tvNbIbme0FvArd52fwDq20NSvpue+HWZpdsq
 LKP06R2plKEuVBDW80Yuz6I15NFowQU9ERZIxhfEZEf6sJgzbn/8GZXOQEhaoW2X10TI
 ODuQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCX8+0Wi3l0HkWrcw4NORAzvCghgpdWRav6eEAQznThiSFvHT8hb/fd1MHzKGhWrG+d/kdZ2CA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YxmRZ440p3vwZ5J2FxkBn1KvwHJ3gtgJgSJ4ujmYQW0ugQeKxxk
 /jNs+qZVSj853S1o1qxxuv/lfpLMgyapgtnsJ+RD0tzn7OwZEjU82tPce8WDfuyY/JazQ1xRFWH
 6jzeS/tzi82nZolViY3YH24OoYsg=
X-Gm-Gg: ASbGncvYtlvPjCV4L8sayVjPjb3KmEgbupiwKQF9yULdlIjblmWEsmns24k+n6Rs0gk
 uAcVORyhuoJjG/C+UA2FBbhHLLyQN7JJttVAs6t2AdwVUsFXbTrne+8iBND72
X-Google-Smtp-Source: AGHT+IHdWIpz27VYxtvSHc3Syc/RfBTkdFvj6yjcri+bkknMHrSk0XPoqHY4s4nvuI/VoyIiEUk8KghDzhNgpWfuWIk=
X-Received: by 2002:a05:6512:e8d:b0:542:9883:263 with SMTP id
 2adb3069b0e04-5439c246370mr8883589e87.14.1737648049599; Thu, 23 Jan 2025
 08:00:49 -0800 (PST)
MIME-Version: 1.0
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN> <m2zfkhfr7r.fsf@HIDDEN>
 <86wmflwlok.fsf@HIDDEN> <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
 <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
In-Reply-To: <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Fri, 24 Jan 2025 05:00:33 +1300
X-Gm-Features: AbW1kvaBtAkuif1kFjEUxx4h4AH3Rexv5XqrzHJl-5vVgoEjMBXF38BuI57VPgo
Message-ID: <CAOGVwekn3NgGjTGsb-5L9-dk1=0A62qQ5UdrvrPdCPwSRs3C6A@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/alternative; boundary="000000000000bdbd63062c61b651"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--000000000000bdbd63062c61b651
Content-Type: text/plain; charset="UTF-8"

On Fri, 24 Jan 2025 at 04:45, Len Trigg <lenbok@HIDDEN> wrote:

> Fatal error 11: Segmentation fault
> Backtrace:
> emacs(+0x1b1e12)[0x64b571445e12]
> emacs(+0x57927)[0x64b5712eb927]
> emacs(+0x57e6a)[0x64b5712ebe6a]
> emacs(+0x1aff58)[0x64b571443f58]
> emacs(+0x1affdd)[0x64b571443fdd]
> /lib/x86_64-linux-gnu/libc.so.6(+0x45320)[0x726c12045320]
> emacs(+0x699ef)[0x64b5712fd9ef]
> emacs(+0xb192b)[0x64b57134592b]
> emacs(+0xb309d)[0x64b57134709d]
> emacs(+0x1a569e)[0x64b57143969e]
> emacs(+0x286cc6)[0x64b57151acc6]
> emacs(+0x6d004)[0x64b571301004]
> emacs(+0x1a074b)[0x64b57143474b]
> emacs(+0x1a1ab7)[0x64b571435ab7]
> emacs(+0x1a3714)[0x64b571437714]
> emacs(+0x221547)[0x64b5714b5547]
> emacs(+0x18ecde)[0x64b571422cde]
> emacs(+0x221489)[0x64b5714b5489]
> emacs(+0x18ec71)[0x64b571422c71]
> emacs(+0x196ce5)[0x64b57142ace5]
> emacs(+0x197084)[0x64b57142b084]
> emacs(+0x60e3f)[0x64b5712f4e3f]
> /lib/x86_64-linux-gnu/libc.so.6(+0x2a1ca)[0x726c1202a1ca]
> /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x8b)[0x726c1202a28b]
> emacs(+0x613e5)[0x64b5712f53e5]
> Segmentation fault (core dumped)
>

I'm really not familiar with C debugging, but I managed to run my case
under gdb and trigger the crash. "where" shows:

#0  combine_updates_for_frame (f=f@entry=0x555556ca8d58,
inhibit_scrolling=inhibit_scrolling@entry=false) at dispnew.c:3973
#1  0x000055555560592b in redisplay_internal () at xdisp.c:17702
#2  0x000055555560709d in redisplay_preserve_echo_area
(from_where=from_where@entry=8) at xdisp.c:17842
#3  0x00005555556f969e in detect_input_pending_run_timers
(do_display=do_display@entry=true) at keyboard.c:11579
#4  0x00005555557dacc6 in wait_reading_process_output
    (time_limit=time_limit@entry=30, nsecs=nsecs@entry=0,
read_kbd=read_kbd@entry=-1, do_display=do_display@entry=true,
wait_for_cell=wait_for_cell@entry=0x0, wait_proc=wait_proc@entry=0x0,
just_wait_proc=0) at process.c:5862
#5  0x00005555555c1004 in sit_for (timeout=timeout@entry=0x7a,
reading=reading@entry=true, display_option=display_option@entry=1) at
dispnew.c:6894
#6  0x00005555556f474b in read_char
    (commandflag=1, map=map@entry=0x7fffecb615b3, prev_event=0x0,
used_mouse_menu=used_mouse_menu@entry=0x7fffffffc6cb,
end_time=end_time@entry=0x0) at keyboard.c:2925
#7  0x00005555556f5ab7 in read_key_sequence
    (keybuf=keybuf@entry=0x7fffffffc820, prompt=prompt@entry=0x0,
dont_downcase_last=dont_downcase_last@entry=false,
can_return_switch_frame=can_return_switch_frame@entry=true,
fix_current_buffer=fix_current_buffer@entry=true,
prevent_redisplay=prevent_redisplay@entry=false,
disable_text_conversion_p=false) at keyboard.c:10746
#8  0x00005555556f7714 in command_loop_1 () at keyboard.c:1424
#9  0x0000555555775547 in internal_condition_case
    (bfun=bfun@entry=0x5555556f7550 <command_loop_1>,
handlers=handlers@entry=0x90, hfun=hfun@entry=0x5555556eb170 <cmd_error>)
at eval.c:1607
#10 0x00005555556e2cde in command_loop_2 (handlers=handlers@entry=0x90) at
keyboard.c:1163
#11 0x0000555555775489 in internal_catch (tag=tag@entry=0x12360,
func=func@entry=0x5555556e2cb0 <command_loop_2>, arg=arg@entry=0x90) at
eval.c:1286
#12 0x00005555556e2c71 in command_loop () at keyboard.c:1141
#13 0x00005555556eace5 in recursive_edit_1 () at keyboard.c:749
#14 0x00005555556eb084 in Frecursive_edit () at keyboard.c:832
#15 0x00005555555b4e3f in main (argc=3, argv=<optimized out>) at
emacs.c:2628

--000000000000bdbd63062c61b651
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote g=
mail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Fri, 24 Jan =
2025 at 04:45, Len Trigg &lt;<a href=3D"mailto:lenbok@HIDDEN">lenbok@gma=
il.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"m=
argin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left=
:1ex"><div dir=3D"ltr"><div class=3D"gmail_quote"><div>Fatal error 11: Segm=
entation fault<br>Backtrace:<br>emacs(+0x1b1e12)[0x64b571445e12]<br>emacs(+=
0x57927)[0x64b5712eb927]<br>emacs(+0x57e6a)[0x64b5712ebe6a]<br>emacs(+0x1af=
f58)[0x64b571443f58]<br>emacs(+0x1affdd)[0x64b571443fdd]<br>/lib/x86_64-lin=
ux-gnu/libc.so.6(+0x45320)[0x726c12045320]<br>emacs(+0x699ef)[0x64b5712fd9e=
f]<br>emacs(+0xb192b)[0x64b57134592b]<br>emacs(+0xb309d)[0x64b57134709d]<br=
>emacs(+0x1a569e)[0x64b57143969e]<br>emacs(+0x286cc6)[0x64b57151acc6]<br>em=
acs(+0x6d004)[0x64b571301004]<br>emacs(+0x1a074b)[0x64b57143474b]<br>emacs(=
+0x1a1ab7)[0x64b571435ab7]<br>emacs(+0x1a3714)[0x64b571437714]<br>emacs(+0x=
221547)[0x64b5714b5547]<br>emacs(+0x18ecde)[0x64b571422cde]<br>emacs(+0x221=
489)[0x64b5714b5489]<br>emacs(+0x18ec71)[0x64b571422c71]<br>emacs(+0x196ce5=
)[0x64b57142ace5]<br>emacs(+0x197084)[0x64b57142b084]<br>emacs(+0x60e3f)[0x=
64b5712f4e3f]<br>/lib/x86_64-linux-gnu/libc.so.6(+0x2a1ca)[0x726c1202a1ca]<=
br>/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x8b)[0x726c1202a28b]<=
br>emacs(+0x613e5)[0x64b5712f53e5]<br>Segmentation fault (core dumped)</div=
></div></div></blockquote><div><br></div><div>I&#39;m really not familiar w=
ith C debugging, but I managed to run my case under gdb and trigger the cra=
sh. &quot;where&quot; shows:</div></div><div class=3D"gmail_quote gmail_quo=
te_container"><br>#0 =C2=A0combine_updates_for_frame (f=3Df@entry=3D0x55555=
6ca8d58, inhibit_scrolling=3Dinhibit_scrolling@entry=3Dfalse) at dispnew.c:=
3973<br>#1 =C2=A00x000055555560592b in redisplay_internal () at xdisp.c:177=
02<br>#2 =C2=A00x000055555560709d in redisplay_preserve_echo_area (from_whe=
re=3Dfrom_where@entry=3D8) at xdisp.c:17842<br>#3 =C2=A00x00005555556f969e =
in detect_input_pending_run_timers (do_display=3Ddo_display@entry=3Dtrue) a=
t keyboard.c:11579<br>#4 =C2=A00x00005555557dacc6 in wait_reading_process_o=
utput<br>=C2=A0 =C2=A0 (time_limit=3Dtime_limit@entry=3D30, nsecs=3Dnsecs@e=
ntry=3D0, read_kbd=3Dread_kbd@entry=3D-1, do_display=3Ddo_display@entry=3Dt=
rue, wait_for_cell=3Dwait_for_cell@entry=3D0x0, wait_proc=3Dwait_proc@entry=
=3D0x0, just_wait_proc=3D0) at process.c:5862<br>#5 =C2=A00x00005555555c100=
4 in sit_for (timeout=3Dtimeout@entry=3D0x7a, reading=3Dreading@entry=3Dtru=
e, display_option=3Ddisplay_option@entry=3D1) at dispnew.c:6894<br>#6 =C2=
=A00x00005555556f474b in read_char<br>=C2=A0 =C2=A0 (commandflag=3D1, map=
=3Dmap@entry=3D0x7fffecb615b3, prev_event=3D0x0, used_mouse_menu=3Dused_mou=
se_menu@entry=3D0x7fffffffc6cb, end_time=3Dend_time@entry=3D0x0) at keyboar=
d.c:2925<br>#7 =C2=A00x00005555556f5ab7 in read_key_sequence<br>=C2=A0 =C2=
=A0 (keybuf=3Dkeybuf@entry=3D0x7fffffffc820, prompt=3Dprompt@entry=3D0x0, d=
ont_downcase_last=3Ddont_downcase_last@entry=3Dfalse, can_return_switch_fra=
me=3Dcan_return_switch_frame@entry=3Dtrue, fix_current_buffer=3Dfix_current=
_buffer@entry=3Dtrue, prevent_redisplay=3Dprevent_redisplay@entry=3Dfalse, =
disable_text_conversion_p=3Dfalse) at keyboard.c:10746<br>#8 =C2=A00x000055=
55556f7714 in command_loop_1 () at keyboard.c:1424<br>#9 =C2=A00x0000555555=
775547 in internal_condition_case<br>=C2=A0 =C2=A0 (bfun=3Dbfun@entry=3D0x5=
555556f7550 &lt;command_loop_1&gt;, handlers=3Dhandlers@entry=3D0x90, hfun=
=3Dhfun@entry=3D0x5555556eb170 &lt;cmd_error&gt;) at eval.c:1607<br>#10 0x0=
0005555556e2cde in command_loop_2 (handlers=3Dhandlers@entry=3D0x90) at key=
board.c:1163<br>#11 0x0000555555775489 in internal_catch (tag=3Dtag@entry=
=3D0x12360, func=3Dfunc@entry=3D0x5555556e2cb0 &lt;command_loop_2&gt;, arg=
=3Darg@entry=3D0x90) at eval.c:1286<br>#12 0x00005555556e2c71 in command_lo=
op () at keyboard.c:1141<br>#13 0x00005555556eace5 in recursive_edit_1 () a=
t keyboard.c:749<br>#14 0x00005555556eb084 in Frecursive_edit () at keyboar=
d.c:832<br>#15 0x00005555555b4e3f in main (argc=3D3, argv=3D&lt;optimized o=
ut&gt;) at emacs.c:2628<br><br><div><br></div><div>=C2=A0<br></div></div></=
div>

--000000000000bdbd63062c61b651--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 23 Jan 2025 15:46:23 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Jan 23 10:46:23 2025
Received: from localhost ([127.0.0.1]:41966 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tazPS-0005pY-O2
	for submit <at> debbugs.gnu.org; Thu, 23 Jan 2025 10:46:23 -0500
Received: from mail-lf1-x131.google.com ([2a00:1450:4864:20::131]:47528)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1tazPQ-0005pH-QI
 for 75056 <at> debbugs.gnu.org; Thu, 23 Jan 2025 10:46:21 -0500
Received: by mail-lf1-x131.google.com with SMTP id
 2adb3069b0e04-5426fcb3c69so940766e87.3
 for <75056 <at> debbugs.gnu.org>; Thu, 23 Jan 2025 07:46:20 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1737647174; x=1738251974; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=xrs+fbfybr+JSiG0Sw1/j8N3xU3NItOPsHnJjQy7ttA=;
 b=fEiwhYswtPL+5h8sdLFDkDsgiITwQbJMvWwB9ObZ5LkCBjDI8BZ4Dlf+eM3hS+Sobl
 rdB83wAQSNAum3dWeA8+IyMW/5r1X6YOwF4zQhY1zTBsL/Lv/e4DcBBw+FDAnhm7feXl
 o/2Xk1kpx5QbwqO7JZGtQx9YR4QoH75qpUpTsJ/ST2164G5P7t8UOahiW79tueApuiTv
 BkMjxHPzG5+DXtLZJU7wFMHG+poluzCHxRmCNfxAegZgII3tto+AoMcKEv9iSWX/ueIL
 PzltM7RW2u+lbJ6A7Nf3DxUlJK36AFM5iHrHk4dqw2tp7/TA+F8rvMp49I7jVr7ahEXT
 dEiw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1737647174; x=1738251974;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=xrs+fbfybr+JSiG0Sw1/j8N3xU3NItOPsHnJjQy7ttA=;
 b=VQ2lf3HWGrG/hjLRlmFKiw1c3QaJSdqoKtHzXvFdSRZDny/uFiA9YtagbNUd/L5k71
 CHJ/xP/up+leV2S60LKa46HeIaEpWaHMK8DgXpNckQKqvGUXd7mLybJt5xmCvxKvh6nc
 sT/iqARHrA77x4bIyEIuZ51lwWm3+rxXLcN0lUGDJP1kuEsKHVJVi2BDduc5aozicluy
 ZlyjT2ZrJ02A2MdThuD5TlJaNtMAjPmB+GmV9J9nEzTDeyGzeqO6FD9FBD0qlU1akU0e
 yTr7GuXLTaHhZ02gM4FDso9DT9Gt4yvqyqD9VAHN9YUzLwUSv8NMbK16slHdHiO6pTm3
 0CJA==
X-Forwarded-Encrypted: i=1;
 AJvYcCWC6o6pNHCkB7C7nWrGuLhqCtGU5RLYpVVJLnWukQNgEL0bsCgqVxD8WxbFCYe6/M5TF9AEJg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzA7VJg5XRRwFY8WHvIm6uM204GGCB0YuuGEWTJsi9pY1z6Ezbm
 CKN2r9R+Qo+lkzGolJrKakrCdn5+tauCPMfDwxjpdwjNMtfXMviM0cqz1OvM/R9QERwOpj/5kbY
 KFdaDUrWcTRLVw3zymmf5KCXKY54=
X-Gm-Gg: ASbGnctcWlvD4NqwPdPZIUC11VqSm6wVytc31S95QfSxSHWQm/MUz/KltJM36RvcQ1f
 bq2x5bzmhrIm/SokgbxFityLgIWzngksJySANW+9pxviNV/ZZ0w+hhtOFPjya
X-Google-Smtp-Source: AGHT+IGaK6n9YBgc057NlcEm6DraZlOuD6WKE7JPxFihEvDEl7bakLYaVc4iI478d749Gbitani3o/IPWtE74qKBfDw=
X-Received: by 2002:ac2:5e9d:0:b0:540:1abe:d6d2 with SMTP id
 2adb3069b0e04-5439c2824b4mr7846193e87.35.1737647173939; Thu, 23 Jan 2025
 07:46:13 -0800 (PST)
MIME-Version: 1.0
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN> <m2zfkhfr7r.fsf@HIDDEN>
 <86wmflwlok.fsf@HIDDEN> <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN> <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
In-Reply-To: <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Fri, 24 Jan 2025 04:45:57 +1300
X-Gm-Features: AbW1kvYls88a9bWJNBwoClJJBU4Vg-Hp0qS2TeKU26nZo76r2jFJmSNjmUpThXo
Message-ID: <CAOGVwekT7hvVK9E77bHfgk2814sHWgs9i-0Q4eZ5cYmQJX+6HQ@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/alternative; boundary="0000000000008c3aad062c61822a"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--0000000000008c3aad062c61822a
Content-Type: text/plain; charset="UTF-8"

On Wed, 8 Jan 2025 at 07:05, Len Trigg <lenbok@HIDDEN> wrote:

> Eli, thanks for taking another look. AFAIK, posframe needs to be newer
> than what is released in ELPA. You can get the latest from <
> https://github.com/tumashu/posframe>
>
> I also think that if you had the older version you would not have seen a
> tty-child-frame at all and so not have triggered the bug I see - In your
> test did C-x b bring up a tty child frame in the center of the window, or a
> regular minibuffer at the bottom of the screen?
>
> (You are correct that I did not switch away from the selector in my repro
> steps, I selected the buffer and exited normally with RET).
>

I am back home from travelling and I see that emacs master has had several
changes related to tty child frames, so I rebuilt (as at commit
d83d090de11) and tried my test case again.  Now rather than "blocking",
emacs segfaults with:

Fatal error 11: Segmentation fault
Backtrace:
emacs(+0x1b1e12)[0x64b571445e12]
emacs(+0x57927)[0x64b5712eb927]
emacs(+0x57e6a)[0x64b5712ebe6a]
emacs(+0x1aff58)[0x64b571443f58]
emacs(+0x1affdd)[0x64b571443fdd]
/lib/x86_64-linux-gnu/libc.so.6(+0x45320)[0x726c12045320]
emacs(+0x699ef)[0x64b5712fd9ef]
emacs(+0xb192b)[0x64b57134592b]
emacs(+0xb309d)[0x64b57134709d]
emacs(+0x1a569e)[0x64b57143969e]
emacs(+0x286cc6)[0x64b57151acc6]
emacs(+0x6d004)[0x64b571301004]
emacs(+0x1a074b)[0x64b57143474b]
emacs(+0x1a1ab7)[0x64b571435ab7]
emacs(+0x1a3714)[0x64b571437714]
emacs(+0x221547)[0x64b5714b5547]
emacs(+0x18ecde)[0x64b571422cde]
emacs(+0x221489)[0x64b5714b5489]
emacs(+0x18ec71)[0x64b571422c71]
emacs(+0x196ce5)[0x64b57142ace5]
emacs(+0x197084)[0x64b57142b084]
emacs(+0x60e3f)[0x64b5712f4e3f]
/lib/x86_64-linux-gnu/libc.so.6(+0x2a1ca)[0x726c1202a1ca]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x8b)[0x726c1202a28b]
emacs(+0x613e5)[0x64b5712f53e5]
Segmentation fault (core dumped)


Cheers,
Len.

--0000000000008c3aad062c61822a
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br><div class=3D"gmail_quote gmail_quote_container"><div =
dir=3D"ltr" class=3D"gmail_attr">On Wed, 8 Jan 2025 at 07:05, Len Trigg &lt=
;<a href=3D"mailto:lenbok@HIDDEN">lenbok@HIDDEN</a>&gt; wrote:<br></d=
iv><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bord=
er-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div dir=3D"auto"=
>Eli, thanks for taking another look. AFAIK, posframe needs to be newer tha=
n what is released in ELPA. You can get the latest from &lt;<a href=3D"http=
s://github.com/tumashu/posframe" target=3D"_blank">https://github.com/tumas=
hu/posframe</a>&gt;<br><br>I also think that if you had the older version y=
ou would not have seen a tty-child-frame at all and so not have triggered t=
he bug I see - In your test did C-x b bring up a tty child frame in the cen=
ter of the window, or a regular minibuffer at the bottom of the screen? <br=
><br>(You are correct that I did not switch away from the selector in my re=
pro steps, I selected the buffer and exited normally with RET).<br></div></=
div></blockquote><div><br></div><div>I am back home from travelling and I s=
ee that emacs master has had several changes related to tty child frames, s=
o I rebuilt (as at commit d83d090de11) and tried my test case again.=C2=A0 =
Now rather than &quot;blocking&quot;, emacs segfaults with:</div><div><br><=
/div><div>Fatal error 11: Segmentation fault<br>Backtrace:<br>emacs(+0x1b1e=
12)[0x64b571445e12]<br>emacs(+0x57927)[0x64b5712eb927]<br>emacs(+0x57e6a)[0=
x64b5712ebe6a]<br>emacs(+0x1aff58)[0x64b571443f58]<br>emacs(+0x1affdd)[0x64=
b571443fdd]<br>/lib/x86_64-linux-gnu/libc.so.6(+0x45320)[0x726c12045320]<br=
>emacs(+0x699ef)[0x64b5712fd9ef]<br>emacs(+0xb192b)[0x64b57134592b]<br>emac=
s(+0xb309d)[0x64b57134709d]<br>emacs(+0x1a569e)[0x64b57143969e]<br>emacs(+0=
x286cc6)[0x64b57151acc6]<br>emacs(+0x6d004)[0x64b571301004]<br>emacs(+0x1a0=
74b)[0x64b57143474b]<br>emacs(+0x1a1ab7)[0x64b571435ab7]<br>emacs(+0x1a3714=
)[0x64b571437714]<br>emacs(+0x221547)[0x64b5714b5547]<br>emacs(+0x18ecde)[0=
x64b571422cde]<br>emacs(+0x221489)[0x64b5714b5489]<br>emacs(+0x18ec71)[0x64=
b571422c71]<br>emacs(+0x196ce5)[0x64b57142ace5]<br>emacs(+0x197084)[0x64b57=
142b084]<br>emacs(+0x60e3f)[0x64b5712f4e3f]<br>/lib/x86_64-linux-gnu/libc.s=
o.6(+0x2a1ca)[0x726c1202a1ca]<br>/lib/x86_64-linux-gnu/libc.so.6(__libc_sta=
rt_main+0x8b)[0x726c1202a28b]<br>emacs(+0x613e5)[0x64b5712f53e5]<br>Segment=
ation fault (core dumped)</div><div><br></div><div><br></div><div>Cheers,</=
div><div>Len.</div><div><br></div></div></div>

--0000000000008c3aad062c61822a--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 7 Jan 2025 18:05:09 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 07 13:05:09 2025
Received: from localhost ([127.0.0.1]:44534 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tVDwy-0004xV-D3
	for submit <at> debbugs.gnu.org; Tue, 07 Jan 2025 13:05:09 -0500
Received: from mail-wr1-x433.google.com ([2a00:1450:4864:20::433]:51680)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <lenbok@HIDDEN>) id 1tVDws-0004t7-Ch
 for 75056 <at> debbugs.gnu.org; Tue, 07 Jan 2025 13:05:03 -0500
Received: by mail-wr1-x433.google.com with SMTP id
 ffacd0b85a97d-388cae9eb9fso8396273f8f.3
 for <75056 <at> debbugs.gnu.org>; Tue, 07 Jan 2025 10:05:02 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1736273101; x=1736877901; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:message-id:references
 :in-reply-to:user-agent:subject:cc:to:from:date:from:to:cc:subject
 :date:message-id:reply-to;
 bh=hVmOUGfMnjv10RY+QJWsrjOiZG8dHoRDI21Gj/qPmOA=;
 b=EQ4R8ggYHccmBscVE6T5j7P+OCD7fHfdUzZo2BnA1PE1u+Ix58QPn2+n7wgWPlZeH5
 hv9AtQNtFKyN9ERkwkN4LoQa3tktzl9Q+ji7TxJdq2dpSP2scsnLXVHSM5KPH9SIFyD5
 fTnAMhnCx+0H3ooHwnraTTksJu9+q0MRw/SULcIR3imAK/lF26AnEaJCs1GBX2hD929a
 4vAf/MMaEsFTmNLB5GB8o2Q1TXj8IfMA/VBZuZfU35jSo98zDzhWBXf5E13og57M8nH4
 UonV3PsNOhEoLn4XYUMrpPI5fe7tqUYcXmS8i+TwrwaMr4Ezzs/Y7Dhcs6dKhe0gakYT
 IyWQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1736273101; x=1736877901;
 h=content-transfer-encoding:mime-version:message-id:references
 :in-reply-to:user-agent:subject:cc:to:from:date:x-gm-message-state
 :from:to:cc:subject:date:message-id:reply-to;
 bh=hVmOUGfMnjv10RY+QJWsrjOiZG8dHoRDI21Gj/qPmOA=;
 b=LoJ60nD2sWRc0Q/szAc1vF35cqVqbJKaCf8gUkL7Mf/gTjl9Egbx1ZgcfQzcoqXZ0/
 f8Z/mHRjCAvJMnw6X/+49GD8H9d+KDsb7CKdIThL3ijpJPYGTJTqQtM5oANlgURwD4c1
 D7CIK8SwAx65Hu3uO5XrjPM6FluiRVD60sHrSsX4auKWnfwPLHamtRWrhy1jAn8zep85
 EvFjPmIAEz6j25zZFebErZFiMWWGVNkn53U7sckyVMMx+q4AN10OFtr6rIWLHaWxxy3B
 xDlDWoTcz9/QdI3slxjAYDrdeMikkdbMxScwxv6+pr8TqJwffX6dN61WryUKBsH/r2D+
 WsAA==
X-Forwarded-Encrypted: i=1;
 AJvYcCVZLG5KqtzTVwAYhId4sERFTtX6w3n6dFVkYXka8wtaBH/Qttj0psv17bTmjeQ8YuiLUKAiVA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Ywu79xZFL+Vx315hKcAjrWvGGNsHNDHeiXHjBccmL/J5/rV1/fI
 Ib8AZwlDLofrd5zMmNq4fq7rsG2qFryeQgdy6xE+oS3THWJoYv3l
X-Gm-Gg: ASbGnctotQVL3rsRankPaRJDmDteHxEwmxXT3SmwzilqVVQmuJmsTCUOT2RbILPTW9T
 GiCzrbrkq5tFuzja80IJYsdU3JOOtzkGbKpG1cULD8HdiQ3tS0SuQ1ga9c9X69o/f1+a/pLIemc
 ad5O7CQAYisFQPGII/yLV4jqZKPn9MUy8o8Hh/e4Em1T+u9nl+J/4daf0OJkvGy4+P2SCSA+eSl
 ZOkp++SbvOmX2RZLBB5trmo/paBf6buoOM1KaQ/iy0TiIa7+w==
X-Google-Smtp-Source: AGHT+IEZ0hZM8B8ML5TO/yYdVWMTOohzzxiZuDfqF5uwJw/YKP7GQS09UWJiPgmkPfUJK92AIbLsLw==
X-Received: by 2002:a5d:6da1:0:b0:386:4a0c:fe17 with SMTP id
 ffacd0b85a97d-38a2220039fmr52024397f8f.27.1736273100778; 
 Tue, 07 Jan 2025 10:05:00 -0800 (PST)
Received: from [127.0.0.1] ([145.224.95.92]) by smtp.gmail.com with ESMTPSA id
 5b1f17b1804b1-4365d116d8fsm612374935e9.17.2025.01.07.10.04.59
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Tue, 07 Jan 2025 10:05:00 -0800 (PST)
Date: Tue, 07 Jan 2025 20:04:57 +0200
From: Len Trigg <lenbok@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: =?US-ASCII?Q?Re=3A_bug=2375056=3A_31=2E0=2E50=3B_tty-child-frames_wi?=
 =?US-ASCII?Q?th_server_/_multiple_clients_possible_hangs?=
User-Agent: K-9 Mail for Android
In-Reply-To: <86v7ut6wno.fsf@HIDDEN>
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN>
 <m2zfkhfr7r.fsf@HIDDEN> <86wmflwlok.fsf@HIDDEN>
 <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 <86v7ut6wno.fsf@HIDDEN>
Message-ID: <CED82A40-26F1-464C-9531-333482BED691@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/alternative;
 boundary=----QK5XDGEW991SNXWE349W7CXWJOFQYK
Content-Transfer-Encoding: 7bit
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

------QK5XDGEW991SNXWE349W7CXWJOFQYK
Content-Type: text/plain;
 charset=utf-8
Content-Transfer-Encoding: quoted-printable

Please excuse the top reply, I am traveling and my phone email client is li=
mited=2E=20

Eli, thanks for taking another look=2E AFAIK, posframe needs to be newer t=
han what is released in ELPA=2E You can get the latest from <https://github=
=2Ecom/tumashu/posframe>

I also think that if you had the older version you would not have seen a t=
ty-child-frame at all and so not have triggered the bug I see - In your tes=
t did C-x b bring up a tty child frame in the center of the window, or a re=
gular minibuffer at the bottom of the screen?=20

(You are correct that I did not switch away from the selector in my repro =
steps, I selected the buffer and exited normally with RET)=2E

Cheers,=20
Len=2E


On 5 January 2025 6:41:15=E2=80=AFpm GMT+02:00, Eli Zaretskii <eliz@gnu=2E=
org> wrote:
>> From: Len Trigg <lenbok@gmail=2Ecom>
>> Date: Sun, 29 Dec 2024 08:55:51 +1300
>> Cc: gerd=2Emoellmann@gmail=2Ecom, 75056@debbugs=2Egnu=2Eorg
>>=20
>> On Sat, 28 Dec 2024 at 20:52, Eli Zaretskii <eliz@gnu=2Eorg> wrote:
>>=20
>>  Could you please extend your recipe so it starts from "emacs -nw -Q"?
>>  See, I don't have posframe or elpaca installed and don't use them, and
>>  don't want to install them just to reproduce and debug this problem=2E
>>=20
>> Unless there's something I'm missing, the init file and startup command=
 I provided did the installation of those
>> files for you into a temporary directory, so I thought that was the eas=
iest self-contained path to reproducing=2E
>> Let me assume you've run it once that way initially in order to fetch t=
he packages (otherwise you can
>> manually download the files if you want and adjust the paths in the bel=
ow command line, but be aware that
>> you need new enough versions of posframe that understands tty child fra=
me)=2E Then to get a "emacs -nw -Q"
>> initialization you can use the attached test=2Eel to do:
>>=20
>> emacs -nw -Q --init-directory=3D~/emacs-test -l ~/emacs-test/elpaca/rep=
os/vertico/vertico=2Eel -l ~
>> /emacs-test/elpaca/repos/vertico/extensions/vertico-multiform=2Eel -l ~
>> /emacs-test/elpaca/repos/posframe/posframe=2Eel -l ~
>> /emacs-test/elpaca/repos/vertico-posframe/vertico-posframe=2Eel  test=
=2Eel
>>=20
>> Then manually "eval" the remaining commands in test=2Eel
>> (in another terminal) emacsclient -nw
>> Then invoke the child frame pop up: (C-x b and C-n to select *Messages*=
 and RET)=2E Now we're no longer in
>> a minibuffer=2E
>> Switch back to the original emacs terminal
>> Invoke the child frame pop up: (C-x b and C-n to select *Messages* and =
RET)=2E Now we're no longer in a
>> minibuffer=2E
>> Swap to the emacsclient terminal, and note that the client is "hung"=2E
>> =20
>> I think this gives a specific enough recipe to minimally reproduce=2E
>>=20
>> (vertico-mode)
>>=20
>> (push '(tty-non-selected-cursor =2E t) vertico-posframe-parameters)
>> (push '(undecorated =2E nil) vertico-posframe-parameters)
>> (vertico-posframe-mode)
>>=20
>> (server-start)
>
>I tried this now, but I don't think I see the problem you describe=2E
>
>I donwloaded vertico, posframe, and vertico-posframe packages from GNU
>ELPA -- are the versions available there new enough to reproduce the
>problem?  If not, where should I download these packages from?
>
>Anyway, I can only observe a "hung" client if I forcibly switch from
>an active minibuffer=2E  That is, after "C-x b" I don't select a buffer,
>I simply type "C-x o" to switch out of the mini-window=2E  Then only the
>client where I switched out of the mini-window can accept keyboard
>input, the other one is "hung"=2E
>
>However, I can see the same situation even without these two packages:
>if I start emacsclient, type "C-x b" there, and then "C-x o" to switch
>away from the mini-window, Emacs on the other frame will stop responding
>to keyboard input=2E  This is expected: when Emacs has an active
>minibuffer on some display, Emacs temporarily switches to the
>"single-keyboard mode"=2E
>
>But I suspect this is not what you see, so I wonder what did I not do
>to reproduce the problem you see=2E
>

------QK5XDGEW991SNXWE349W7CXWJOFQYK
Content-Type: text/html;
 charset=utf-8
Content-Transfer-Encoding: quoted-printable

<html><head></head><body><div dir=3D"auto">Please excuse the top reply, I a=
m traveling and my phone email client is limited=2E <br><br>Eli, thanks for=
 taking another look=2E AFAIK, posframe needs to be newer than what is rele=
ased in ELPA=2E You can get the latest from &lt;<a href=3D"https://github=
=2Ecom/tumashu/posframe">https://github=2Ecom/tumashu/posframe</a>&gt;<br><=
br>I also think that if you had the older version you would not have seen a=
 tty-child-frame at all and so not have triggered the bug I see - In your t=
est did C-x b bring up a tty child frame in the center of the window, or a =
regular minibuffer at the bottom of the screen? <br><br>(You are correct th=
at I did not switch away from the selector in my repro steps, I selected th=
e buffer and exited normally with RET)=2E<br><br>Cheers, <br>Len=2E<br></di=
v><br><br><div class=3D"gmail_quote"><div dir=3D"auto">On 5 January 2025 6:=
41:15=E2=80=AFpm GMT+02:00, Eli Zaretskii &lt;eliz@gnu=2Eorg&gt; wrote:</di=
v><blockquote class=3D"gmail_quote" style=3D"margin: 0pt 0pt 0pt 0=2E8ex; b=
order-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<pre class=3D"k9mail"><blockquote class=3D"gmail_quote" style=3D"margin: 0=
pt 0pt 1ex 0=2E8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"><di=
v dir=3D"auto">From: Len Trigg &lt;lenbok@gmail=2Ecom&gt;<br>Date: Sun, 29 =
Dec 2024 08:55:51 +1300<br>Cc: gerd=2Emoellmann@gmail=2Ecom, 75056@debbugs=
=2Egnu=2Eorg<br><br>On Sat, 28 Dec 2024 at 20:52, Eli Zaretskii &lt;eliz@gn=
u=2Eorg&gt; wrote:<br><br> Could you please extend your recipe so it starts=
 from "emacs -nw -Q"?<br> See, I don't have posframe or elpaca installed an=
d don't use them, and<br> don't want to install them just to reproduce and =
debug this problem=2E<br><br>Unless there's something I'm missing, the init=
 file and startup command I provided did the installation of those<br>files=
 for you into a temporary directory, so I thought that was the easiest self=
-contained path to reproducing=2E<br>Let me assume you've run it once that =
way initially in order to fetch the packages (otherwise you can<br>manually=
 download the files if you want and adjust the paths in the below command l=
ine, but be aware that<br>you need new enough versions of posframe that und=
erstands tty child frame)=2E Then to get a "emacs -nw -Q"<br>initialization=
 you can use the attached test=2Eel to do:<br><br>emacs -nw -Q --init-direc=
tory=3D~/emacs-test -l ~/emacs-test/elpaca/repos/vertico/vertico=2Eel -l ~<=
br>/emacs-test/elpaca/repos/vertico/extensions/vertico-multiform=2Eel -l ~<=
br>/emacs-test/elpaca/repos/posframe/posframe=2Eel -l ~<br>/emacs-test/elpa=
ca/repos/vertico-posframe/vertico-posframe=2Eel  test=2Eel<br><br>Then manu=
ally "eval" the remaining commands in test=2Eel<br>(in another terminal) em=
acsclient -nw<br>Then invoke the child frame pop up: (C-x b and C-n to sele=
ct *Messages* and RET)=2E Now we're no longer in<br>a minibuffer=2E<br>Swit=
ch back to the original emacs terminal<br>Invoke the child frame pop up: (C=
-x b and C-n to select *Messages* and RET)=2E Now we're no longer in a<br>m=
inibuffer=2E<br>Swap to the emacsclient terminal, and note that the client =
is "hung"=2E<br> <br>I think this gives a specific enough recipe to minimal=
ly reproduce=2E<br><br>(vertico-mode)<br><br>(push '(tty-non-selected-curso=
r =2E t) vertico-posframe-parameters)<br>(push '(undecorated =2E nil) verti=
co-posframe-parameters)<br>(vertico-posframe-mode)<br><br>(server-start)<br=
></div></blockquote><div dir=3D"auto"><br>I tried this now, but I don't thi=
nk I see the problem you describe=2E<br><br>I donwloaded vertico, posframe,=
 and vertico-posframe packages from GNU<br>ELPA -- are the versions availab=
le there new enough to reproduce the<br>problem?  If not, where should I do=
wnload these packages from?<br><br>Anyway, I can only observe a "hung" clie=
nt if I forcibly switch from<br>an active minibuffer=2E  That is, after "C-=
x b" I don't select a buffer,<br>I simply type "C-x o" to switch out of the=
 mini-window=2E  Then only the<br>client where I switched out of the mini-w=
indow can accept keyboard<br>input, the other one is "hung"=2E<br><br>Howev=
er, I can see the same situation even without these two packages:<br>if I s=
tart emacsclient, type "C-x b" there, and then "C-x o" to switch<br>away fr=
om the mini-window, Emacs on the other frame will stop responding<br>to key=
board input=2E  This is expected: when Emacs has an active<br>minibuffer on=
 some display, Emacs temporarily switches to the<br>"single-keyboard mode"=
=2E<br><br>But I suspect this is not what you see, so I wonder what did I n=
ot do<br>to reproduce the problem you see=2E<br><br></div></pre></blockquot=
e></div></body></html>
------QK5XDGEW991SNXWE349W7CXWJOFQYK--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 5 Jan 2025 16:41:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jan 05 11:41:28 2025
Received: from localhost ([127.0.0.1]:34955 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tUTgt-0004lP-Ux
	for submit <at> debbugs.gnu.org; Sun, 05 Jan 2025 11:41:28 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:60066)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1tUTgp-0004l6-TN
 for 75056 <at> debbugs.gnu.org; Sun, 05 Jan 2025 11:41:26 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tUTgk-0005HU-EJ; Sun, 05 Jan 2025 11:41:18 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=DPBoBxlS0975DqnVMt9NhO1U+JuFp+6H/mHUxxYhjXE=; b=W7uIAz4unfVJ
 ORyql2EmyPsqHZ82xTi1I+yAQ75FCV/ZQaD0ZpV6Ih0y1dzo4h1Y9yNQBBghStxXlP8se4uxYHCXe
 L5oaUapcuWxamZlNKu5JokzItprx4b0a4sH0FzbUcyugKTZaVt9mPX+T1QvRvN/zgfVf3YwW5SB83
 /r2ntFIf922AlBMPOSYSbBoIzTFP9spTBBEcu3Y3brlbNchpXkCzDHc2r6NTjXbce2QLF+9ZXIb4h
 qGxlVgtfscuXpbBgqd2pBEyGT22ZOuWFTyqlsfQp+DTO8+mtG7MSnWDEK6VXN4gasF2vZQL7jZTwZ
 CzwyjF6C4bWucHN24lcOig==;
Date: Sun, 05 Jan 2025 18:41:15 +0200
Message-Id: <86v7ut6wno.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
In-Reply-To: <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
 (message from Len Trigg on Sun, 29 Dec 2024 08:55:51 +1300)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN> <m2zfkhfr7r.fsf@HIDDEN>
 <86wmflwlok.fsf@HIDDEN> <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
 <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Len Trigg <lenbok@HIDDEN>
> Date: Sun, 29 Dec 2024 08:55:51 +1300
> Cc: gerd.moellmann@HIDDEN, 75056 <at> debbugs.gnu.org
> 
> On Sat, 28 Dec 2024 at 20:52, Eli Zaretskii <eliz@HIDDEN> wrote:
> 
>  Could you please extend your recipe so it starts from "emacs -nw -Q"?
>  See, I don't have posframe or elpaca installed and don't use them, and
>  don't want to install them just to reproduce and debug this problem.
> 
> Unless there's something I'm missing, the init file and startup command I provided did the installation of those
> files for you into a temporary directory, so I thought that was the easiest self-contained path to reproducing.
> Let me assume you've run it once that way initially in order to fetch the packages (otherwise you can
> manually download the files if you want and adjust the paths in the below command line, but be aware that
> you need new enough versions of posframe that understands tty child frame). Then to get a "emacs -nw -Q"
> initialization you can use the attached test.el to do:
> 
> emacs -nw -Q --init-directory=~/emacs-test -l ~/emacs-test/elpaca/repos/vertico/vertico.el -l ~
> /emacs-test/elpaca/repos/vertico/extensions/vertico-multiform.el -l ~
> /emacs-test/elpaca/repos/posframe/posframe.el -l ~
> /emacs-test/elpaca/repos/vertico-posframe/vertico-posframe.el  test.el
> 
> Then manually "eval" the remaining commands in test.el
> (in another terminal) emacsclient -nw
> Then invoke the child frame pop up: (C-x b and C-n to select *Messages* and RET). Now we're no longer in
> a minibuffer.
> Switch back to the original emacs terminal
> Invoke the child frame pop up: (C-x b and C-n to select *Messages* and RET). Now we're no longer in a
> minibuffer.
> Swap to the emacsclient terminal, and note that the client is "hung".
>  
> I think this gives a specific enough recipe to minimally reproduce.
> 
> (vertico-mode)
> 
> (push '(tty-non-selected-cursor . t) vertico-posframe-parameters)
> (push '(undecorated . nil) vertico-posframe-parameters)
> (vertico-posframe-mode)
> 
> (server-start)

I tried this now, but I don't think I see the problem you describe.

I donwloaded vertico, posframe, and vertico-posframe packages from GNU
ELPA -- are the versions available there new enough to reproduce the
problem?  If not, where should I download these packages from?

Anyway, I can only observe a "hung" client if I forcibly switch from
an active minibuffer.  That is, after "C-x b" I don't select a buffer,
I simply type "C-x o" to switch out of the mini-window.  Then only the
client where I switched out of the mini-window can accept keyboard
input, the other one is "hung".

However, I can see the same situation even without these two packages:
if I start emacsclient, type "C-x b" there, and then "C-x o" to switch
away from the mini-window, Emacs on the other frame will stop responding
to keyboard input.  This is expected: when Emacs has an active
minibuffer on some display, Emacs temporarily switches to the
"single-keyboard mode".

But I suspect this is not what you see, so I wonder what did I not do
to reproduce the problem you see.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 28 Dec 2024 19:57:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Dec 28 14:57:12 2024
Received: from localhost ([127.0.0.1]:52685 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tRcvw-0006Xf-5R
	for submit <at> debbugs.gnu.org; Sat, 28 Dec 2024 14:57:12 -0500
Received: from mail-lj1-f177.google.com ([209.85.208.177]:58544)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <lenbok@HIDDEN>) id 1tRcvt-0006XU-S6
 for 75056 <at> debbugs.gnu.org; Sat, 28 Dec 2024 14:57:10 -0500
Received: by mail-lj1-f177.google.com with SMTP id
 38308e7fff4ca-2ffd6b7d77aso108028441fa.0
 for <75056 <at> debbugs.gnu.org>; Sat, 28 Dec 2024 11:57:09 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1735415769; x=1736020569; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=djyGjeret4eEKe9IIUb7w29nKpejU991+KVnu7z7rQs=;
 b=ElM0tlr7cBX+1begZFQMltpYMkQ2MlUSxV/b/aajmnF3xv7T0wZvlUF1GKM/6/1iau
 gQSpS8eIvgZPnghiqeyQmeb+8dGsd9JeQSPK+Wa7PNPJzpBjaZT1fRZEzF5I3k+aVN0U
 EIf+3mP+k+GpMc+wDkoo5fSnLTeIu/XIhgBuuzPq4QfcPgOyT6UeHprndbIn0/TpsChZ
 dyS7uOBg4jpCOjhjWVkk97177QOuvDScMxOZDlfHfPlcjfr0ZpDUWTl5byqru6lhdNtc
 wDnmSLDbA+CV2MewwqUs7UYOoQ3Xyh/JZX46LQwZBSREGvdaLbxfNzivQ+4aHttEVg0g
 FZPA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1735415769; x=1736020569;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=djyGjeret4eEKe9IIUb7w29nKpejU991+KVnu7z7rQs=;
 b=FT36VAr7/5occBiLVVbNXB0fGtoBnkx16SRVv0XwrXhhjEIfdVtyHL3JC5leGtGsur
 u242lWY9RVQkQZ4FX7QrDmkQLES3SXz2Sz1SDqSIgJtpRNQlW3t8xQMfPXXFdtv4NA5V
 rj9wh9lnVHYFV5usbOFtr8nGxzvkE8n1SUwnIcX5Z+dvH6sCY1o431EjQkHxTis7iQNi
 OJ3QViQidWl1niRFVyhQIqf6RazP1FI/1DamvsfhwsoWyeI+pUnG8vzwIKfpXfiaX5vs
 i22jC6rGEfqZTiGKSEI1AJxfpC2HoPhxsNeJmy+NMErAuVyUDGEwcfKKhB1MYdQdTvvB
 HicQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCWT8Nj9tQyb5Uq7SFS5bnK9qYZ0KMBxV4FFOAaloQaryh27bmrV+bOeClIJjPE8CbzpDliK0w==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzcDJYidhNZ2S1ePv3ey7mVNpZOPkehk9Q3mKerv5m6AwAX78FV
 lbv8isBUkmkK8Wtx4cLpg+bJ35rRTB7QilEkbi4/VhO8cF+JabM+oJ7CTwwzIzNKchA8MCtRuGb
 6Lur6bghRG/01DuwgmGCPSS4KB5c=
X-Gm-Gg: ASbGncsU781fECHzjJzAJDqbB+mQJnuDR+vQbv8J3w3yOzsTvdM2MY0nZ4kMEoohyAl
 fQUtpUxexzPBtNpN4KU2DQnGTDB4A0/D7Ca4=
X-Google-Smtp-Source: AGHT+IEzIo1hVGe8RA41y3sdNPCmsR/UNzs+FuQLZLr8iJ4CMAd2iXn7/WppcpzNK6yuUiuXeVn3l++mNyrfe88xU3Q=
X-Received: by 2002:a05:6512:1394:b0:540:1ec0:4d86 with SMTP id
 2adb3069b0e04-54229533e4fmr9468466e87.17.1735415768449; Sat, 28 Dec 2024
 11:56:08 -0800 (PST)
MIME-Version: 1.0
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN> <m2zfkhfr7r.fsf@HIDDEN>
 <86wmflwlok.fsf@HIDDEN> <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 <86y100utwa.fsf@HIDDEN>
In-Reply-To: <86y100utwa.fsf@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Sun, 29 Dec 2024 08:55:51 +1300
Message-ID: <CAOGVwemEaxW2LUn0UTx4LHbOk4P-+wL4qaNHd=vrWFkV18Vrog@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/mixed; boundary="0000000000006ab32c062a59f882"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--0000000000006ab32c062a59f882
Content-Type: multipart/alternative; boundary="0000000000006ab328062a59f880"

--0000000000006ab328062a59f880
Content-Type: text/plain; charset="UTF-8"

On Sat, 28 Dec 2024 at 20:52, Eli Zaretskii <eliz@HIDDEN> wrote:

> Could you please extend your recipe so it starts from "emacs -nw -Q"?
> See, I don't have posframe or elpaca installed and don't use them, and
> don't want to install them just to reproduce and debug this problem.
>

Unless there's something I'm missing, the init file and startup command I
provided did the installation of those files for you into a temporary
directory, so I thought that was the easiest self-contained path to
reproducing. Let me assume you've run it once that way initially in order
to fetch the packages (otherwise you can manually download the files if you
want and adjust the paths in the below command line, but be aware that you
need new enough versions of posframe that understands tty child frame).
Then to get a "emacs -nw -Q" initialization you can use the attached
test.el to do:

emacs -nw -Q --init-directory=~/emacs-test -l
~/emacs-test/elpaca/repos/vertico/vertico.el -l
~/emacs-test/elpaca/repos/vertico/extensions/vertico-multiform.el -l
~/emacs-test/elpaca/repos/posframe/posframe.el -l
~/emacs-test/elpaca/repos/vertico-posframe/vertico-posframe.el  test.el

Then manually "eval" the remaining commands in test.el
(in another terminal) emacsclient -nw
Then invoke the child frame pop up: (C-x b and C-n to select *Messages* and
RET). Now we're no longer in a minibuffer.
Switch back to the original emacs terminal
Invoke the child frame pop up: (C-x b and C-n to select *Messages* and
RET). Now we're no longer in a minibuffer.
Swap to the emacsclient terminal, and note that the client is "hung".

I think this gives a specific enough recipe to minimally reproduce.

--0000000000006ab328062a59f880
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote g=
mail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, 28 Dec =
2024 at 20:52, Eli Zaretskii &lt;<a href=3D"mailto:eliz@HIDDEN">eliz@HIDDEN=
rg</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margi=
n:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex=
">
Could you please extend your recipe so it starts from &quot;emacs -nw -Q&qu=
ot;?<br>
See, I don&#39;t have posframe or elpaca installed and don&#39;t use them, =
and<br>
don&#39;t want to install them just to reproduce and debug this problem.<br=
></blockquote><div><br></div><div>Unless there&#39;s something I&#39;m miss=
ing, the init file and startup command I provided did the installation of t=
hose files for you into a temporary directory, so I thought that was the ea=
siest self-contained path to reproducing. Let me assume you&#39;ve run it o=
nce that way initially in order to fetch the packages (otherwise you can ma=
nually download the files if you want and adjust the paths in the below com=
mand line, but be aware that you need new enough versions of posframe that =
understands tty child frame). Then to get a &quot;emacs -nw -Q&quot; initia=
lization you can use the attached test.el to do:</div><div><br></div>emacs =
-nw -Q --init-directory=3D~/emacs-test -l ~/emacs-test/elpaca/repos/vertico=
/vertico.el -l ~/emacs-test/elpaca/repos/vertico/extensions/vertico-multifo=
rm.el -l ~/emacs-test/elpaca/repos/posframe/posframe.el -l ~/emacs-test/elp=
aca/repos/vertico-posframe/vertico-posframe.el=C2=A0 test.el</div><div clas=
s=3D"gmail_quote gmail_quote_container"><br><div>Then manually &quot;eval&q=
uot; the remaining commands in test.el</div><div><span class=3D"gmail-im">(=
in another terminal) emacsclient -nw<br></span>Then invoke the child frame =
pop up: (C-x b and C-n to select *Messages* and RET). Now we&#39;re no long=
er in a minibuffer.<span class=3D"gmail-im"><br>Switch back to the original=
 emacs terminal<br></span>Invoke the child frame pop up: (C-x b and C-n to =
select *Messages* and RET). Now we&#39;re no longer in a minibuffer.<br>Swa=
p to the emacsclient terminal, and note that the client is &quot;hung&quot;=
.</div><div>=C2=A0</div><div>I think this gives a specific enough recipe to=
 minimally reproduce.<br></div></div></div>

--0000000000006ab328062a59f880--

--0000000000006ab32c062a59f882
Content-Type: text/x-emacs-lisp; charset="US-ASCII"; name="test.el"
Content-Disposition: attachment; filename="test.el"
Content-Transfer-Encoding: base64
Content-ID: <f_m58lf23e0>
X-Attachment-Id: f_m58lf23e0

KHZlcnRpY28tbW9kZSkKCihwdXNoICcodHR5LW5vbi1zZWxlY3RlZC1jdXJzb3IgLiB0KSB2ZXJ0
aWNvLXBvc2ZyYW1lLXBhcmFtZXRlcnMpCihwdXNoICcodW5kZWNvcmF0ZWQgLiBuaWwpIHZlcnRp
Y28tcG9zZnJhbWUtcGFyYW1ldGVycykKKHZlcnRpY28tcG9zZnJhbWUtbW9kZSkKCihzZXJ2ZXIt
c3RhcnQpCg==
--0000000000006ab32c062a59f882--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 28 Dec 2024 07:52:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Dec 28 02:52:15 2024
Received: from localhost ([127.0.0.1]:48621 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tRRcN-0005xG-FI
	for submit <at> debbugs.gnu.org; Sat, 28 Dec 2024 02:52:15 -0500
Received: from eggs.gnu.org ([209.51.188.92]:43756)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1tRRcL-0005x3-By
 for 75056 <at> debbugs.gnu.org; Sat, 28 Dec 2024 02:52:13 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tRRcF-0007eQ-Qm; Sat, 28 Dec 2024 02:52:07 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=5boFm3rxT0tFNICl84edMwW/1txZBHbn5Yy7PROVyyA=; b=S53hRa3CLzWewWoOow2S
 /sHZzBf/aC/4XQPCM4fHrrewYDbpvQ7ZVzb4gbyY5q28GM+xfn4Kf6g6iED+DHib4tfGIHKZoVP21
 MAVENhmZKDVjsg5mnEPh3I9wjArNl1BZaXNb0HX2UnMaCbSe/2y7/cfdPsiIVJ2qH1LraWIRZM0lg
 4QBpMzYzKisISwFMa6bflGo/+Af/jXg8U0vjEl+dPJHB/AvJRXgq3mtbF0sYLpydI0iaKjM9iMvBh
 jtHn7XXL5FWheb3hJUff/cLrotPsbqXVLk9prgUFiJmDSwiRO0JkJFuMpFQoYVkC0QOqFgIGwwVds
 PeRs1Zn9qSHy5w==;
Date: Sat, 28 Dec 2024 09:52:05 +0200
Message-Id: <86y100utwa.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
In-Reply-To: <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
 (message from Len Trigg on Sat, 28 Dec 2024 07:23:52 +1300)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN> <m2zfkhfr7r.fsf@HIDDEN>
 <86wmflwlok.fsf@HIDDEN> <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
 <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: gerd.moellmann@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Len Trigg <lenbok@HIDDEN>
> Date: Sat, 28 Dec 2024 07:23:52 +1300
> Cc: Gerd Möllmann <gerd.moellmann@HIDDEN>, 
> 	75056 <at> debbugs.gnu.org
> 
> On Sat, 28 Dec 2024 at 07:13, Len Trigg <lenbok@HIDDEN> wrote:
> 
>  Hmmm, the repro scenario I gave doesn't involve either emacs client being still in the minibuffer AFAIK -
>  the "working" client is just in a regular buffer (e.g. having been chosen via C-x b and selected), and the
>  "hung" client is, well, hung.
> 
> To elaborate my steps:
> emacs -nw --init-directory=~/emacs-test  (the first time will result in packages being installed by elpaca)
> (in another terminal) emacsclient -nw
> Then invoke the child frame pop up: (e.g. C-x b and C-n to select *Messages* and RET). Now we're no
> longer in a minibuffer.
> Switch back to the original emacs
> Invoke the child frame pop up (e.g. C-x b and C-n to select *Messages* and RET). Now we're no longer in a
> minibuffer.
> Swap to the other terminal, and note that the client is "hung".

Could you please extend your recipe so it starts from "emacs -nw -Q"?
See, I don't have posframe or elpaca installed and don't use them, and
don't want to install them just to reproduce and debug this problem.
What I can do is download the packages needed to reproduce this,
unpack them into some temporary directory, and manually load them
(with commands like "M-x load-file") into Emacs started with -Q.
Could you please provide a recipe like this which I could follow?  And
please specify specific commands in the recipe, not "e.g.", so I could
make sure I'm following exactly the correct steps, and nothing else.

It is otherwise very hard for me to spend time on such bug reports,
because I first need to understand what packages are involved and how
to activate them, and that can take a lot of time for packages I never
used.

TIA




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 28 Dec 2024 07:44:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Dec 28 02:44:17 2024
Received: from localhost ([127.0.0.1]:48608 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tRRUf-0005ZN-Eg
	for submit <at> debbugs.gnu.org; Sat, 28 Dec 2024 02:44:17 -0500
Received: from eggs.gnu.org ([209.51.188.92]:55688)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1tRRUd-0005ZA-5F
 for 75056 <at> debbugs.gnu.org; Sat, 28 Dec 2024 02:44:15 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tRRUX-0004Rs-Ok; Sat, 28 Dec 2024 02:44:09 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=/e7Ql2FAgrk0eU2GEjrYJo30BhNT/4aGbNzcghdnEkQ=; b=Ye0Zb6SQZSZlnMr9+rGk
 5pifD2zZTZHiPBkhgCiybVtSGLC8trX5pVHZOmGWc+B5VDn8g49r6DerZQmgL5EQhPXb5qotPdtff
 jKgDf+2MJApanknE5/aFOo4tW7RbIggo4NnJZwx5iS1i/suCC92LR/ga3HFhQiDpkolMUpvP1DUTk
 huKtRgdApzXewnHtGZZBP1GjQed3+/HFO5lU2fIqS/fnlkFr8t8ba26N6QxK+I9hAswu5pRaw+5iB
 P+/DzIr/QRvEUmAArAPJJgYdGtWfc0PyxPyhG3OiylPIfs/UTrRZ0vUvRHQQLQBXeql0tOKYhdaFK
 6i/0UU2fHTQn5g==;
Date: Sat, 28 Dec 2024 09:44:01 +0200
Message-Id: <8634i8w8u6.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
In-Reply-To: <CAOGVwenNt8a0HmSXTnqu5_FKkxEVMDw0hmak-MLk7Sn6up_wtg@HIDDEN>
 (message from Len Trigg on Sat, 28 Dec 2024 07:11:35 +1300)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN> <m2zfkhfr7r.fsf@HIDDEN>
 <86wmflwlok.fsf@HIDDEN> <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwenNt8a0HmSXTnqu5_FKkxEVMDw0hmak-MLk7Sn6up_wtg@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>,
 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Len Trigg <lenbok@HIDDEN>
> Date: Sat, 28 Dec 2024 07:11:35 +1300
> 
> On Sat, 28 Dec 2024 at 02:02, Eli Zaretskii <eliz@HIDDEN> wrote:
> 
>  > From: Gerd Möllmann <gerd.moellmann@HIDDEN>
>  > Cc: lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
>  > Date: Fri, 27 Dec 2024 13:47:09 +0100
>  > 
>  > Eli Zaretskii <eliz@HIDDEN> writes:
>  > 
>  > > Then why is this a bug?
>  > >
>  > > When a frame is in a minibuffer, it means Emacs asks the user about
>  > > something, and in that situation, the user must respond to the prompt,
>  > > or exit the minibuffer in some other way.  That's normal in my book.
>  > > What am I missing?
>  > 
>  > Emacs doesn't say anything.
> 
>  It does: on the frame where you are in the minibuffer.
> 
> Hmmm, the repro scenario I gave doesn't involve either emacs client being still in the minibuffer AFAIK - the
> "working" client is just in a regular buffer (e.g. having been chosen via C-x b and selected), and the "hung"
> client is, well, hung.

Maybe you switched out of the minibuffer window, leaving the
minibuffer active?  In which case switching back to the mini-window
and exiting the minibuffer prompt (with RET or C-g or some other way)
should "unhang" the other client.  Is this indeed so?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Dec 2024 18:25:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 13:25:17 2024
Received: from localhost ([127.0.0.1]:47547 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tRF1R-0007iY-5q
	for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 13:25:17 -0500
Received: from mail-lf1-f46.google.com ([209.85.167.46]:47598)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <lenbok@HIDDEN>) id 1tRF1O-0007dF-TR
 for 75056 <at> debbugs.gnu.org; Fri, 27 Dec 2024 13:25:15 -0500
Received: by mail-lf1-f46.google.com with SMTP id
 2adb3069b0e04-53e3a90336eso8269367e87.3
 for <75056 <at> debbugs.gnu.org>; Fri, 27 Dec 2024 10:25:14 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1735323849; x=1735928649; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=Rh3YrlfSdDSbCcj4GDH4oTrU8iFxtwzVFlyaKL74I0s=;
 b=kriDQ0Ovf6cVYgvwBkufOQQdaZv+4oOrc5EvgJlJDVmjvcyYoRfRxj8pMhFeIv6qq5
 KWLIU6T4E2eH0v+eulzWdij91DONTxzU1Xv3uXUlyh14nCa1LYFFFuLhO1xWFcZW0018
 fJKRaNTlFdqMTEA3MivjDGo0eiREwRXJutVwUma0jdcPewo3YgRHrUuKp7+lGzIk4wO3
 rq++cy4h0W46c5gGoHNyUcQXpiHN/tOWk1dpexkGgXjnIGsmnjq8eoyKdDHijJfOXxya
 Ce5jRWz4aAOXAJNd+8iIb76FsSyEIvnnvJlkbn+3si6xoY2lqLIVTfVdQRvu4Hmexera
 LL+g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1735323849; x=1735928649;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=Rh3YrlfSdDSbCcj4GDH4oTrU8iFxtwzVFlyaKL74I0s=;
 b=pAlll3mmTo1UdaVRNhI6sykAhVW4nBGyotrFVwoGfMvfJsOL2IGdAowaSAigPZ7hCi
 /0vWGLB/OobjGF/RwtQusM37K9f/bb8evyj5206THX7rruXdXYvhmp7BKtG6ByV71WVt
 Zhbl+e50BsJgsBWtQKpBWolApe68W91ZODxWyikqHisx5GOd53S0rz6BZACMRlVuB3Cp
 okM+SWprj4w33M4bR7zzyA5aKGHV0t2AI6H7/6YxuhdF9X3RSara4wuWVzVxfItH0BaT
 Ix4S2NsYN4+YXFiq455L3zoxNOiIRIKriwgMfSBTc6CiLaBwH32Bs2y4MUAd+svrHllD
 ZOyQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCV9X1H+ebyepIavMCI7RrvA+a5RcszLkQG7h9Jxyi7aVB6VvLzgyTDsATL4IY92WawEmTft2Q==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YyShKMCkEbW8BF2ZQEbK0AY7NGv1ycT5Wk2YueUR9Oa4Fg5hv7o
 4F5bOAF5nI9eQPi7yrC3nYh7a21NEB9YrpmiUrRfItS4xnE6pk3A4vRaRJ7PgQjl1y9sjdL5Oqj
 AKMYM6n6NTZMCBxqGThMfltBMk6ABloJh
X-Gm-Gg: ASbGncv/2zK3T7MdniyV2dXS5TCACXZamfBDNt7myLpc1CeO8HFPEhn62CQ0/fbW8cp
 lcdeW17p5PnElPq6g1JWy5uDbj/35mhJl81I=
X-Google-Smtp-Source: AGHT+IFJYklPsseqcCrGUe2GznsqPwxqZlFw9GyBYLoPK+D4cfoc9k7j2gma5CLXQfnyEn/89V53IjkJNsxxYux6eJw=
X-Received: by 2002:a05:6512:398d:b0:540:206b:c355 with SMTP id
 2adb3069b0e04-54229533052mr7993013e87.19.1735323848627; Fri, 27 Dec 2024
 10:24:08 -0800 (PST)
MIME-Version: 1.0
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN> <m2zfkhfr7r.fsf@HIDDEN>
 <86wmflwlok.fsf@HIDDEN> <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
In-Reply-To: <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Sat, 28 Dec 2024 07:23:52 +1300
Message-ID: <CAOGVweko_sjbhWgv6hOxkLswyUnTL0LqPMRhOo03KVPT7aKQQw@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/alternative; boundary="000000000000915c00062a4491f5"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>,
 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--000000000000915c00062a4491f5
Content-Type: text/plain; charset="UTF-8"

On Sat, 28 Dec 2024 at 07:13, Len Trigg <lenbok@HIDDEN> wrote:

> Hmmm, the repro scenario I gave doesn't involve either emacs client being
> still in the minibuffer AFAIK - the "working" client is just in a regular
> buffer (e.g. having been chosen via C-x b and selected), and the "hung"
> client is, well, hung.
>

To elaborate my steps:
emacs -nw --init-directory=~/emacs-test  (the first time will result in
packages being installed by elpaca)
(in another terminal) emacsclient -nw
Then invoke the child frame pop up: (e.g. C-x b and C-n to select
*Messages* and RET). Now we're no longer in a minibuffer.
Switch back to the original emacs
Invoke the child frame pop up (e.g. C-x b and C-n to select *Messages* and
RET). Now we're no longer in a minibuffer.
Swap to the other terminal, and note that the client is "hung".

--000000000000915c00062a4491f5
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr"><br></div><br><div class=3D"gmail_quote g=
mail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, 28 Dec =
2024 at 07:13, Len Trigg &lt;<a href=3D"mailto:lenbok@HIDDEN">lenbok@gma=
il.com</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"m=
argin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left=
:1ex"><div dir=3D"ltr"><div class=3D"gmail_quote"><div>Hmmm, the repro scen=
ario I gave doesn&#39;t involve either emacs client=20
being still in the minibuffer AFAIK - the &quot;working&quot; client is jus=
t in a=20
regular buffer (e.g. having been chosen via C-x b and selected), and the
 &quot;hung&quot; client is, well, hung.</div></div></div></blockquote><div=
><br></div><div>To elaborate my steps:</div><div>emacs -nw --init-directory=
=3D~/emacs-test=C2=A0 (the first time will result in packages being install=
ed by elpaca)<br>(in another terminal) emacsclient -nw<br>Then invoke the c=
hild frame pop up: (e.g. C-x b and C-n to select *Messages* and RET). Now w=
e&#39;re no longer in a minibuffer.<br>Switch back to the original emacs<br=
>Invoke the child frame pop up (e.g. C-x b and C-n to select *Messages* and=
 RET). Now we&#39;re no longer in a minibuffer.<br>Swap to the other termin=
al, and note that the client is &quot;hung&quot;.</div><div><br></div></div=
></div>

--000000000000915c00062a4491f5--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Dec 2024 18:14:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 13:14:56 2024
Received: from localhost ([127.0.0.1]:47527 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tRErQ-0007Ah-4a
	for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 13:14:56 -0500
Received: from mail-lf1-f45.google.com ([209.85.167.45]:61537)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <lenbok@HIDDEN>) id 1tRErN-0007AT-Nh
 for 75056 <at> debbugs.gnu.org; Fri, 27 Dec 2024 13:14:54 -0500
Received: by mail-lf1-f45.google.com with SMTP id
 2adb3069b0e04-53f22fd6887so7192911e87.2
 for <75056 <at> debbugs.gnu.org>; Fri, 27 Dec 2024 10:14:53 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1735323228; x=1735928028; darn=debbugs.gnu.org;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:from:to:cc:subject:date:message-id:reply-to;
 bh=zJudeh0FHFgIyUJ1a7zjAbJMoR3LdImPv2YP06wVseU=;
 b=aqbBkIujEwzHdE+LYUQ/bPfJwadzEis1ylY+HNeNnMDtasl4UhT0O8ZB/njgFYhbYw
 qNcSNja1qHMKlliK7kw4pLoVFxN+x93yfCq5xKp8m/TOu3nSZlth7ShyKs0cDcD5CoFz
 86G9YFrClnCCr/YCaiWxhoptPh4Wa2jpDyfEZ8f2gufa6k02PGykUblGSGg2iLa+9aph
 2gLiCx8WGzdMEVP1Ie2x4dU2v2CLBAwUrt6PfVcxdCdx+in9eoThSmjz8s9pmwoR2MRb
 DR+TsEeWaLkVYcWe1qVuw0k0m41w0ja8dzC5KsRX0eUuRjbE38Oc215IsOxgSk2AtWMf
 wzfg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1735323228; x=1735928028;
 h=cc:to:subject:message-id:date:from:in-reply-to:references
 :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id
 :reply-to;
 bh=zJudeh0FHFgIyUJ1a7zjAbJMoR3LdImPv2YP06wVseU=;
 b=WDXeWoh8uGiOUQaumGao0LavWKD4zvDkq2qjasdXE2yUAxQ76PN7whfZwNnzfCVOCr
 lsvfyTblITk/0qJQ3Q7jikcVIwoUZNfvRbczQ0pyHId6nxsQqK3/3KzkkY8TfB26QqvS
 cz+HYoyrnUa/0ZkHslZClygYU81ZRsbIw7mW3m2VjOuYjHh1NuuoDRTREc5xaJjvJ4TP
 7x9L19gvMXsz4/+oPS6N0QCUnUbDiEwjrTJwEU7zuJIkmgPddTEYuw5byOgGtDOTNxim
 qhwcXD1juErLCoDJsLIRu3LNAEya5cx7VBCWP3TP7WAHkym5ZsGmFakLM//7ffujYvob
 UeZA==
X-Forwarded-Encrypted: i=1;
 AJvYcCUyapSOlFcwAB5jxS+kzV01OGiQAquHBTXTcVtdLx+h1lYr42Byec/P04hpfVuy/XeftKtWZQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YznHwHcvMzOkBpp3UPqkkmHgiU3DyHCj5LoQHnGU1muKpMI1tcB
 cFrKNdsRzSuuazeySN4fCFJDL8ge8x5MuJ6859dlpZrY7+SRw5whPGwzQoWiPba9aud/HX4enSH
 Wa3eSuS4UWyxF12H63E/ZwapzLTKOreJa
X-Gm-Gg: ASbGncvYX1N34G3QLmzWrP0qEJNJA7gjvW4Y84cu/jBzoyuRfZhRrOmKpCAzRkcbq/X
 XpcNyGJZGr1illM5VojvlxWOLJEW5o6YQsDg=
X-Google-Smtp-Source: AGHT+IH3c4hdUhbJrgohiujq+VKG2YYII+qWUtHTShP/Yg0XlM/a6ON/dcsjWXXY1gP7WC0DgtlCSnGFzwGcwhsOxqI=
X-Received: by 2002:a05:6512:ba4:b0:540:2a15:9b5d with SMTP id
 2adb3069b0e04-54229561a38mr7149548e87.42.1735323227826; Fri, 27 Dec 2024
 10:13:47 -0800 (PST)
MIME-Version: 1.0
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN> <m2zfkhfr7r.fsf@HIDDEN>
 <86wmflwlok.fsf@HIDDEN> <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
In-Reply-To: <86msghwa6q.fsf@HIDDEN>
From: Len Trigg <lenbok@HIDDEN>
Date: Sat, 28 Dec 2024 07:13:31 +1300
Message-ID: <CAOGVwemPTm_8hoUKUuRhFeVU7yGfhtUEErLjmAXN8mxLLjvO7w@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
To: Eli Zaretskii <eliz@HIDDEN>
Content-Type: multipart/alternative; boundary="00000000000090b493062a446ce1"
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: =?UTF-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>,
 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--00000000000090b493062a446ce1
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

(Sorry Eli for the dup email, I initially used Reply rather than Reply-All)

On Sat, 28 Dec 2024 at 02:02, Eli Zaretskii <eliz@HIDDEN> wrote:

> > From: Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
> > Cc: lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
> > Date: Fri, 27 Dec 2024 13:47:09 +0100
> >
> > Eli Zaretskii <eliz@HIDDEN> writes:
> >
> > > Then why is this a bug?
> > >
> > > When a frame is in a minibuffer, it means Emacs asks the user about
> > > something, and in that situation, the user must respond to the prompt=
,
> > > or exit the minibuffer in some other way.  That's normal in my book.
> > > What am I missing?
> >
> > Emacs doesn't say anything.
>
> It does: on the frame where you are in the minibuffer.
>

Hmmm, the repro scenario I gave doesn't involve either emacs client being
still in the minibuffer AFAIK - the "working" client is just in a regular
buffer (e.g. having been chosen via C-x b and selected), and the "hung"
client is, well, hung.

--00000000000090b493062a446ce1
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">(Sorry Eli for the dup email, I initially=
 used Reply rather than Reply-All)<br></div><br><div class=3D"gmail_quote g=
mail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr">On Sat, 28 Dec =
2024 at 02:02, Eli Zaretskii &lt;<a href=3D"mailto:eliz@HIDDEN">eliz@HIDDEN=
rg</a>&gt; wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margi=
n:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex=
">&gt; From: Gerd M=C3=B6llmann &lt;<a href=3D"mailto:gerd.moellmann@gmail.=
com" target=3D"_blank">gerd.moellmann@HIDDEN</a>&gt;<br>
&gt; Cc: <a href=3D"mailto:lenbok@HIDDEN" target=3D"_blank">lenbok@gmail=
.com</a>,=C2=A0 <a href=3D"mailto:75056 <at> debbugs.gnu.org" target=3D"_blank">=
75056 <at> debbugs.gnu.org</a><br>
&gt; Date: Fri, 27 Dec 2024 13:47:09 +0100<br>
&gt; <br>
&gt; Eli Zaretskii &lt;<a href=3D"mailto:eliz@HIDDEN" target=3D"_blank">el=
iz@HIDDEN</a>&gt; writes:<br>
&gt; <br>
&gt; &gt; Then why is this a bug?<br>
&gt; &gt;<br>
&gt; &gt; When a frame is in a minibuffer, it means Emacs asks the user abo=
ut<br>
&gt; &gt; something, and in that situation, the user must respond to the pr=
ompt,<br>
&gt; &gt; or exit the minibuffer in some other way.=C2=A0 That&#39;s normal=
 in my book.<br>
&gt; &gt; What am I missing?<br>
&gt; <br>
&gt; Emacs doesn&#39;t say anything.<br>
<br>
It does: on the frame where you are in the minibuffer.<br></blockquote><div=
><br></div><div>Hmmm, the repro scenario I gave doesn&#39;t involve either =
emacs client=20
being still in the minibuffer AFAIK - the &quot;working&quot; client is jus=
t in a=20
regular buffer (e.g. having been chosen via C-x b and selected), and the
 &quot;hung&quot; client is, well, hung.</div><div>=C2=A0</div></div></div>

--00000000000090b493062a446ce1--




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Dec 2024 15:57:15 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 10:57:15 2024
Received: from localhost ([127.0.0.1]:47289 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tRCiA-0000qg-MI
	for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 10:57:14 -0500
Received: from mail-ed1-f49.google.com ([209.85.208.49]:50354)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1tRCi8-0000qP-IJ
 for 75056 <at> debbugs.gnu.org; Fri, 27 Dec 2024 10:57:13 -0500
Received: by mail-ed1-f49.google.com with SMTP id
 4fb4d7f45d1cf-5d3cf094768so11736184a12.0
 for <75056 <at> debbugs.gnu.org>; Fri, 27 Dec 2024 07:57:12 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1735314965; x=1735919765; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=oXAlMNwj8T91gBP5ojzx6cnoOfJ3egUmTYO00jwYT3g=;
 b=W4F4kFB5J0o2KeaoxIvCQlCjx4rfImqf9ilZc/oYoSCXkM9arlpMsCzwpgC67Kg3ku
 WGFC8J/yUCjLO+5550U/2WM4NSeFGgU56fonNLb0E0lCYPlCjPl9Bo+rLgrcP1gV83Jy
 iK8cnmbpHDIcDp/bi/tmdonSWzU/wCDUCU/Dsj5BsHWLB0AgUh64IlxC+8ETUf/jEWtN
 buMz6lx+t6/rBR+w5NISlKT5nlGTZuXfESrloUp2OdgfAXHrsQS78QEF0kSPAGU8PqD8
 MxrLDiYpMtrW00uBb6rGp8xMF7mz3ARcawtIVotiXd8dGJmtpPKm/rdjVUrfau8xRzCn
 Kp9A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1735314965; x=1735919765;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=oXAlMNwj8T91gBP5ojzx6cnoOfJ3egUmTYO00jwYT3g=;
 b=b3Fm0kv9yWRgm6tqg9pDzY0jDashI8hlDzCMU9rwfmEl9zzdvzGfjhdjgp4WzY7mCg
 jJhEvY+vu0mZw+ObkpJsshUzuzjmjqm5rBXRSlRu1tQMQdWnUMYpelR91/1tcxY8+1RR
 //MJumm/of4zCyDaiQIKcVNrDqSrSFugSv/rIFyqB+G3M/Y+PO6yvKZeubUWfQEsiKwy
 9gqGC/qSzjoCZsQ5mY62cNiFH/VCww7N9p0PzxO6xfWNSpoMgCMFNpRPbukeWn0AAvLF
 GzmkKvCExSn/qUqwoGGPpJNNNjqWakABzsdtjN1q8TuT343zlfV3lBQShlRvO2Fy0D2n
 +xKQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCU4n73LSmToHBvQ6dIuZ3GrAn7ydaQiGw/SdQU6rz5Sw/8ZHQSuWSQCJC/+cRKItqhfsF7nHg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YwQtwK6mQQqYeNOirU99OIvnAO+mvazsSQLA/m2MJQakudAspiO
 CstNi6tZS2r+q4Hi8uOaMolVJt8EzubBKD+8/qj98rteCyqnd66YdSR2bQ==
X-Gm-Gg: ASbGncvTJDB/HMGZYUKKJDTnBGcIeAB/3voULQ0dUxK1w9NgHCXhImXSv1F8vj7n2YT
 /5szCY8V/Q34wcRTAYGZAFENw44BpWMnOHFtzSLXYWqp0GpApJynkWDw3IQAq3GZ6V7qQoTeVDp
 Z0H3LpytyH8Kcis5P0Ju9p5/jftro1WDRET9+1lryvNBNX03mHwKNo827OHDOV6Jnjs4M0BJiGL
 e4mrhgOOfQltBcui4kfa/qU2Nz7ZKE9LFivLdip8Uermc6hODOQm6mnY1v/Jb/HNJ/ztF//gX1I
 C1fpE8X6nsV2SYnWGEOfvDCzri+LFNaBG3rvQ5KRtprlzUoXj7X+3Jc+S1J9
X-Google-Smtp-Source: AGHT+IHwDKxZUTdFm9O3yQr4OBaszDlX+kE+q+6zTG/A5TPlp3pbpZim09anIIKZPsqG2FUgGhBSBw==
X-Received: by 2002:a05:6402:360b:b0:5d4:5e4:1561 with SMTP id
 4fb4d7f45d1cf-5d81ddcd24fmr26296613a12.20.1735314965269; 
 Fri, 27 Dec 2024 07:56:05 -0800 (PST)
Received: from pro2 (p200300e0b74e5900bde19f98ca9a60df.dip0.t-ipconnect.de.
 [2003:e0:b74e:5900:bde1:9f98:ca9a:60df])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5d848b5c19dsm8087248a12.11.2024.12.27.07.56.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 27 Dec 2024 07:56:04 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <86ldw1w51g.fsf@HIDDEN> (Eli Zaretskii's message of "Fri, 27 Dec
 2024 16:53:47 +0200")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN>
 <m2zfkhfr7r.fsf@HIDDEN> <86wmflwlok.fsf@HIDDEN>
 <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <m2msghz2nc.fsf@HIDDEN> <86ldw1w51g.fsf@HIDDEN>
Date: Fri, 27 Dec 2024 16:56:03 +0100
Message-ID: <m2y10186i4.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> From: Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
>> Cc: lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
>> Date: Fri, 27 Dec 2024 14:17:11 +0100
>>=20
>> Eli Zaretskii <eliz@HIDDEN> writes:
>>=20
>> > But I'm not yet sure this is what we see in this case, which is why I
>> > asked for a C backtrace.  Producing it should be easy: just reproduce
>> > the problem, then attach a debugger and produce the backtrace.
>>=20
>> See below. AFAICS, Emacs is waiting for input, and when we have some,
>> the wrong things will happen. Please note that this is not a full debug
>> build.
>
> Thanks.  This lacks the equivalent of "xbacktrace", so a bit hard to
> interpret, but I see read-from-minibuffer which called recursive-edit.
>
> What is the recipe for this, starting from "emacs -Q", please?=20=20

The one the OP gave is good.

> Can this be reproduced without posframe?

No idea.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Dec 2024 14:54:00 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 09:54:00 2024
Received: from localhost ([127.0.0.1]:45287 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tRBix-0005CR-LW
	for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 09:53:59 -0500
Received: from eggs.gnu.org ([209.51.188.92]:43822)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1tRBiu-0005CE-LR
 for 75056 <at> debbugs.gnu.org; Fri, 27 Dec 2024 09:53:58 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tRBip-0006io-D4; Fri, 27 Dec 2024 09:53:51 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=+0VuF1TaocBpp6o0Rumr76oJzGUf7jmGDTaN365/wD8=; b=ABldhIYTp/548UikRHsr
 ibYQA26oZrTbNDOLx0yVA7zVItNxq4jyo7sQ8y6rWXNnpvoF9IjUtt8oEoW9A345RxRFvxyzv1Qyy
 OI2cDieRO22Q6eExFnNJrn68JdG03BuW6KjFMBxflIQRVzDD+vZmexCFYPJ4FHcXhDxZ1ehffWedD
 m0LkpaC4fZYhgP+D1zpxs58mAGfGa92Z7MfmkmIklJmiEqg6G5mnp0/CxguaIWOrMMHC+/649ORU7
 AlBwDxAssXus5uU9pIgczRIec7/6ZmhUFNHWjFUHzJCeppyKSoVDBCKsmTrVyEo9dNBVYFvaKLyDk
 NzzWHltPyR8xqQ==;
Date: Fri, 27 Dec 2024 16:53:47 +0200
Message-Id: <86ldw1w51g.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <m2msghz2nc.fsf@HIDDEN> (message from Gerd =?utf-8?Q?M?=
 =?utf-8?Q?=C3=B6llmann?= on Fri, 27 Dec 2024 14:17:11 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN>
 <m2zfkhfr7r.fsf@HIDDEN> <86wmflwlok.fsf@HIDDEN>
 <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
 <m2msghz2nc.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Cc: lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
> Date: Fri, 27 Dec 2024 14:17:11 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > But I'm not yet sure this is what we see in this case, which is why I
> > asked for a C backtrace.  Producing it should be easy: just reproduce
> > the problem, then attach a debugger and produce the backtrace.
> 
> See below. AFAICS, Emacs is waiting for input, and when we have some,
> the wrong things will happen. Please note that this is not a full debug
> build.

Thanks.  This lacks the equivalent of "xbacktrace", so a bit hard to
interpret, but I see read-from-minibuffer which called recursive-edit.

What is the recipe for this, starting from "emacs -Q", please?  Can
this be reproduced without posframe?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Dec 2024 13:18:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 08:18:16 2024
Received: from localhost ([127.0.0.1]:45064 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tRAEJ-0000AX-S5
	for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 08:18:16 -0500
Received: from mail-ed1-f52.google.com ([209.85.208.52]:56432)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1tRAEH-0000AO-Ua
 for 75056 <at> debbugs.gnu.org; Fri, 27 Dec 2024 08:18:14 -0500
Received: by mail-ed1-f52.google.com with SMTP id
 4fb4d7f45d1cf-5d3f65844deso11428343a12.0
 for <75056 <at> debbugs.gnu.org>; Fri, 27 Dec 2024 05:18:13 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1735305433; x=1735910233; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=4RirBqXo+QEim80BCROa4BABJrcICg9XIQjKVAF1gVI=;
 b=h+c23+QK6XhpgCNjwTN13mPD4OUCtPitMcSi4h5/conWjSe+NjEvieoFJ/fYpookwR
 UtojMN53EWJ7RQs+THMAeJhOjfUErddVSuJuAFdafZrvL5gXyyNEmcWzB1Tqf8zlXER1
 yQGcnvAzUwZaBJdEQ0wyj+55GLo8QgG1UQHURiKVhaNtvBLU1AM8BcDPtNNC5BvdkHhO
 mOirnVIf2Cx0B9RjaXxfPIrnANxKSS/u54SdIPHJp8zH3bZ8Bcys56TWPbxlb8KtDEfT
 swZQuoYCyPFSMo+GAGHUmOKxN8fdVzJIpE7tqZRRvjs8uTvuRiv0Ye198sdahgRr4jrO
 XcfQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1735305433; x=1735910233;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=4RirBqXo+QEim80BCROa4BABJrcICg9XIQjKVAF1gVI=;
 b=gn4znqivQVXw7p7qgVwaKKAsuJOTZEe/Cf61PtTS/f6Bx3P0opNZGDJMUffX3Rtnds
 AnMvJlSthbU6q4aOhiEHrPnwUD2gyW6kkma60f6KqUV1wZTSKq97dCVhSZYFIO26A9tu
 mD0IGeDvepjtRJ/17F3sJMCvn+XfEJOrg6fzNJIgNkuGZHOOoE8SDVX9A1D5Zzey9d+S
 ShD55x1TYg57mrc40qqJ725AlWY2FB+5dTU6oVztQVeRSVakyQDu49AihFy7v3CKKAJW
 wco2aPMsA8jtjOsVBj/aPgexem8axfCFnnqvPu6EsORKGoj0IlhbT7UNp/F+0JsR6XxP
 Wr4Q==
X-Forwarded-Encrypted: i=1;
 AJvYcCU6Nd6HoGwb+EBUyOwqi/BPIy69PQBc6jkFeZOiLw/eOS7fw6uyPaQDA2CzQqoaaB4IQiGsgA==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yw3hEOs2wxkg1PFQLdAzLNgtr0u3S+RRQr4QBK+N9agQ2/WghGS
 pDHmPtR8ulL0gHg/uZ0WCMIaItH990ft+FvNWQbcdVJrxnPz4MIzyVclXw==
X-Gm-Gg: ASbGnctmOOOWN0SzKTn/7GQRu1TGYG/38Nvg/nZ5xDxnAM8o/cxq3Az17IjcFW8tdTN
 1bN6GtaoLcZ09x7AIyTQDehM+FAt56fMpovlsFtsAx06s40fYsxOXzjlNmZqNEZxFRYt/nVsrDL
 6fKkoYfxEe2nuyn5R8cimZ/sjOCqRGzwanzYZbMksoqeS9MYHHsQWZ9TJQVstTjZtcyv4yEaS80
 0fooHEEnKhWAhPEzyt5qpAHtlbnWsnTgmZ9hE/Cf9xML6gb9CRaflWVW4gP1bgnYOSRlsnnc5OZ
 q/XLp46IVQUv2ncYBplIixQDeTWNrrwNewFZQMjH2STsp219/xaSye1P8VNEsxQikQ==
X-Google-Smtp-Source: AGHT+IF+Q8XxBinNPX3KV8KDPPm3X3+uCqdBWz3DbkAltFqT28T2B1+HC2cWCf8YMpNDYW8ewfSkjQ==
X-Received: by 2002:a17:906:4fce:b0:aab:73c5:836 with SMTP id
 a640c23a62f3a-aac334c3d70mr2781485066b.32.1735305432564; 
 Fri, 27 Dec 2024 05:17:12 -0800 (PST)
Received: from pro2 (p200300e0b74e5900bde19f98ca9a60df.dip0.t-ipconnect.de.
 [2003:e0:b74e:5900:bde1:9f98:ca9a:60df])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-aac0e89598csm1106174766b.56.2024.12.27.05.17.11
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 27 Dec 2024 05:17:12 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <86msghwa6q.fsf@HIDDEN> (Eli Zaretskii's message of "Fri, 27 Dec
 2024 15:02:37 +0200")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN>
 <m2zfkhfr7r.fsf@HIDDEN> <86wmflwlok.fsf@HIDDEN>
 <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN> <86msghwa6q.fsf@HIDDEN>
Date: Fri, 27 Dec 2024 14:17:11 +0100
Message-ID: <m2msghz2nc.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

> But I'm not yet sure this is what we see in this case, which is why I
> asked for a C backtrace.  Producing it should be easy: just reproduce
> the problem, then attach a debugger and produce the backtrace.

See below. AFAICS, Emacs is waiting for input, and when we have some,
the wrong things will happen. Please note that this is not a full debug
build.


bt
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
  frame #0: 0x0000000190be51a8 libsystem_kernel.dylib`__pselect + 8
  frame #1: 0x0000000190be5080 libsystem_kernel.dylib`pselect$DARWIN_EXTSN + 64
    frame #2: 0x00000001047181d4 emacs`really_call_select(arg=0x000000016b8d44e0) at thread.c:620:16 [opt]
    frame #3: 0x0000000104718148 emacs`thread_select [inlined] flush_stack_call_func(func=<unavailable>, arg=0x000000016b8d44e0) at lisp.h:4842:3 [opt]
    frame #4: 0x0000000104718138 emacs`thread_select(func=<unavailable>, max_fds=<unavailable>, rfds=<unavailable>, wfds=<unavailable>, efds=<unavailable>, timeout=<unavailable>, sigmask=<unavailable>) at thread.c:652:3 [opt]
    frame #5: 0x000000010473ef04 emacs`ns_select_1(nfds=<unavailable>, readfds=<unavailable>, writefds=<unavailable>, exceptfds=<unavailable>, timeout=<unavailable>, sigmask=<unavailable>, run_loop_only=<unavailable>) at nsterm.m:4873:12 [opt] [artificial]
    frame #6: 0x000000010473ed14 emacs`ns_select(nfds=<unavailable>, readfds=<unavailable>, writefds=<unavailable>, exceptfds=<unavailable>, timeout=<unavailable>, sigmask=<unavailable>) at nsterm.m:5006:10 [opt] [artificial]
    frame #7: 0x00000001046e72c0 emacs`wait_reading_process_output(time_limit=<unavailable>, nsecs=<unavailable>, read_kbd=<unavailable>, do_display=true, wait_for_cell=<unavailable>, wait_proc=<unavailable>, just_wait_proc=<unavailable>) at process.c:5766:18 [opt]
    frame #8: 0x000000010460d4b4 emacs`read_char [inlined] kbd_buffer_get_event(kbp=<unavailable>, used_mouse_menu=0x000000016b8d4f67, end_time=0x0000000000000000) at keyboard.c:0 [opt]
!gud 0::/Users/gerd/emacs/github/cl-packages/src/keyboard.c
    frame #9: 0x000000010460d294 emacs`read_char [inlined] read_event_from_main_queue(end_time=0x0000000000000000, local_getcjmp=0x000000016b8d4c00, used_mouse_menu=0x000000016b8d4f67) at keyboard.c:2336:7 [opt]
    frame #10: 0x000000010460d134 emacs`read_char [inlined] read_decoded_event_from_main_queue(end_time=0x0000000000000000, local_getcjmp=0x000000016b8d4c00, prev_event=(struct Lisp_Symbol *) $4 = 0x0000000104e060e0, used_mouse_menu=0x000000016b8d4f67) at keyboard.c:2400:11 [opt]
    frame #11: 0x000000010460d114 emacs`read_char(commandflag=1, map=(struct Lisp_Cons *) $8 = 0x000000010abc8280, prev_event=(struct Lisp_Symbol *) $4 = 0x0000000104e060e0, used_mouse_menu=0x000000016b8d4f67, end_time=0x0000000000000000) at keyboard.c:3031:11 [opt]
    frame #12: 0x000000010460992c emacs`read_key_sequence(keybuf=<unavailable>, prompt=(struct Lisp_Symbol *) $4 = 0x0000000104e060e0, dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=<unavailable>, disable_text_conversion_p=<unavailable>) at keyboard.c:10762:12 [opt]
    frame #13: 0x0000000104607d9c emacs`command_loop_1 at keyboard.c:1435:15 [opt]
    frame #14: 0x000000010468eeb0 emacs`internal_condition_case(bfun=(emacs`command_loop_1 at keyboard.c:1330), handlers=(struct Lisp_Symbol *) $10 = 0x0000000104e06188, hfun=(emacs`cmd_error at keyboard.c:976)) at eval.c:1669:25 [opt]
    frame #15: 0x0000000104607a50 emacs`command_loop_2(handlers=(struct Lisp_Symbol *) $10 = 0x0000000104e06188) at keyboard.c:1174:11 [opt]
!gud 1174:11:/Users/gerd/emacs/github/cl-packages/src/keyboard.c
    frame #16: 0x000000010468e504 emacs`internal_catch(tag=(struct Lisp_Symbol *) $13 = 0x0000000104e0f108, func=(emacs`command_loop_2 at keyboard.c:1170), arg=(struct Lisp_Symbol *) $10 = 0x0000000104e06188) at eval.c:1348:25 [opt]
    frame #17: 0x000000010460714c emacs`command_loop at keyboard.c:1144:13 [opt]
    frame #18: 0x0000000104607008 emacs`recursive_edit_1 at keyboard.c:760:9 [opt]
    frame #19: 0x000000010463e660 emacs`Fread_from_minibuffer [inlined] read_minibuf(map=<unavailable>, initial=<unavailable>, prompt=(struct Lisp_String *) $15 = 0x000000010aba19a8, expflag=<unavailable>, histvar=<unavailable>, histpos=(EMACS_INT) $17 = 0, defalt=<unavailable>, allow_props=<unavailable>, inherit_input_method=<unavailable>) at minibuf.c:905:3 [opt]
!gud 905:3:/Users/gerd/emacs/github/cl-packages/src/minibuf.c
    frame #20: 0x000000010463de28 emacs`Fread_from_minibuffer(prompt=(struct Lisp_String *) $15 = 0x000000010aba19a8, initial_contents=<unavailable>, keymap=(struct Lisp_Cons *) $18 = 0x0000000108f15eb0, read=(struct Lisp_Symbol *) $4 = 0x0000000104e060e0, hist=<unavailable>, default_value=(struct Lisp_String *) $19 = 0x000000010893a840, inherit_input_method=(struct Lisp_Symbol *) $4 = 0x0000000104e060e0) at minibuf.c:1398:9 [opt]
    frame #21: 0x0000000104691b70 emacs`funcall_subr(subr=0x0000000104da0e70, numargs=7, args=<unavailable>) at eval.c:3237:15 [opt]
    frame #22: 0x00000001046de5f0 emacs`exec_byte_code(fun=<unavailable>, args_template=<unavailable>, nargs=<unavailable>, args=<unavailable>) at bytecode.c:828:14 [opt]
    frame #23: 0x0000000104691d0c emacs`funcall_lambda(fun=<unavailable>, nargs=<unavailable>, arg_vector=<unavailable>) at eval.c:3316:9 [opt] [artificial]
    frame #24: 0x0000000104691a40 emacs`funcall_general(fun=<unavailable>, numargs=<unavailable>, args=<unavailable>) at eval.c:3108:12 [opt] [artificial]
    frame #25: 0x000000010468c3f8 emacs`Ffuncall(nargs=9, args=(struct Lisp_Symbol *) $21 = 0x00000002706db770) at eval.c:3157:21 [opt]
    frame #26: 0x0000000104690cac emacs`Fapply(nargs=1, args=(struct Lisp_Symbol *) $25 = 0x0000000244e0e360) at eval.c:2822:24 [opt]
    frame #27: 0x0000000104691ac8 emacs`funcall_subr(subr=0x0000000104da72b0, numargs=1, args=<unavailable>) at eval.c:0 [opt]
    frame #28: 0x00000001046de5f0 emacs`exec_byte_code(fun=<unavailable>, args_template=<unavailable>, nargs=<unavailable>, args=<unavailable>) at bytecode.c:828:14 [opt]
    frame #29: 0x0000000104691d0c emacs`funcall_lambda(fun=<unavailable>, nargs=<unavailable>, arg_vector=<unavailable>) at eval.c:3316:9 [opt] [artificial]
    frame #30: 0x0000000104691a40 emacs`funcall_general(fun=<unavailable>, numargs=<unavailable>, args=<unavailable>) at eval.c:3108:12 [opt] [artificial]
    frame #31: 0x000000010468c3f8 emacs`Ffuncall(nargs=10, args=(struct Lisp_Symbol *) $29 = 0x00000002706db9d0) at eval.c:3157:21 [opt]
    frame #32: 0x0000000104690cac emacs`Fapply(nargs=2, args=(struct Lisp_Symbol *) $32 = 0x0000000244e0e2d0) at eval.c:2822:24 [opt]
    frame #33: 0x0000000104691ac8 emacs`funcall_subr(subr=0x0000000104da72b0, numargs=2, args=<unavailable>) at eval.c:0 [opt]
    frame #34: 0x00000001046de5f0 emacs`exec_byte_code(fun=<unavailable>, args_template=<unavailable>, nargs=<unavailable>, args=<unavailable>) at bytecode.c:828:14 [opt]
    frame #35: 0x0000000104691d0c emacs`funcall_lambda(fun=<unavailable>, nargs=<unavailable>, arg_vector=<unavailable>) at eval.c:3316:9 [opt] [artificial]
    frame #36: 0x0000000104691a40 emacs`funcall_general(fun=<unavailable>, numargs=<unavailable>, args=<unavailable>) at eval.c:3108:12 [opt] [artificial]
    frame #37: 0x000000010468c3f8 emacs`Ffuncall(nargs=10, args=(struct Lisp_Symbol *) $35 = 0x00000002706dbc30) at eval.c:3157:21 [opt]
    frame #38: 0x0000000104690cac emacs`Fapply(nargs=3, args=(struct Lisp_Symbol *) $39 = 0x0000000244e0e280) at eval.c:2822:24 [opt]
    frame #39: 0x0000000104691ac8 emacs`funcall_subr(subr=0x0000000104da72b0, numargs=3, args=<unavailable>) at eval.c:0 [opt]
    frame #40: 0x00000001046de5f0 emacs`exec_byte_code(fun=<unavailable>, args_template=<unavailable>, nargs=<unavailable>, args=<unavailable>) at bytecode.c:828:14 [opt]
    frame #41: 0x0000000104691d0c emacs`funcall_lambda(fun=<unavailable>, nargs=<unavailable>, arg_vector=<unavailable>) at eval.c:3316:9 [opt] [artificial]
    frame #42: 0x0000000104691a40 emacs`funcall_general(fun=<unavailable>, numargs=<unavailable>, args=<unavailable>) at eval.c:3108:12 [opt] [artificial]
!gud 3108:12:/Users/gerd/emacs/github/cl-packages/src/eval.c
    frame #43: 0x000000010468c3f8 emacs`Ffuncall(nargs=<unavailable>, args=(struct Lisp_Symbol *) $42 = 0x00000002706dbef0) at eval.c:3157:21 [opt]
    frame #44: 0x000000010463f3c8 emacs`Fread_buffer(prompt=(struct Lisp_String *) $15 = 0x000000010aba19a8, def=(struct Lisp_String *) $19 = 0x000000010893a840, require_match=(struct Lisp_Symbol *) $45 = 0x00000001084b4d58, predicate=(struct Lisp_Symbol *) $4 = 0x0000000104e060e0) at minibuf.c:0 [opt]
    frame #45: 0x0000000104691bdc emacs`funcall_subr(subr=0x0000000104da0fb0, numargs=3, args=<unavailable>) at eval.c:3231:15 [opt]
    frame #46: 0x00000001046de5f0 emacs`exec_byte_code(fun=<unavailable>, args_template=<unavailable>, nargs=<unavailable>, args=<unavailable>) at bytecode.c:828:14 [opt]
!gud 828:14:/Users/gerd/emacs/github/cl-packages/src/bytecode.c
    frame #47: 0x00000001046dd188 emacs`Fbyte_code(bytestr=<unavailable>, vector=(struct Lisp_Vector *) $48 = 0x00000001084b4808, maxdepth=(EMACS_INT) $50 = 4) at bytecode.c:325:10 [opt]
    frame #48: 0x000000010468b8e8 emacs`eval_sub(form=(struct Lisp_Cons *) $51 = 0x00000001084b47a8) at eval.c:2661:15 [opt]
    frame #49: 0x0000000104690798 emacs`Feval(form=<unavailable>, lexical=<unavailable>) at eval.c:2514:28 [opt]
    frame #50: 0x0000000104688d84 emacs`Fcall_interactively(function=<unavailable>, record_flag=(struct Lisp_Symbol *) $4 = 0x0000000104e060e0, keys=(struct Lisp_Vector *) $52 = 0x000000010ab9ee88) at callint.c:325:15 [opt]
    frame #51: 0x0000000104691c1c emacs`funcall_subr(subr=0x0000000104da68f0, numargs=3, args=<unavailable>) at eval.c:3229:15 [opt]
    frame #52: 0x00000001046de5f0 emacs`exec_byte_code(fun=<unavailable>, args_template=<unavailable>, nargs=<unavailable>, args=<unavailable>) at bytecode.c:828:14 [opt]
    frame #53: 0x0000000104691d0c emacs`funcall_lambda(fun=<unavailable>, nargs=<unavailable>, arg_vector=<unavailable>) at eval.c:3316:9 [opt] [artificial]
    frame #54: 0x0000000104691a40 emacs`funcall_general(fun=<unavailable>, numargs=<unavailable>, args=<unavailable>) at eval.c:3108:12 [opt] [artificial]
    frame #55: 0x000000010468c3f8 emacs`Ffuncall(nargs=2, args=(struct Lisp_Symbol *) $54 = 0x00000002706dc610) at eval.c:3157:21 [opt]
    frame #56: 0x0000000104607fb0 emacs`command_loop_1 at keyboard.c:1556:13 [opt]
    frame #57: 0x000000010468eeb0 emacs`internal_condition_case(bfun=(emacs`command_loop_1 at keyboard.c:1330), handlers=(struct Lisp_Symbol *) $10 = 0x0000000104e06188, hfun=(emacs`cmd_error at keyboard.c:976)) at eval.c:1669:25 [opt]
    frame #58: 0x0000000104607a50 emacs`command_loop_2(handlers=(struct Lisp_Symbol *) $10 = 0x0000000104e06188) at keyboard.c:1174:11 [opt]
    frame #59: 0x000000010468e504 emacs`internal_catch(tag=(struct Lisp_Symbol *) $58 = 0x0000000104e1aba0, func=(emacs`command_loop_2 at keyboard.c:1170), arg=(struct Lisp_Symbol *) $10 = 0x0000000104e06188) at eval.c:1348:25 [opt]
    frame #60: 0x00000001046071c8 emacs`command_loop at keyboard.c:1152:2 [opt]
!gud 1152:2:/Users/gerd/emacs/github/cl-packages/src/keyboard.c
    frame #61: 0x0000000104607008 emacs`recursive_edit_1 at keyboard.c:760:9 [opt]
    frame #62: 0x000000010460740c emacs`Frecursive_edit at keyboard.c:843:3 [opt]
    frame #63: 0x0000000104606134 emacs`main(argc=<unavailable>, argv=0x000000016b8d6c30) at emacs.c:2655:3 [opt]
  frame #64: 0x00000001908a0274 dyld`start + 2840
(lldb) 




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Dec 2024 13:02:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 08:02:56 2024
Received: from localhost ([127.0.0.1]:45023 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tR9zU-0007rA-3h
	for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 08:02:56 -0500
Received: from eggs.gnu.org ([209.51.188.92]:45530)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1tR9zT-0007qt-5W
 for 75056 <at> debbugs.gnu.org; Fri, 27 Dec 2024 08:02:55 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tR9zN-00038w-EV; Fri, 27 Dec 2024 08:02:49 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=wji9T8sQdM/EKAiXi3MPmfY12mavolOHtYU7rt1pyeA=; b=GNoaPF/xobaHWAaFZFAh
 goH5AiebPlMghori7PzVQdG9V1kpldlQ1S14NWdkxHw9mTVVAwrONJLwZEF05FltqIozwaR8p4ehY
 OPmdyfkXC4hEyQZOKWQpxu5mxzVV44/IdDufz5Y839iDgn/pFOnmNOGsSERhMJyb0NGgrF5iMSt1Q
 Ib4RiHdyY5wpu6Y4ViMCeC+4qXdHZPH8GFqins/UK4T1gYy8vccX/xkbsti+wWn9yl6KasW9T1iFh
 0XxSK/Qaf7MP8mHKiEzA2n/NaRE4STiT16ZakFZh24egdXzg2uHU55/mhIGAIzAmAcuWJ9NYTMhDT
 4lW4Iiwdm87VmQ==;
Date: Fri, 27 Dec 2024 15:02:37 +0200
Message-Id: <86msghwa6q.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <m2ed1tfg36.fsf@HIDDEN> (message from Gerd =?utf-8?Q?M?=
 =?utf-8?Q?=C3=B6llmann?= on Fri, 27 Dec 2024 13:47:09 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN>
 <m2zfkhfr7r.fsf@HIDDEN> <86wmflwlok.fsf@HIDDEN>
 <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
 <m2ed1tfg36.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Cc: lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
> Date: Fri, 27 Dec 2024 13:47:09 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > Then why is this a bug?
> >
> > When a frame is in a minibuffer, it means Emacs asks the user about
> > something, and in that situation, the user must respond to the prompt,
> > or exit the minibuffer in some other way.  That's normal in my book.
> > What am I missing?
> 
> Emacs doesn't say anything.

It does: on the frame where you are in the minibuffer.

> The user is just typing into the void, and it's not easy get out of
> this state again, except C-x C-c. That's not normal.

My point is that this happens in many other, "simpler" situations.
AFAIK, it isn't limited to TTY frames, either.  So if that's the only
thing that happens here, i.e. some other frame is parked at the
minibuffer prompt, there's nothing new here that we didn't have before
child frames became supported on TTY displays.  Changing that would
need to have per-frame input queues in Emacs, AFAIU, and some way of
multiplexing between them.

But I'm not yet sure this is what we see in this case, which is why I
asked for a C backtrace.  Producing it should be easy: just reproduce
the problem, then attach a debugger and produce the backtrace.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Dec 2024 12:48:14 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 07:48:13 2024
Received: from localhost ([127.0.0.1]:44994 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tR9lF-00076M-H5
	for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 07:48:13 -0500
Received: from mail-ej1-f41.google.com ([209.85.218.41]:50326)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1tR9lE-00076F-13
 for 75056 <at> debbugs.gnu.org; Fri, 27 Dec 2024 07:48:12 -0500
Received: by mail-ej1-f41.google.com with SMTP id
 a640c23a62f3a-aa69107179cso1197592266b.0
 for <75056 <at> debbugs.gnu.org>; Fri, 27 Dec 2024 04:48:11 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1735303631; x=1735908431; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=AfpHBt9UMkjtDxBe0WrK4t7fxLFRz7wGOyPrnsYlXzA=;
 b=i8ONmG9m+6+il85t3ao1SGg6UOsMK/3vGqMzrfOPHlQqsNVB44JSRpIfV4y1e+cmm5
 FPvhbpHW8ecScj9mma70/wg1R3vHal+lpj7aCDMuofT8C1lhZZS54aDitwkmhpRqSz+Q
 h8rLF2fxepTOo9XdfizArlVtjxVX8pBipmJrFioSQd8UE4v76oOVBeEAIZzsIXcNZ/wy
 CVlUM7CgfCwOfAi4yOkELpo5GcLRoj37CIpdW+MpQyzdpYphPYSnPXCAS3gji/Wfahqv
 a1Jqv3fRN4FiFmnEYnDr44WLYjBnyl+p99uM4lQlujgUeXPfm/tG8dl2ZlOr5fhUinsU
 MqQQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1735303631; x=1735908431;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=AfpHBt9UMkjtDxBe0WrK4t7fxLFRz7wGOyPrnsYlXzA=;
 b=OOFAmZ11LcRFKxlVyj4RkwMimzBZzPRqB/d8C7chJTEV2QLaqFCKCnZQcCq4H04kex
 e1oGmi6KOlnb+LaHwAOIxA5kZa4eHqsBnUc+PHV4FUrZN7eQE70UBYchzStltSEolkIj
 OBRbl/uC7WmjQFGFPacwjCtgWW9EnZFLu7DPDdTtkHluwxNq2wiLtc2FM5V5nB2U2L8j
 2qAWqs0r34U9Ska6R7ik+UzFbZpb/t22qPjOl1Fy/qZu3Ap28yDJuzjnAdLvQRQp6fZs
 P2j5BYohfsJlGLb0qYuI/r9rKIyLJiXelkmwKHRn1I506i+Xh77opKqeFNU4ZzzBMKFl
 e8uQ==
X-Forwarded-Encrypted: i=1;
 AJvYcCUDTdwJrEmUHzdNEvv1FUD5bSEpJq0irt4yGfjpxp0Qtl41+GU47m9SI1yTOSFnsE0jnDjcwQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yz0kdGLKjwC4fPAB0h6Lx2JHpvq74BXExVeSUcZTua7Y1GfIPtb
 GN3ZzaQPBbnnFaSxuq+cfw3qKSRUOYZzCmhd5GeNu8I2mLdJIChRmPVb1g==
X-Gm-Gg: ASbGncudN5S80HzIKTsUQL5AHT6dcD1Zsf087KQ943rNNmlIpKwZCRfCzmvxRi0T8dx
 xovNaVCVZmuRYeyJBPa76g8JZ7eirdfzD+VD4MZmxoHm398VLSAp+JNs/df2iiZX0b5MB4D5VLF
 ip1bkaHgcoA+PemVY+kWq25k4H5L6Ia97AP6KKm23vxQjPuE70IGSwGjRfW7zuCs4QAS7/DFpjS
 MG/4iDVNNHXZu564F6kmeUiZOILiUOqwq8p3Yy+vLbYMtVH8k5C2+tGDCOWwliU0NTr2vT+d9pk
 /LaKkhRmJnQGXTK7CZ0qVbsv02XUoENcDyPQL2lzcfxKAjWLlca3uGxqOCbg43b9Mg==
X-Google-Smtp-Source: AGHT+IFiBhi1qqX70kI1vWxJJUi2MM6L/DnggQnKSP10RuVfSFftlA6ymT3A7Y97pppiIaRjl3sEnA==
X-Received: by 2002:a17:907:c20d:b0:aae:8490:9429 with SMTP id
 a640c23a62f3a-aae84909672mr1761658466b.34.1735303630723; 
 Fri, 27 Dec 2024 04:47:10 -0800 (PST)
Received: from pro2 (p200300e0b74e5900bde19f98ca9a60df.dip0.t-ipconnect.de.
 [2003:e0:b74e:5900:bde1:9f98:ca9a:60df])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-aac0f014decsm1120398966b.149.2024.12.27.04.47.09
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 27 Dec 2024 04:47:10 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <86v7v5wbqs.fsf@HIDDEN> (Eli Zaretskii's message of "Fri, 27 Dec
 2024 14:28:59 +0200")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN>
 <m2zfkhfr7r.fsf@HIDDEN> <86wmflwlok.fsf@HIDDEN>
 <m2r05tfqea.fsf@HIDDEN> <86v7v5wbqs.fsf@HIDDEN>
Date: Fri, 27 Dec 2024 13:47:09 +0100
Message-ID: <m2ed1tfg36.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

> Then why is this a bug?
>
> When a frame is in a minibuffer, it means Emacs asks the user about
> something, and in that situation, the user must respond to the prompt,
> or exit the minibuffer in some other way.  That's normal in my book.
> What am I missing?

Emacs doesn't say anything. The user is just typing into the void, and
it's not easy get out of this state again, except C-x C-c. That's not
normal.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Dec 2024 12:29:21 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 07:29:21 2024
Received: from localhost ([127.0.0.1]:44973 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tR9Sy-00068h-IW
	for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 07:29:20 -0500
Received: from eggs.gnu.org ([209.51.188.92]:33778)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1tR9Sw-00068N-6c
 for 75056 <at> debbugs.gnu.org; Fri, 27 Dec 2024 07:29:19 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tR9Sq-0007eZ-SH; Fri, 27 Dec 2024 07:29:12 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=sUe4hiEfnXLPl/uydM3nyGpyOogHDHDUlon+0advmlU=; b=PKvV1yLyg0DSt/JfTZsh
 oT98a/rHCfSb4nVBAFlOsCRN9uAvkEiVOCbAjrr/40T5Css8DXoQmLHsfULMZHpT8XvxlQQMtuoXS
 gN3pj/emTYOxEadqnCfKRO/uwMFbQ7Gf4QnhgIPJWnERipp2U2bCNriTLzczHDVEBWSG/HdT4n5Fc
 WCIgu9Y1fj9SFas4MCgePA8KA+DwYz2d/talqaTmOhOEG6+hA5TFdDpLw/DYeT3czX75oT5iQD60a
 4gY2XXTrOXQ0g2n10y0OR3XhCSh/Tg9O90f6hcmXlsw1/F7USkXPS3fiyD+gyuLWtay2oYsL+j7Bp
 4zVijSGg0s240A==;
Date: Fri, 27 Dec 2024 14:28:59 +0200
Message-Id: <86v7v5wbqs.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <m2r05tfqea.fsf@HIDDEN> (message from Gerd =?utf-8?Q?M?=
 =?utf-8?Q?=C3=B6llmann?= on Fri, 27 Dec 2024 10:04:29 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN>
 <m2zfkhfr7r.fsf@HIDDEN> <86wmflwlok.fsf@HIDDEN> <m2r05tfqea.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Cc: lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
> Date: Fri, 27 Dec 2024 10:04:29 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> >> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> >> Cc: lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
> >> Date: Fri, 27 Dec 2024 09:46:48 +0100
> >> 
> >> Eli Zaretskii <eliz@HIDDEN> writes:
> >> 
> >> > Can you explain how the above limitation causes the problem reported
> >> > in this bug?  That is, how do child frames trigger the bug?  Because
> >> > "normal" frames don't, AFAIU, right?  That is, one could have two or
> >> > more client TTY frames on several displays in the same Emacs session,
> >> > without having any of them stop being responsive, right?  Also, what
> >> > is the role of vertico-posframe in this scenario?
> >> 
> >> The hint I see is here
> >> 
> >> >> 	  If your multi-tty Emacs session seems to be frozen, you
> >> >> 	  probably have a recursive editing session or a pending
> >> >> 	  minibuffer prompt (which is a kind of recursive editing) on
> >> >> 	  another display.
> >> 
> >> Emacs in our case is kind of frozen, and Vertico is a minibuffer
> >> interaction, where Posframe simply displays the minibuffer differently,
> >> in a child frame.
> >
> > Yes, but where is that recursive editing in this scenario?
> 
> We're switching frames while being in the minibuffer in the other frame.
> 
> > I guess I'd love to see a C backtrace from that situation.
> 
> Too difficult for me. Emacs is not frozen in the sense that it is
> completely stuck somewhere. For example, C-x C-c apparently always
> works. C-g seems to work sometimes too, sometimes not. It's more like
> the keyboard input doesn't land where it is supposed to. Or something
> like that.

Then why is this a bug?

When a frame is in a minibuffer, it means Emacs asks the user about
something, and in that situation, the user must respond to the prompt,
or exit the minibuffer in some other way.  That's normal in my book.
What am I missing?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Dec 2024 09:05:34 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 04:05:34 2024
Received: from localhost ([127.0.0.1]:44673 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tR6Hm-0004tz-Aj
	for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 04:05:34 -0500
Received: from mail-ej1-f45.google.com ([209.85.218.45]:44473)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1tR6Hk-0004tr-1u
 for 75056 <at> debbugs.gnu.org; Fri, 27 Dec 2024 04:05:33 -0500
Received: by mail-ej1-f45.google.com with SMTP id
 a640c23a62f3a-aa6c0d1833eso1481731266b.1
 for <75056 <at> debbugs.gnu.org>; Fri, 27 Dec 2024 01:05:32 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1735290271; x=1735895071; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=qZmpW9wt3/3iEFGHgmAO5nnkSdMELQ7WNsLmd1aBy8I=;
 b=QgfPjr+PN+RuFMuBKkHPgL+d4OeFov9Y6tkgOoLc4C3cayqeiCfcrFy0OdB3yqbGHe
 dC3xvbWHnz22aqnRJMPPxuci9/TUEWrBVdq/pDe3V8llFFPFIDcDQ9lhKOXuUSny8Ie3
 9sVE376ndcEiATZ33t4ha2svehkCfASzAZV8/Hqd8NqvrooqHEPQoaiH2cTQCSWAZ1ge
 mXLmcfOs5xuNcagimvPuXBWobufLMZMYgG26Eo9d58JMEzfZWjvp43j6NAH3Bm7t8xEZ
 E8cgsIc9TlrWdeqFu9KBbeD9dTkk5mOHz/h45mhSsr8S0/NeVS2I2gy8ug1Vup2NQHee
 M2cw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1735290271; x=1735895071;
 h=content-transfer-encoding:mime-version:user-agent:message-id:date
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=qZmpW9wt3/3iEFGHgmAO5nnkSdMELQ7WNsLmd1aBy8I=;
 b=u0v/lBtscc2QmBZvcbWMiA2WJhRnmEZ+u189UzyRmC6xvuTOiDjJXeZwmHXP7PeI8S
 rwZuY2kWNZIvu12FD0DvmXB6jQ9WbJyzXerAElrT3/tCnTt8VlOvys98Awi5RLkjdRri
 ZeBdfoPWarMP7M4A4RVCdmVClhKB5AyEDyH79XZzF/PXC/8jxvyMvf6V64OrPzQdxkwM
 +KEdftjROroQmXpYlxkSOgNUgqF/NJ3nGgvxGfF5NiML9SJ0kDfhasSkwPboHYO5qH+7
 0yGpQuDlSkXH5AjrJP7mS/cNwzVG7+sH17A2zavAzrpSZ2jFITVKqKP3e6TpHe4cq8mV
 cM4g==
X-Forwarded-Encrypted: i=1;
 AJvYcCX9eYQphofC5oJTiCymNaVe67l4od+WEKg+rjOgpxv97egsClgzg6zYpy15hdVZi9KAFchUdg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzI1bW3I33R4bTv5Qku4gVpduxBAJ0RjENY1QYXA27ijqMIjehO
 gfhJIMmE8aboOpc7V0vr67e2x107RDVZPVRv8PF53faj7/+ML24T84NJRQ==
X-Gm-Gg: ASbGncs1EtcRbLFbJAQCoECxpJ8WpNBdy+Gtp6UyoMFNvBIuj+OJS81z6bE2bfPM0Cp
 LIatIdHcP8imY9XOf/DmZe3Tu0Sx0grUvqrHJbfyrsSTK+I2a4qIF4yNvqraspQJjeuz6asHg/H
 uT9wmaKpTwVaCiqR7MkZ64TssXWtj9RGJOwrBzCebaHuwA1gsWCl9Yr1iCl530JQVt9Xc3K19D+
 9SRopkEA+PfZCtS2wev3miYvDF/A8da+KLY24ZfU9IWhm1ywHhFGAIHkaTnA6Zh+DpysBoKSL8D
 SBk3DTR6iAMXBaKvaO1evEBRaKVLU4ropDlae975/sNidx2COxWNVSLC+ZDNUOXHlw==
X-Google-Smtp-Source: AGHT+IHu1BEn3Vu7GMt3NMnYBBkEQN6Re23ZygjWn5jAkL8xT+ThjCGxExfrRekVTFOEH+BeqLmaaA==
X-Received: by 2002:a17:907:7fa9:b0:aa6:81dc:6638 with SMTP id
 a640c23a62f3a-aac2b0a5676mr2356729466b.16.1735290270611; 
 Fri, 27 Dec 2024 01:04:30 -0800 (PST)
Received: from pro2 (p200300e0b74e5900bde19f98ca9a60df.dip0.t-ipconnect.de.
 [2003:e0:b74e:5900:bde1:9f98:ca9a:60df])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-aac0e830ae6sm1088613466b.22.2024.12.27.01.04.30
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 27 Dec 2024 01:04:30 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <86wmflwlok.fsf@HIDDEN> (Eli Zaretskii's message of "Fri, 27 Dec
 2024 10:54:19 +0200")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN>
 <m2zfkhfr7r.fsf@HIDDEN> <86wmflwlok.fsf@HIDDEN>
Date: Fri, 27 Dec 2024 10:04:29 +0100
Message-ID: <m2r05tfqea.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> From: Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
>> Cc: lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
>> Date: Fri, 27 Dec 2024 09:46:48 +0100
>>=20
>> Eli Zaretskii <eliz@HIDDEN> writes:
>>=20
>> > Can you explain how the above limitation causes the problem reported
>> > in this bug?  That is, how do child frames trigger the bug?  Because
>> > "normal" frames don't, AFAIU, right?  That is, one could have two or
>> > more client TTY frames on several displays in the same Emacs session,
>> > without having any of them stop being responsive, right?  Also, what
>> > is the role of vertico-posframe in this scenario?
>>=20
>> The hint I see is here
>>=20
>> >> 	  If your multi-tty Emacs session seems to be frozen, you
>> >> 	  probably have a recursive editing session or a pending
>> >> 	  minibuffer prompt (which is a kind of recursive editing) on
>> >> 	  another display.
>>=20
>> Emacs in our case is kind of frozen, and Vertico is a minibuffer
>> interaction, where Posframe simply displays the minibuffer differently,
>> in a child frame.
>
> Yes, but where is that recursive editing in this scenario?

We're switching frames while being in the minibuffer in the other frame.

> I guess I'd love to see a C backtrace from that situation.

Too difficult for me. Emacs is not frozen in the sense that it is
completely stuck somewhere. For example, C-x C-c apparently always
works. C-g seems to work sometimes too, sometimes not. It's more like
the keyboard input doesn't land where it is supposed to. Or something
like that.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Dec 2024 08:54:56 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 03:54:56 2024
Received: from localhost ([127.0.0.1]:44651 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tR67U-0004Ic-9j
	for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 03:54:56 -0500
Received: from eggs.gnu.org ([209.51.188.92]:41824)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1tR67P-0004IK-D8
 for 75056 <at> debbugs.gnu.org; Fri, 27 Dec 2024 03:54:54 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tR67I-0007dH-CX; Fri, 27 Dec 2024 03:54:45 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=1VGDzU6Y4Itj9+/2yl9vf2+gU7mZoWeMwa/Fzpu5krw=; b=H8JhhoC3qdyYryTogHYf
 kAgzH97UnYQhhEOqOWBIpNRlrk0yYvGGA75gpLHW43OeBqp2Lsz5PsF6q2iCtk95tIkICRyTQFaTb
 Zf99GqkUmbDgKfOHi1oHQvTL9bEJ0Cx53yiVx8HEEOoaTBvLd6fijQLPBtx7lUx9iXUL/EDJmIYva
 hLUJssqIEAqqS+WTk0SEe7+E2v6YfVXZs56ymIxlpOMpfcST5HtRDC32+fG3vzGWBNxdp6NBRD7JU
 0OlOKQT6yxSCFKnEBIr3Fk9hgG2VR7Q0Wyv5w9/qj9WovkoLALP4siTMlmwz7iivv42dtsM7OpX8/
 O/zC+ATOAjsDRA==;
Date: Fri, 27 Dec 2024 10:54:19 +0200
Message-Id: <86wmflwlok.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <m2zfkhfr7r.fsf@HIDDEN> (message from Gerd =?utf-8?Q?M?=
 =?utf-8?Q?=C3=B6llmann?= on Fri, 27 Dec 2024 09:46:48 +0100)
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN>
 <m2zfkhfr7r.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Cc: lenbok@HIDDEN,  75056 <at> debbugs.gnu.org
> Date: Fri, 27 Dec 2024 09:46:48 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > Can you explain how the above limitation causes the problem reported
> > in this bug?  That is, how do child frames trigger the bug?  Because
> > "normal" frames don't, AFAIU, right?  That is, one could have two or
> > more client TTY frames on several displays in the same Emacs session,
> > without having any of them stop being responsive, right?  Also, what
> > is the role of vertico-posframe in this scenario?
> 
> The hint I see is here
> 
> >> 	  If your multi-tty Emacs session seems to be frozen, you
> >> 	  probably have a recursive editing session or a pending
> >> 	  minibuffer prompt (which is a kind of recursive editing) on
> >> 	  another display.
> 
> Emacs in our case is kind of frozen, and Vertico is a minibuffer
> interaction, where Posframe simply displays the minibuffer differently,
> in a child frame.

Yes, but where is that recursive editing in this scenario?

I guess I'd love to see a C backtrace from that situation.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Dec 2024 08:48:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 03:48:04 2024
Received: from localhost ([127.0.0.1]:44642 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tR60q-00042P-Cq
	for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 03:48:04 -0500
Received: from mail-ed1-f46.google.com ([209.85.208.46]:50305)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1tR60j-00041E-Ly
 for 75056 <at> debbugs.gnu.org; Fri, 27 Dec 2024 03:47:59 -0500
Received: by mail-ed1-f46.google.com with SMTP id
 4fb4d7f45d1cf-5d3cf094768so11267682a12.0
 for <75056 <at> debbugs.gnu.org>; Fri, 27 Dec 2024 00:47:57 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1735289212; x=1735894012; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=g4B41eJTx0ZPRyOyEKyqKvd2gvOJjNruk18nlyt+ovc=;
 b=J8kDz9Ir2W2zzNC746AvLVLox57sTNWrvtJWTaoPbcoCrtr5jZOZLSagTk2ggdh5bH
 bGqHhehBnwYtJnAZ4EPPoRRPbAlBvhJtwxO8oHDAuIbop5XyypudQDLHHdrp1yCo2Kq5
 bLHTDF0UtdSWJUPIpSbjdK6stkfwlQvh2u1Dhzt467FcuQxm1I57j6hrbnmRDc8aSXND
 skcnxyFuidbYIRzyInoviRRb8oqZ/YlL0PwaHvPi0Kw1qWbooZjM3KMRGd3Wd7Z2OrpP
 q5gP8EyMIRvFLmBjczHQUdjqDvs43fpTkVPr1pQNOkHioVY7Z4zoC7XltYX73T511V1k
 a1+g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1735289212; x=1735894012;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=g4B41eJTx0ZPRyOyEKyqKvd2gvOJjNruk18nlyt+ovc=;
 b=Dhwdr6X6B8VJkXtH23sJiGwnL1RaA5xahpcQnhxPtYzyvnbXw3vB9vI+0esO+brSWL
 yJYajm7r3g6DqOtcOHQ7cpUBwkecBZkzy3g+NwV0WCI1MKKBvmZMNChIwMnN2Aj20SG3
 Oa8qqMgQM4PW06bxHZPrJNEo1d+wnlrYKAHqH+G0KYpnpuTOicWb85GzK1IdbdbPkCFy
 nYbSbq8PkfPVEx3zo+X+uYZKyHRWN3mvzfOHcdLiESLxseCd50uAKVgjK3mZXex7JEl7
 /bYT/8c/NYb7f60VuDIDJd1GySPNRXvOzhMMxnNNJiQM7juGLu7h+bw6+W9gpCncReC/
 O2+A==
X-Forwarded-Encrypted: i=1;
 AJvYcCVz1ZXCYdZQlqAhS/IPcTSZeT1VSX8zRh7hm2/s71yN2hk8BGGDKLWcmETIDgsQki8JRP+Vhg==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YzAGRyyQL/KTfEOhyxN5QFxhn3KV7LTRhVaceLXwT5nhUX81+jH
 e9Ymm47bqMVqRxzjcklca4oGJIkqu9K3a/hXMqJx6LuR84l/87Bu+JprOQ==
X-Gm-Gg: ASbGncu5pjPtP9TCwc5nF0Xa7Rhub8ZtlsaM+aVJyxjbK3yyB/OC2GXb9smqVtPvjdi
 DiusvY/uVlP2+EOkakX28v68ZmGgiaTJLmqVuJxHZPn6jS4N9y7uQRq7Rq9c6h8NpSf/MzCtfu8
 J+ROu8TdoCrdDLrfYTc1S1ybbybJhQBSijVLrtZZJlaBOR1ncLwWlpT5qyXS+llrDJhcnltlX2i
 It6jSSNxmpO/fmTk0JtEa1srKJmMlt82A7Va3gTJY/8pbqu2Ky3zEtu8eePSvRp5JsW/us8ctyn
 ar7wr8Z6kCZtc6zfQi1kIc8pNpIUZHRb96q0rfd9gimft9FP1QB4WYKf6q5pDCbz1g==
X-Google-Smtp-Source: AGHT+IEaVS0nTcy6ACsAypGW8n4z193vasdbTi4IweEHJSjq+n8GVZBAyzZj33xHPqbgzjTy7k7Sng==
X-Received: by 2002:a05:6402:4405:b0:5d0:fe7d:41cf with SMTP id
 4fb4d7f45d1cf-5d81dd66ee4mr21745092a12.5.1735289211408; 
 Fri, 27 Dec 2024 00:46:51 -0800 (PST)
Received: from pro2 (p200300e0b74e5900bde19f98ca9a60df.dip0.t-ipconnect.de.
 [2003:e0:b74e:5900:bde1:9f98:ca9a:60df])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5d80701abc6sm10474244a12.75.2024.12.27.00.46.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Fri, 27 Dec 2024 00:46:50 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <8634i9y1wa.fsf@HIDDEN> (Eli Zaretskii's message of "Fri, 27 Dec
 2024 10:18:45 +0200")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN> <8634i9y1wa.fsf@HIDDEN>
Date: Fri, 27 Dec 2024 09:46:48 +0100
Message-ID: <m2zfkhfr7r.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

> Can you explain how the above limitation causes the problem reported
> in this bug?  That is, how do child frames trigger the bug?  Because
> "normal" frames don't, AFAIU, right?  That is, one could have two or
> more client TTY frames on several displays in the same Emacs session,
> without having any of them stop being responsive, right?  Also, what
> is the role of vertico-posframe in this scenario?

The hint I see is here

>> 	  If your multi-tty Emacs session seems to be frozen, you
>> 	  probably have a recursive editing session or a pending
>> 	  minibuffer prompt (which is a kind of recursive editing) on
>> 	  another display.

Emacs in our case is kind of frozen, and Vertico is a minibuffer
interaction, where Posframe simply displays the minibuffer differently,
in a child frame.

Not an explanation of course, but it smells a lot like what's happening.
What the real reason behind all this is in the code, and what would need
to be fixed, I can't figure out from notes/multi-tty. Maybe come
combination of open things mentioned there, no idea.

>
> IOW, I don't yet have a clear picture of what happens, although the
> limitations you found in that admin file are known to me.  AFAIK, the
> single-kboard situation is still with us, search keyboard.c for
> "single_kboard".
>
>> @Eli: I think we should invoke a multi-tty expert who can tell if what
>> we see here can be kind of expected with the current state of multi-tty or
>> not. And maybe can tell how up-to-date admin/notes/multi-tty is in the
>> first place.
>
> We don't have such an expert on board, sadly, not for a long while.
> We are on our own.

That's indeed more than suboptimal :-(. 




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Dec 2024 08:18:59 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 03:18:59 2024
Received: from localhost ([127.0.0.1]:44592 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tR5Yh-0002ep-3V
	for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 03:18:59 -0500
Received: from eggs.gnu.org ([209.51.188.92]:51464)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1tR5Ya-0002eM-Dl
 for 75056 <at> debbugs.gnu.org; Fri, 27 Dec 2024 03:18:56 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tR5YU-0003ld-TX; Fri, 27 Dec 2024 03:18:46 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=e5jCBi2ufsQ4TnHUwiPWGQH/i2dNdQlqfb12KY1qEh4=; b=M5QO4WmzFVsB7n+Du4EB
 osFLZcouzWm1wysVfWooa5GKfZ4HquzWAQZKDvgPxyZAJDYBGTeTQYBYsdc2gE7XKWHm8tA5Dfgmk
 F1iL9MeLGssvA+VmImk4EKlgVxDHqhx5ZPHe5fGVSsh1mDRfJPsqEnC0LgX4gxNgtavroP5It+Tjy
 gxrfyJ8akfeNt2oisbHRofGh4Ej9YFMbX4UaU8OQ+A8ulE1hueHCNVWm5sj3ZMCu4yo/X9zh7Re/r
 sxOptvofHv9IgwINS7a7uiYJKKWFmUSbgj9qOQct/9rAjOGdItspHMdmRsnBD70FLoWFBAti38s8u
 hhNlg4czasXHBQ==;
Date: Fri, 27 Dec 2024 10:18:45 +0200
Message-Id: <8634i9y1wa.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Gerd =?utf-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <m28qs1hda1.fsf@HIDDEN> (message from Gerd =?utf-8?Q?M?=
 =?utf-8?Q?=C3=B6llmann?= on Fri, 27 Dec 2024 07:04:54 +0100)
Subject: Re: bug#75056: 31.0.50;
 tty-child-frames with server / multiple clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <m28qs1hda1.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: lenbok@HIDDEN, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Cc: 75056 <at> debbugs.gnu.org
> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Date: Fri, 27 Dec 2024 07:04:54 +0100
> 
> I can reproduce what you describe, I think, but I must admit that I'm a
> bit at a loss at the moment. Something similar happens BTW if the server
> is a GUI Emacs. Pretty weird.
> 
> And then I found this in admin/notes/multi-tty, under known problems:
> 
>         * The single-kboard mode.
> 
> 	  If your multi-tty Emacs session seems to be frozen, you
> 	  probably have a recursive editing session or a pending
> 	  minibuffer prompt (which is a kind of recursive editing) on
> 	  another display.  To unfreeze your session, switch to that
> 	  display and complete the recursive edit, for example by
> 	  pressing C-] ('abort-recursive-edit').
> 
> 	  I am sorry to say that currently there is no way to break
> 	  out of this "single-kboard mode" from a frozen display.  If
> 	  you are unable to switch to the display that locks the
> 	  others (for example because it is on a remote computer),
> 	  then you can use emacsclient to break out of all recursive
> 	  editing sessions:
> 
> 		emacsclient -e '(top-level)'
> 
> 	  Note that this (perhaps) unintuitive behavior is by design.
> 	  Single-kboard mode is required because of an intrinsic Emacs
> 	  limitation that is very hard to eliminate.  (This limitation
> 	  is related to the single-threaded nature of Emacs.)
> 
> 	  I plan to implement better user notification and support for
> 	  breaking out of single-kboard mode from locked displays.
> 
> Also see the long list of things to do in the same file, which makes me
> a bit wary.

Can you explain how the above limitation causes the problem reported
in this bug?  That is, how do child frames trigger the bug?  Because
"normal" frames don't, AFAIU, right?  That is, one could have two or
more client TTY frames on several displays in the same Emacs session,
without having any of them stop being responsive, right?  Also, what
is the role of vertico-posframe in this scenario?

IOW, I don't yet have a clear picture of what happens, although the
limitations you found in that admin file are known to me.  AFAIK, the
single-kboard situation is still with us, search keyboard.c for
"single_kboard".

> @Eli: I think we should invoke a multi-tty expert who can tell if what
> we see here can be kind of expected with the current state of multi-tty or
> not. And maybe can tell how up-to-date admin/notes/multi-tty is in the
> first place.

We don't have such an expert on board, sadly, not for a long while.
We are on our own.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 27 Dec 2024 06:06:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Dec 27 01:06:12 2024
Received: from localhost ([127.0.0.1]:44410 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tR3UA-0004Ul-EV
	for submit <at> debbugs.gnu.org; Fri, 27 Dec 2024 01:06:12 -0500
Received: from mail-ed1-f46.google.com ([209.85.208.46]:61446)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1tR3U4-0004UB-KP
 for 75056 <at> debbugs.gnu.org; Fri, 27 Dec 2024 01:06:09 -0500
Received: by mail-ed1-f46.google.com with SMTP id
 4fb4d7f45d1cf-5d3f28a4fccso10430997a12.2
 for <75056 <at> debbugs.gnu.org>; Thu, 26 Dec 2024 22:06:04 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1735279498; x=1735884298; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=czNcgrZsEB1S6oiqYXLFX8G73jUasM7pIZtzP7ASWnU=;
 b=RjkWFRd/RI7pYj2s2IZQx9SnuEebd32V6sU0Kuy5gcxSVu8ArxG4LyluCKtSngVKHv
 2ahyVAW39ldHHq9td/9SBERtx1EJ/A4znwEoMno4Yy59covbjOQEwOjey1RJQw9St44R
 ymWmTdEEiNEXNU61I9JMZ7+kvJ6uWV71EOT7rNnFhcu3zOA1erYlQpWInJL3oa9EdggE
 aDOOyGLLeSEfEh7NDnn0ofDbyPSUSm5Kl3i2upJgdv6nNU6LxET18CCjiMS+Up82FPdN
 XKuqB5M03jFixMmz9UQgQgKjVTelzix1ZsMXxqav7fCb5H7iiG6qaqhdxcz5ioG6KqX6
 IE4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1735279498; x=1735884298;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=czNcgrZsEB1S6oiqYXLFX8G73jUasM7pIZtzP7ASWnU=;
 b=fkLinr1sfIyvbYfJHSNNuj11PmhUWuzL4OWZ+EW36nbXBPI0stj5CSaap2b6Fz0oHe
 Z5JWaYYvWk/q/5LUpJeVpYEucneXRdCRj/r6UzLNacnFroJrO3kON4HNBFVuRQyklM+X
 qdsNpJadNBZEU1rTr9S/wxKo9Pu8tPWyNbCiS/O43le/7wNs3W8j82opRqki+B5OmTRc
 Z06VHfBGAsRSQDIoX+Q8TD0bu6QKwwW2XGg2ohAgYg5M8uFO6Ufa91Wth7QT4C/vOK8U
 UwzUu4/me9lk2yMb+Upjg2jVp7hsRlwMrIynW74Wif5Ugd766zu3HbdZW8QukTXbcuJj
 YJnA==
X-Gm-Message-State: AOJu0Yw0rU7b4x/FrQwBSxwlXkH3NqlzCWT0qi+ZP4JdzS7wlO3qwYee
 5sMzZpfRlm1GJyGv1njK4PPpGFAnJ2MrISBt/5udFbZPt8bgL480ShocVg==
X-Gm-Gg: ASbGncuFPAVdJhFWjQZVIV4In7izrR+giR8yOmNRLvamzol1VOlJ3QpSpX5gvyPglIN
 EYDKAMLFNf9pJCgRw5WtLa+eyxQiCjQcbpX2zBN96QigAquPD+/4YlDcZLleI56hx1IYqUoo5NS
 S4XLsXoiG2ALkdbF+EKWg39F4sUfCxk64MUkbcLOz9RQ3G5FjCcp7b5iBp4LeQZNG6XOtLz0+1L
 JvAFGQBsR21+bh6M6dwcsv8xpaq9x7l7XgrlDGyD2Rx8A8/mNbzsDUKo5KvdFuw9tjycItJac2f
 IB708Yg1/WfHvib96nAzxcQlezG06Obg+gml1/EUJS286e5NCbcpAo3qpTbQGA2O9A==
X-Google-Smtp-Source: AGHT+IE8GAPbKotlii3vNRUcaEJPZz7sRBszVJinbJPkoWnXT7AIkFrCSsSLLe89+mF3DZthxk3p8w==
X-Received: by 2002:a17:907:36ce:b0:aa6:7165:504b with SMTP id
 a640c23a62f3a-aac2d41ebc3mr2759930366b.31.1735279498018; 
 Thu, 26 Dec 2024 22:04:58 -0800 (PST)
Received: from pro2 (p200300e0b74e5900bde19f98ca9a60df.dip0.t-ipconnect.de.
 [2003:e0:b74e:5900:bde1:9f98:ca9a:60df])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-aac0e895080sm1063176566b.47.2024.12.26.22.04.55
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Thu, 26 Dec 2024 22:04:56 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 (Len Trigg's message of "Tue, 24 Dec 2024 18:43:29 +1300")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
Date: Fri, 27 Dec 2024 07:04:54 +0100
Message-ID: <m28qs1hda1.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Len Trigg <lenbok@HIDDEN> writes:

> tty-child-frames does not seem to play well with multiple clients. When we run server-start and allow emacs to have
> multiple clients (e.g. an initial "emacs -nw" and an
> "emacsclient -nw"), using a function that utilizes tty-child-frame (such as M-x when vertico-posframe is loaded) in one
> frame leads the other client to be locked up.
>
> Steps to reproduce:
>
> mkdir ~/emacs-test
> Copy the attached init.el into ~/emacs-test/
> emacs -nw --init-directory=~/emacs-test  (the first time will result in packages being installed by elpaca)
> (in another terminal) emacsclient -nw
> Do something to invoke the child frame pop up (e.g. C-x b and select a buffer)
> Switch back to the original emacs
> Do something to invoke the child frame pop up (e.g. C-x b and select a buffer)
> Swap to the other terminal, and note that at some point one client will stop responding
> to user input. (It may take a couple of tries, perhaps with other regular commands interspersed).
> When one client is locked, swap back to the other terminal and exit the client - the original
> client will now accept user input.
>
> When a client is locked it *does* accept some input (e.g. C-x C-c will exit the client)
>
> It's possible this is vertico-posframe related, as I can't trigger similar behaviour using transient-posframe.
>

Hi Len, and thanks for the nice reproducer!

I can reproduce what you describe, I think, but I must admit that I'm a
bit at a loss at the moment. Something similar happens BTW if the server
is a GUI Emacs. Pretty weird.

And then I found this in admin/notes/multi-tty, under known problems:

        * The single-kboard mode.

	  If your multi-tty Emacs session seems to be frozen, you
	  probably have a recursive editing session or a pending
	  minibuffer prompt (which is a kind of recursive editing) on
	  another display.  To unfreeze your session, switch to that
	  display and complete the recursive edit, for example by
	  pressing C-] ('abort-recursive-edit').

	  I am sorry to say that currently there is no way to break
	  out of this "single-kboard mode" from a frozen display.  If
	  you are unable to switch to the display that locks the
	  others (for example because it is on a remote computer),
	  then you can use emacsclient to break out of all recursive
	  editing sessions:

		emacsclient -e '(top-level)'

	  Note that this (perhaps) unintuitive behavior is by design.
	  Single-kboard mode is required because of an intrinsic Emacs
	  limitation that is very hard to eliminate.  (This limitation
	  is related to the single-threaded nature of Emacs.)

	  I plan to implement better user notification and support for
	  breaking out of single-kboard mode from locked displays.

Also see the long list of things to do in the same file, which makes me
a bit wary.

@Eli: I think we should invoke a multi-tty expert who can tell if what
we see here can be kind of expected with the current state of multi-tty or
not. And maybe can tell how up-to-date admin/notes/multi-tty is in the
first place.







Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 25 Dec 2024 12:00:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 25 07:00:57 2024
Received: from localhost ([127.0.0.1]:36422 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tQQ4O-00008U-Qp
	for submit <at> debbugs.gnu.org; Wed, 25 Dec 2024 07:00:57 -0500
Received: from mail-ej1-f46.google.com ([209.85.218.46]:53354)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1tQQ4M-00008M-N6
 for 75056 <at> debbugs.gnu.org; Wed, 25 Dec 2024 07:00:55 -0500
Received: by mail-ej1-f46.google.com with SMTP id
 a640c23a62f3a-aa6c0dbce1fso818277466b.2
 for <75056 <at> debbugs.gnu.org>; Wed, 25 Dec 2024 04:00:54 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1735127994; x=1735732794; darn=debbugs.gnu.org;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to;
 bh=Y216f5swykUXUFiYdre7eqzRwHQFlZ/TuV5qGLxdDLA=;
 b=UO3+x+XXVh5J0M1KUKhfIdA8Q0CVv+VDNHg6cZjMBasWfZ462gtSY4WxSdR+fBoG/g
 TzRKpLwJgkHmfxC5IUH/POxGWhyh+4emUa41BUqgzBDkje2lhya5ZFDyiv9tyTmFhyNg
 1d//pmrTeD318g9qIl5au6OdVosaNRZRbbaYG2NzoEC326LS9DSrBH++OqgG5ht7CzOp
 5iMV/IpY0amBqMiSXFJL7A5ReverUesdIvzik/1ss/bcBiSW8snS2yn5fY7pV/YPCAB6
 IHLc4N1BD5bHWUXF4Zfa34es+K8FhtTzh7cjedh6Q06q053GIASTjXnbAGw3PCXZeq27
 F7sg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1735127994; x=1735732794;
 h=mime-version:user-agent:message-id:date:references:in-reply-to
 :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date
 :message-id:reply-to;
 bh=Y216f5swykUXUFiYdre7eqzRwHQFlZ/TuV5qGLxdDLA=;
 b=oBpXMGj7kyTvrkolOLZHsIiDu1tfX3UbznwF6u5edYiAr9lVjyJwHIVdKqiMVm8XHG
 DzDt/db7j+BeXDBSr3tq+XZQP2Gm6UVQc9dwnQ74PDMsI72sUT+32+i61vR2nxL3ZY+y
 l7O71mtf8aE0fKvIfR2b0bXzzYx+E0q1fgjFkFLYVzMppLfqpUjLlukjMck3uflkoggw
 Z1FqhxcPeRKPcNJHsyZkBnFGHH1IRnsjHsc1gALiSEVDzUD3Wi8rgBrJ3AWx+HIoaYQq
 f7VV/3xbmXvYHtLbyLHJaBYM5CnQNN4+ClQneVhqphCLCSiUn+t7w/iFX2j3phGg8TTn
 PYww==
X-Forwarded-Encrypted: i=1;
 AJvYcCXQvqxYW1OUIfdbC9dP44TD7lGltUKGoM9J2rxr1aZ7fGKqPSHPtYPXm9bzfbdRVqGcmiGHNQ==@debbugs.gnu.org
X-Gm-Message-State: AOJu0YznOQy5z1DLnS2Zn4/DkxX/2NmoFUQQPFG1/mQAe7c4AMac5BeU
 yT4lkZL9MHsCLg9mpyFmiYrnXvhXRIdoEMVnms+aIql5F2nP4rW0l4SUqtD2
X-Gm-Gg: ASbGncsS+qelDmKrlzPPAy6siZQ1TwVdr3NSxT6dK8kd7glClsmFTjyjtYI+T6T0975
 +7CMxthCS7koMnXMRh00USQWO/GPjP+jzLr6n7ca0BPaCxPlXi7C+EF2W66yv9lmHLjqFLqY7Kb
 Y1EHJAxT7hkAxvmfQrvNv1yVmelo38IQDiuNeE3evTaayamSd1ONmz0d4ZJA4MkvfbaEqfwbXUg
 xQCSRvLpH/4mGPB8M6BStEKIbbXO4lh+PjmLjw2gWbK1jPxARzXkA+RJ91Tp0Pzrbn+rY3RDzEl
 x9XFXlxw5DC0s4yEuRf8/4F3+ldEhKMiTCGL8PaRSPSxgi0hO44VHalOZrZRXoHPXA==
X-Google-Smtp-Source: AGHT+IHSA+sTANHApyH6bHCNibN+vxGUx7oNYz1Ox3baL01PRnpeRdQh+JTEhCs035iWf7xEyD1B4w==
X-Received: by 2002:a05:6402:210f:b0:5d0:cfad:f71 with SMTP id
 4fb4d7f45d1cf-5d81de1c921mr46057664a12.32.1735127993137; 
 Wed, 25 Dec 2024 03:59:53 -0800 (PST)
Received: from pro2 (p200300e0b73d6f00401d1c7c2fc22e2d.dip0.t-ipconnect.de.
 [2003:e0:b73d:6f00:401d:1c7c:2fc2:2e2d])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-aac0efe46f6sm785269066b.111.2024.12.25.03.59.51
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 25 Dec 2024 03:59:52 -0800 (PST)
From: =?utf-8?Q?Gerd_M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
To: Eli Zaretskii <eliz@HIDDEN>
Subject: Re: bug#75056: 31.0.50; tty-child-frames with server / multiple
 clients possible hangs
In-Reply-To: <86r05w0ygf.fsf@HIDDEN> (Eli Zaretskii's message of "Wed, 25 Dec
 2024 13:54:56 +0200")
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 <86r05w0ygf.fsf@HIDDEN>
Date: Wed, 25 Dec 2024 12:59:50 +0100
Message-ID: <m2ed1was7d.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 75056
Cc: Len Trigg <lenbok@HIDDEN>, 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> From: Len Trigg <lenbok@HIDDEN>
>> Date: Tue, 24 Dec 2024 18:43:29 +1300
>> 
>> tty-child-frames does not seem to play well with multiple clients. When we run server-start and allow emacs to
>> have multiple clients (e.g. an initial "emacs -nw" and an
>> "emacsclient -nw"), using a function that utilizes tty-child-frame (such as M-x when vertico-posframe is
>> loaded) in one frame leads the other client to be locked up.
>> 
>> Steps to reproduce:
>> 
>> mkdir ~/emacs-test
>> Copy the attached init.el into ~/emacs-test/
>> emacs -nw --init-directory=~/emacs-test  (the first time will result in packages being installed by elpaca)
>> (in another terminal) emacsclient -nw
>> Do something to invoke the child frame pop up (e.g. C-x b and select a buffer)
>> Switch back to the original emacs
>> Do something to invoke the child frame pop up (e.g. C-x b and select a buffer)
>> Swap to the other terminal, and note that at some point one client will stop responding
>> to user input. (It may take a couple of tries, perhaps with other regular commands interspersed).
>> When one client is locked, swap back to the other terminal and exit the client - the original
>> client will now accept user input.
>> 
>> When a client is locked it *does* accept some input (e.g. C-x C-c will exit the client)
>> 
>> It's possible this is vertico-posframe related, as I can't trigger similar behaviour using transient-posframe.
>
> Gerd, could you perhaps look into this?

Thanks. Will come back to this after the holidays.




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at 75056 <at> debbugs.gnu.org:


Received: (at 75056) by debbugs.gnu.org; 25 Dec 2024 11:57:20 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Dec 25 06:57:20 2024
Received: from localhost ([127.0.0.1]:36408 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tQQ0t-0008Lj-Pz
	for submit <at> debbugs.gnu.org; Wed, 25 Dec 2024 06:57:20 -0500
Received: from eggs.gnu.org ([209.51.188.92]:38386)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1tQQ0r-0008LS-Qt
 for 75056 <at> debbugs.gnu.org; Wed, 25 Dec 2024 06:57:18 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1tQPyf-00032K-47; Wed, 25 Dec 2024 06:55:01 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=rm0Crl1nYlCJeDjk4N+UA0iiXi7oiRP4rbXddloWaFk=; b=YpRRYvlv3Vv3zXpENprR
 0toDi+jCM3Ay+dxi60j3QRnSPh8a+EANtmmusDoPslIw3L4cu3If7vYPNVlv/Fz0McMHtZKlMjwea
 V06nf5of4gFA7PaNOyCkPjNKMWAbolgi26fML6btoA5e5H+0YuVKUTJlZe1/FvStT0zantPBahX+r
 qZqmSRyQakAKeT+nYRH/110KlugFKR3kb0FNqTsL7cNmttujNTZlmVdO6dwnMYggyobqkI4XygNgH
 izkno7TY6ZnQe0fsNzwnYRthcXhgq4ebpJ0E6GmX+/9e80cXDhVjghG7uhDWS3ESa/SJzv68rqKWF
 N1mQhbYo6ije2g==;
Date: Wed, 25 Dec 2024 13:54:56 +0200
Message-Id: <86r05w0ygf.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
To: Len Trigg <lenbok@HIDDEN>, Gerd =?utf-8?Q?M=C3=B6llmann?=
 <gerd.moellmann@HIDDEN>
In-Reply-To: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
 (message from Len Trigg on Tue, 24 Dec 2024 18:43:29 +1300)
Subject: Re: bug#75056: 31.0.50;
 tty-child-frames with server / multiple clients possible hangs
References: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 75056
Cc: 75056 <at> debbugs.gnu.org
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Len Trigg <lenbok@HIDDEN>
> Date: Tue, 24 Dec 2024 18:43:29 +1300
> 
> tty-child-frames does not seem to play well with multiple clients. When we run server-start and allow emacs to
> have multiple clients (e.g. an initial "emacs -nw" and an
> "emacsclient -nw"), using a function that utilizes tty-child-frame (such as M-x when vertico-posframe is
> loaded) in one frame leads the other client to be locked up.
> 
> Steps to reproduce:
> 
> mkdir ~/emacs-test
> Copy the attached init.el into ~/emacs-test/
> emacs -nw --init-directory=~/emacs-test  (the first time will result in packages being installed by elpaca)
> (in another terminal) emacsclient -nw
> Do something to invoke the child frame pop up (e.g. C-x b and select a buffer)
> Switch back to the original emacs
> Do something to invoke the child frame pop up (e.g. C-x b and select a buffer)
> Swap to the other terminal, and note that at some point one client will stop responding
> to user input. (It may take a couple of tries, perhaps with other regular commands interspersed).
> When one client is locked, swap back to the other terminal and exit the client - the original
> client will now accept user input.
> 
> When a client is locked it *does* accept some input (e.g. C-x C-c will exit the client)
> 
> It's possible this is vertico-posframe related, as I can't trigger similar behaviour using transient-posframe.

Gerd, could you perhaps look into this?




Information forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 24 Dec 2024 05:43:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Dec 24 00:43:58 2024
Received: from localhost ([127.0.0.1]:59036 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tPxi1-0002H1-Da
	for submit <at> debbugs.gnu.org; Tue, 24 Dec 2024 00:43:58 -0500
Received: from lists.gnu.org ([209.51.188.17]:50004)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <lenbok@HIDDEN>) id 1tPxhx-0002Gr-Tl
 for submit <at> debbugs.gnu.org; Tue, 24 Dec 2024 00:43:55 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <lenbok@HIDDEN>) id 1tPxhw-00059g-Es
 for bug-gnu-emacs@HIDDEN; Tue, 24 Dec 2024 00:43:52 -0500
Received: from mail-lj1-x229.google.com ([2a00:1450:4864:20::229])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <lenbok@HIDDEN>) id 1tPxht-00064u-OB
 for bug-gnu-emacs@HIDDEN; Tue, 24 Dec 2024 00:43:52 -0500
Received: by mail-lj1-x229.google.com with SMTP id
 38308e7fff4ca-303548a9361so43433091fa.0
 for <bug-gnu-emacs@HIDDEN>; Mon, 23 Dec 2024 21:43:48 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1735019026; x=1735623826; darn=gnu.org;
 h=to:subject:message-id:date:from:mime-version:from:to:cc:subject
 :date:message-id:reply-to;
 bh=hF9qzkmi2CzOIE0xoKg9XwmY3+QVaul6Y8r2TOo4v4k=;
 b=fGsGKJ9N0Qdd5Iy9/cK/s0etzVYGkRjRrx8lV9G+gE/rrLU3w+5KzZasdb12LvENCH
 0UGMUHY3EAe7XDpoH2P6eKzcBHBJsMO2gvujulEeRrtqN89JixKQOEBLDcsTOZpsY2q6
 eDSpNY4WnBLEXaUoqtWqTN8X8PEOB8wABTwmw1bjO3D777058PRyj/VkANFZcRv9/MYP
 L20CAyeylQjXYS4nwqoIyk3JtpnpLGd3jj/a2lqeV3TYYH3I7bwQAgHGHu2LS5n0S6h8
 BtVWoZaasl4BF4VFdnpXx/sCMNCEDjR/G+mMgsH4rrQ/MVlYZGOQgnR5O38UoNXwGB1O
 7u4g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1735019026; x=1735623826;
 h=to:subject:message-id:date:from:mime-version:x-gm-message-state
 :from:to:cc:subject:date:message-id:reply-to;
 bh=hF9qzkmi2CzOIE0xoKg9XwmY3+QVaul6Y8r2TOo4v4k=;
 b=BJ6A3ik2ygdG9Rav8pbp/+3hXDaARCpIh5cVkDZoX/uetjCjZVhRciO2ZNUlmyHbxo
 Q5jv67kEPwwRpAK/TvVVZKRunt8xpaU7NsibfV+xwbeLApKF0eeb3jys8Ry6xug2QI7h
 B1DrSrvQ/xcrZpsqGJu3mcIMaogm5Wo0A/f7AYrdEx/ObFaca/fV6AnPIWN7dda39Tzh
 +11AzZGi4yjFOY3XdBXqKruzOtHqtSMOFzGR42ZKX4HrNy8w22HjfhBS4754vkPYlP9c
 +n2I+hK7M/LMAa3kIp1mKEibXG2o0G2YoYQaC824eINa7/rC7FvFraAfX9/lH10gvdZi
 Usgw==
X-Gm-Message-State: AOJu0Yxt0bJKRXk001ImInChH223gr6okVrJdq14i7qnekpllGksxil8
 BGMzbRTQRBCIMTcGbQCK2F5Wqht8UQA6PjQwg4KNoLPKbcH0qVcGlDfe3QS25N/XPKLxbTcU83g
 iftm89XEP8cM6Uih/5XQwiGyYqhcH7jeG
X-Gm-Gg: ASbGnct+LuCg98xXnhXhi3y7O7Vg98WNojP4nPzGc/3I4rO8LEYjeRi9u4FF3aSccjb
 P1h5UBgHgO8qM0jW5NRCfL+9/LTY1AxZcIoo=
X-Google-Smtp-Source: AGHT+IFQRkifrqiG+CNjXjrPI4CJXqk2vU1v1N/pSya3i3QHTX77h7JUm3zRARwxmGNnmdPT8/6rBmlGkll6b1bxJEE=
X-Received: by 2002:ac2:4c48:0:b0:53e:3729:eaf6 with SMTP id
 2adb3069b0e04-5422953d2camr4040941e87.27.1735019026193; Mon, 23 Dec 2024
 21:43:46 -0800 (PST)
MIME-Version: 1.0
From: Len Trigg <lenbok@HIDDEN>
Date: Tue, 24 Dec 2024 18:43:29 +1300
Message-ID: <CAOGVwemgaN4WN_GpNNfkm0fPbj3g-2=DNy-K0N6LxEH+KYRN1Q@HIDDEN>
Subject: 31.0.50;
 tty-child-frames with server / multiple clients possible hangs
To: bug-gnu-emacs@HIDDEN
Content-Type: multipart/mixed; boundary="000000000000bc37d10629fd985b"
Received-SPF: pass client-ip=2a00:1450:4864:20::229;
 envelope-from=lenbok@HIDDEN; helo=mail-lj1-x229.google.com
X-Spam_score_int: -20
X-Spam_score: -2.1
X-Spam_bar: --
X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,
 HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -1.3 (-)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.3 (--)

--000000000000bc37d10629fd985b
Content-Type: multipart/alternative; boundary="000000000000bc37cf0629fd9859"

--000000000000bc37cf0629fd9859
Content-Type: text/plain; charset="UTF-8"

tty-child-frames does not seem to play well with multiple clients. When we
run server-start and allow emacs to have multiple clients (e.g. an initial
"emacs -nw" and an
"emacsclient -nw"), using a function that utilizes tty-child-frame (such as
M-x when vertico-posframe is loaded) in one frame leads the other client to
be locked up.

Steps to reproduce:

mkdir ~/emacs-test
Copy the attached init.el into ~/emacs-test/
emacs -nw --init-directory=~/emacs-test  (the first time will result in
packages being installed by elpaca)
(in another terminal) emacsclient -nw
Do something to invoke the child frame pop up (e.g. C-x b and select a
buffer)
Switch back to the original emacs
Do something to invoke the child frame pop up (e.g. C-x b and select a
buffer)
Swap to the other terminal, and note that at some point one client will
stop responding
to user input. (It may take a couple of tries, perhaps with other regular
commands interspersed).
When one client is locked, swap back to the other terminal and exit the
client - the original
client will now accept user input.

When a client is locked it *does* accept some input (e.g. C-x C-c will exit
the client)

It's possible this is vertico-posframe related, as I can't trigger similar
behaviour using transient-posframe.


In GNU Emacs 31.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.41, cairo version 1.18.0) of 2024-12-24 built on kaka
Repository revision: 6ac38396898e6324d4c6dddb2ad05d1ad0dc5e7c
Repository branch: master
System Description: Ubuntu 24.04.1 LTS

Configured using:
 'configure --prefix=/home/len/.local --with-rsvg --with-cairo
 --with-native-compilation --with-tree-sitter --with-modules'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP
NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB

Important settings:
  value of $LC_MONETARY: en_AU.UTF-8
  value of $LC_NUMERIC: en_AU.UTF-8
  value of $LC_TIME: en_AU.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Fundamental

Minor modes in effect:
  xterm-mouse-mode: t
  server-mode: t
  vertico-posframe-mode: t
  vertico-mode: t
  elpaca-use-package-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  blink-cursor-mode: t
  minibuffer-regexp-mode: t
  buffer-read-only: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr compile comint ansi-osc ansi-color ring comp-run
comp-common rx emacsbug message yank-media puny dired dired-loaddefs
rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util
text-property-search time-date mm-decode mm-bodies mm-encode mail-parse
rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mail-utils xt-mouse term/xterm xterm
server vertico-posframe vertico-multiform vertico compat posframe
vertico-posframe-autoloads vertico-autoloads posframe-autoloads cl-extra
help-mode elpaca-use-package use-package use-package-ensure
use-package-delight use-package-diminish use-package-bind-key bind-key
easy-mmode use-package-core elpaca-use-package-autoloads elpaca-log
elpaca-ui elpaca-menu-elpa elpaca-menu-melpa url url-proxy url-privacy
url-expand url-methods url-history url-cookie generate-lisp-file
url-domsuf url-util url-parse auth-source cl-seq eieio eieio-core
cl-macs password-cache json subr-x map byte-opt gv bytecomp byte-compile
url-vars mailcap elpaca-menu-org elpaca warnings icons elpaca-process
cl-loaddefs cl-lib elpaca-autoloads rmc iso-transl tooltip cconv eldoc
paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode
mwheel term/x-win x-win term/common-win x-dnd touch-screen tool-bar dnd
fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch easymenu timer select scroll-bar mouse jit-lock font-lock syntax
font-core term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo gtk
x-toolkit xinput2 x multi-tty move-toolbar make-network-process
tty-child-frames native-compile emacs)

Memory information:
((conses 16 396223 19518) (symbols 48 15669 0)
 (strings 32 187599 3392) (string-bytes 1 2901786) (vectors 16 17588)
 (vector-slots 8 194405 8250) (floats 8 78 41) (intervals 56 346 0)
 (buffers 992 19))

--000000000000bc37cf0629fd9859
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><br>tty-child-frames does not seem to play well with multi=
ple clients. When we run server-start and allow emacs to have multiple clie=
nts (e.g. an initial &quot;emacs -nw&quot; and an<br>&quot;emacsclient -nw&=
quot;), using a function that utilizes tty-child-frame (such as M-x when ve=
rtico-posframe is loaded) in one frame leads the other client to be locked =
up.<br><br>Steps to reproduce:<br><br>mkdir ~/emacs-test<br>Copy the attach=
ed init.el into ~/emacs-test/<br>emacs -nw --init-directory=3D~/emacs-test=
=C2=A0 (the first time will result in packages being installed by elpaca)<b=
r><div>(in another terminal) emacsclient -nw</div><div>Do something to invo=
ke the child frame pop up (e.g. C-x b and select a buffer)<br>Switch back t=
o the original emacs<br></div>Do something to invoke the child frame pop up=
 (e.g. C-x b and select a buffer)<br>Swap to the other terminal, and note t=
hat at some point one client will stop responding<br>to user input. (It may=
 take a couple of tries, perhaps with other regular commands interspersed).=
<br>When one client is locked, swap back to the other terminal and exit the=
 client - the original<br>client will now accept user input.<br><div><br></=
div><div>When a client is locked it *does* accept some input (e.g. C-x C-c =
will exit the client)<br></div><div><br></div><div>It&#39;s possible this i=
s vertico-posframe related, as I can&#39;t trigger similar behaviour using =
transient-posframe.<br></div><br><br>In GNU Emacs 31.0.50 (build 1, x86_64-=
pc-linux-gnu, GTK+ Version<br>=C2=A03.24.41, cairo version 1.18.0) of 2024-=
12-24 built on kaka<br>Repository revision: 6ac38396898e6324d4c6dddb2ad05d1=
ad0dc5e7c<br>Repository branch: master<br>System Description: Ubuntu 24.04.=
1 LTS<br><br>Configured using:<br>=C2=A0&#39;configure --prefix=3D/home/len=
/.local --with-rsvg --with-cairo<br>=C2=A0--with-native-compilation --with-=
tree-sitter --with-modules&#39;<br><br>Configured features:<br>ACL CAIRO DB=
US FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG<br>LCMS2 LIBOTF=
 LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NATIVE_COMP<br>NOTIFY INOTI=
FY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF<br>TOOLKIT_SCROLL_BA=
RS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB<br><br>Important set=
tings:<br>=C2=A0 value of $LC_MONETARY: en_AU.UTF-8<br>=C2=A0 value of $LC_=
NUMERIC: en_AU.UTF-8<br>=C2=A0 value of $LC_TIME: en_AU.UTF-8<br>=C2=A0 val=
ue of $LANG: en_US.UTF-8<br>=C2=A0 value of $XMODIFIERS: @im=3Dibus<br>=C2=
=A0 locale-coding-system: utf-8-unix<br><br>Major mode: Fundamental<br><br>=
Minor modes in effect:<br>=C2=A0 xterm-mouse-mode: t<br>=C2=A0 server-mode:=
 t<br>=C2=A0 vertico-posframe-mode: t<br>=C2=A0 vertico-mode: t<br>=C2=A0 e=
lpaca-use-package-mode: t<br>=C2=A0 override-global-mode: t<br>=C2=A0 toolt=
ip-mode: t<br>=C2=A0 global-eldoc-mode: t<br>=C2=A0 show-paren-mode: t<br>=
=C2=A0 electric-indent-mode: t<br>=C2=A0 mouse-wheel-mode: t<br>=C2=A0 tool=
-bar-mode: t<br>=C2=A0 menu-bar-mode: t<br>=C2=A0 file-name-shadow-mode: t<=
br>=C2=A0 global-font-lock-mode: t<br>=C2=A0 blink-cursor-mode: t<br>=C2=A0=
 minibuffer-regexp-mode: t<br>=C2=A0 buffer-read-only: t<br>=C2=A0 line-num=
ber-mode: t<br>=C2=A0 indent-tabs-mode: t<br>=C2=A0 transient-mark-mode: t<=
br>=C2=A0 auto-composition-mode: t<br>=C2=A0 auto-encryption-mode: t<br>=C2=
=A0 auto-compression-mode: t<br><br>Load-path shadows:<br>None found.<br><b=
r>Features:<br>(shadow sort mail-extr compile comint ansi-osc ansi-color ri=
ng comp-run<br>comp-common rx emacsbug message yank-media puny dired dired-=
loaddefs<br>rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util=
<br>text-property-search time-date mm-decode mm-bodies mm-encode mail-parse=
<br>rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045<br>iet=
f-drums mm-util mail-prsvr mail-utils xt-mouse term/xterm xterm<br>server v=
ertico-posframe vertico-multiform vertico compat posframe<br>vertico-posfra=
me-autoloads vertico-autoloads posframe-autoloads cl-extra<br>help-mode elp=
aca-use-package use-package use-package-ensure<br>use-package-delight use-p=
ackage-diminish use-package-bind-key bind-key<br>easy-mmode use-package-cor=
e elpaca-use-package-autoloads elpaca-log<br>elpaca-ui elpaca-menu-elpa elp=
aca-menu-melpa url url-proxy url-privacy<br>url-expand url-methods url-hist=
ory url-cookie generate-lisp-file<br>url-domsuf url-util url-parse auth-sou=
rce cl-seq eieio eieio-core<br>cl-macs password-cache json subr-x map byte-=
opt gv bytecomp byte-compile<br>url-vars mailcap elpaca-menu-org elpaca war=
nings icons elpaca-process<br>cl-loaddefs cl-lib elpaca-autoloads rmc iso-t=
ransl tooltip cconv eldoc<br>paren electric uniquify ediff-hook vc-hooks li=
sp-float-type elisp-mode<br>mwheel term/x-win x-win term/common-win x-dnd t=
ouch-screen tool-bar dnd<br>fontset image regexp-opt fringe tabulated-list =
replace newcomment<br>text-mode lisp-mode prog-mode register page tab-bar m=
enu-bar rfn-eshadow<br>isearch easymenu timer select scroll-bar mouse jit-l=
ock font-lock syntax<br>font-core term/tty-colors frame minibuffer nadvice =
seq simple cl-generic<br>indonesian philippine cham georgian utf-8-lang mis=
c-lang vietnamese<br>tibetan thai tai-viet lao korean japanese eucjp-ms cp5=
1932 hebrew greek<br>romanian slovak czech european ethiopic indian cyrilli=
c chinese<br>composite emoji-zwj charscript charprop case-table epa-hook<br=
>jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs<br=
>theme-loaddefs faces cus-face macroexp files window text-properties<br>ove=
rlay sha1 md5 base64 format env code-pages mule custom widget keymap<br>has=
htable-print-readable backquote threads dbusbind inotify lcms2<br>dynamic-s=
etting system-font-setting font-render-setting cairo gtk<br>x-toolkit xinpu=
t2 x multi-tty move-toolbar make-network-process<br>tty-child-frames native=
-compile emacs)<br><br>Memory information:<br>((conses 16 396223 19518) (sy=
mbols 48 15669 0)<br>=C2=A0(strings 32 187599 3392) (string-bytes 1 2901786=
) (vectors 16 17588)<br>=C2=A0(vector-slots 8 194405 8250) (floats 8 78 41)=
 (intervals 56 346 0)<br><div>=C2=A0(buffers 992 19))</div><div><br></div><=
/div>

--000000000000bc37cf0629fd9859--

--000000000000bc37d10629fd985b
Content-Type: text/x-emacs-lisp; charset="US-ASCII"; name="init.el"
Content-Disposition: attachment; filename="init.el"
Content-Transfer-Encoding: base64
Content-ID: <f_m52146uq0>
X-Attachment-Id: f_m52146uq0

Ozs7IGluaXQuZWwgLS0tIEVtYWNzIGluaXRpYWxpemF0aW9uCgo7OzsgQ29kZToKCjs7IGVscGFj
YSBib2lsZXJwbGF0ZSA7Owooc2V0cSBwYWNrYWdlLWVuYWJsZS1hdC1zdGFydHVwIG5pbCkKOzsg
VXNlIGVscGFjYSByYXRoZXIgdGhhbiBwYWNrYWdlLmVsLCBpdCBnaXZlcyBiZXR0ZXIgY29udHJv
bCBvdmVyIHBhY2thZ2UgdmVyc2lvbnMKKGRlZnZhciBlbHBhY2EtaW5zdGFsbGVyLXZlcnNpb24g
MC44KQooZGVmdmFyIGVscGFjYS1kaXJlY3RvcnkgKGV4cGFuZC1maWxlLW5hbWUgImVscGFjYS8i
IHVzZXItZW1hY3MtZGlyZWN0b3J5KSkKKGRlZnZhciBlbHBhY2EtYnVpbGRzLWRpcmVjdG9yeSAo
ZXhwYW5kLWZpbGUtbmFtZSAiYnVpbGRzLyIgZWxwYWNhLWRpcmVjdG9yeSkpCihkZWZ2YXIgZWxw
YWNhLXJlcG9zLWRpcmVjdG9yeSAoZXhwYW5kLWZpbGUtbmFtZSAicmVwb3MvIiBlbHBhY2EtZGly
ZWN0b3J5KSkKKGRlZnZhciBlbHBhY2Etb3JkZXIgJyhlbHBhY2EgOnJlcG8gImh0dHBzOi8vZ2l0
aHViLmNvbS9wcm9nZm9saW8vZWxwYWNhLmdpdCIKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgOnJlZiBuaWwgOmRlcHRoIDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZpbGVz
ICg6ZGVmYXVsdHMgImVscGFjYS10ZXN0LmVsIiAoOmV4Y2x1ZGUgImV4dGVuc2lvbnMiKSkKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOmJ1aWxkICg6bm90IGVscGFjYS0tYWN0aXZhdGUt
cGFja2FnZSkpKQoobGV0KiAoKHJlcG8gIChleHBhbmQtZmlsZS1uYW1lICJlbHBhY2EvIiBlbHBh
Y2EtcmVwb3MtZGlyZWN0b3J5KSkKICAgICAgIChidWlsZCAoZXhwYW5kLWZpbGUtbmFtZSAiZWxw
YWNhLyIgZWxwYWNhLWJ1aWxkcy1kaXJlY3RvcnkpKQogICAgICAgKG9yZGVyIChjZHIgZWxwYWNh
LW9yZGVyKSkKICAgICAgIChkZWZhdWx0LWRpcmVjdG9yeSByZXBvKSkKICAoYWRkLXRvLWxpc3Qg
J2xvYWQtcGF0aCAoaWYgKGZpbGUtZXhpc3RzLXAgYnVpbGQpIGJ1aWxkIHJlcG8pKQogICh1bmxl
c3MgKGZpbGUtZXhpc3RzLXAgcmVwbykKICAgIChtYWtlLWRpcmVjdG9yeSByZXBvIHQpCiAgICAo
d2hlbiAoPCBlbWFjcy1tYWpvci12ZXJzaW9uIDI4KSAocmVxdWlyZSAnc3Vici14KSkKICAgIChj
b25kaXRpb24tY2FzZS11bmxlc3MtZGVidWcgZXJyCiAgICAgICAgKGlmLWxldCogKChidWZmZXIg
KHBvcC10by1idWZmZXItc2FtZS13aW5kb3cgIiplbHBhY2EtYm9vdHN0cmFwKiIpKQogICAgICAg
ICAgICAgICAgICAoKHplcm9wIChhcHBseSAjJ2NhbGwtcHJvY2VzcyBgKCJnaXQiIG5pbCAsYnVm
ZmVyIHQgImNsb25lIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICxAKHdoZW4tbGV0KiAoKGRlcHRoIChwbGlzdC1nZXQgb3JkZXIgOmRlcHRoKSkpCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0
IChmb3JtYXQgIi0tZGVwdGg9JWQiIGRlcHRoKSAiLS1uby1zaW5nbGUtYnJhbmNoIikpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLChwbGlzdC1nZXQg
b3JkZXIgOnJlcG8pICxyZXBvKSkpKQogICAgICAgICAgICAgICAgICAoKHplcm9wIChjYWxsLXBy
b2Nlc3MgImdpdCIgbmlsIGJ1ZmZlciB0ICJjaGVja291dCIKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChvciAocGxpc3QtZ2V0IG9yZGVyIDpyZWYpICItLSIpKSkpCiAg
ICAgICAgICAgICAgICAgIChlbWFjcyAoY29uY2F0IGludm9jYXRpb24tZGlyZWN0b3J5IGludm9j
YXRpb24tbmFtZSkpCiAgICAgICAgICAgICAgICAgICgoemVyb3AgKGNhbGwtcHJvY2VzcyBlbWFj
cyBuaWwgYnVmZmVyIG5pbCAiLVEiICItTCIgIi4iICItLWJhdGNoIgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIi0tZXZhbCIgIihieXRlLXJlY29tcGlsZS1kaXJlY3Rv
cnkgXCIuXCIgMCAnZm9yY2UpIikpKQogICAgICAgICAgICAgICAgICAoKHJlcXVpcmUgJ2VscGFj
YSkpCiAgICAgICAgICAgICAgICAgICgoZWxwYWNhLWdlbmVyYXRlLWF1dG9sb2FkcyAiZWxwYWNh
IiByZXBvKSkpCiAgICAgICAgICAgIChwcm9nbiAobWVzc2FnZSAiJXMiIChidWZmZXItc3RyaW5n
KSkgKGtpbGwtYnVmZmVyIGJ1ZmZlcikpCiAgICAgICAgICAoZXJyb3IgIiVzIiAod2l0aC1jdXJy
ZW50LWJ1ZmZlciBidWZmZXIgKGJ1ZmZlci1zdHJpbmcpKSkpCiAgICAgICgoZXJyb3IpICh3YXJu
ICIlcyIgZXJyKSAoZGVsZXRlLWRpcmVjdG9yeSByZXBvICdyZWN1cnNpdmUpKSkpCiAgKHVubGVz
cyAocmVxdWlyZSAnZWxwYWNhLWF1dG9sb2FkcyBuaWwgdCkKICAgIChyZXF1aXJlICdlbHBhY2Ep
CiAgICAoZWxwYWNhLWdlbmVyYXRlLWF1dG9sb2FkcyAiZWxwYWNhIiByZXBvKQogICAgKGxvYWQg
Ii4vZWxwYWNhLWF1dG9sb2FkcyIpKSkKKGFkZC1ob29rICdhZnRlci1pbml0LWhvb2sgIydlbHBh
Y2EtcHJvY2Vzcy1xdWV1ZXMpCihlbHBhY2EgYCgsQGVscGFjYS1vcmRlcikpCgo7OyBJbnN0YWxs
IHVzZS1wYWNrYWdlIHN1cHBvcnQKKGVscGFjYSBlbHBhY2EtdXNlLXBhY2thZ2UKICA7OyBFbmFi
bGUgOmVscGFjYSB1c2UtcGFja2FnZSBrZXl3b3JkLgogIChlbHBhY2EtdXNlLXBhY2thZ2UtbW9k
ZSkKICA7OyBBc3N1bWUgOmVscGFjYSB0IHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLgogIChz
ZXRxIGVscGFjYS11c2UtcGFja2FnZS1ieS1kZWZhdWx0IHQpKQoKOzsgQmxvY2sgdW50aWwgY3Vy
cmVudCBxdWV1ZSBwcm9jZXNzZWQuCihlbHBhY2Etd2FpdCkKCjs7IChzZXRxIGN1c3RvbS1maWxl
IChleHBhbmQtZmlsZS1uYW1lICJjdXN0b20uZWwiIHVzZXItZW1hY3MtZGlyZWN0b3J5KSkKOzsg
KGFkZC1ob29rICdlbHBhY2EtYWZ0ZXItaW5pdC1ob29rIChsYW1iZGEgKCkgKGxvYWQgY3VzdG9t
LWZpbGUgJ25vZXJyb3IpKSkKCgoodXNlLXBhY2thZ2UgcG9zZnJhbWUKICA7Ozpjb25maWcKICA7
OyhzZXRxIHBvc2ZyYW1lLW1vdXNlLWJhbmlzaCBuaWwpCiAgKQoodXNlLXBhY2thZ2UgdmVydGlj
by1wb3NmcmFtZQogIDphZnRlciBwb3NmcmFtZSB2ZXJ0aWNvCiAgOmNvbmZpZwogIChwdXNoICco
dHR5LW5vbi1zZWxlY3RlZC1jdXJzb3IgLiB0KSB2ZXJ0aWNvLXBvc2ZyYW1lLXBhcmFtZXRlcnMp
CiAgKHB1c2ggJyhiYWNrZ3JvdW5kLWNvbG9yIC4gImJsYWNrIikgdmVydGljby1wb3NmcmFtZS1w
YXJhbWV0ZXJzKQogIChwdXNoICcodW5kZWNvcmF0ZWQgLiBuaWwpIHZlcnRpY28tcG9zZnJhbWUt
cGFyYW1ldGVycykKICAgICh2ZXJ0aWNvLXBvc2ZyYW1lLW1vZGUpKQoKKHVzZS1wYWNrYWdlIHZl
cnRpY28KICA6aW5pdAogICh2ZXJ0aWNvLW1vZGUpCiAgOzsoYWR2aWNlLWFkZCAjJ3RtbS1hZGQt
cHJvbXB0IDphZnRlciAjJ21pbmlidWZmZXItaGlkZS1jb21wbGV0aW9ucykKICA7OyAoc2V0cQog
IDs7ICB2ZXJ0aWNvLXJlc2l6ZSBuaWwKICA7OyAgdmVydGljby1jeWNsZSB0KQogICkKCih1c2Ut
cGFja2FnZSBzZXJ2ZXIKICA6ZW5zdXJlIG5pbAogIDpob29rIChlbHBhY2EtYWZ0ZXItaW5pdCAu
IHNlcnZlci1zdGFydCkpCgo7OzsgaW5pdC5lbCBlbmRzIGhlcmUK
--000000000000bc37d10629fd985b--




Acknowledgement sent to Len Trigg <lenbok@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#75056; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Wed, 26 Feb 2025 04:00:02 UTC

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