Received: (at 80662) by debbugs.gnu.org; 16 Apr 2026 11:26:57 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 16 07:26:56 2026 Received: from localhost ([127.0.0.1]:51076 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wDKs1-00039Z-8U for submit <at> debbugs.gnu.org; Thu, 16 Apr 2026 07:26:56 -0400 Received: from mout.gmx.net ([212.227.15.18]:53321) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1wDKrv-00038D-Au for 80662 <at> debbugs.gnu.org; Thu, 16 Apr 2026 07:26:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1776338782; x=1776943582; i=rudalics@HIDDEN; bh=dti44cP197gTzXPNgp9/XQgv4u/aw6CAi0t4apFuN70=; 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=jf3yx/ECJrmo6pju3ZlJWUpOjio5ZDSaQpiW+SUckc6wGW+ub+kcTLYw62svHVLr lZTvz5jcy2/a6aNurv+QdYe/kmfdWcPy1V+1L9mYz/RpKuA1qJ/juwMKXusajWaes jBSgIy8nwxXzeih74Q+s0VoWeVmRXh9PEA42ytKdxZ3YMKOUqGDn35u09GrZ19ZNg AWO+dKRA/v99DIWU9pK0M9W3gliqDWtOJsJ3izqFkZagMxt/aq+/DVcyeDh25HdeS tMmY5EGhK8YlEzN7fKH+iePzHkImCtvVhgSnOaAwfsiFpWIfUtwh5PDH5zORdkdzX QQqESE8hIUNdu/Mrzw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N7R1T-1vLYx91uk1-00xnrL; Thu, 16 Apr 2026 13:26:22 +0200 Message-ID: <065ec343-c732-40c7-b341-da8de89252a6@HIDDEN> Date: Thu, 16 Apr 2026 13:26:21 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> <afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN> <e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN> <86b6c91b-7129-4975-a954-24c395fdf92d@HIDDEN> <7199b6ea-2b45-4f4f-aaa2-02f020f99a60@HIDDEN> <c8d83eef-bce0-404a-9f8b-21e3e3a1ac48@HIDDEN> <4a6794ed-d311-4d84-8193-64765c380242@HIDDEN> <312fe7c1-d7dc-4fe6-8c59-df17c3446b90@HIDDEN> <eeefb7bf-f801-4064-add3-0ae534d43396@HIDDEN> <54e33aac-0545-4f44-a69e-0a6342b65229@HIDDEN> <a477c780-a205-4617-ac14-6edcaba8a97f@HIDDEN> <f26f4d35-cfaa-4848-b508-0f91f8a0c8ee@HIDDEN> <ac5e0acb-6d28-45b1-a64a-e9cca9c42469@HIDDEN> <f99ce0dd-d117-4a0f-a17a-ee1a022b6c12@HIDDEN> <d75c7608-6428-4a09-80c1-8924ffbc97e0@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <d75c7608-6428-4a09-80c1-8924ffbc97e0@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:O8/zAR9L8JPbHIatg/MKT1wxKDPUK89UeIGU526Sk5Y4CzHQ1Lm oj4HY25DpzjVAwqpVWT1Jqkp8t+m1MbHbpx+Ma6HovKoBndyCUJZup/GdSca2Gj032OWkpn BOXBSoLYG1/L56+YiBB7GBonQFa3wKX39OT6XDbYf4q4xuohSu+KHmmqOTaSfITUuU/qO4a brmEcgyJZXBDbCtpN7UHA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Atfknk2AW9Y=;K2+gTd3TfgXpplXN2GtkDMYUmoB 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 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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. But to answer the question, the only place where wait_event_type is changed so the loop can end, is handle_one_xevent, line 18945: > > if (any && any->wait_event_type == event->type) > any->wait_event_type = 0; /* Indicates we got it. */ > > And we get there inside call to totally_unblock_input (). The comment about XTread_socket on the next line is about that. > > totally_unblock_input -> unblock_input_to -> process_pending_signals -> handle_async_input -> gobble_input -> (*t->read_socket_hook) -> XTread_socket -> handle_one_xevent > > Or a bit more indirect with GTK, though gtk_main_iteration and event_handler_gdk. Don't bother then I was apparently searching for "f->wait_event_type =" and missed the "any". martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 16 Apr 2026 11:17:47 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 16 07:17:46 2026
Received: from localhost ([127.0.0.1]:51041 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wDKj9-0001fi-1O
for submit <at> debbugs.gnu.org; Thu, 16 Apr 2026 07:17:45 -0400
Received: from fout-b5-smtp.messagingengine.com ([202.12.124.148]:50781)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1wDKj2-0001e0-3s
for 80662 <at> debbugs.gnu.org; Thu, 16 Apr 2026 07:17:39 -0400
Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42])
by mailfout.stl.internal (Postfix) with ESMTP id 220221D00246;
Thu, 16 Apr 2026 07:17:30 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
by phl-compute-02.internal (MEProxy); Thu, 16 Apr 2026 07:17:30 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc
:cc:content-transfer-encoding:content-type:content-type:date
:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm1; t=1776338249;
x=1776424649; bh=ZoQnrAkXsORxrs47NnOdNBPPOO73A+UEuTN7RghNT8Q=; b=
FEYp+BmNpoP2rTXI+DlFxkOJFaWbG0igJU/XaYtqovi/Bg1zsfO4YHaurW813weU
E/LOLECxNEBkAUDjgGgDNiRAHogeaBMrft+kk8JwSNOdjEoD1Izy6MXV7mQPNBNB
0Ub8XiKNfe7AKrFZs166sP39QnVzyRRszrD2Q9TJvI/sde2IxVs/kwtLVxxI4SlV
gwFqKgYkkWv6rtvpeRZnAV5bXR+UQyCFW78XgIpgNpm6QONYnBeuPhMzE+GNoLos
CTeCaEVkYP5rOUfaq3626vhqG0wqnBmcHQJ0Yx8Vcdf/jhzqDZRG8V470qh8BvfG
yIL+XBrjGJ1sQQCRHp/aiw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:cc:content-transfer-encoding
:content-type:content-type:date:date:feedback-id:feedback-id
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to:x-me-proxy
:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1776338249; x=
1776424649; bh=ZoQnrAkXsORxrs47NnOdNBPPOO73A+UEuTN7RghNT8Q=; b=T
83gnGIgLN4g0HeA7HBR1ydy6C8PXBLguLH1XrnY9n95IESeEdPA9ZZWRLoUTFAi0
4bigzguFTur1dbQsXQmYJrvEE2iAZoOS6tOlRAbypUeSsj/2ZfVNQ/ozy2ZyUOx1
HybIp84sC16jEK+LE+AtzVktGq8SCMvHdE6LpQuu9DPexpAcx5eSVBzbwSMorqdL
wNa/bUYTtS0u3DWX6d6H2+ZOi6JDSzREaA4CrqGJMPeL9eIgdzYfDa2MJrriHxnc
TNZjcfcoHJipjqLvcVv76FflKAqcLSrCdVWmfCsoJZV10GOcTI/UtPjoYE5pjbcn
i+m1vr1kWhEMxS628aTKw==
X-ME-Sender: <xms:ScXgaQpInWSGCDaIkhub_ShapMuXmDhX6OWvLq5pnCCpQKSVkbLW1g>
<xme:ScXgaeGfuuz9TN_TWTsiwzLU1FiIPrsGkPgN9a47d4fuCi42sbtGHdoo7tbVwOM5j
GyHkasly7Q2DyfBzONxFU-Nj5Hj55_9evRFWqx6Br69OoaBoVuinJA>
X-ME-Received: <xmr:ScXgaSlBBC2-bBCePUaEwm6ygisANBr_5bU1xupEBbSbhqUpw736jlLGx1-qSuACg5CJUA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdegieekhecutefuodetggdotefrod
ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
hrpefkffggfgfuvfevfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhih
ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh
hnpeegleefteekgffhvdfhtdegveevveetteegteevgeettdehhfdukeetheffueekkeen
ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith
hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepfedpmhhouggvpehsmhhtphho
uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd
eiiedvseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepmhgrihhlsegurghn
ihgvlhdqmhgvnhgulhgvrhdruggv
X-ME-Proxy: <xmx:ScXgaRkY8YVHaqe8nfWPUbKYdeUFJCAN2p__XQXQhtKSqYsQnRRNew>
<xmx:ScXgaTs0u_IBRp6vHoXpzOFebjjU1EyUUkikMid19oMT1JDFZj9v6A>
<xmx:ScXgaUnAl-WoY-0ZrSto7cG6sEDvEoFNdJ8mR6Da_dimRTbU_OfKIw>
<xmx:ScXgaet-fRfzyQyblxsRIFuyPcoxTQGuQxns9Ly_DpK1pNJkOWdVsw>
<xmx:ScXgac2vDSkrQEFbwtpXOng99oZ9fiiP1Rfn59zOe32iSuMCBd4OSl77>
Feedback-ID: i07de48aa:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
16 Apr 2026 07:17:27 -0400 (EDT)
Message-ID: <d75c7608-6428-4a09-80c1-8924ffbc97e0@HIDDEN>
Date: Thu, 16 Apr 2026 14:17:26 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN>
<ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN>
<20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN>
<75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN>
<0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN>
<1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN>
<afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN>
<e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN>
<86b6c91b-7129-4975-a954-24c395fdf92d@HIDDEN>
<7199b6ea-2b45-4f4f-aaa2-02f020f99a60@HIDDEN>
<c8d83eef-bce0-404a-9f8b-21e3e3a1ac48@HIDDEN>
<4a6794ed-d311-4d84-8193-64765c380242@HIDDEN>
<312fe7c1-d7dc-4fe6-8c59-df17c3446b90@HIDDEN>
<eeefb7bf-f801-4064-add3-0ae534d43396@HIDDEN>
<54e33aac-0545-4f44-a69e-0a6342b65229@HIDDEN>
<a477c780-a205-4617-ac14-6edcaba8a97f@HIDDEN>
<f26f4d35-cfaa-4848-b508-0f91f8a0c8ee@HIDDEN>
<ac5e0acb-6d28-45b1-a64a-e9cca9c42469@HIDDEN>
<f99ce0dd-d117-4a0f-a17a-ee1a022b6c12@HIDDEN>
Content-Language: en-US
From: Dmitry Gutov <dmitry@HIDDEN>
In-Reply-To: <f99ce0dd-d117-4a0f-a17a-ee1a022b6c12@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80662
Cc: Daniel Mendler <mail@HIDDEN>
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 (-)
On 16/04/2026 11:50, martin rudalics wrote:
> > In the meantime, here's the next revision v15, *now* totally reading
> for testing.
>
> Applied and running with it now. This one
>
> if (!f->wait_event_type)
> break;
>
> deserves a comment of why and how f->wait_event_type can get reset to
> zero. IIUC the only way that this could happen is EVENTTYPE being zero
> in a call of x_wait_for_event and I nowhere see that happening.
Okay. But to answer the question, the only place where wait_event_type
is changed so the loop can end, is handle_one_xevent, line 18945:
if (any && any->wait_event_type == event->type)
any->wait_event_type = 0; /* Indicates we got it. */
And we get there inside call to totally_unblock_input (). The comment
about XTread_socket on the next line is about that.
totally_unblock_input -> unblock_input_to -> process_pending_signals ->
handle_async_input -> gobble_input -> (*t->read_socket_hook) ->
XTread_socket -> handle_one_xevent
Or a bit more indirect with GTK, though gtk_main_iteration and
event_handler_gdk.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 16 Apr 2026 08:50:37 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 16 04:50:36 2026
Received: from localhost ([127.0.0.1]:50711 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wDIQi-0002NU-1O
for submit <at> debbugs.gnu.org; Thu, 16 Apr 2026 04:50:36 -0400
Received: from mout.gmx.net ([212.227.17.20]:58569)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1wDIQZ-0002Io-7b
for 80662 <at> debbugs.gnu.org; Thu, 16 Apr 2026 04:50:25 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1776329417; x=1776934217; i=rudalics@HIDDEN;
bh=rVI2ER50boTqSCdSu41cQzjJbhUbHBzTWjwLAfWDGvw=;
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=ezaNFbo8xunzuN1GOBAKCcVXxRuVvXQLs5saw0PmIora2Ig5klZnGBoyIxJrNB0s
+txeEzga3RsPwL5rgG/eVtWpYSDxcbzS/MMlajgT1Box1jOsO6wI9+rqGzTlcluFZ
3frLXRw4P9jytanMxHllqV5yBfA/3arqalBQmUbgtq9/Sfo8hgG5QhyD9GJ6WV/wI
TABECooHOdhFlMNa/XTyD4TyIyimTr+KarwnMs5O0vqLHttPiGbpjzxg6s0DJr3bF
qzrgdjmTkeVjWXQ2sc+V+bi+ZqK1/w62D/LrQPAgR5sAjH/r0Gu8+AdC+JrPgMmiM
S2+b9DajU5asEG62qg==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from client.hidden.invalid by mail.gmx.net (mrgmx104
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MjS54-1vXso63d0c-00gDaD; Thu, 16
Apr 2026 10:50:16 +0200
Message-ID: <f99ce0dd-d117-4a0f-a17a-ee1a022b6c12@HIDDEN>
Date: Thu, 16 Apr 2026 10:50:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN>
<7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN>
<ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN>
<20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN>
<75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN>
<0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN>
<1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN>
<afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN>
<e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN>
<86b6c91b-7129-4975-a954-24c395fdf92d@HIDDEN>
<7199b6ea-2b45-4f4f-aaa2-02f020f99a60@HIDDEN>
<c8d83eef-bce0-404a-9f8b-21e3e3a1ac48@HIDDEN>
<4a6794ed-d311-4d84-8193-64765c380242@HIDDEN>
<312fe7c1-d7dc-4fe6-8c59-df17c3446b90@HIDDEN>
<eeefb7bf-f801-4064-add3-0ae534d43396@HIDDEN>
<54e33aac-0545-4f44-a69e-0a6342b65229@HIDDEN>
<a477c780-a205-4617-ac14-6edcaba8a97f@HIDDEN>
<f26f4d35-cfaa-4848-b508-0f91f8a0c8ee@HIDDEN>
<ac5e0acb-6d28-45b1-a64a-e9cca9c42469@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <ac5e0acb-6d28-45b1-a64a-e9cca9c42469@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:j4Eunc9VRaBIe3eLsvqTx/Yiaey/kTM6+M48VXK6jHXtfNjXYUp
H3joXbSTZIuRv1ZQRyy3+HhdsAdtVm7akLej9wZquYRl0rO7LOIPk1FXWtTA1402oEz4N02
kC6TF7cuxgqnlT9ciAycNTe6qtA3Djy4wQbEJZ7KHrTQF6Juf0uGuLcB+PVt0xTtohc7K5l
w/FZKlv/n/ciMfEIMTkuQ==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:44NMi73AB10=;zSYpMqQpFNkP79Z5bJHxHGqq125
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
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80662
Cc: Daniel Mendler <mail@HIDDEN>
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 (-)
> In the meantime, here's the next revision v15, *now* totally reading for testing.
Applied and running with it now. This one
if (!f->wait_event_type)
break;
deserves a comment of why and how f->wait_event_type can get reset to
zero. IIUC the only way that this could happen is EVENTTYPE being zero
in a call of x_wait_for_event and I nowhere see that happening.
martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 16 Apr 2026 04:28:19 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 16 00:28:18 2026 Received: from localhost ([127.0.0.1]:50086 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wDEKo-0006TL-Gs for submit <at> debbugs.gnu.org; Thu, 16 Apr 2026 00:28:18 -0400 Received: from fhigh-a4-smtp.messagingengine.com ([103.168.172.155]:34183) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1wDEKe-0006R0-Oy for 80662 <at> debbugs.gnu.org; Thu, 16 Apr 2026 00:28:07 -0400 Received: from phl-compute-08.internal (phl-compute-08.internal [10.202.2.48]) by mailfhigh.phl.internal (Postfix) with ESMTP id C62301400059; Thu, 16 Apr 2026 00:27:54 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-08.internal (MEProxy); Thu, 16 Apr 2026 00:27:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1776313674; x=1776400074; bh=I9H3Hr/H90 f+hYEhvyq95T6f2K9idGLcn8xKFMypw3I=; b=GsIPFjR4aH72ew4F1vkhDHYGcU h1k49y6yHI7d4TmhywOF6TpRuUNcznLHkh9kMBS/QpSZKdQ9tL30L9MAisXUBctb mxJKA7sZ1g0h6e3RDDvC8ZCxm0YQ7O+vqMVYMkM9LmqM6eBVzcJWJA1u7j9m+lm3 fStNR43MHs2N94cZ8zALtbSw30SWBI+zefr3P+tkKUPpft8K4nfbz/49wfMFSTnx Ka269wtLNmaoRePjnVq7m+Npd+Bb94L38wYBkEhzrENbqt0qwcG5yDCeabKhbOwC Ts4/KcxQv39HW3CMUDapIzg1MUcRxlKnyK0UwmUEFdpMvHqX+OMCS4MpwxeA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1776313674; x=1776400074; bh=I9H3Hr/H90f+hYEhvyq95T6f2K9idGLcn8x KFMypw3I=; b=gZyBJESDhC/s4xdnGICDwP0WmjTErGlisdueeROe56WOpgJKqU7 qxbWVsvIDPNM/T37+7cTFKstOoYcalsprxs16FfZ375U69/RHfTigk2WeN3cP9ox R9hWyMdLvE7ipO+QdUP9C1HmBp2Gdi7Loa8FHMceKDIgA0k1Bsnes1Q3KqjKi9ls ramYRieQtAPXrbcNKGZ2ua355aHWwj0VLer2/qs8EQ0K+IbgS2pxPBOKm5GKHj4w qFMZFHw0RZMJotRo+qE+iMZiJtEdUA3OC2ZUzhDyFtz5CsMWnZGxdby7P1oIHhJG CiEfCWU3UcbvH1vXnHWxKwohaXArKuIZgmw== X-ME-Sender: <xms:SmXgaeygKZsBQfmATF64O4JY259GBvWr2_8TDTVMIX0QUSYaNIFkEw> <xme:SmXgaRuEryr7olpaizclUba9jUu-7jFy20M6NaoAzrpUeR0DnZwjDAs4WDcvYd1tZ K6z5vXvHfRmyy-Z7AUHLYruGrmJyQlD8yBQjcYav7hzkWPIYhWiovTv> X-ME-Received: <xmr:SmXgaduJzUTxvikUO03CU-y3jx_jEoa5jRctwsS6J-kcuRzDmgs7hdY4Ygm72ZucCiLi4w> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdegiedtgecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpegtkfffgggfuffhvfevfhgjsehmtderredtvdejnecuhfhrohhmpeffmhhithhrhicu ifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrthhtvghrnh eptddvueegvdetledvgeevgfeutdfgteehgfegffektdekgeevieefiedujeeuffffnecu vehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepughmihhtrh ihsehguhhtohhvrdguvghvpdhnsggprhgtphhtthhopeefpdhmohguvgepshhmthhpohhu thdprhgtphhtthhopehruhgurghlihgtshesghhmgidrrghtpdhrtghpthhtohepkedtie eivdesuggvsggsuhhgshdrghhnuhdrohhrghdprhgtphhtthhopehmrghilhesuggrnhhi vghlqdhmvghnughlvghrrdguvg X-ME-Proxy: <xmx:SmXgaeP3DN6bpY6J6CnMlenoL8-nFb99ZGrSXQZ3RsFj_WuTcFeIiA> <xmx:SmXgaT354Puanr_0vKzyq0Iz-X5oCapqRJt8Luc4vB-y_t8p5yW3vA> <xmx:SmXgaSNuhBOBrP3mqUuel78ZgJCfT83uBdrbvE_EBECxkXT8VgmFXQ> <xmx:SmXgab1gbZpmQk5FkmG9foZcOS9eSPo0qQPQg8UJbkT3DItU2ZFJPQ> <xmx:SmXgaUdmSfJLhqsIvzsHuKo180fKPSuvk4EGP7wtcmZIXv8SFqbFrlVI> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 16 Apr 2026 00:27:52 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------DX25lzKMx0jZketZFblRlb6t" Message-ID: <ac5e0acb-6d28-45b1-a64a-e9cca9c42469@HIDDEN> Date: Thu, 16 Apr 2026 07:27:50 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step From: Dmitry Gutov <dmitry@HIDDEN> To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> <afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN> <e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN> <86b6c91b-7129-4975-a954-24c395fdf92d@HIDDEN> <7199b6ea-2b45-4f4f-aaa2-02f020f99a60@HIDDEN> <c8d83eef-bce0-404a-9f8b-21e3e3a1ac48@HIDDEN> <4a6794ed-d311-4d84-8193-64765c380242@HIDDEN> <312fe7c1-d7dc-4fe6-8c59-df17c3446b90@HIDDEN> <eeefb7bf-f801-4064-add3-0ae534d43396@HIDDEN> <54e33aac-0545-4f44-a69e-0a6342b65229@HIDDEN> <a477c780-a205-4617-ac14-6edcaba8a97f@HIDDEN> <f26f4d35-cfaa-4848-b508-0f91f8a0c8ee@HIDDEN> Content-Language: en-US In-Reply-To: <f26f4d35-cfaa-4848-b508-0f91f8a0c8ee@HIDDEN> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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. --------------DX25lzKMx0jZketZFblRlb6t Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 14/04/2026 13:08, Dmitry Gutov wrote: > In theory that should protect us from jerky resizes when the WM blocks > the requested size. I don't see that in practice, though - e.g. GNOME > caps a window resize to the size of the desktop. We could make that > change for top level frames as well if you like, or do that in the next > release. In the meantime, here's the next revision v15, *now* totally reading for testing. Updates are minor: * x_set_window_size_1 uses XtResizeWidget for an immediate resize too, if available. * We skip the calls to x_clear_under_internal_border in both of x_set_window_size_1 and x_set_window_size_and_position_1, to avoid drawing them too early, and on the off change that two-step updates appear again. An important note for testing: we started this solution from the hope that skipping the wait for x event skips an implicit sync with X, allowing the redisplay proceed and render the popup in the new shape properly, without an intermediate state. Alas, the redisplay loop works a little differently, and if there is a frame which will be redisplayed before ours, it hits a synchronization point at the end, flushing the states of all others. I intend to work around this scenario in Lisp. --------------DX25lzKMx0jZketZFblRlb6t Content-Type: text/x-patch; charset=UTF-8; name="set_window_size_and_position_skip_wait_for_event_v15.diff" Content-Disposition: attachment; filename*0="set_window_size_and_position_skip_wait_for_event_v15.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3Avc3Vici5lbCBiL2xpc3Avc3Vici5lbAppbmRleCA2ODJlMTU2 ZGUxMi4uMTFmNzJkZDk2NzkgMTAwNjQ0Ci0tLSBhL2xpc3Avc3Vici5lbAorKysgYi9saXNw L3N1YnIuZWwKQEAgLTIyMjgsNiArMjIyOCw3IEBAIGxvZzEwCiAobWFrZS1vYnNvbGV0ZS12 YXJpYWJsZSAndHJhbnNsYXRpb24tdGFibGUtZm9yLWlucHV0IG5pbCAiMjMuMSIpCiAKICht YWtlLW9ic29sZXRlLXZhcmlhYmxlICd4LWd0ay11c2Utd2luZG93LW1vdmUgbmlsICIyNi4x IikKKyhtYWtlLW9ic29sZXRlLXZhcmlhYmxlICd4LWd0ay1yZXNpemUtY2hpbGQtZnJhbWVz IG5pbCAiMzEuMSIpCiAKIChkZWZ2YXJhbGlhcyAnbWVzc2FnZXMtYnVmZmVyLW1heC1saW5l cyAnbWVzc2FnZS1sb2ctbWF4KQogKGRlZmluZS1vYnNvbGV0ZS12YXJpYWJsZS1hbGlhcyAn aW5oaWJpdC1udWwtYnl0ZS1kZXRlY3Rpb24KZGlmZiAtLWdpdCBhL3NyYy9hbmRyb2lkdGVy bS5jIGIvc3JjL2FuZHJvaWR0ZXJtLmMKaW5kZXggYWMxZjJjODg1NjkuLmE3NGI1OTVkNDk5 IDEwMDY0NAotLS0gYS9zcmMvYW5kcm9pZHRlcm0uYworKysgYi9zcmMvYW5kcm9pZHRlcm0u YwpAQCAtMjI2MCwxMCArMjI2MCwxMyBAQCBhbmRyb2lkX3dhaXRfZm9yX2V2ZW50IChzdHJ1 Y3QgZnJhbWUgKmYsIGludCBldmVudHR5cGUpCiAgICAgewogICAgICAgcGVuZGluZ19zaWdu YWxzID0gdHJ1ZTsKICAgICAgIHRvdGFsbHlfdW5ibG9ja19pbnB1dCAoKTsKLSAgICAgIC8q IFhUcmVhZF9zb2NrZXQgaXMgY2FsbGVkIGFmdGVyIHVuYmxvY2suICAqLworICAgICAgLyog YW5kcm9pZF9yZWFkX3NvY2tldCBpcyBjYWxsZWQgYWZ0ZXIgdW5ibG9jay4gICovCiAgICAg ICBibG9ja19pbnB1dCAoKTsKICAgICAgIGludGVycnVwdF9pbnB1dF9ibG9ja2VkID0gbGV2 ZWw7CiAKKyAgICAgIGlmICghZi0+d2FpdF9ldmVudF90eXBlKQorCWJyZWFrOworCiAgICAg ICB0aW1lX25vdyA9IGN1cnJlbnRfdGltZXNwZWMgKCk7CiAgICAgICBpZiAodGltZXNwZWNf Y21wICh0bW9fYXQsIHRpbWVfbm93KSA8IDApCiAJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMv Z3RrdXRpbC5jIGIvc3JjL2d0a3V0aWwuYwppbmRleCBiMDFiYjY4MDRlZC4uZmQ4Mzk0M2Uw MzMgMTAwNjQ0Ci0tLSBhL3NyYy9ndGt1dGlsLmMKKysrIGIvc3JjL2d0a3V0aWwuYwpAQCAt MTQyMSw2ICsxNDIxLDE2IEBAIHhnX2ZyYW1lX3NldF9zaXplX2FuZF9wb3NpdGlvbiAoc3Ry dWN0IGZyYW1lICpmLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAKICNpZm5kZWYgSEFWRV9Q R1RLCiAgIGdka193aW5kb3dfbW92ZV9yZXNpemUgKGd3aW4sIHgsIHksIG91dGVyX3dpZHRo LCBvdXRlcl9oZWlnaHQpOworICBpZiAoRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSkKKyAgICB7 CisgICAgICAvKiBSZXNpemUgYWxsIGlubmVyIHdpZGdldHMgYW5kIENhaXJvIHN1cmZhY2Ug cmlnaHQgYXdheSBzbyB0aGUKKwkgbmV4dCByZWRpc3BsYXkgZHJhd2luZyBpc24ndCBjbGlw cGVkIHRvIHRoZSBvbGQgc2l6ZS4gICovCisgICAgICBHdGtBbGxvY2F0aW9uIGFsbG9jID0g ezAsIDAsIG91dGVyX3dpZHRoLCBvdXRlcl9oZWlnaHR9OworICAgICAgZ3RrX3dpZGdldF9z aXplX2FsbG9jYXRlIChGUkFNRV9HVEtfT1VURVJfV0lER0VUIChmKSwgJmFsbG9jKTsKKyNp ZmRlZiBVU0VfQ0FJUk8KKyAgICAgIHhfY3JfdXBkYXRlX3N1cmZhY2VfZGVzaXJlZF9zaXpl IChmLCB3aWR0aCwgaGVpZ2h0KTsKKyNlbmRpZgorICAgIH0KICNlbHNlCiAgIGlmIChGUkFN RV9HVEtfT1VURVJfV0lER0VUIChmKSkKICAgICBnZGtfd2luZG93X21vdmVfcmVzaXplIChn d2luLCB4LCB5LCBvdXRlcl93aWR0aCwgb3V0ZXJfaGVpZ2h0KTsKQEAgLTE0MzIsNyArMTQ0 MiwxMSBAQCB4Z19mcmFtZV9zZXRfc2l6ZV9hbmRfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAq ZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICBTRVRfRlJBTUVfR0FSQkFHRUQgKGYpOwog ICBjYW5jZWxfbW91c2VfZmFjZSAoZik7CiAKLSAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAoZikp CisgIC8qIEZvciBjaGlsZCBmcmFtZXMsIGRvbid0IHdhaXQgZm9yIGV2ZW50cyDigJQgdGhh dCB3b3VsZCBmbHVzaCB0aGUgWAorICAgICBidWZmZXIgYW5kIG1pZ2h0IHNob3cgb3V0ZGF0 ZWQgY29udGVudHMgaW4gdGhlIGZyYW1lLiAgU2FtZSBmb3IKKyAgICAgaW52aXNpYmxlIGZy YW1lczogdGhpcyB3YXkgaXMgZmFzdGVyIGFuZCB4X21ha2VfZnJhbWVfdmlzaWJsZSB3aWxs CisgICAgIHdhaXQgZm9yIGV2ZW50IGFueXdheS4gICovCisgIGlmIChGUkFNRV9WSVNJQkxF X1AgKGYpICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKGYpKQogICAgIHsKICAgICAgIC8qIE11 c3QgY2FsbCB0aGlzIHRvIGZsdXNoIG91dCBldmVudHMgKi8KICAgICAgICh2b2lkKWd0a19l dmVudHNfcGVuZGluZyAoKTsKZGlmZiAtLWdpdCBhL3NyYy93aWRnZXQuYyBiL3NyYy93aWRn ZXQuYwppbmRleCBlNzY3YjAwNmUzZi4uYjg0M2JjYTFmYjkgMTAwNjQ0Ci0tLSBhL3NyYy93 aWRnZXQuYworKysgYi9zcmMvd2lkZ2V0LmMKQEAgLTQyOCw2ICs0MjgsMTAgQEAgRW1hY3NG cmFtZVJlc2l6ZSAoV2lkZ2V0IHdpZGdldCkKICAgICAgICBldy0+Y29yZS53aWR0aCwgZXct PmNvcmUuaGVpZ2h0LAogICAgICAgIGYtPm5ld193aWR0aCwgZi0+bmV3X2hlaWdodCk7CiAK KyAgaWYgKEZSQU1FX1BJWEVMX1dJRFRIIChmKSA9PSBldy0+Y29yZS53aWR0aAorICAgICAg JiYgRlJBTUVfUElYRUxfSEVJR0hUIChmKSA9PSBldy0+Y29yZS5oZWlnaHQpCisgICAgcmV0 dXJuOworCiAgIGNoYW5nZV9mcmFtZV9zaXplIChmLCBldy0+Y29yZS53aWR0aCwgZXctPmNv cmUuaGVpZ2h0LAogCQkgICAgIGZhbHNlLCB0cnVlLCBmYWxzZSk7CiAKQEAgLTQ5NSw2ICs0 OTksOCBAQCBFbWFjc0ZyYW1lRXhwb3NlIChXaWRnZXQgd2lkZ2V0LCBYRXZlbnQgKmV2ZW50 LCBSZWdpb24gcmVnaW9uKQogCiAgIGV4cG9zZV9mcmFtZSAoZiwgZXZlbnQtPnhleHBvc2Uu eCwgZXZlbnQtPnhleHBvc2UueSwKIAkJZXZlbnQtPnhleHBvc2Uud2lkdGgsIGV2ZW50LT54 ZXhwb3NlLmhlaWdodCk7CisgIGlmIChldmVudC0+eGV4cG9zZS5jb3VudCA9PSAwKQorICAg IHhfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChmKTsKICAgZmx1c2hfZnJhbWUgKGYp OwogfQogCmRpZmYgLS1naXQgYS9zcmMveGRpc3AuYyBiL3NyYy94ZGlzcC5jCmluZGV4IDk5 NDc0ZDdhYmRjLi5hMGI1NzUxODE4ZSAxMDA2NDQKLS0tIGEvc3JjL3hkaXNwLmMKKysrIGIv c3JjL3hkaXNwLmMKQEAgLTEzNjYwLDExICsxMzY2MCw2IEBAIGNsZWFyX2dhcmJhZ2VkX2Zy YW1lcyAodm9pZCkKIAkgICAgICBpZiAoaXNfdHR5X2ZyYW1lIChmKSkKIAkJY3VycmVudF9t YXRyaWNlc19jbGVhcmVkID0gdHJ1ZTsKIAotI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQot ICAgICAgICAgICAgICBpZiAoRlJBTUVfV0lORE9XX1AgKGYpCi0gICAgICAgICAgICAgICAg ICAmJiBGUkFNRV9SSUYgKGYpLT5jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIpCi0gICAg ICAgICAgICAgICAgRlJBTUVfUklGIChmKS0+Y2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVy IChmKTsKLSNlbmRpZgogCSAgICAgIGZzZXRfcmVkaXNwbGF5IChmKTsKIAkgICAgICBmLT5n YXJiYWdlZCA9IGZhbHNlOwogCSAgICAgIGYtPnJlc2l6ZWRfcCA9IGZhbHNlOwpkaWZmIC0t Z2l0IGEvc3JjL3hmbnMuYyBiL3NyYy94Zm5zLmMKaW5kZXggMzNlYzgzMTJjYjUuLjg3Y2Uz YWYzMGQ3IDEwMDY0NAotLS0gYS9zcmMveGZucy5jCisrKyBiL3NyYy94Zm5zLmMKQEAgLTQ0 ODMsNyArNDQ4Myw3IEBAIHhfd2luZG93IChzdHJ1Y3QgZnJhbWUgKmYpCiAKICAgYXR0cmli dXRlcy5iYWNrZ3JvdW5kX3BpeGVsID0gRlJBTUVfQkFDS0dST1VORF9QSVhFTCAoZik7CiAg IGF0dHJpYnV0ZXMuYm9yZGVyX3BpeGVsID0gZi0+b3V0cHV0X2RhdGEueC0+Ym9yZGVyX3Bp eGVsOwotICBhdHRyaWJ1dGVzLmJpdF9ncmF2aXR5ID0gTm9ydGhXZXN0R3Jhdml0eTsKKyAg YXR0cmlidXRlcy5iaXRfZ3Jhdml0eSA9IFN0YXRpY0dyYXZpdHk7CiAgIGF0dHJpYnV0ZXMu YmFja2luZ19zdG9yZSA9IE5vdFVzZWZ1bDsKICAgYXR0cmlidXRlcy5zYXZlX3VuZGVyID0g VHJ1ZTsKICAgYXR0cmlidXRlcy5ldmVudF9tYXNrID0gU1RBTkRBUkRfRVZFTlRfU0VUOwpk aWZmIC0tZ2l0IGEvc3JjL3h0ZXJtLmMgYi9zcmMveHRlcm0uYwppbmRleCBkNzQ1MWI1Mzhl My4uMDk5NTZhMmMwYTUgMTAwNjQ0Ci0tLSBhL3NyYy94dGVybS5jCisrKyBiL3NyYy94dGVy bS5jCkBAIC0yODQ0OCw2ICsyODQ0OCw5IEBAIHhfd2FpdF9mb3JfZXZlbnQgKHN0cnVjdCBm cmFtZSAqZiwgaW50IGV2ZW50dHlwZSkKICAgICAgIGJsb2NrX2lucHV0ICgpOwogICAgICAg aW50ZXJydXB0X2lucHV0X2Jsb2NrZWQgPSBsZXZlbDsKIAorICAgICAgaWYgKCFmLT53YWl0 X2V2ZW50X3R5cGUpCisJYnJlYWs7CisKICAgICAgIEZEX1pFUk8gKCZmZHMpOwogICAgICAg RkRfU0VUIChmZCwgJmZkcyk7CiAKQEAgLTI4NDc3LDYgKzI4NDgwLDE5IEBAIHhfc2V0X3dp bmRvd19zaXplXzEgKHN0cnVjdCBmcmFtZSAqZiwgYm9vbCBjaGFuZ2VfZ3Jhdml0eSwKICAg ICBmLT53aW5fZ3Jhdml0eSA9IE5vcnRoV2VzdEdyYXZpdHk7CiAgIHhfd21fc2V0X3NpemVf aGludCAoZiwgMCwgZmFsc2UpOwogCisjaWZkZWYgVVNFX1hfVE9PTEtJVAorICBpZiAoRlJB TUVfUEFSRU5UX0ZSQU1FIChmKSAmJiBmLT5vdXRwdXRfZGF0YS54LT53aWRnZXQpCisgICAg eworICAgICAgLyogUmVzaXplIGFsbCBpbm5lciB3aWRnZXRzIGFuZCBDYWlybyBzdXJmYWNl IHJpZ2h0IGF3YXkgc28gdGhlCisJIG5leHQgcmVkaXNwbGF5IGRyYXdpbmcgaXNuJ3QgY2xp cHBlZCB0byB0aGUgb2xkIHNpemUuICAqLworICAgICAgWHRSZXNpemVXaWRnZXQgKGYtPm91 dHB1dF9kYXRhLngtPndpZGdldCwKKwkJICAgICAgd2lkdGgsIGhlaWdodCArIEZSQU1FX01F TlVCQVJfSEVJR0hUIChmKSwgMCk7CisjaWZkZWYgVVNFX0NBSVJPCisgICAgICB4X2NyX3Vw ZGF0ZV9zdXJmYWNlX2Rlc2lyZWRfc2l6ZSAoZiwgd2lkdGgsIGhlaWdodCk7CisjZW5kaWYK KyAgICB9CisgIGVsc2UKKyNlbmRpZgogICBYUmVzaXplV2luZG93IChGUkFNRV9YX0RJU1BM QVkgKGYpLCBGUkFNRV9PVVRFUl9XSU5ET1cgKGYpLAogCQkgd2lkdGgsIGhlaWdodCArIEZS QU1FX01FTlVCQVJfSEVJR0hUIChmKSk7CiAKQEAgLTI4NDkyLDMwICsyODUwOCwyNSBAQCB4 X3NldF93aW5kb3dfc2l6ZV8xIChzdHJ1Y3QgZnJhbWUgKmYsIGJvb2wgY2hhbmdlX2dyYXZp dHksCiAgIGlmICghTklMUCAoVnhfbGF4X2ZyYW1lX3Bvc2l0aW9uaW5nKSkKICAgICByZXR1 cm47CiAKLSAgLyogTm93LCBzdHJpY3RseSBzcGVha2luZywgd2UgY2FuJ3QgYmUgc3VyZSB0 aGF0IHRoaXMgaXMgYWNjdXJhdGUsCisgIC8qIE5vdywgc3RyaWN0bHkgc3BlYWtpbmcsIHdl IGNhbid0IGJlIHN1cmUgdGhhdCB0aGlzIGlzIGZpbmFsLAogICAgICBidXQgdGhlIHdpbmRv dyBtYW5hZ2VyIHdpbGwgZ2V0IGFyb3VuZCB0byBkZWFsaW5nIHdpdGggdGhlIHNpemUKICAg ICAgY2hhbmdlIHJlcXVlc3QgZXZlbnR1YWxseSwgYW5kIHdlJ2xsIGhlYXIgaG93IGl0IHdl bnQgd2hlbiB0aGUKICAgICAgQ29uZmlndXJlTm90aWZ5IGV2ZW50IGdldHMgaGVyZS4KIAot ICAgICBXZSBjb3VsZCBqdXN0IG5vdCBib3RoZXIgc3RvcmluZyBhbnkgb2YgdGhpcyBpbmZv cm1hdGlvbiBoZXJlLAotICAgICBhbmQgbGV0IHRoZSBDb25maWd1cmVOb3RpZnkgZXZlbnQg c2V0IGV2ZXJ5dGhpbmcgdXAsIGJ1dCB0aGF0Ci0gICAgIG1pZ2h0IGJlIGtpbmQgb2YgY29u ZnVzaW5nIHRvIHRoZSBMaXNwIGNvZGUsIHNpbmNlIHNpemUgY2hhbmdlcwotICAgICB3b3Vs ZG4ndCBiZSByZXBvcnRlZCBpbiB0aGUgZnJhbWUgcGFyYW1ldGVycyB1bnRpbCBzb21lIHJh bmRvbQotICAgICBwb2ludCBpbiB0aGUgZnV0dXJlIHdoZW4gdGhlIENvbmZpZ3VyZU5vdGlm eSBldmVudCBhcnJpdmVzLgotCi0gICAgIFBhc3MgdHJ1ZSBmb3IgREVMQVkgc2luY2Ugd2Ug Y2FuJ3QgcnVuIExpc3AgY29kZSBpbnNpZGUgb2YKLSAgICAgYSBCTE9DS19JTlBVVC4gICov Ci0KLSAgLyogQnV0IHRoZSBDb25maWd1cmVOb3RpZnkgbWF5IGluIGZhY3QgbmV2ZXIgYXJy aXZlLCBhbmQgdGhlbiB0aGlzIGlzCi0gICAgIG5vdCByaWdodCBpZiB0aGUgZnJhbWUgaXMg dmlzaWJsZS4gIEluc3RlYWQgd2FpdCAod2l0aCB0aW1lb3V0KQotICAgICBmb3IgdGhlIENv bmZpZ3VyZU5vdGlmeS4gICovCi0gIGlmIChGUkFNRV9WSVNJQkxFX1AgKGYpKQorICAgICBX ZSBjb3VsZCBqdXN0IGxldCB0aGUgQ29uZmlndXJlTm90aWZ5IHVwZGF0ZSBldmVyeXRoaW5n LCBidXQKKyAgICAgd2FpdGluZyBjcmVhdGVzIGFuIGltcGxpY2l0IFggZmx1c2ggd2hpY2gg bWlnaHQgZmxpY2tlciB3aXRoCisgICAgIG91dGRhdGVkIGNvbnRlbnRzIGluIHRoZSBmcmFt ZS4gIEZvciBjaGlsZCBmcmFtZXMsIHRoZSB3aW5kb3cKKyAgICAgbWFuYWdlciBpcyBub3Qg YSBjb25jZXJuIGFuZCBpdCdzIGJldHRlciB0byBmaW5pc2ggcXVpY2tseS4gICovCisgIGlm IChGUkFNRV9WSVNJQkxFX1AgKGYpICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKGYpKQogICAg IHsKKyAgICAgIC8qIFRoZSBldmVudCBtYXkgY3JlYXRlIGRlbGF5ZWQgc2l6ZSBjaGFuZ2Ug KGRlbGF5ZWQgYmVjYXVzZSB3ZQorCSBjYW4ndCBydW4gTGlzcCBjb2RlIGluc2lkZSBvZiBh IEJMT0NLX0lOUFVUKSB3aGljaCB3aWxsIGJlCisJIGFwcGxpZWQgcmlnaHQgYWZ0ZXIgYnkg ZG9fcGVuZGluZ193aW5kb3dfY2hhbmdlLiAgKi8KICAgICAgIHhfd2FpdF9mb3JfZXZlbnQg KGYsIENvbmZpZ3VyZU5vdGlmeSk7CiAKICAgICAgIGlmIChDT05TUCAoZnJhbWVfc2l6ZV9o aXN0b3J5KSkKIAlmcmFtZV9zaXplX2hpc3RvcnlfZXh0cmEKLQkgIChmLCBidWlsZF9zdHJp bmcgKCJ4X3NldF93aW5kb3dfc2l6ZV8xLCB2aXNpYmxlIiksCisJICAoZiwgYnVpbGRfc3Ry aW5nICgieF9zZXRfd2luZG93X3NpemVfMSwgd2FpdGVkIGZvciBldmVudCIpLAogCSAgIEZS QU1FX1BJWEVMX1dJRFRIIChmKSwgRlJBTUVfUElYRUxfSEVJR0hUIChmKSwgd2lkdGgsIGhl aWdodCwKIAkgICBmLT5uZXdfd2lkdGgsIGYtPm5ld19oZWlnaHQpOwogICAgIH0KQEAgLTI4 NTIzLDcgKzI4NTM0LDcgQEAgeF9zZXRfd2luZG93X3NpemVfMSAoc3RydWN0IGZyYW1lICpm LCBib29sIGNoYW5nZV9ncmF2aXR5LAogICAgIHsKICAgICAgIGlmIChDT05TUCAoZnJhbWVf c2l6ZV9oaXN0b3J5KSkKIAlmcmFtZV9zaXplX2hpc3RvcnlfZXh0cmEKLQkgIChmLCBidWls ZF9zdHJpbmcgKCJ4X3NldF93aW5kb3dfc2l6ZV8xLCBpbnZpc2libGUiKSwKKwkgIChmLCBi dWlsZF9zdHJpbmcgKCJ4X3NldF93aW5kb3dfc2l6ZV8xLCBub3Qgd2FpdGVkIGZvciBldmVu dCIpLAogCSAgIEZSQU1FX1BJWEVMX1dJRFRIIChmKSwgRlJBTUVfUElYRUxfSEVJR0hUIChm KSwgd2lkdGgsIGhlaWdodCwKIAkgICBmLT5uZXdfd2lkdGgsIGYtPm5ld19oZWlnaHQpOwog CkBAIC0yODU1NCw3ICsyODU2NSw4IEBAIHhfc2V0X3dpbmRvd19zaXplIChzdHJ1Y3QgZnJh bWUgKmYsIGJvb2wgY2hhbmdlX2dyYXZpdHksCiAgICAgeF9zZXRfd2luZG93X3NpemVfMSAo ZiwgY2hhbmdlX2dyYXZpdHksIHdpZHRoLCBoZWlnaHQpOwogI2Vsc2UgLyogbm90IFVTRV9H VEsgKi8KICAgeF9zZXRfd2luZG93X3NpemVfMSAoZiwgY2hhbmdlX2dyYXZpdHksIHdpZHRo LCBoZWlnaHQpOwotICB4X2NsZWFyX3VuZGVyX2ludGVybmFsX2JvcmRlciAoZik7CisgIGlm ICghRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSkKKyAgICB4X2NsZWFyX3VuZGVyX2ludGVybmFs X2JvcmRlciAoZik7CiAjZW5kaWYgLyogbm90IFVTRV9HVEsgKi8KIAogICAvKiBJZiBjdXJz b3Igd2FzIG91dHNpZGUgdGhlIG5ldyBzaXplLCBtYXJrIGl0IGFzIG9mZi4gICovCkBAIC0y ODU3OSwxNiArMjg1OTEsMzUgQEAgeF9zZXRfd2luZG93X3NpemVfYW5kX3Bvc2l0aW9uXzEg KHN0cnVjdCBmcmFtZSAqZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgIHhfd21fc2V0 X3NpemVfaGludCAoZiwgMCwgZmFsc2UpOwogCi0gIFhNb3ZlUmVzaXplV2luZG93IChGUkFN RV9YX0RJU1BMQVkgKGYpLCBGUkFNRV9PVVRFUl9XSU5ET1cgKGYpLAotCQkgICAgIHgsIHks IHdpZHRoLCBoZWlnaHQgKyBGUkFNRV9NRU5VQkFSX0hFSUdIVCAoZikpOworI2lmZGVmIFVT RV9YX1RPT0xLSVQKKyAgaWYgKEZSQU1FX1BBUkVOVF9GUkFNRSAoZikgJiYgZi0+b3V0cHV0 X2RhdGEueC0+d2lkZ2V0KQorICAgIHsKKyAgICAgIC8qIENsZWFyIHdpZGdldCdzIHBvc2l0 aW9uIGNvb3JkaW5hdGVzIGJlY2F1c2UgaXQgb25seSBzZW5kcworCSBjaGFuZ2VkIHZhbHVl cyB3aXRoIGl0cyBYQ29uZmlndXJlV2luZG93IGNvbW1hbmQuICBBbmQgdGhlc2UKKwkgYXJl IGxpa2VseSBvdXRkYXRlZCBiZWNhdXNlIFh0RGlzcGF0Y2hFdmVudCBkb2VzIG5vdCBzYXZl IHRoZW0uCisJIFRoZSBhbHRlcm5hdGl2ZSB3b3VsZCBiZSB0byBhbHdheXMgdXNlIFh0TW92 ZVdpZGdldCBpbnN0ZWFkIG9mCisJIFhNb3ZlV2luZG93LiAgKi8KKyAgICAgIGYtPm91dHB1 dF9kYXRhLngtPndpZGdldC0+Y29yZS54ID0gLTE7CisgICAgICBmLT5vdXRwdXRfZGF0YS54 LT53aWRnZXQtPmNvcmUueSA9IC0xOworICAgICAgLyogUmVzaXplIGFsbCBpbm5lciB3aWRn ZXRzIGFuZCBDYWlybyBzdXJmYWNlIHJpZ2h0IGF3YXkgc28gdGhlCisJIG5leHQgcmVkaXNw bGF5IGRyYXdpbmcgaXNuJ3QgY2xpcHBlZCB0byB0aGUgb2xkIHNpemUuICAqLworICAgICAg WHRDb25maWd1cmVXaWRnZXQgKGYtPm91dHB1dF9kYXRhLngtPndpZGdldCwKKwkJCSB4LCB5 LCB3aWR0aCwgaGVpZ2h0ICsgRlJBTUVfTUVOVUJBUl9IRUlHSFQgKGYpLCAwKTsKKyNpZmRl ZiBVU0VfQ0FJUk8KKyAgICAgIHhfY3JfdXBkYXRlX3N1cmZhY2VfZGVzaXJlZF9zaXplIChm LCB3aWR0aCwgaGVpZ2h0KTsKKyNlbmRpZgorICAgIH0KKyAgZWxzZQorI2VuZGlmCisgICAg WE1vdmVSZXNpemVXaW5kb3cgKEZSQU1FX1hfRElTUExBWSAoZiksIEZSQU1FX09VVEVSX1dJ TkRPVyAoZiksCisJCSAgICAgICB4LCB5LCB3aWR0aCwgaGVpZ2h0ICsgRlJBTUVfTUVOVUJB Ul9IRUlHSFQgKGYpKTsKIAogICBTRVRfRlJBTUVfR0FSQkFHRUQgKGYpOwogCi0gIGlmIChG UkFNRV9WSVNJQkxFX1AgKGYpKQorICAvKiBTYW1lIGFzIHhfc2V0X3dpbmRvd19zaXplXzEu ICAqLworICBpZiAoRlJBTUVfVklTSUJMRV9QIChmKSAmJiAhRlJBTUVfUEFSRU5UX0ZSQU1F IChmKSkKICAgICB4X3dhaXRfZm9yX2V2ZW50IChmLCBDb25maWd1cmVOb3RpZnkpOwogICBl bHNlCi0gICAgLyogQ2FsbCBhZGp1c3RfZnJhbWVfc2l6ZSByaWdodCBhd2F5IGFzIHdpdGgg R1RLLiAgSXQgbWlnaHQgYmUKLSAgICAgICB0ZW1wdGluZyB0byBjbGVhciBvdXQgZi0+bmV3 X3dpZHRoIGFuZCBmLT5uZXdfaGVpZ2h0IGhlcmUuICAqLwogICAgIGFkanVzdF9mcmFtZV9z aXplIChmLCBGUkFNRV9QSVhFTF9UT19URVhUX1dJRFRIIChmLCB3aWR0aCksCiAJCSAgICAg ICBGUkFNRV9QSVhFTF9UT19URVhUX0hFSUdIVCAoZiwgaGVpZ2h0KSwKIAkJICAgICAgIDUs IDAsIFF4X3NldF93aW5kb3dfc2l6ZV8xKTsKQEAgLTI4NjA4LDcgKzI4NjM5LDggQEAgeF9z ZXRfd2luZG93X3NpemVfYW5kX3Bvc2l0aW9uIChzdHJ1Y3QgZnJhbWUgKmYsIGludCB3aWR0 aCwgaW50IGhlaWdodCkKICAgeF9zZXRfd2luZG93X3NpemVfYW5kX3Bvc2l0aW9uXzEgKGYs IHdpZHRoLCBoZWlnaHQpOwogI2VuZGlmIC8qIFVTRV9HVEsgKi8KIAotICB4X2NsZWFyX3Vu ZGVyX2ludGVybmFsX2JvcmRlciAoZik7CisgIGlmICghRlJBTUVfUEFSRU5UX0ZSQU1FIChm KSkKKyAgICB4X2NsZWFyX3VuZGVyX2ludGVybmFsX2JvcmRlciAoZik7CiAKICAgLyogSWYg Y3Vyc29yIHdhcyBvdXRzaWRlIHRoZSBuZXcgc2l6ZSwgbWFyayBpdCBhcyBvZmYuICAqLwog ICBtYXJrX3dpbmRvd19jdXJzb3JzX29mZiAoWFdJTkRPVyAoRlJBTUVfUk9PVF9XSU5ET1cg KGYpKSk7Cg== --------------DX25lzKMx0jZketZFblRlb6t--
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 14 Apr 2026 10:08:54 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 14 06:08:54 2026 Received: from localhost ([127.0.0.1]:44281 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wCahQ-0002C5-0w for submit <at> debbugs.gnu.org; Tue, 14 Apr 2026 06:08:54 -0400 Received: from fhigh-b1-smtp.messagingengine.com ([202.12.124.152]:50217) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1wCahM-0002Aj-Na for 80662 <at> debbugs.gnu.org; Tue, 14 Apr 2026 06:08:49 -0400 Received: from phl-compute-01.internal (phl-compute-01.internal [10.202.2.41]) by mailfhigh.stl.internal (Postfix) with ESMTP id A249B7A0136; Tue, 14 Apr 2026 06:08:42 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-01.internal (MEProxy); Tue, 14 Apr 2026 06:08:42 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1776161322; x=1776247722; bh=qnymwDo6Etl+nARlf4fRbAcobeCbDc3Kn+q/tbDIK/8=; b= XM09+FsPGgLiL993CsP33X5u51JYrYjyHj4Dr3Hbx/4etM0Znu4g5eVseYeobaGm ajC1hwF5L2ywy9iLOQuDtnu6aSjYOR+jINWLYlQ6XOmvT0pPY/XfPWoLGDVJPSMU de3G01uzulvIpWrXp84A7E8mBhG8BuTdKKunfCKmZCFPRewaZjZAn7NncU5Adxjv SykroAgJUlmnr/LGcyDD2c3e4QdimaL0FTo6VPgq+ESKGAyhXAHGqK/M3cU1v1KS JUdrZGve3D1L/yusW8P3A8xadp3R1pcw3Kms2+k+cB93/Sj+ZfW1Qzf/egiV2Kqn qeVXy20hwL5hK/RLmuqn8A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1776161322; x= 1776247722; bh=qnymwDo6Etl+nARlf4fRbAcobeCbDc3Kn+q/tbDIK/8=; b=m 0HGD6PCI9yECBwPR95TrD1ch0V3OYUZT5cIzSD+eC3zRVDtqh2lv8HMQLhzwcCZt wYqkTbuPsTNqzWuB/dTU8dSASRSPDzPvKR3jkhHiB+AZYymWtvRnoLsRx5Y8h4aW sgHIbnXkepf9A36R4MjNvjjL/OaylNEE2bMpow/mRyJcovRghMzSVfak6p/zPJJ7 onKXgNGA213lfHqU7zrhGa4WUT4Pn6jqueD3M2cdxiQuyBH2XDIQWUh36DzqdGvF Blr6sz/O3PKr9iAGz+tTN4fdYJKKxDvaRFigjN5w0b8Yu6diOw9i5Gkov9i7IMTx JRwmFGiX1H8Iznc3eeOdw== X-ME-Sender: <xms:KRLeaXmwpN-fkLAX9MLUqeHuLRTo1GODjPXJgkX8iG60rp5kaVmDzw> <xme:KRLeaSTRCX8XQc83PAPidA8qOwFnpZK_9qsh_cxEWDL-wCUfffhbzM1wDrTGA0u1Y 8Rb7J2KlWwhDKDgGCDahoKzOpjsJWvTweQU0AFNJ3lel1LXFtz7L-2d> X-ME-Received: <xmr:KRLeabBswiKDpXRsRIQaoofiQbBkMStI6EteEvEWSeJ1hOzftlBVdfrVqRbO4q7dq3g7MA> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdegtdekjecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefkffggfgfuvfevfhfhjggtgfesthejredttddvjeenucfhrhhomhepffhmihhtrhih ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh hnpeetudeljeegheetgfehgeejkeeuhedvveeikeeufedtvddtveefhfdvveegudejheen ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepfedpmhhouggvpehsmhhtphho uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd eiiedvseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepmhgrihhlsegurghn ihgvlhdqmhgvnhgulhgvrhdruggv X-ME-Proxy: <xmx:KRLeaZTqeDVk4YE6yQnMwx2ymflKIwF_Q7VRQ09ofPJ2XgwLJzB0yQ> <xmx:KRLeaZpUDmokNyyDCneAra0xf8wbGcR6l4-O60ope6mwhq5EhdP8-w> <xmx:KRLeabzipZw3b92UXsYDiSj1GIdrwdr6UQfX4H-u45FWB7RZON6Jww> <xmx:KRLeaeJ7eTc7SWPjXSAOC8MO3U7tlvFKbQW0_F_DUrP6TR8OGs1cRw> <xmx:KhLeafCzMWW_W_NFOwCiJY6JvMZxRvisrKGGCOOWSevCfPpIpNqUlhGZ> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 14 Apr 2026 06:08:40 -0400 (EDT) Message-ID: <f26f4d35-cfaa-4848-b508-0f91f8a0c8ee@HIDDEN> Date: Tue, 14 Apr 2026 13:08:38 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> <afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN> <e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN> <86b6c91b-7129-4975-a954-24c395fdf92d@HIDDEN> <7199b6ea-2b45-4f4f-aaa2-02f020f99a60@HIDDEN> <c8d83eef-bce0-404a-9f8b-21e3e3a1ac48@HIDDEN> <4a6794ed-d311-4d84-8193-64765c380242@HIDDEN> <312fe7c1-d7dc-4fe6-8c59-df17c3446b90@HIDDEN> <eeefb7bf-f801-4064-add3-0ae534d43396@HIDDEN> <54e33aac-0545-4f44-a69e-0a6342b65229@HIDDEN> <a477c780-a205-4617-ac14-6edcaba8a97f@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <a477c780-a205-4617-ac14-6edcaba8a97f@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) On 14/04/2026 11:13, martin rudalics wrote: > > * Fix for an annoying bug with x_set_window_size_and_position_1 not > > updating the position _sometimes_. The Xt widget tracks the position > > on screen internally too, and it became an issue with the use of > > XtConfigureWidget directly. Resetting the widget's internal > > coordinates to -1 satisfies the "have they changed" test. > > And why shan't we do that for top level frames too? Why not use XtConfigureWidget for resizing top level frames, you mean? No big reason: this way it's a smaller change. If we're going to continue to use x_wait_for_event for top level ones, the resize will happen from the event handler. In theory that should protect us from jerky resizes when the WM blocks the requested size. I don't see that in practice, though - e.g. GNOME caps a window resize to the size of the desktop. We could make that change for top level frames as well if you like, or do that in the next release.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 14 Apr 2026 08:13:41 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 14 04:13:40 2026 Received: from localhost ([127.0.0.1]:42313 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wCYtu-0000Fo-UL for submit <at> debbugs.gnu.org; Tue, 14 Apr 2026 04:13:40 -0400 Received: from mout.gmx.net ([212.227.17.20]:51369) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1wCYto-0000Dk-Jc for 80662 <at> debbugs.gnu.org; Tue, 14 Apr 2026 04:13:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1776154403; x=1776759203; i=rudalics@HIDDEN; bh=Tpwh6QAImdLDErmZWO52sAOLqwlrS94q5cWnUkQnBcc=; 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=E6EaQqmb5WQ0CgOwnTX8rLMCFq38JB6BY3ViRY+6QFHQ8yjup3GFfakkx6cvZzye 5+vxgQ9AxhB5w3YzqQ9q8dI2GB2JcXgIptCiZmt9mCRuCacLCd+rCj//GUmR717Oe kpYQc4polh51fie2q3Ev0A2C1kzv7Ygefpo+xA8vdkvs9BKbWwLqWezGTmCBSkxfO fO0iwfA8IRE5LgwVng/mvwq4SeWywHXjUNNi5CIBU5TZ0sDM828X2iUfpQNqtgoWe WLUIyJULGA8OkXsqJW5RcVV3eC0zpluGkps83HTg+UactfIMrThCfiwyGqUN1+0+j lcoLngZvtuzxhF88mg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M1Hdq-1wAv0L2VRK-006JZv; Tue, 14 Apr 2026 10:13:23 +0200 Message-ID: <a477c780-a205-4617-ac14-6edcaba8a97f@HIDDEN> Date: Tue, 14 Apr 2026 10:13:22 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> <afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN> <e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN> <86b6c91b-7129-4975-a954-24c395fdf92d@HIDDEN> <7199b6ea-2b45-4f4f-aaa2-02f020f99a60@HIDDEN> <c8d83eef-bce0-404a-9f8b-21e3e3a1ac48@HIDDEN> <4a6794ed-d311-4d84-8193-64765c380242@HIDDEN> <312fe7c1-d7dc-4fe6-8c59-df17c3446b90@HIDDEN> <eeefb7bf-f801-4064-add3-0ae534d43396@HIDDEN> <54e33aac-0545-4f44-a69e-0a6342b65229@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <54e33aac-0545-4f44-a69e-0a6342b65229@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:PiQ5OlrqVY7LW4E6Fpop4yO4IiIcBMbqRQZhY8fL6makAlwXvH6 tQcpHb+bXhWTcUQCxMZVsHuvkIhKShzoe1bezAuf4gDJTK7HoP355zPyPkpyEvTMS8yooXZ s0CvkjJ/Wj1sf2eB1GGbeY34KJ++40VRZMvx6rnxzKvolSj4l2D7lMhdydOvzDLbYihsSV8 ggsX6G2GPBsiHIBCo9HKQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:yAB+osrTuAE=;OyZx47ziB3iUNNSUBaLpDI9dVZD cpqcyzztyHRmWYmHqJevWK5dVEoYKPSuUsT7FO0WTiyTyDV6yzg3phqlgOt4BgIiS1Ix0faSV 905dFcfPbeLKrLuHQTA5Bc7umQEb0jaBL2CdYB7xFiGEeiOq2dV/hJUWzztEJIhXcWHb9r5eG DCuHLWy6FnFiGicmnqMwqjd36yWzM0HYRq5nfBm8TbUvE17go0NUuW+Lz0gNwneEHitZ8uPkW Fnl72inmFS16GKBBP/fr58JRXALYJUWFOCQkQJvr2+ARglrfErocCVTAUQ+APi+2PS1HEy1GF pd4NEuhp63f7n1/v10OnBNgdc1TFweehb3qB2IyLatM6d37peLHdFFMxqHqTLHF4Hc1KYoNmu RKSpMKlOpHi52F89GaDoQrXft5CnxY0m/VSS1FHrJ56wUcYnOyckLcUhAyS7a5YL1gRrP3U5a dtkxtE5RIqHZbZg+g9UYHhxLZBdV5tdHJDV6m4ACwt9EkM48ZsZrcdkkhcDgASArtg3oWKOGa wGQStGEZHWEaRGoMMUeFxUVtTnXVRUhVFODYMQp6wyMi6BNCSQSgRu7sSCFlhF63rQF5foIei gWELIJlMtQZbNppPxjjaHDq0QnQIbPUlG4mSfV68+CCqEX4KEI8fQhWHNlxmHPlYCgS+t6O0W cHA2a0VwKiUceknn6muZ8nabdc0gKBZPlCyT7LGOYFBzUdp9xFokjKJwoBGe61098s/ofbdJE meKN6yXOqvsu0SDxL46E5h1exmbWIpCMqXTf/jkvGgLdX4iKIqbSk18KsQE+lO29H1gfhpVQf RxpCcGNmQuodoGhIFIQ7IwqswKN2DFxp8005a6kVclUVyRD5UpbnGkd/wnfabJJomwPdkhPCr uNWEDIH02AgF/oOdc1ZVFwSwzfyNq8NmHZOYum02PJDo1wLDdB9kYeV/Msl3XdseyoFbeWLg1 3cYe3Hw7hCoNK8qWigJ1ZyPmtIkDD/n6GwNCopsibD2DPIlOrOGisFIi4RdpOymMacAYHmZgT 0oFYpni/63meg1i2TqZ/2yV0D5UqE2PzsQnHoKg7kFbvx0CzRlqZk/I8ioGGjd6QLugqXpCZw RXvK/utePeBKctu0pLBGpN2dUdbawnwApip5GwHzYygHkvKh6ucTMRPUAN91DW0d1PtyFZs/k AfvCjfai5tM6yM66sopZDMRxl1hIAxI1zJjEuzEswRRolTzG0gMCrC/bMcJosagBM+OFo2ryL +Kv6aPFLWA5NTiLyi7n7efc9/pEXaUoKS7eodb9pg7Z0YiLdDxBzv9EaMZHXi6JdyZ+rz+wBn pEgaCYrTaOLq5FoOEeZtKkoBL5jqLD2U5PJ6C2jWiblGgRmaWPkImU547Bmn9cW7YDAu3QuYn l9p9KO2VQX3Nk/HtcZS0u1ZPl5OgmXeFbSjOi3Bu5zYb6PwDPa38ACXOb2oegwNZ6onDzj4lC GSNgKGPO6DvxeCcM3aZxPjeLBRCTsouuznzVkFpi3R2Pm6tP82XfnugEKiTvMXeyzmrrQcLc0 82oBRiLt46VFZTU7Vd3ss2j05Dwpt1JWz4P1P0VPQfEvtHzmZBXr93YrAWm9Gkxxwdt5MKl17 HVEjhuPS2U0xoFMlVAoiHMox/NPMj7lYccbDaLUh390LWR6HnZDugzPSu6B546oG0C7V+x0xa Rmjt8SVVloh5VbfArgDEKJhGvu7lrsqehH9sKXZcLbH90sEx8QLQjhmNcXdiarnqGGqUZzWqL /VKh23GJpu2vl0Becl06/ZKk0aWwDMk3GiHaYsT62H5tK1JAKYZMTNuCwmp6mJgJQKtanYKtr WOGKG/9bk8dG8kLph7vm9bmwHvjDZLemZzAMcC2eJGivApelBJtAwcTXAH/tv2ugyyzzsTK78 rO4rhAYRWeSnEUeR5vwvl+tUlErDhsZq271NMXykvQKm3GMnvqsfWzoqekeMbLysqDRn1SZpz ce4+7h/jNxvPHYCDy6xM+E8tULVqBP1IxvSv3Th00PaqJCRBlngajJMBO/krAgOLu6EpiiAjq dNbHcYp5WxAHv49ekObUFOPYgr4Am+9GHqBNy80CeWofBjpGmelaFK2AicbYAU3ke5mZSyqQ4 VfwHE+9UX/pCPv0Qg4Q+2fMriDXM3S6dox3r0P0yGddXjBjY9D3DQL04726PmH9VdTv/o4hDv py0sSc2sWs7C2p3Zck4n5lgyRyNQT8htNuBXxbc8YCqp5RROl9Ia70KgwkAYd5H34j18bAPFa /q6skHVumdv27UY6Js+XRCEhSd23r9WWgaiqUoYIBqeb2vKMURpUeKBfSAfKCqGtZqw5oI4Pw ebInzgIymq4gkzMANSc3bMNY9teAWhIA5vuz/GmzWnBhBNNFU4SUZPX7mtKjzl0p5mp+i0MZ6 nZr8rblRO3tLDsXET8HJjgWuSggBRH8uu7FapGXUIRHIGQsTDIyWX0iP2zAlzFOG2vonOAICk U/Tlk5PqPoqCKQSMWzwB7UI9Om34ZzdaZbFOc0EG+NyEl1PdsHyoVYvDxGdA2m40NrBZ70Wjc Zfr3hC6mEQUOGRIFP//+UDFpLs5Ms4Rs9/ttCZvBeplVo1gV4S25LZuAj2R6XcWU4gHjEMZtM YI/LY9+r836cKjJbEY9F17LFzFFRbpj7HkBn0TTVVhd4qgGEoJYh4LFSfWh4lWxsdTKPsHMWG aLT2h8M0Syig6P1I4eh/m9nSrPfxjd2yHRCQMAl2pJ/3ovODDkB1T3VCKp91qo7seYX+3Qx9g s08BO0kWl1wkQXERgIHPNVGYpSUximPHrjzBbP9ztwwsRF5s066gHSlMVReQ4+6zAZyvvbHUN LDqEpXQL2ZEo1nWZn5jRpXJtMCfij5LYZNR4bp1qY91790m3hfzFUt8e1retQ7VekX7r3GpHf Lm17OdXRa6qdm7pU/BLRXrcJyljf6ZQXRguVoYXB11kBSdHVHDe215HQ7cxLYauk6KbtiR1Ni cksjYWjRE5H5RNTdwrZULyjP/IUuk50mcqzL0/ReZWkTacQ+zmy9N6AVlFJ4gZI41+9HXgrk+ lKlMIOGnSjPta5uH5UNepIhRBgNhZkYoGAe+vIp4XmzIG6lkmddkHQqlCV0fbrgQw0PHInMRy nbtlwQyHd2U8L7WleY7cPSw/SyiERT12BDCeyxTZHxh7Y3Va9NHunvWX8X8Li6VqCqB4L6OXN 8PAJSl5EUCFCrETYeaMWqHoMh78vX17aHn7ebGxm4WVCibMnQDJ1FiWsIf9FUYcRfJGNOS8WX F4Kb5w1WPhVMgKOL6crtuzs1HXlhtQfbo5xg1NpDjlxBlGtlI9zu1KGF5QvzeIpnnSQrA0bB3 sVZmsg7A99hzrk4Dz+Z+si/a34vap/VUt1Nsq1HukpRdk8kJ8+RiFQFCalAkx/OsVL3wvHdHk CeqKXA4s3pigPVjxvhgDGpr3EdwpVbVfQoCJS83sI3SYkcfoZCuyo/9s+mw0VeKOU+cGLzzKk 7K8wZH+uujhu+MG5mbpkFznBrXSRhGNyyP2CgbHMjIxX/s4rjKOsRhaLOVlXwITyO3k8zArT1 cpY8xu85ciegnQyzq+1zsRZIzrAS3/Jl+jZrqQgzcL+NHf2Ds8FdnjBGW1tUeqC3pmQBHTPar E9p7yly5OBR3PPbojIIY72qdHj1qaZjNvIH+rjlbnPMJuGYxp4GrL+yYVeb1W9OwIPyFeNuej sYs9N2yAtdXODz4vFv0n0krGSE44wnMmIOZVRTdMoNAYN3B2c25tV0Ot2REGIe/CRLj7pwINp t9u/YgLLBKI76ITMBLG2vpNX1FF/Sgs49go03rj1NzcEcWoaBk/4oE8chYqt3mYAu3FP/Oil1 w074YfJkp9yirJ5lo7LLT5Cm0sq+ndHPXurbeqqc1HebGUjFi2nyKH/dVjm3aKEtdC+C3HNDY s5oeEWD/4MuyRRGLbQzR+6sJneQqSp8m2dIrcG2ROXoKVocNFXKR/tcCxjx/JbyakoNrzvdpS RnMnTpc9s14edaeukAIsKd1ICij+T+kTJU1Nwh3lirYs7gryhVmu+uGxuOd78SdErOneF5rOP M5ANG1Q+0aRN0KZwswK/OPcdAVDSKvToJbizJ9hHls40sFeyHgxO3SCLplw22qHuB2ZhOlmQQ HCbb0VuXS0kIxP6WSld5c6EYChLczFmAc6zG8wbEqbdEZLFydFERJuKQywk7soZLposC4DwCK knsxJNoengEGZNw/mRD/5OVo3rcoGlAnGKrOWiJ3c38qwsvUJ5UNTk+/seW2O92TmJq0U42Rh 7Z2zIkzwviPu7spSKk9bT5afA0dcDNkc3NEclBOHdbOmymUDzz5QL5KWJf8O+PcurLnGn9/AL 6jFEyrOg9YRd0KF0kujmP1Vyy+s42aGc1zz4FIngLImsEo2Z1ZQb9Hf4GPhmTQYC9wf7Xxs8E sPyGEc5RGGVzvWiANzdMorunWT4GBG4qAYRyqhKensK2rd8+48uAc32Y5cO1KGAop7315G0ne ST85VMQVrfeE0sA5NHPXKChlMCHRMDZoeeEH12Dc/ze7n7mCBPqNc9X0d/ZB2yg3a/FQLfSIj EDc5agVeuRQqGnnBSNnjtaorzrdtwielEV5mlDWdCC3osPkqs8+HRcvccAYW3lLo75coWvjVM 81wmIDUuzrG+5p+VV04+9gSW01ge2xrxMvd7ioIorhP7NpXR6YLR1/MoHAoOVl4vTN2W3Qcck tYxHYE1TpQSCvU8U0FtR2SMMHc6mywcqhQJSwwleu2QYcGLhlJUI1glFRqCpSqwfMlgNS4JOx K+9CxiHd1nN/1aKp4ePg2EeAAbsdNB9oaOyM9D1s0tLcZLKAbpeNi8OALi9jY6OaR14d+SQK3 gQRO41fTnIUFdaOT2Ix3TMShOR7+Si76R0tG16M5BPNMmKPeLhW9L2duCuEHjkhBFoLND73ui 84ICmiIpME24/rO8X6LZn41qFzvQe887sLvcu3/FDIyMpSmFbJ6/m/uGcaQsMWi82KbZl17fe rFZI1efQZG/yHiPHe5QlM9zR937+YVgOxUH+HeuRC1gauQnT36A9aoMvpanPkBZupCpkStXCW t69aDplNC2FOmunIL1bC0OSATHOKTqYX3bDcMlTFpnjZOSMe6Zy2WW3awUtL9npg63HMQHGwN iAasPh1kadCw/RQEFLFsmH3Ji/ggdGt3mtK2zD2TPOY68ObuDYUtSncw5nqQAkXhs31gMZMnr F7RWnBbRgMjmJ4UDAFmA50cpvV/9VfERYSulAdFZH0b2xuda0kO8Vs+gc4jXbVnFWPFY7J/lp Zk7XGkS0ebhOUhfwXOkUCLBBWc2o7vN9iatzrMvCY23579HSk6LWcsL1Cg4P6qIf86qStb4qt 3vmSbEu7/Lgtx4B3cFm53Xyz5+mwuRxV5+oOkGDCnPTIWjjSFt/LEN/uIuxVP49wTTtfxOGrG J9SQPRAKjmEOB7c2JnuYn/8pzjBxGzJwNUoX+FjcGJrt8wA4nJAVVByYm00/NK36SF X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 for an annoying bug with x_set_window_size_and_position_1 not > updating the position _sometimes_. The Xt widget tracks the position > on screen internally too, and it became an issue with the use of > XtConfigureWidget directly. Resetting the widget's internal > coordinates to -1 satisfies the "have they changed" test. And why shan't we do that for top level frames too? martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 14 Apr 2026 01:22:25 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 13 21:22:24 2026 Received: from localhost ([127.0.0.1]:34719 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wCSTw-0002yF-LP for submit <at> debbugs.gnu.org; Mon, 13 Apr 2026 21:22:24 -0400 Received: from fhigh-b5-smtp.messagingengine.com ([202.12.124.156]:41821) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1wCSTt-0002y9-Jy for 80662 <at> debbugs.gnu.org; Mon, 13 Apr 2026 21:22:22 -0400 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfhigh.stl.internal (Postfix) with ESMTP id BC3497A008F; Mon, 13 Apr 2026 21:22:15 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-02.internal (MEProxy); Mon, 13 Apr 2026 21:22:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1776129735; x=1776216135; bh=NkUGjUfux3782y32JPpGYmIGmG4HiQ1B6X/gtGkA05Y=; b= TE1d/qV/L/SR8ZDI1AwfavyUX+rps6C+K3j3hgH6BoYu/PPK8pP9G92Bssdud+Wd SVLIkC60SRXymUkmQwhK7o+Bj16JtGY3fbJniyjUlTK9rlhXfMA3VxWbP8UfrT2z pJr1MaDWDrwvq4QNZ7btoFTHZguDRVr7uxytRDQZ722FphzBeNN6t2jirp+TbYdf fFhvJyK2zgfV6i5io/N6KLH3LrvFG3mzup3EfhFxSGJmQ7z8VhOd+mmutwiGbAGU Ra0NFkWJt8I4Sq8OyFLgsXhi03q1BT0StNjfpFBiqI9gwfo6yyYK4/gnKM3E/ghA gZ6VK/kkCU+3Bg8/PNsQLg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1776129735; x= 1776216135; bh=NkUGjUfux3782y32JPpGYmIGmG4HiQ1B6X/gtGkA05Y=; b=J 2Yr3X7h7w0DOHfhw/xcuPChdNoqCjbE/dESTZq+/733TByNyJG6N3zq7+DrHLLqR uHqhpXjcP5Dcr1zSwcI3e2PjjQRikS/A6lAuBzjS4w6JU7e7e1RR7FapY1GsbbOG PEujXwg5wK2eb25nigFL9mHCElv6H1OmcC7vgyGBewmu9Ey/nesslvVlYPkRb/Ap Kptv9wnlXkjIcBpMjWMeD2ZnbWyIloB2wof3P9riHGNfLfKVphtM4PvejtVWfJFn ZMtbgEOZy/XYi6Ls2RsdfW03Zg2o5MUEmomOOAjpFfT3lgFDLI2J7X6Ies87IBXv eKjBlj+irOr3brEtZ8bhA== X-ME-Sender: <xms:x5bdaWfb7pYCVrXrjbYAHsYhCXP-Ray0L2ab3pHzzkIL42QscEqpTw> <xme:x5bdaXrslyNMrxw26m-jPPx4GZxelgcfO7FWmQy6i0r8dJnCpaiTdSJgkAY8HZOHA CJa5MLGEXbPf4gTtlH2I_OtZsZd8Y9CwyRalzJJd-US3B0jyA0EN_0> X-ME-Received: <xmr:x5bdaU5UG6dEsSIeoMKG887yfNhSuAl4AxDocMmYyYygsSoDPRj87sFwrG3sFlD4W895Mg> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdefleejkecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefkffggfgfuhffvvehfjggtgfesthejredttddvjeenucfhrhhomhepffhmihhtrhih ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh hnpeekfedufefgjefffedvhfetgeevvefhkeekkefhgfduhfevjeetfffhgeeuteeggfen ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepfedpmhhouggvpehsmhhtphho uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd eiiedvseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepmhgrihhlsegurghn ihgvlhdqmhgvnhgulhgvrhdruggv X-ME-Proxy: <xmx:x5bdadp8E_mXtHt1I23iYr2I8tmasixSBmCwAWywQ1hd43Ejyvs4_g> <xmx:x5bdaWiA0R6Qq1wB_2NEP9E87kpnVwcswnVBibDjDf0sKz6fHSBHoQ> <xmx:x5bdaXKdAvMCoREqIQXtMO_gQwavpj7tEUgfJvuMZVk6ABSr4FRIfQ> <xmx:x5bdaWB_fEB31o5LIYLUKgek676-5tcwr-5JtFEUX4ZBcK5KDqZdxg> <xmx:x5bdaQZnA8CTp1xrOahAT4lq3GPmqk7Bcpu1kcCMD5c7UNlOBbaEfgG0> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 13 Apr 2026 21:22:14 -0400 (EDT) Message-ID: <152056a6-fd19-4eae-8905-4173478f2488@HIDDEN> Date: Tue, 14 Apr 2026 04:22:12 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step From: Dmitry Gutov <dmitry@HIDDEN> To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> <afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN> <e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN> <86b6c91b-7129-4975-a954-24c395fdf92d@HIDDEN> <7199b6ea-2b45-4f4f-aaa2-02f020f99a60@HIDDEN> <c8d83eef-bce0-404a-9f8b-21e3e3a1ac48@HIDDEN> <4a6794ed-d311-4d84-8193-64765c380242@HIDDEN> <312fe7c1-d7dc-4fe6-8c59-df17c3446b90@HIDDEN> <eeefb7bf-f801-4064-add3-0ae534d43396@HIDDEN> <54e33aac-0545-4f44-a69e-0a6342b65229@HIDDEN> Content-Language: en-US In-Reply-To: <54e33aac-0545-4f44-a69e-0a6342b65229@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) On 14/04/2026 04:07, Dmitry Gutov wrote: > New changes in addition to what we already discussed: Also removed the XSetWindowBackgroundPixmap stuff - it's still useful to reduce the parent window's flicker but very secondary to the other improvements and seems to clutter to code.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 14 Apr 2026 01:07:50 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 13 21:07:50 2026 Received: from localhost ([127.0.0.1]:34524 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wCSFp-0001Ug-Fc for submit <at> debbugs.gnu.org; Mon, 13 Apr 2026 21:07:50 -0400 Received: from fout-b7-smtp.messagingengine.com ([202.12.124.150]:33729) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1wCSFm-0001U4-BT for 80662 <at> debbugs.gnu.org; Mon, 13 Apr 2026 21:07:47 -0400 Received: from phl-compute-01.internal (phl-compute-01.internal [10.202.2.41]) by mailfout.stl.internal (Postfix) with ESMTP id 834CD1D0006C; Mon, 13 Apr 2026 21:07:40 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-01.internal (MEProxy); Mon, 13 Apr 2026 21:07:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1776128860; x=1776215260; bh=+jh9oo1Lm9 vkEka9t9dNdxgS4f2kx0ZP46Yvay1ePNU=; b=PFl4Y35GDE5S9IifYIeQ7cgNHw DocV87KvVOk4cOft2VcwGMJF4D9BcmFu6a0km2iqzOyW0lR0lEj7F8mcEv+99NLi SqUvdKdvSWvcBsE2nuNQ7Yu1MsjissLinAYfRcpcu5vu+hbDvibwwTzB4bFBvKqm ceQK8xuF+6mJgxNNvWhZMdXdK1e2yAeHscdSxvP8KIg1GtQBl2rje4wg0E017d7C b4fvl002CRqy+a2uhE8gJudkWST3WC6lK3yNnlv9i2nmMQUUTS47AXSeLn6YoZOR 4J1/XBU/BPN9Y08dMdimCPM/RdhlHCgMP4UVnpx12koZNV8ieAI6VMIEM0Qw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1776128860; x=1776215260; bh=+jh9oo1Lm9vkEka9t9dNdxgS4f2kx0ZP46Y vay1ePNU=; b=NpewUlw1FyiStv8eVbsrvg8mNhpQQ67SWPY0/9a+oMpOnh8RWyD q8w1gIz8fMDYl75JKFeZHnTsPN++5edbmllevvtoYTd1fC64Ea5VJxMbxwfqQlpM Ri67T9IW3G7ILRcU8ivWAfGhXfJxa/5RTuADTwHOSgQmb0XH3JAXBbVb/wLdOdMd 6VuyKsbjzMLS/MyffohITWUeGj3DyeYiOO7B//768iTffrjafAWcRPlSNPo+EBzF ib3SP4SkxtD0SZoEv8UwXOQRPSBst1IQ2Q4pJ5WSg1En6iWsQTIb4EnfzS74X8On ghtsRv0qztqU1rZSCmvjm0FHXieceCA6O5Q== X-ME-Sender: <xms:W5PdaeTCY19I9thKT3w5--ZitezmXADz70qgNdkRPbkdqprgAqQqzA> <xme:W5PdabPKlFI6fZgTb09OrdHes_bd3b1OFax5IyMk0D4eyNrwCiSSaNJKPxHex9rkd h4b2NmFsrk1LRC_ODu3dAAYQeCll0n8aCbqgKLYtcgBdkiVsNtJLg> X-ME-Received: <xmr:W5PdaZMo-SJen-quZeJq4Wq5vNNT2NntomOK40yT7hQe3ch2HqZwf9LG0B7uyeMZ_79kgA> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdefleejiecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpegtkfffgggfuffvvehfhfgjsehmtderredtvdejnecuhfhrohhmpeffmhhithhrhicu ifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrthhtvghrnh epheelfedukeduudevkeeilefgieffvdekhfekleejueejgeeukeevffekjeejveehnecu vehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepughmihhtrh ihsehguhhtohhvrdguvghvpdhnsggprhgtphhtthhopeefpdhmohguvgepshhmthhpohhu thdprhgtphhtthhopehruhgurghlihgtshesghhmgidrrghtpdhrtghpthhtohepkedtie eivdesuggvsggsuhhgshdrghhnuhdrohhrghdprhgtphhtthhopehmrghilhesuggrnhhi vghlqdhmvghnughlvghrrdguvg X-ME-Proxy: <xmx:W5PdaTvc2IgWW0QHm-H60ZKCdJi-3-aI6ITAxpsfoQW7dLJ1MFk7sg> <xmx:W5PdabVC-LSMo_Vvder7CWmLxDG48Xc-lofB1L8Lxxr4KOAQS8pMkQ> <xmx:W5PdaTuGEJmhY91bLifrOLGoY950jw4_Z7AqXFlombNN3ASjxc0vcw> <xmx:W5PdafUy2Vo6SG0FeRe-aXJsfdqyun1qvTJsbd7IY8eoGLjnm-AJhw> <xmx:XJPdad-TwBSad4Vj6TuXlP6SoV1nvTiJq7-FDmbNfb7mODkhTlrAYf0k> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 13 Apr 2026 21:07:38 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------pfxndmxGycqCbrPn0yg0mBx5" Message-ID: <54e33aac-0545-4f44-a69e-0a6342b65229@HIDDEN> Date: Tue, 14 Apr 2026 04:07:36 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> <afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN> <e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN> <86b6c91b-7129-4975-a954-24c395fdf92d@HIDDEN> <7199b6ea-2b45-4f4f-aaa2-02f020f99a60@HIDDEN> <c8d83eef-bce0-404a-9f8b-21e3e3a1ac48@HIDDEN> <4a6794ed-d311-4d84-8193-64765c380242@HIDDEN> <312fe7c1-d7dc-4fe6-8c59-df17c3446b90@HIDDEN> <eeefb7bf-f801-4064-add3-0ae534d43396@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <eeefb7bf-f801-4064-add3-0ae534d43396@HIDDEN> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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. --------------pfxndmxGycqCbrPn0yg0mBx5 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 12/04/2026 11:35, martin rudalics wrote: > >> It also happens with default minibuffer settings in a pgtk build on > GNOME Xorg. > > > > Hmm, yeah. Maybe I actually saw it there. > > And the tiny frame is shown with C-x 5 2, plain GTK3 on GNOME. I have > still no idea what causes it but I faintly recall bug reports about it > on GNOME or KDE. Yes, I can see that too (GNOME Wayland). Something to look into later. > > We could retain the obsolete variable but not do the "hide" thing > > anymore, as befits something that was a "temporary workaround". > > Let's do that after the next release. Till then obsoleting the variable > should suffice. Okay, then just obsoletion for now. We can avoid touching xg_frame_set_char_size in this changeset, it's working okay-ish, if not perfect. Attaching a new revision of the patch, seems ready for wider testing. New changes in addition to what we already discussed: * For the immediate resize of the GTK widget, use gtk_widget_size_allocate on the outer rather than gdk_window_resize on the inner. Works as well, with less code and apparently being more TRT. * Updated the nearby related comments, including the ancient one in the middle of x_set_window_size_1. * The "if (!gc)" check is not included. I've stopped seeing the previously reported segfault, for some reason. Can re-add though. * Fix for an annoying bug with x_set_window_size_and_position_1 not updating the position _sometimes_. The Xt widget tracks the position on screen internally too, and it became an issue with the use of XtConfigureWidget directly. Resetting the widget's internal coordinates to -1 satisfies the "have they changed" test. --------------pfxndmxGycqCbrPn0yg0mBx5 Content-Type: text/x-patch; charset=UTF-8; name="set_window_size_and_position_skip_wait_for_event_v14.diff" Content-Disposition: attachment; filename*0="set_window_size_and_position_skip_wait_for_event_v14.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2xpc3Avc3Vici5lbCBiL2xpc3Avc3Vici5lbAppbmRleCA2ODJlMTU2 ZGUxMi4uMTFmNzJkZDk2NzkgMTAwNjQ0Ci0tLSBhL2xpc3Avc3Vici5lbAorKysgYi9saXNw L3N1YnIuZWwKQEAgLTIyMjgsNiArMjIyOCw3IEBAIGxvZzEwCiAobWFrZS1vYnNvbGV0ZS12 YXJpYWJsZSAndHJhbnNsYXRpb24tdGFibGUtZm9yLWlucHV0IG5pbCAiMjMuMSIpCiAKICht YWtlLW9ic29sZXRlLXZhcmlhYmxlICd4LWd0ay11c2Utd2luZG93LW1vdmUgbmlsICIyNi4x IikKKyhtYWtlLW9ic29sZXRlLXZhcmlhYmxlICd4LWd0ay1yZXNpemUtY2hpbGQtZnJhbWVz IG5pbCAiMzEuMSIpCiAKIChkZWZ2YXJhbGlhcyAnbWVzc2FnZXMtYnVmZmVyLW1heC1saW5l cyAnbWVzc2FnZS1sb2ctbWF4KQogKGRlZmluZS1vYnNvbGV0ZS12YXJpYWJsZS1hbGlhcyAn aW5oaWJpdC1udWwtYnl0ZS1kZXRlY3Rpb24KZGlmZiAtLWdpdCBhL3NyYy9hbmRyb2lkdGVy bS5jIGIvc3JjL2FuZHJvaWR0ZXJtLmMKaW5kZXggYWMxZjJjODg1NjkuLmE3NGI1OTVkNDk5 IDEwMDY0NAotLS0gYS9zcmMvYW5kcm9pZHRlcm0uYworKysgYi9zcmMvYW5kcm9pZHRlcm0u YwpAQCAtMjI2MCwxMCArMjI2MCwxMyBAQCBhbmRyb2lkX3dhaXRfZm9yX2V2ZW50IChzdHJ1 Y3QgZnJhbWUgKmYsIGludCBldmVudHR5cGUpCiAgICAgewogICAgICAgcGVuZGluZ19zaWdu YWxzID0gdHJ1ZTsKICAgICAgIHRvdGFsbHlfdW5ibG9ja19pbnB1dCAoKTsKLSAgICAgIC8q IFhUcmVhZF9zb2NrZXQgaXMgY2FsbGVkIGFmdGVyIHVuYmxvY2suICAqLworICAgICAgLyog YW5kcm9pZF9yZWFkX3NvY2tldCBpcyBjYWxsZWQgYWZ0ZXIgdW5ibG9jay4gICovCiAgICAg ICBibG9ja19pbnB1dCAoKTsKICAgICAgIGludGVycnVwdF9pbnB1dF9ibG9ja2VkID0gbGV2 ZWw7CiAKKyAgICAgIGlmICghZi0+d2FpdF9ldmVudF90eXBlKQorCWJyZWFrOworCiAgICAg ICB0aW1lX25vdyA9IGN1cnJlbnRfdGltZXNwZWMgKCk7CiAgICAgICBpZiAodGltZXNwZWNf Y21wICh0bW9fYXQsIHRpbWVfbm93KSA8IDApCiAJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMv Z3RrdXRpbC5jIGIvc3JjL2d0a3V0aWwuYwppbmRleCBiMDFiYjY4MDRlZC4uZmQ4Mzk0M2Uw MzMgMTAwNjQ0Ci0tLSBhL3NyYy9ndGt1dGlsLmMKKysrIGIvc3JjL2d0a3V0aWwuYwpAQCAt MTQyMSw2ICsxNDIxLDE2IEBAIHhnX2ZyYW1lX3NldF9zaXplX2FuZF9wb3NpdGlvbiAoc3Ry dWN0IGZyYW1lICpmLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAKICNpZm5kZWYgSEFWRV9Q R1RLCiAgIGdka193aW5kb3dfbW92ZV9yZXNpemUgKGd3aW4sIHgsIHksIG91dGVyX3dpZHRo LCBvdXRlcl9oZWlnaHQpOworICBpZiAoRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSkKKyAgICB7 CisgICAgICAvKiBSZXNpemUgYWxsIGlubmVyIHdpZGdldHMgYW5kIENhaXJvIHN1cmZhY2Ug cmlnaHQgYXdheSBzbyB0aGUKKwkgbmV4dCByZWRpc3BsYXkgZHJhd2luZyBpc24ndCBjbGlw cGVkIHRvIHRoZSBvbGQgc2l6ZS4gICovCisgICAgICBHdGtBbGxvY2F0aW9uIGFsbG9jID0g ezAsIDAsIG91dGVyX3dpZHRoLCBvdXRlcl9oZWlnaHR9OworICAgICAgZ3RrX3dpZGdldF9z aXplX2FsbG9jYXRlIChGUkFNRV9HVEtfT1VURVJfV0lER0VUIChmKSwgJmFsbG9jKTsKKyNp ZmRlZiBVU0VfQ0FJUk8KKyAgICAgIHhfY3JfdXBkYXRlX3N1cmZhY2VfZGVzaXJlZF9zaXpl IChmLCB3aWR0aCwgaGVpZ2h0KTsKKyNlbmRpZgorICAgIH0KICNlbHNlCiAgIGlmIChGUkFN RV9HVEtfT1VURVJfV0lER0VUIChmKSkKICAgICBnZGtfd2luZG93X21vdmVfcmVzaXplIChn d2luLCB4LCB5LCBvdXRlcl93aWR0aCwgb3V0ZXJfaGVpZ2h0KTsKQEAgLTE0MzIsNyArMTQ0 MiwxMSBAQCB4Z19mcmFtZV9zZXRfc2l6ZV9hbmRfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAq ZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICBTRVRfRlJBTUVfR0FSQkFHRUQgKGYpOwog ICBjYW5jZWxfbW91c2VfZmFjZSAoZik7CiAKLSAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAoZikp CisgIC8qIEZvciBjaGlsZCBmcmFtZXMsIGRvbid0IHdhaXQgZm9yIGV2ZW50cyDigJQgdGhh dCB3b3VsZCBmbHVzaCB0aGUgWAorICAgICBidWZmZXIgYW5kIG1pZ2h0IHNob3cgb3V0ZGF0 ZWQgY29udGVudHMgaW4gdGhlIGZyYW1lLiAgU2FtZSBmb3IKKyAgICAgaW52aXNpYmxlIGZy YW1lczogdGhpcyB3YXkgaXMgZmFzdGVyIGFuZCB4X21ha2VfZnJhbWVfdmlzaWJsZSB3aWxs CisgICAgIHdhaXQgZm9yIGV2ZW50IGFueXdheS4gICovCisgIGlmIChGUkFNRV9WSVNJQkxF X1AgKGYpICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKGYpKQogICAgIHsKICAgICAgIC8qIE11 c3QgY2FsbCB0aGlzIHRvIGZsdXNoIG91dCBldmVudHMgKi8KICAgICAgICh2b2lkKWd0a19l dmVudHNfcGVuZGluZyAoKTsKZGlmZiAtLWdpdCBhL3NyYy93aWRnZXQuYyBiL3NyYy93aWRn ZXQuYwppbmRleCBlNzY3YjAwNmUzZi4uYjg0M2JjYTFmYjkgMTAwNjQ0Ci0tLSBhL3NyYy93 aWRnZXQuYworKysgYi9zcmMvd2lkZ2V0LmMKQEAgLTQyOCw2ICs0MjgsMTAgQEAgRW1hY3NG cmFtZVJlc2l6ZSAoV2lkZ2V0IHdpZGdldCkKICAgICAgICBldy0+Y29yZS53aWR0aCwgZXct PmNvcmUuaGVpZ2h0LAogICAgICAgIGYtPm5ld193aWR0aCwgZi0+bmV3X2hlaWdodCk7CiAK KyAgaWYgKEZSQU1FX1BJWEVMX1dJRFRIIChmKSA9PSBldy0+Y29yZS53aWR0aAorICAgICAg JiYgRlJBTUVfUElYRUxfSEVJR0hUIChmKSA9PSBldy0+Y29yZS5oZWlnaHQpCisgICAgcmV0 dXJuOworCiAgIGNoYW5nZV9mcmFtZV9zaXplIChmLCBldy0+Y29yZS53aWR0aCwgZXctPmNv cmUuaGVpZ2h0LAogCQkgICAgIGZhbHNlLCB0cnVlLCBmYWxzZSk7CiAKQEAgLTQ5NSw2ICs0 OTksOCBAQCBFbWFjc0ZyYW1lRXhwb3NlIChXaWRnZXQgd2lkZ2V0LCBYRXZlbnQgKmV2ZW50 LCBSZWdpb24gcmVnaW9uKQogCiAgIGV4cG9zZV9mcmFtZSAoZiwgZXZlbnQtPnhleHBvc2Uu eCwgZXZlbnQtPnhleHBvc2UueSwKIAkJZXZlbnQtPnhleHBvc2Uud2lkdGgsIGV2ZW50LT54 ZXhwb3NlLmhlaWdodCk7CisgIGlmIChldmVudC0+eGV4cG9zZS5jb3VudCA9PSAwKQorICAg IHhfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChmKTsKICAgZmx1c2hfZnJhbWUgKGYp OwogfQogCmRpZmYgLS1naXQgYS9zcmMveGRpc3AuYyBiL3NyYy94ZGlzcC5jCmluZGV4IDk5 NDc0ZDdhYmRjLi5hMGI1NzUxODE4ZSAxMDA2NDQKLS0tIGEvc3JjL3hkaXNwLmMKKysrIGIv c3JjL3hkaXNwLmMKQEAgLTEzNjYwLDExICsxMzY2MCw2IEBAIGNsZWFyX2dhcmJhZ2VkX2Zy YW1lcyAodm9pZCkKIAkgICAgICBpZiAoaXNfdHR5X2ZyYW1lIChmKSkKIAkJY3VycmVudF9t YXRyaWNlc19jbGVhcmVkID0gdHJ1ZTsKIAotI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQot ICAgICAgICAgICAgICBpZiAoRlJBTUVfV0lORE9XX1AgKGYpCi0gICAgICAgICAgICAgICAg ICAmJiBGUkFNRV9SSUYgKGYpLT5jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIpCi0gICAg ICAgICAgICAgICAgRlJBTUVfUklGIChmKS0+Y2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVy IChmKTsKLSNlbmRpZgogCSAgICAgIGZzZXRfcmVkaXNwbGF5IChmKTsKIAkgICAgICBmLT5n YXJiYWdlZCA9IGZhbHNlOwogCSAgICAgIGYtPnJlc2l6ZWRfcCA9IGZhbHNlOwpkaWZmIC0t Z2l0IGEvc3JjL3hmbnMuYyBiL3NyYy94Zm5zLmMKaW5kZXggMzNlYzgzMTJjYjUuLjg3Y2Uz YWYzMGQ3IDEwMDY0NAotLS0gYS9zcmMveGZucy5jCisrKyBiL3NyYy94Zm5zLmMKQEAgLTQ0 ODMsNyArNDQ4Myw3IEBAIHhfd2luZG93IChzdHJ1Y3QgZnJhbWUgKmYpCiAKICAgYXR0cmli dXRlcy5iYWNrZ3JvdW5kX3BpeGVsID0gRlJBTUVfQkFDS0dST1VORF9QSVhFTCAoZik7CiAg IGF0dHJpYnV0ZXMuYm9yZGVyX3BpeGVsID0gZi0+b3V0cHV0X2RhdGEueC0+Ym9yZGVyX3Bp eGVsOwotICBhdHRyaWJ1dGVzLmJpdF9ncmF2aXR5ID0gTm9ydGhXZXN0R3Jhdml0eTsKKyAg YXR0cmlidXRlcy5iaXRfZ3Jhdml0eSA9IFN0YXRpY0dyYXZpdHk7CiAgIGF0dHJpYnV0ZXMu YmFja2luZ19zdG9yZSA9IE5vdFVzZWZ1bDsKICAgYXR0cmlidXRlcy5zYXZlX3VuZGVyID0g VHJ1ZTsKICAgYXR0cmlidXRlcy5ldmVudF9tYXNrID0gU1RBTkRBUkRfRVZFTlRfU0VUOwpk aWZmIC0tZ2l0IGEvc3JjL3h0ZXJtLmMgYi9zcmMveHRlcm0uYwppbmRleCBkNzQ1MWI1Mzhl My4uOGIxNTNlZDNiNjYgMTAwNjQ0Ci0tLSBhL3NyYy94dGVybS5jCisrKyBiL3NyYy94dGVy bS5jCkBAIC0yODQ0OCw2ICsyODQ0OCw5IEBAIHhfd2FpdF9mb3JfZXZlbnQgKHN0cnVjdCBm cmFtZSAqZiwgaW50IGV2ZW50dHlwZSkKICAgICAgIGJsb2NrX2lucHV0ICgpOwogICAgICAg aW50ZXJydXB0X2lucHV0X2Jsb2NrZWQgPSBsZXZlbDsKIAorICAgICAgaWYgKCFmLT53YWl0 X2V2ZW50X3R5cGUpCisJYnJlYWs7CisKICAgICAgIEZEX1pFUk8gKCZmZHMpOwogICAgICAg RkRfU0VUIChmZCwgJmZkcyk7CiAKQEAgLTI4NDkyLDMwICsyODQ5NSwyNSBAQCB4X3NldF93 aW5kb3dfc2l6ZV8xIChzdHJ1Y3QgZnJhbWUgKmYsIGJvb2wgY2hhbmdlX2dyYXZpdHksCiAg IGlmICghTklMUCAoVnhfbGF4X2ZyYW1lX3Bvc2l0aW9uaW5nKSkKICAgICByZXR1cm47CiAK LSAgLyogTm93LCBzdHJpY3RseSBzcGVha2luZywgd2UgY2FuJ3QgYmUgc3VyZSB0aGF0IHRo aXMgaXMgYWNjdXJhdGUsCisgIC8qIE5vdywgc3RyaWN0bHkgc3BlYWtpbmcsIHdlIGNhbid0 IGJlIHN1cmUgdGhhdCB0aGlzIGlzIGZpbmFsLAogICAgICBidXQgdGhlIHdpbmRvdyBtYW5h Z2VyIHdpbGwgZ2V0IGFyb3VuZCB0byBkZWFsaW5nIHdpdGggdGhlIHNpemUKICAgICAgY2hh bmdlIHJlcXVlc3QgZXZlbnR1YWxseSwgYW5kIHdlJ2xsIGhlYXIgaG93IGl0IHdlbnQgd2hl biB0aGUKICAgICAgQ29uZmlndXJlTm90aWZ5IGV2ZW50IGdldHMgaGVyZS4KIAotICAgICBX ZSBjb3VsZCBqdXN0IG5vdCBib3RoZXIgc3RvcmluZyBhbnkgb2YgdGhpcyBpbmZvcm1hdGlv biBoZXJlLAotICAgICBhbmQgbGV0IHRoZSBDb25maWd1cmVOb3RpZnkgZXZlbnQgc2V0IGV2 ZXJ5dGhpbmcgdXAsIGJ1dCB0aGF0Ci0gICAgIG1pZ2h0IGJlIGtpbmQgb2YgY29uZnVzaW5n IHRvIHRoZSBMaXNwIGNvZGUsIHNpbmNlIHNpemUgY2hhbmdlcwotICAgICB3b3VsZG4ndCBi ZSByZXBvcnRlZCBpbiB0aGUgZnJhbWUgcGFyYW1ldGVycyB1bnRpbCBzb21lIHJhbmRvbQot ICAgICBwb2ludCBpbiB0aGUgZnV0dXJlIHdoZW4gdGhlIENvbmZpZ3VyZU5vdGlmeSBldmVu dCBhcnJpdmVzLgotCi0gICAgIFBhc3MgdHJ1ZSBmb3IgREVMQVkgc2luY2Ugd2UgY2FuJ3Qg cnVuIExpc3AgY29kZSBpbnNpZGUgb2YKLSAgICAgYSBCTE9DS19JTlBVVC4gICovCi0KLSAg LyogQnV0IHRoZSBDb25maWd1cmVOb3RpZnkgbWF5IGluIGZhY3QgbmV2ZXIgYXJyaXZlLCBh bmQgdGhlbiB0aGlzIGlzCi0gICAgIG5vdCByaWdodCBpZiB0aGUgZnJhbWUgaXMgdmlzaWJs ZS4gIEluc3RlYWQgd2FpdCAod2l0aCB0aW1lb3V0KQotICAgICBmb3IgdGhlIENvbmZpZ3Vy ZU5vdGlmeS4gICovCi0gIGlmIChGUkFNRV9WSVNJQkxFX1AgKGYpKQorICAgICBXZSBjb3Vs ZCBqdXN0IGxldCB0aGUgQ29uZmlndXJlTm90aWZ5IHVwZGF0ZSBldmVyeXRoaW5nLCBidXQK KyAgICAgd2FpdGluZyBjcmVhdGVzIGFuIGltcGxpY2l0IFggZmx1c2ggd2hpY2ggbWlnaHQg ZmxpY2tlciB3aXRoCisgICAgIG91dGRhdGVkIGNvbnRlbnRzIGluIHRoZSBmcmFtZS4gIEZv ciBjaGlsZCBmcmFtZXMsIHRoZSB3aW5kb3cKKyAgICAgbWFuYWdlciBpcyBub3QgYSBjb25j ZXJuIGFuZCBpdCdzIGJldHRlciB0byBmaW5pc2ggcXVpY2tseS4gICovCisgIGlmIChGUkFN RV9WSVNJQkxFX1AgKGYpICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKGYpKQogICAgIHsKKyAg ICAgIC8qIFRoZSBldmVudCBtYXkgY3JlYXRlIGRlbGF5ZWQgc2l6ZSBjaGFuZ2UgKGRlbGF5 ZWQgYmVjYXVzZSB3ZQorCSBjYW4ndCBydW4gTGlzcCBjb2RlIGluc2lkZSBvZiBhIEJMT0NL X0lOUFVUKSB3aGljaCB3aWxsIGJlCisJIGFwcGxpZWQgcmlnaHQgYWZ0ZXIgYnkgZG9fcGVu ZGluZ193aW5kb3dfY2hhbmdlLiAgKi8KICAgICAgIHhfd2FpdF9mb3JfZXZlbnQgKGYsIENv bmZpZ3VyZU5vdGlmeSk7CiAKICAgICAgIGlmIChDT05TUCAoZnJhbWVfc2l6ZV9oaXN0b3J5 KSkKIAlmcmFtZV9zaXplX2hpc3RvcnlfZXh0cmEKLQkgIChmLCBidWlsZF9zdHJpbmcgKCJ4 X3NldF93aW5kb3dfc2l6ZV8xLCB2aXNpYmxlIiksCisJICAoZiwgYnVpbGRfc3RyaW5nICgi eF9zZXRfd2luZG93X3NpemVfMSwgd2FpdGVkIGZvciBldmVudCIpLAogCSAgIEZSQU1FX1BJ WEVMX1dJRFRIIChmKSwgRlJBTUVfUElYRUxfSEVJR0hUIChmKSwgd2lkdGgsIGhlaWdodCwK IAkgICBmLT5uZXdfd2lkdGgsIGYtPm5ld19oZWlnaHQpOwogICAgIH0KQEAgLTI4NTIzLDcg KzI4NTIxLDcgQEAgeF9zZXRfd2luZG93X3NpemVfMSAoc3RydWN0IGZyYW1lICpmLCBib29s IGNoYW5nZV9ncmF2aXR5LAogICAgIHsKICAgICAgIGlmIChDT05TUCAoZnJhbWVfc2l6ZV9o aXN0b3J5KSkKIAlmcmFtZV9zaXplX2hpc3RvcnlfZXh0cmEKLQkgIChmLCBidWlsZF9zdHJp bmcgKCJ4X3NldF93aW5kb3dfc2l6ZV8xLCBpbnZpc2libGUiKSwKKwkgIChmLCBidWlsZF9z dHJpbmcgKCJ4X3NldF93aW5kb3dfc2l6ZV8xLCBub3Qgd2FpdGVkIGZvciBldmVudCIpLAog CSAgIEZSQU1FX1BJWEVMX1dJRFRIIChmKSwgRlJBTUVfUElYRUxfSEVJR0hUIChmKSwgd2lk dGgsIGhlaWdodCwKIAkgICBmLT5uZXdfd2lkdGgsIGYtPm5ld19oZWlnaHQpOwogCkBAIC0y ODU3OSwxNiArMjg1NzcsMzUgQEAgeF9zZXRfd2luZG93X3NpemVfYW5kX3Bvc2l0aW9uXzEg KHN0cnVjdCBmcmFtZSAqZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgIHhfd21fc2V0 X3NpemVfaGludCAoZiwgMCwgZmFsc2UpOwogCi0gIFhNb3ZlUmVzaXplV2luZG93IChGUkFN RV9YX0RJU1BMQVkgKGYpLCBGUkFNRV9PVVRFUl9XSU5ET1cgKGYpLAotCQkgICAgIHgsIHks IHdpZHRoLCBoZWlnaHQgKyBGUkFNRV9NRU5VQkFSX0hFSUdIVCAoZikpOworI2lmZGVmIFVT RV9YX1RPT0xLSVQKKyAgaWYgKEZSQU1FX1BBUkVOVF9GUkFNRSAoZikgJiYgZi0+b3V0cHV0 X2RhdGEueC0+d2lkZ2V0KQorICAgIHsKKyAgICAgIC8qIENsZWFyIHdpZGdldCdzIHBvc2l0 aW9uIGNvb3JkaW5hdGVzIGJlY2F1c2UgaXQgb25seSBzZW5kcworCSBjaGFuZ2VkIHZhbHVl cyB3aXRoIGl0cyBYQ29uZmlndXJlV2luZG93IGNvbW1hbmQuICBBbmQgdGhlc2UKKwkgYXJl IGxpa2VseSBvdXRkYXRlZCBiZWNhdXNlIFh0RGlzcGF0Y2hFdmVudCBkb2VzIG5vdCBzYXZl IHRoZW0uCisJIFRoZSBhbHRlcm5hdGl2ZSB3b3VsZCBiZSB0byBhbHdheXMgdXNlIFh0TW92 ZVdpZGdldCBpbnN0ZWFkIG9mCisJIFhNb3ZlV2luZG93LiAgKi8KKyAgICAgIGYtPm91dHB1 dF9kYXRhLngtPndpZGdldC0+Y29yZS54ID0gLTE7CisgICAgICBmLT5vdXRwdXRfZGF0YS54 LT53aWRnZXQtPmNvcmUueSA9IC0xOworICAgICAgLyogUmVzaXplIGFsbCBpbm5lciB3aWRn ZXRzIGFuZCBDYWlybyBzdXJmYWNlIHJpZ2h0IGF3YXkgc28gdGhlCisJIG5leHQgcmVkaXNw bGF5IGRyYXdpbmcgaXNuJ3QgY2xpcHBlZCB0byB0aGUgb2xkIHNpemUuICAqLworICAgICAg WHRDb25maWd1cmVXaWRnZXQgKGYtPm91dHB1dF9kYXRhLngtPndpZGdldCwKKwkJCSB4LCB5 LCB3aWR0aCwgaGVpZ2h0ICsgRlJBTUVfTUVOVUJBUl9IRUlHSFQgKGYpLCAwKTsKKyNpZmRl ZiBVU0VfQ0FJUk8KKyAgICAgIHhfY3JfdXBkYXRlX3N1cmZhY2VfZGVzaXJlZF9zaXplIChm LCB3aWR0aCwgaGVpZ2h0KTsKKyNlbmRpZgorICAgIH0KKyAgZWxzZQorI2VuZGlmCisgICAg WE1vdmVSZXNpemVXaW5kb3cgKEZSQU1FX1hfRElTUExBWSAoZiksIEZSQU1FX09VVEVSX1dJ TkRPVyAoZiksCisJCSAgICAgICB4LCB5LCB3aWR0aCwgaGVpZ2h0ICsgRlJBTUVfTUVOVUJB Ul9IRUlHSFQgKGYpKTsKIAogICBTRVRfRlJBTUVfR0FSQkFHRUQgKGYpOwogCi0gIGlmIChG UkFNRV9WSVNJQkxFX1AgKGYpKQorICAvKiBTYW1lIGFzIHhfc2V0X3dpbmRvd19zaXplXzEu ICAqLworICBpZiAoRlJBTUVfVklTSUJMRV9QIChmKSAmJiAhRlJBTUVfUEFSRU5UX0ZSQU1F IChmKSkKICAgICB4X3dhaXRfZm9yX2V2ZW50IChmLCBDb25maWd1cmVOb3RpZnkpOwogICBl bHNlCi0gICAgLyogQ2FsbCBhZGp1c3RfZnJhbWVfc2l6ZSByaWdodCBhd2F5IGFzIHdpdGgg R1RLLiAgSXQgbWlnaHQgYmUKLSAgICAgICB0ZW1wdGluZyB0byBjbGVhciBvdXQgZi0+bmV3 X3dpZHRoIGFuZCBmLT5uZXdfaGVpZ2h0IGhlcmUuICAqLwogICAgIGFkanVzdF9mcmFtZV9z aXplIChmLCBGUkFNRV9QSVhFTF9UT19URVhUX1dJRFRIIChmLCB3aWR0aCksCiAJCSAgICAg ICBGUkFNRV9QSVhFTF9UT19URVhUX0hFSUdIVCAoZiwgaGVpZ2h0KSwKIAkJICAgICAgIDUs IDAsIFF4X3NldF93aW5kb3dfc2l6ZV8xKTsK --------------pfxndmxGycqCbrPn0yg0mBx5--
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 12 Apr 2026 08:35:18 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Apr 12 04:35:17 2026 Received: from localhost ([127.0.0.1]:40800 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wBqHl-0007Wh-Ej for submit <at> debbugs.gnu.org; Sun, 12 Apr 2026 04:35:17 -0400 Received: from mout.gmx.net ([212.227.17.20]:39013) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1wBqHi-0007VW-9m for 80662 <at> debbugs.gnu.org; Sun, 12 Apr 2026 04:35:15 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1775982905; x=1776587705; i=rudalics@HIDDEN; bh=G+ixGsi7hDKxH/WACdeDZZx1NUprJlGfKDx+hVnM2fU=; 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=cHcawwPU1tbTyUcFt1RXytfjCmmaXglZIZB44gaK7DECiup+Pzoxao0iZoCssDWQ YXtNga5ztVBExVDjr51WFnQl2O8A4XUr90W7yVx07eYW+Gl2Wb9/6Dgmlq2dpsoKL ShjzRwciQCKH7sQksAZRXZOYtbdeq2n8f1GhAVE+ejGJe37iKtLpXvPzpKOdgGtPA wi/PO+vJ1y9j4dRgFyniJHRQmMadTIudU0f/4rPslXhDREmrG59v7AwbXgw0+jJmm xUhUFAx1MdNXv9TOTXNH9INOYSqIHYOkHOZfwmFJr8LeTkaF353f1EGawYsYW9cQq 4LPhEXfzgMKlpTmTLw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mn2aN-1vlteQ0gb9-00mYte; Sun, 12 Apr 2026 10:35:05 +0200 Message-ID: <eeefb7bf-f801-4064-add3-0ae534d43396@HIDDEN> Date: Sun, 12 Apr 2026 10:35:03 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> <afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN> <e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN> <86b6c91b-7129-4975-a954-24c395fdf92d@HIDDEN> <7199b6ea-2b45-4f4f-aaa2-02f020f99a60@HIDDEN> <c8d83eef-bce0-404a-9f8b-21e3e3a1ac48@HIDDEN> <4a6794ed-d311-4d84-8193-64765c380242@HIDDEN> <312fe7c1-d7dc-4fe6-8c59-df17c3446b90@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <312fe7c1-d7dc-4fe6-8c59-df17c3446b90@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:8BbTMXR5rQYHyeypf+BvXlKpLkgP93vcGMhcz5X2ERyYS4Mxrhg Li/z1AONgxBekRp3Jc32rOfa9Ck89ecan5RVdsWdy0axjG6h81EAu5po4fLg57DhGj3p0nG dmhDnEpiNcUZrVzDhPqugX9TuNbXphSZoV9Z2ZCe1kI4vw5TnjomrAfIaJDRD00PusFhssV lwecZrESpq1Zng7VY/LEQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:V8thhKXtC1I=;zxZpQOnRODycp50H7BXNkq2bFM8 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 j+mQw/AJHVO X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) >> It also happens with default minibuffer settings in a pgtk build on GNOME Xorg. > > Hmm, yeah. Maybe I actually saw it there. And the tiny frame is shown with C-x 5 2, plain GTK3 on GNOME. I have still no idea what causes it but I faintly recall bug reports about it on GNOME or KDE. > We could retain the obsolete variable but not do the "hide" thing > anymore, as befits something that was a "temporary workaround". Let's do that after the next release. Till then obsoleting the variable should suffice. martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 12 Apr 2026 02:01:49 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 11 22:01:48 2026 Received: from localhost ([127.0.0.1]:34102 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wBk8u-00006G-GA for submit <at> debbugs.gnu.org; Sat, 11 Apr 2026 22:01:48 -0400 Received: from fout-b4-smtp.messagingengine.com ([202.12.124.147]:56025) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1wBk8r-00004t-A7 for 80662 <at> debbugs.gnu.org; Sat, 11 Apr 2026 22:01:42 -0400 Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45]) by mailfout.stl.internal (Postfix) with ESMTP id 482C31D00027; Sat, 11 Apr 2026 22:01:35 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-05.internal (MEProxy); Sat, 11 Apr 2026 22:01:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1775959295; x=1776045695; bh=DcbPOJiajVtjAW4GtsHgOQlRMKQMHSEAdMcwhHCd1OU=; b= dFaNhwsYOGVj/OW7VDfPtS7+EFuXfQzIdwgIU+WPge0sb8DS6DwvfUkNH+YdCT8Y bjHpME/AZDLGiVx9IL2vESx+dV1+UjzmbzpFGuH0bpkw8OHPQbZ2gWpffMuPYuli spPsIEYaLHSHf6IHcAxAXvOoJShBenk3SqRuUGtRG/PgZV2KMtoNZcRioupOvipO kOpFP0eAdVI2YxFFSYq+uk/NA7zNr2VUzCnZ6jGac8k/2u2m+FaypfFOc+3ciniC pjhFv+eZrkn/KQpO1fDKrLGmhuQ69jLlFjPnYAyrakVP2dqo28wPX7qi3uMC/gIP l/j74aI/uB8RkqQ/76Gwrg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1775959295; x= 1776045695; bh=DcbPOJiajVtjAW4GtsHgOQlRMKQMHSEAdMcwhHCd1OU=; b=h Ydb/KQ4t6NtOFsbclYnL1FYsEqX9NEQPn81GmheFdjApb9ZvJyI/vrXeCEGAMx2k A2qEc1yJH4EJHIMHBHWNcz28MejppWyelLpxewlCfgOHtkat4aeM2txpo9msOtg0 x/Pu6mR0nOhb71fnUh5397v7s1Xhi5kf0fpU7hOb4OCn7rRLyDKSL5deVYIjkyjf lDsFpxIMbMixPOXH4z5scweivqmabICTZnwsXberCPiIoiD5yBspu+2BYfFFxnxy pxCE42fqJA0ifmiTPHYU0t6KnJMbN3azdVwqmyg1OU13N99X5Apo6lsx0FrCInX3 TIQ2KGndUFfk/eJSwByJQ== X-ME-Sender: <xms:_vzaaWMj0N4ld0_Z17_FXSL1ZkeQDJ9789H5v-n3J5dEWrWQtyVZpg> <xme:_vzaacb6fwlhaBwmSVcCGSBGeYgLlMCz7wDbWeSTRAamGMvXhLb82FRA-9_bnX_7C PiCx8mYntZvLfWQicH7YuqQypGuly6da5fQ0xFPpek5TBRqui1LghI> X-ME-Received: <xmr:_vzaaaqy0R3AcnogN5-5LgT_cfZicIFZxjye441h34B6QG4I0lYJ59SCUiGMo9nPDgNgJw> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdefgedtfecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefkffggfgfuvfevfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhih ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh hnpeffudfgteeuuefhkedthefhhfetheeuudelvdeguddujefhtdduheefhefghefhuden ucffohhmrghinhepghhnohhmvgdrohhrghdpghhtkhdrohhrghdprhgvphholhhoghihrd horhhgnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhep ughmihhtrhihsehguhhtohhvrdguvghvpdhnsggprhgtphhtthhopeefpdhmohguvgepsh hmthhpohhuthdprhgtphhtthhopehruhgurghlihgtshesghhmgidrrghtpdhrtghpthht ohepkedtieeivdesuggvsggsuhhgshdrghhnuhdrohhrghdprhgtphhtthhopehmrghilh esuggrnhhivghlqdhmvghnughlvghrrdguvg X-ME-Proxy: <xmx:_vzaaQZSUCKU03dH9_ZDjW8rwszIr1ifBY1kn0oC9kaY1pI5jP0l6g> <xmx:_vzaaSTMzQHESY3_IW9mCzToeYh8LNSfEUB0NmOnZpimr3AZ_bX8Hw> <xmx:_vzaaX7EyR1sgBqrXQFqxxLFV_TmAlZ6hXVaRzXpOsCs-wri5LBqTQ> <xmx:_vzaaXznbMt5t5GzqXlNJpENdIrN41Zc9ThWJ6Io3Hw_IdYOylqrjQ> <xmx:__zaadJIGJ3lddSlf_saciWXC7KyLElhT0HVwanvr18Uj09Am8LZC3k1> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 11 Apr 2026 22:01:33 -0400 (EDT) Message-ID: <312fe7c1-d7dc-4fe6-8c59-df17c3446b90@HIDDEN> Date: Sun, 12 Apr 2026 05:01:31 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> <afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN> <e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN> <86b6c91b-7129-4975-a954-24c395fdf92d@HIDDEN> <7199b6ea-2b45-4f4f-aaa2-02f020f99a60@HIDDEN> <c8d83eef-bce0-404a-9f8b-21e3e3a1ac48@HIDDEN> <4a6794ed-d311-4d84-8193-64765c380242@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <4a6794ed-d311-4d84-8193-64765c380242@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) On 11/04/2026 11:31, martin rudalics wrote: > >> Here I can reproduce it with > >> > >> emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))" > > > > Yep, I can reproduce that with the GTK3 build. And it's also the size > to which I seen the frame shrink in the past - but it doesn't do that > now without this setting. > > It also happens with default minibuffer settings in a pgtk build on > GNOME Xorg. Hmm, yeah. Maybe I actually saw it there. > >> >> Can you tell which change is responsible for that? Can we remove > >> >> x_gtk_resize_child_frames as a whole or only the 'resize-mode' > value > >> >> handling? > >> > > >> > I've never found 'hide' to be a good choice (it just blinks every > time), but it obviously does something, unlike 'resize-mode' now. > >> > > >> > I would just remove both, though. > >> > >> Obsolete them, yes. > > > > How do we do that for natively defined variables, BTW? Put the > obsoletion expression into subr.el? > > Yes. Very good. > > Do we remove its behaviors right away? Seems allowed, considering the > last paragraph of its docstring. > > Would it still make sense if emacs were compiled with old versions of GTK? > I simply forgot all about it. Maybe not? Although it might help if someone using GTK 3.10 tested the result. Apparently the value IMMEDIATE was marked as deprecated before 2012, according to a message here: https://bugzilla.gnome.org/show_bug.cgi?id=679771. But I'm not sure about the version of precise reason. And then the set_resize_mode as a whp;e got deprecated in 3.12 (2014), citing "frame clocks", which was apparently a feature since 3.8 (https://docs.gtk.org/gdk3/class.FrameClock.html). Even if we don't want to increase our minimum GTK version, it might be okay if child frames not worked well on systems with GTK < 3.12. https://repology.org/project/gtk/versions - here I don't see GTK3 older than 3.14 anywhere other than beside Ubuntu 14. > >> > We can still try skipping the wait for them, but the comment right > >> > above that code seems to speak against that (window manager > overrides, > >> > XMonad ans stuff). > >> > >> Still the same old story, yes. > > > > I guess we'll be keeping that part of the behavior, then. > > > > The condition can look like the proposed > > > > (FRAME_VISIBLE_P (f) && !FRAME_PARENT_FRAME (f)) > > Don't we need it to handle the case where a child frame was invisible > and now has become visible? If we retain that part of the behavior, yes. We could retain the obsolete variable but not do the "hide" thing anymore, as befits something that was a "temporary workaround".
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 12 Apr 2026 01:22:04 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 11 21:22:03 2026 Received: from localhost ([127.0.0.1]:33585 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wBjWT-00034d-9Y for submit <at> debbugs.gnu.org; Sat, 11 Apr 2026 21:22:03 -0400 Received: from fout-b3-smtp.messagingengine.com ([202.12.124.146]:40773) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1wBjWP-00033a-4m for 80662 <at> debbugs.gnu.org; Sat, 11 Apr 2026 21:21:59 -0400 Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfout.stl.internal (Postfix) with ESMTP id 017451D00059; Sat, 11 Apr 2026 21:21:50 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Sat, 11 Apr 2026 21:21:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1775956910; x=1776043310; bh=EBKROWL8CNoL2XA9OSymtuKmeF2iz9tMtoFHvrIJXYE=; b= RgpXf9sD3mvJJf/Bv/NI87IdMQOZT2zY9ryW1YsQY8+Jlg8ddbzVvjB/8ZeoTv1v zpGWyNEGDWpPTTxKX/BiGDaXJ4QtRGqBmD/9hbOf9ltFC1V3jModDVPyQ3Oldbat fqCy6ieSuq/yPF9zKFjetrbTutQE0uL58iy+mSy/RsXq83TF98QbcV4o3TBdip8r 1hFxczvazo7RuOO1ERGJRp6GB2XwMMT7WZAM4OH/lhJ3YDc+dlVa9iCGoEeQySNM hehRvANGrbRCXFiaw84jrTGELRd58V5QvYdnEM6d32aFGfT3jPUxiw39Iwug9RaB 3FnGaeH50fHfFhPBYlVcbg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1775956910; x= 1776043310; bh=EBKROWL8CNoL2XA9OSymtuKmeF2iz9tMtoFHvrIJXYE=; b=J iBw0iDHMA8WPSLWvWlppk/KKZoH1ezVm8pZ6qpOH1jj3iDPR59hM+JI9D0hM3AJf l02hmWWOK0g3luBZiDWc2xIoEww74+KVp453Qz/YtAFwTd6tU2TGoclzK4BusAhr KpOR/d9LagzVPc4ZTAv/O2B8COUw0oIqbfn0efsh+4YIX4DDEtZCUCYU7UXvPwMJ kjKzRl2e/EnSa4Ez3hBMY1aAJqbYxroma13XC3co9xlZCm3UWOWJpbCjqg0YtHSl Ad8pj9VMREE3R62wvdGWnC6edjeWJl2UUz9n45IGDAGihrqAuNpFvYlPc4NdMzV9 uZjtAwMNnFCSE+pI716qg== X-ME-Sender: <xms:rvPaabwb_XxzCYMbYjviGNn3ORfNk2TbGFVUd99w9YHFCeJfACMUJA> <xme:rvPaaauu0enuJDTFfnx8M4870kzlqqmBVhWmopdTkyYDLeJYHIxxyHlxoq3LZQYhv 6DH3hlsVi20hGGw0iB686nsulCpgJYEGXr87P8mu6NYRsdCpKwraao> X-ME-Received: <xmr:rvPaaSsJV3X58JlxzMdGhXmoHeGBAXY9oP79ujgZuUkg7aYToLH4fdiZKDwBxYzv6ZhOkA> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdeffeelgecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefkffggfgfuhffvvehfjggtgfesthejredttddvjeenucfhrhhomhepffhmihhtrhih ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh hnpeekfedufefgjefffedvhfetgeevvefhkeekkefhgfduhfevjeetfffhgeeuteeggfen ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepfedpmhhouggvpehsmhhtphho uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd eiiedvseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepmhgrihhlsegurghn ihgvlhdqmhgvnhgulhgvrhdruggv X-ME-Proxy: <xmx:rvPaafMMus4sNUjm8UPqh5g_OZMSFxqgfcxseMjCFS8tSE7GOw5TYA> <xmx:rvPaaQ1RP0GtP8VhJVmbnvhQgwkmQx5ymAn25VGZgMtVluJtsFKkiQ> <xmx:rvPaabOxVLOOISFIAughq31GNFq-5JB5fWONS8NOkCqTF7MaL-hxgA> <xmx:rvPaaQ2FjevB7hKflwX1k7bGV6TE5XZ6psQEocmH-mZPF5rCpfHHBw> <xmx:rvPaadfaMWTfGbz7exD8WNKpcGUdJB2nO0B5tuk0espNXJl2V5vj4yDs> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat, 11 Apr 2026 21:21:49 -0400 (EDT) Message-ID: <2843d273-d99e-448a-800f-078b6ca8e0b6@HIDDEN> Date: Sun, 12 Apr 2026 04:21:47 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step From: Dmitry Gutov <dmitry@HIDDEN> To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> Content-Language: en-US In-Reply-To: <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) On 08/04/2026 07:00, Dmitry Gutov wrote: > Actually I have an experiment patch in that direction already - but it > works best on no-toolkit using the same combination of static > bit_gravity and background=None. Having a difficulty reproducing a > similar effect of bit gravity with Lucid and GTK3's configurations of > windows without using unmap/remap - which creates an unavoidable blink > to the parent frame. Summary of my results in that direction, for posterity: To avoid drawing the outdated window contents during the implicit flush by x_wait_for_event, we could add automatic invalidation of window contents (using bit/win gravity, see below) and to set the backgrounds to None temporarily, on the widgets in the child frame and parent frame's inner window, reverting sometime after. For invalidation: - With no-toolkit, we just set bit_gravity to StaticGravity. - Lucid has nested windows. bit_gravity=StaticGravity on the inner window does not work the same. Instead, it helped to use UnmapGravity as the win_gravity of the pane and edit widgets. The result is that both windows are unmapped when the outer window is resized. Then if we XMapWindow them back in EmacsFrameResize (which happens the end of resize), the repaint happens only then, and the result seems fine. - I haven't really managed to make this work with GTK3, although the mechanism should be the same. Maybe the container rechecks the windows' attributes and reverts the changes, or maybe there are elements that I forgot to update. In any case, that looks pretty brittle and really needs the backgroundpixmap=None trick. Whereas the no-wait solution can go without, at the cost of one momentary background fill. Since the upside is just being able to treat the child frames and regular ones the same, with all of them doing the wait for events, probably not worth it.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 11 Apr 2026 08:31:38 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 11 04:31:37 2026 Received: from localhost ([127.0.0.1]:40316 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wBTkb-0008B7-QV for submit <at> debbugs.gnu.org; Sat, 11 Apr 2026 04:31:37 -0400 Received: from mout.gmx.net ([212.227.15.19]:38525) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1wBTkV-00088Q-7f for 80662 <at> debbugs.gnu.org; Sat, 11 Apr 2026 04:31:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1775896262; x=1776501062; i=rudalics@HIDDEN; bh=c+ZMzO5Sm9/Q0gxtEc7qW7cFTeoreidbs3IhxfBDN/w=; 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=EBu9hfl4mJ/Ob8AH7law9dKYkL+5IXGOh87tkTZoQu4C0BM/mAPy/JptzzLtmmHa TutTQBgCFsJgxRRQZPn2V61jICHseRTrqsvBzDdlf7aOi2Ovyy9ilCcmupdO2Yw49 BH3/JLnq+0uS5TNZU284qktO1uXivmVyaKUoikWvBXqVY4e/SJwHTf4R2uByfIXaW mC46Q29LLYVmXY8QtkmNACM7XmkTnjNSjlhlo7Dx8Su93Vj+IvqU8iYK7w7Zdeetv rD4EvbA0riHy7KioKxn1oZpKvGqhR94VXeP10SVbq6Ivey6fNF54pUQOD9r7ahX2P PYQ3mwKEGvuQiB5M7A== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MOzT4-1voTDW0DTY-00NsJr; Sat, 11 Apr 2026 10:31:02 +0200 Message-ID: <4a6794ed-d311-4d84-8193-64765c380242@HIDDEN> Date: Sat, 11 Apr 2026 10:31:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> <afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN> <e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN> <86b6c91b-7129-4975-a954-24c395fdf92d@HIDDEN> <7199b6ea-2b45-4f4f-aaa2-02f020f99a60@HIDDEN> <c8d83eef-bce0-404a-9f8b-21e3e3a1ac48@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <c8d83eef-bce0-404a-9f8b-21e3e3a1ac48@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:uUoMi39kt3d7d3Ovd7Z1moiCO63FChClS2nSoqtXVqgdy77CeDW vWz6iSpxpypkyd3/hWFBoFgXmrW7uCB2y1dpFgNfxxd2eEoN9F2Drzn4Vqraq8JVQM0AFxK KxUbx9vJtFXIS8QOgqzefzbQdcVntEmiZB3c9+PMe87YvT52d8sjuBybv9r56ExeljM2j8J Mi71VLo9zw/Z5pLcl7lvQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Uh4AgdqBRCE=;HPfJMl1UqT868P4/SqGiASOpmc4 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 zk X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) >> Here I can reproduce it with >> >> emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))" > > Yep, I can reproduce that with the GTK3 build. And it's also the size to which I seen the frame shrink in the past - but it doesn't do that now without this setting. It also happens with default minibuffer settings in a pgtk build on GNOME Xorg. >> >> Can you tell which change is responsible for that? Can we remove >> >> x_gtk_resize_child_frames as a whole or only the 'resize-mode' value >> >> handling? >> > >> > I've never found 'hide' to be a good choice (it just blinks every time), but it obviously does something, unlike 'resize-mode' now. >> > >> > I would just remove both, though. >> >> Obsolete them, yes. > > How do we do that for natively defined variables, BTW? Put the obsoletion expression into subr.el? Yes. > Do we remove its behaviors right away? Seems allowed, considering the last paragraph of its docstring. Would it still make sense if emacs were compiled with old versions of GTK? I simply forgot all about it. >> > About the !was_visible check, the story might be more nuanced: the value is initialized to false, and then the only conditions for it to be true were (FRAME_PARENT_FRAME (f) && FRAME_VISIBLE_P (f)) - meaning it had to be a child frame. So for visible regular frames >> > >> > FRAME_VISIBLE_P (f) && !was_visible >> > >> > would evaluate to true, and we went the "wait for events" route. >> >> I fooled myself. Silly, tricky, non-self-explanatory code. >> >> > We can still try skipping the wait for them, but the comment right >> > above that code seems to speak against that (window manager overrides, >> > XMonad ans stuff). >> >> Still the same old story, yes. > > I guess we'll be keeping that part of the behavior, then. > > The condition can look like the proposed > > (FRAME_VISIBLE_P (f) && !FRAME_PARENT_FRAME (f)) Don't we need it to handle the case where a child frame was invisible and now has become visible? martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 10 Apr 2026 17:48:39 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 10 13:48:39 2026 Received: from localhost ([127.0.0.1]:54649 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wBFyA-0000q7-Kv for submit <at> debbugs.gnu.org; Fri, 10 Apr 2026 13:48:39 -0400 Received: from fout-a4-smtp.messagingengine.com ([103.168.172.147]:46711) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1wBFy8-0000pC-Cy for 80662 <at> debbugs.gnu.org; Fri, 10 Apr 2026 13:48:37 -0400 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id D1817EC044B; Fri, 10 Apr 2026 13:48:30 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-02.internal (MEProxy); Fri, 10 Apr 2026 13:48:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1775843310; x=1775929710; bh=pyb2JxeqrXRDZVeTQsAWPnqVuJ3eqn0gJ7bTa0HvFYw=; b= GLNUbbVIFx8Ah4LDGF7rnU38JmYnKkh/p3cTTHDS5o2xirakFFg3wMJFIaAT34yH ++OkG7D7WJNMVpET8daeGwQS/JzYpls8eS8lODaDotSWeYXWbbxAFWVyA7+uzo0O LFLxIRLvT6ZzDBWIB7ndx2vVA14CJstC48qlAKNxQtGwNZyHT1bV4dN1O1eP2L6Y b2zq9Ammjm+Jdw2tjEM19SNT5ZengdwMSqzk1333E0ueQlhZEBtJwDaJ5kmliJX0 Yz92V2djzxpGGKR+9vQWd3K5IXkeJb6Jes+d4rMVwxHwoujA5ajbWgq83/nqimhq INbZbF+/rNbWna/trT2MZw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1775843310; x= 1775929710; bh=pyb2JxeqrXRDZVeTQsAWPnqVuJ3eqn0gJ7bTa0HvFYw=; b=e t/DiDAsN0Q9JtVYeKqoDtp4ku4yTr2Z2Y2cRninG8Ndak8DcPGrDBoqvsrOmY3RS lT3OZI1oTbp0OrOkgHmcWcffxAl6bwQ5m4AB/a7UBmlwiRDbbSJVgssZWuwaOtaj 5kbG7dfG20sXNKl3sQpB+0mKQN1Yp3r84kSK1k+hdny/+8iiA8E5hj2VLxH1KZmP pYIYqqBWzQrYwqA4OBEno0oiQZviiv3pUQ8vb+Ao+9Sd/JdkvkHx9jykLZcf7i2J /2tno7/VsWdM0AdFSp6wo80nq2dOMG2g6DV9P5uHhN/Fv9jUk7iAZzfsV61SLjsJ Fs6CKWlYCTNFPmO5GV18w== X-ME-Sender: <xms:7jfZaQFlnYWSqiNRHRtipy_l5YYWnMFNr7To8PWPB32PbPOSHB3n6g> <xme:7jfZaQzfgPmLERCooNG7PQASWBGxKVuaepMiVmCTE2pSk-IXvYfQ96DOYd0vhl_Sq SipOCg-buxFLZg943us8rd-yBioCoSAr04vwbzbijYYg2T4WSKYkmFG> X-ME-Received: <xmr:7jfZaXjI0T9AGoEBqD_Im3Lb5Hit0TESJpF6IM-pVEu-m0q2Eu4cn9OU2o9SIiInfyULkA> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdeftddthecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefkffggfgfuvfevfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhih ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh hnpeegleefteekgffhvdfhtdegveevveetteegteevgeettdehhfdukeetheffueekkeen ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepfedpmhhouggvpehsmhhtphho uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd eiiedvseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepmhgrihhlsegurghn ihgvlhdqmhgvnhgulhgvrhdruggv X-ME-Proxy: <xmx:7jfZabyu2G0Such6M7DIDXyPar2N6kZ-xpeSf3fDBRcY2_rXAIxXvw> <xmx:7jfZaaLJ8PlNOQchICRfPyEZADMa-RW9HaUv0uxR7bzsdp2AsqIwnw> <xmx:7jfZaSTnliguALQOoZ6HazTWZTLzKmiBLTJF9ZG0OACnIbLq45RTOw> <xmx:7jfZaSrM7Zaqfw1EzaoDATLbj_rEMfZAHiA__wGNAzweGRRuGsC2TA> <xmx:7jfZadgqKWvmc6uJ9BMlH8k0xEE7wKchAqw_kNxvlW3IrDgDEC9-YZ1y> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 10 Apr 2026 13:48:29 -0400 (EDT) Message-ID: <c8d83eef-bce0-404a-9f8b-21e3e3a1ac48@HIDDEN> Date: Fri, 10 Apr 2026 20:48:27 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> <afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN> <e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN> <86b6c91b-7129-4975-a954-24c395fdf92d@HIDDEN> <7199b6ea-2b45-4f4f-aaa2-02f020f99a60@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <7199b6ea-2b45-4f4f-aaa2-02f020f99a60@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) On 10/04/2026 17:47, martin rudalics wrote: > > I think I've seen it shrink to a small window several times recently > > as well, on startup, can't reproduce now. Not too many warnings, maybe > > because I've resized it to a normal size first thing. > > Here I can reproduce it with > > emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))" Yep, I can reproduce that with the GTK3 build. And it's also the size to which I seen the frame shrink in the past - but it doesn't do that now without this setting. > >> Can you tell which change is responsible for that? Can we remove > >> x_gtk_resize_child_frames as a whole or only the 'resize-mode' value > >> handling? > > > > I've never found 'hide' to be a good choice (it just blinks every > time), but it obviously does something, unlike 'resize-mode' now. > > > > I would just remove both, though. > > Obsolete them, yes. How do we do that for natively defined variables, BTW? Put the obsoletion expression into subr.el? Do we remove its behaviors right away? Seems allowed, considering the last paragraph of its docstring. > > About the !was_visible check, the story might be more nuanced: the > value is initialized to false, and then the only conditions for it to be > true were (FRAME_PARENT_FRAME (f) && FRAME_VISIBLE_P (f)) - meaning it > had to be a child frame. So for visible regular frames > > > > FRAME_VISIBLE_P (f) && !was_visible > > > > would evaluate to true, and we went the "wait for events" route. > > I fooled myself. Silly, tricky, non-self-explanatory code. > > > We can still try skipping the wait for them, but the comment right > > above that code seems to speak against that (window manager overrides, > > XMonad ans stuff). > > Still the same old story, yes. I guess we'll be keeping that part of the behavior, then. The condition can look like the proposed (FRAME_VISIBLE_P (f) && !FRAME_PARENT_FRAME (f))
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 10 Apr 2026 14:48:15 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 10 10:48:15 2026 Received: from localhost ([127.0.0.1]:52328 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wBD9a-0004Ke-Hn for submit <at> debbugs.gnu.org; Fri, 10 Apr 2026 10:48:14 -0400 Received: from mout.gmx.net ([212.227.17.22]:54923) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1wBD9Y-0004KY-Cd for 80662 <at> debbugs.gnu.org; Fri, 10 Apr 2026 10:48:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1775832468; x=1776437268; i=rudalics@HIDDEN; bh=p5OkAd2XsefItHOqvC43CeYAtdg44YYSbYpFtKfvTQE=; 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=rVR+3htbhibcBdJflsJo+rhyELFckJMJ5P/VWL91T8r+GUsdJ/hXUkBSQWHvhg/y Q8d9tgZCSZQ29p3MO3JcxNnya60eAnYwHdU829+UTlw4jZZPsGBYdqkvMBgK4+vK2 Tnl9ACmluQhd4dTwYpXvUjrYIS1EaQ3JBm1JphF+TLjBjLr9t+O6RPQrh94lZm0ir fI0wuOQvEnDJ6gj4zWUGTR3xRM1AJtSUoteGf1+0zufcv+ySlm7qVzgLC3lpGpdit Gwg0u7l+rY0dQSsShnjhkm53axFJhC+rZvCtlahzxV33zItenu5fqEU4fZzoxFi1v HCvqK3FxI8IGe9Iqpg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Ml6m4-1vjs5Y0BMi-00pfw2; Fri, 10 Apr 2026 16:47:48 +0200 Message-ID: <7199b6ea-2b45-4f4f-aaa2-02f020f99a60@HIDDEN> Date: Fri, 10 Apr 2026 16:47:47 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> <afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN> <e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN> <86b6c91b-7129-4975-a954-24c395fdf92d@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <86b6c91b-7129-4975-a954-24c395fdf92d@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:hQkrcI+vRvwcIp0XI9zrmvA4fFggiWpJnvcrHlHTy76jQE41AD2 GySbcMdYMneoW8JK/gitsbdzGfp4JK5eJFHgW54G7RUJDRQJL/z+z64bd958FF0MJezrjNB B453DIHSojzL+cRS1wy7lYE90abxJBmwFzjWLNcJ4mioEobk0FvxO+q0sbnHkofyYkklSxt omOhH5cpBYWszoRF6ykiw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:zFXHG8NeBeg=;JxAPf56K7ICF9L5+G3YonUPe7Ke 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 y8 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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've seen it shrink to a small window several times recently > as well, on startup, can't reproduce now. Not too many warnings, maybe > because I've resized it to a normal size first thing. Here I can reproduce it with emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))" Both initial frames get the same small size. We had bug reports about that and maybe even an option to suppress it. But we should really avoid creating a second normal frame in 'frame-notice-user-settings' - after all the '((user-size . t) (user-position . t)) line can only get us into deep troubles on GNOME. >> Can you tell which change is responsible for that? Can we remove >> x_gtk_resize_child_frames as a whole or only the 'resize-mode' value >> handling? > > I've never found 'hide' to be a good choice (it just blinks every time), but it obviously does something, unlike 'resize-mode' now. > > I would just remove both, though. Obsolete them, yes. > About the !was_visible check, the story might be more nuanced: the value is initialized to false, and then the only conditions for it to be true were (FRAME_PARENT_FRAME (f) && FRAME_VISIBLE_P (f)) - meaning it had to be a child frame. So for visible regular frames > > FRAME_VISIBLE_P (f) && !was_visible > > would evaluate to true, and we went the "wait for events" route. I fooled myself. Silly, tricky, non-self-explanatory code. > We can still try skipping the wait for them, but the comment right > above that code seems to speak against that (window manager overrides, > XMonad ans stuff). Still the same old story, yes. martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 10 Apr 2026 13:08:32 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 10 09:08:32 2026 Received: from localhost ([127.0.0.1]:51913 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wBBb5-0005FH-Uz for submit <at> debbugs.gnu.org; Fri, 10 Apr 2026 09:08:32 -0400 Received: from fhigh-a8-smtp.messagingengine.com ([103.168.172.159]:34221) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1wBBb2-0005Eu-UU for 80662 <at> debbugs.gnu.org; Fri, 10 Apr 2026 09:08:30 -0400 Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfhigh.phl.internal (Postfix) with ESMTP id 6611714000E9; Fri, 10 Apr 2026 09:08:23 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Fri, 10 Apr 2026 09:08:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1775826503; x=1775912903; bh=KAtWUykbk360konol1w3+MlySryNUrAZXq0PEThHq3s=; b= HHtRqzsey/t/oY9tsvdTUmGiFRdNDTvtwEg95r/5EPp/u7EO66gnROUOfrbJcLvC AFO68s44t9gInl2goJYrm2UdF1qOa6zgIeWSUKiiRjDRwVR86fL0fBi8ja//urh7 iqSHu8r0t3ewULj0yg+estYtpv1vDF/M1LPoUHX7Frxs6CXw/4XEiy18t0SAOnGK /M5PC0R/tvp2MpK71LjiS9WNz8jZxxPomKHFts4+eHDEkncUsObtUOc0MtUYsCxF PyK4voBE1uVT7ZmT9/h8KbZHUv8FBhkdqcdgvdAkSrmCMHasVQg3MSodRfVLb7H8 iKBskhxE3fjvkMmOqV76YA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1775826503; x= 1775912903; bh=KAtWUykbk360konol1w3+MlySryNUrAZXq0PEThHq3s=; b=R dwNV5EMqIgNFUf3Lge0g6rUmn55wkcbUPGSaz4A6qLa2pj8N/yRRI1AK2bFQzO2s zyO0MJyeIiD0n2yWCucU1Kq7cM/hTYfNruKX2lzbr6D1YtJvajG03Fb82oABcgb2 +K+Jybg1vdDp2yzKK2BYfk+eJDOEOUmFU9I2SS5+NiwwooVzlJFsmcyTs4D3dGFM CaeiTlHrmOLKVZT65UwGC4moO4ck82yElq4J9UkpDUgM/GqreSJnJHXVSkBCqxX5 FTwZ2KHNRLXmzfcilSQyAXgyMTxj8mgUUam9Su1jv/jNB9Xlbp0REcN7yFmki+mk Wn8/ckPLakPxaYQchQMSw== X-ME-Sender: <xms:RvbYaXimzpXbwaaaFNvmIt2cw1nDZ-YFNogNYbW-iA3GCDbEv3o0IQ> <xme:RvbYabeo_qrj4DvzHiYy2UF6ykLDVOjwwX7dAarSHpqKcMarybWeTtZxvgGM2AYQ3 68vClarJt_3OrKp8pdBHdhzthxgJNOaaYooFMxn6bGsXFaWx2ltUsM> X-ME-Received: <xmr:RvbYaUdINAkH8aDG1rYSBecAl8sSaTebdsNDhBivtzCaix5L3aNp9QN82u7J4KAsgWlocw> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvleeglecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefkffggfgfuvfevfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhih ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh hnpeeuteduhfeitdejkeeuffefhefgffevveetjedthfetteegtefhveeujeekjefgveen ucffohhmrghinhepghhnuhdrohhrghenucevlhhushhtvghrufhiiigvpedtnecurfgrrh grmhepmhgrihhlfhhrohhmpegumhhithhrhiesghhuthhovhdruggvvhdpnhgspghrtghp thhtohepfedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheprhhuuggrlhhitghsse hgmhigrdgrthdprhgtphhtthhopeektdeiiedvseguvggssghughhsrdhgnhhurdhorhhg pdhrtghpthhtohepmhgrihhlsegurghnihgvlhdqmhgvnhgulhgvrhdruggv X-ME-Proxy: <xmx:RvbYad8TcQAnfh8YCmNnHWafYu6zuAVhHN5XioWo6otfYIUY6R5M6A> <xmx:RvbYaYlL9eW-IcoGBmTsgIzjOzM4tPTLdzI5hwTzHv8PGUeiZbG4CQ> <xmx:RvbYaX_AK8aHEYT1WBxZd_L9AT9ihGOvJtBx6oSTyD6yI1w-L8Hg9A> <xmx:RvbYaekZerSWA-2FnGSMU_BlhKDAE3D67rXdPkR1_sc1xYt1UpG4Dw> <xmx:R_bYaWNAMmuynuGH2FOmUytXRrsm_GUDHKDIAceT8iFlWe0ofrk1cMtW> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 10 Apr 2026 09:08:21 -0400 (EDT) Message-ID: <86b6c91b-7129-4975-a954-24c395fdf92d@HIDDEN> Date: Fri, 10 Apr 2026 16:08:19 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> <afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN> <e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) On 10/04/2026 11:21, martin rudalics wrote: > > FWIW I see no/few warnings in stderr normally. I think with one of the > > builds there was just one printed during startup. The GTK3 build now > > shows none. > > It's particularly annoying here when starting emacs with a nil minibuffer > frame parameter. For some reasons, the normal frame shrinks to a few > lines and columns and GTK spills its complaints. I think I've seen it shrink to a small window several times recently as well, on startup, can't reproduce now. Not too many warnings, maybe because I've resized it to a normal size first thing. > >> - OTOH getting a merged protocol from journalctl when logging, for > >> example, both gnome-shell and emacs might be the most useful > debugging > >> tool. But for that we would need some real-time filtering of > >> journalctl output to an emacs buffer something I consider hardly > >> feasible. > > > > Maybe we could just write to two destinations (Lisp structure and > stderr) when some option is set to a specific value. > > One common callned function for handling logs in a unified way and then > routing them somewhere. Sounds good. > > I've retested with older versions: Emacs 28.3 needs resize-mode for > the transitions in the test scenario to work correctly - otherwise the > big yellow background rectangle stays at its max size. > > > > Emacs 29 and newer seem just fine without. > > Can you tell which change is responsible for that? Can we remove > x_gtk_resize_child_frames as a whole or only the 'resize-mode' value > handling? I've never found 'hide' to be a good choice (it just blinks every time), but it obviously does something, unlike 'resize-mode' now. I would just remove both, though. About the !was_visible check, the story might be more nuanced: the value is initialized to false, and then the only conditions for it to be true were (FRAME_PARENT_FRAME (f) && FRAME_VISIBLE_P (f)) - meaning it had to be a child frame. So for visible regular frames FRAME_VISIBLE_P (f) && !was_visible would evaluate to true, and we went the "wait for events" route. We can still try skipping the wait for them, but the comment right above that code seems to speak against that (window manager overrides, XMonad ans stuff). > > When deciding on the changes, I'm less concerned about immediate > > breakage than about complicating the implementation, increasing the > > odds of someone introducing bugs later - for example, after our resize > > implementations add calls to adjust the inner widget too, that will be > > now done in two places (the event handling code still needs that too), > > and someone 1-2 years later might forget to update one of the > > instances when making changes. So suggestions welcome on that front. > > All we can do here is to add sufficiently many comments to that. And if > you think you can discern problematic scenarios sufficiently well, then > maybe install everything in one rush. This is completely up to you. You > are the only one to have sufficient experience in this area now. Thanks! > > AFAIK, Lucid is in use. I don't have stats on emacs-devel > subscribers, but I wouldn't even be surprised to hear it's the majority. > > > > One reason to use it is https://debbugs.gnu.org/5802 and all bug#s > > merged with it. Every place discussing a variation of this bug report > > (also Launchpad, GNOME Bugzilla, Reddit) has somebody recommending > > Lucid as the fix. > > It will also depend on how well Lucid fares on XWayland. I've been running mostly Lucid on this machine lately, and it's a Wayland session. No particular issues.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 10 Apr 2026 08:22:04 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 10 04:22:04 2026 Received: from localhost ([127.0.0.1]:50677 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wB77q-0002O5-80 for submit <at> debbugs.gnu.org; Fri, 10 Apr 2026 04:22:04 -0400 Received: from mout.gmx.net ([212.227.17.22]:41169) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1wB77m-0002MU-IP for 80662 <at> debbugs.gnu.org; Fri, 10 Apr 2026 04:22:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1775809296; x=1776414096; i=rudalics@HIDDEN; bh=TdpT8yYGxI5Yg2g0PwJ+PADNbYn7BfXSvfb4bQCNLIQ=; 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=Cu1Z9SUaSOIQCphDh1sP1OFBOP1BlbY5+sozCAjAd22+i/JF81brQAU0ktgKWfTq ejVPkeBseUvuOv913rBj2Zhj4X8kb0J0YEWUKguJTZnEcNLqs2fEm80/bao6MqjGz LPjlPnAFSP7BUQZJk32MEgBNDKDM4gorWsOl81ogcEEFzzoGCvzXtnxyv98nJMNB8 WaTFFfrYTTC4uGaotXP19hTOlK/h5BORawFvyiS0l8tetCdS6DmJBhw+z9+KgEk+U ufi/VTzEY6crwX95HCZtE21uoWMY1RG7U5YONXG41I/S9Jo/qyWKPp3ftGESBSYcd rf3BYcajFslGQw1qyg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1McpNy-1vcKKg1lic-00hZZM; Fri, 10 Apr 2026 10:21:36 +0200 Message-ID: <e765f1ba-6d6d-46c0-9364-b367ad8d7c4f@HIDDEN> Date: Fri, 10 Apr 2026 10:21:35 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> <afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:uldQnlP7tgSY0zVJBvtmUloJ9B9l/ubxFi4jgfw5+ROT3vQhiP/ vT523f+Wbau4d5hq6xjE2Hi8644YwAA0QOCScExzfC5bsgHEBPaIucWFOS/2m566G9zgpXF vQ1wxs8seSOT4yF1nG54Lq5KlqRK6yQkZgQPvEPuOK+ZOPRn0vwsVINnBLxlyQHk4orILZf hs75IM4qaqOzAYCOyJRfw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:DnUwriXq2xk=;1/NSSOT6b+dx71tbYuWT5IDgoj+ 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 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) > FWIW I see no/few warnings in stderr normally. I think with one of the > builds there was just one printed during startup. The GTK3 build now > shows none. It's particularly annoying here when starting emacs with a nil minibuffer frame parameter. For some reasons, the normal frame shrinks to a few lines and columns and GTK spills its complaints. >> - OTOH getting a merged protocol from journalctl when logging, for >> example, both gnome-shell and emacs might be the most useful debugging >> tool. But for that we would need some real-time filtering of >> journalctl output to an emacs buffer something I consider hardly >> feasible. > > Maybe we could just write to two destinations (Lisp structure and stderr) when some option is set to a specific value. One common callned function for handling logs in a unified way and then routing them somewhere. > I've retested with older versions: Emacs 28.3 needs resize-mode for the transitions in the test scenario to work correctly - otherwise the big yellow background rectangle stays at its max size. > > Emacs 29 and newer seem just fine without. Can you tell which change is responsible for that? Can we remove x_gtk_resize_child_frames as a whole or only the 'resize-mode' value handling? > When deciding on the changes, I'm less concerned about immediate > breakage than about complicating the implementation, increasing the > odds of someone introducing bugs later - for example, after our resize > implementations add calls to adjust the inner widget too, that will be > now done in two places (the event handling code still needs that too), > and someone 1-2 years later might forget to update one of the > instances when making changes. So suggestions welcome on that front. All we can do here is to add sufficiently many comments to that. And if you think you can discern problematic scenarios sufficiently well, then maybe install everything in one rush. This is completely up to you. You are the only one to have sufficient experience in this area now. > AFAIK, Lucid is in use. I don't have stats on emacs-devel subscribers, but I wouldn't even be surprised to hear it's the majority. > > One reason to use it is https://debbugs.gnu.org/5802 and all bug#s > merged with it. Every place discussing a variation of this bug report > (also Launchpad, GNOME Bugzilla, Reddit) has somebody recommending > Lucid as the fix. It will also depend on how well Lucid fares on XWayland. martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 10 Apr 2026 00:39:50 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 09 20:39:50 2026 Received: from localhost ([127.0.0.1]:45944 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wAzuX-0000A4-5T for submit <at> debbugs.gnu.org; Thu, 09 Apr 2026 20:39:50 -0400 Received: from fhigh-a8-smtp.messagingengine.com ([103.168.172.159]:35169) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1wAzuT-00009S-MM for 80662 <at> debbugs.gnu.org; Thu, 09 Apr 2026 20:39:47 -0400 Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfhigh.phl.internal (Postfix) with ESMTP id 0D2741400241; Thu, 9 Apr 2026 20:39:40 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-06.internal (MEProxy); Thu, 09 Apr 2026 20:39:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1775781580; x=1775867980; bh=NfhjlSU4W1tjIdd8cyxaakVFbFsMSaUuEOsehEY+nF8=; b= ldTI+b1qr2jTUL8TKxGTBcmMDpZeB8CNhQE/sffFN4aFnh6KLD0jLZ/A2q5OiROi 2YksSUmyclfhsAYoR43nUK8Cg8VFPPyggHGeHvY/+Wu2/sMndUAMqIijFEAXNFHN 2BJz1ezi94unRGeAKZDSgofZxiMqr6kORcBiCtlv7nR/p2Jm9CDMYAId5dSQzEhr qQW9JkEtvh/eJWjys9IRzg5Duh8dyPGjXNr5zm7/WdRwL0lFBl8jwmKdwCr9o7md r+znBsVoRKfV9IkYLUiLCuCVVDVzvthhdeqjAm2QJI8z+Dlumc13Rey2/CbVlweQ iBh2AsVILae9CRfvo4OCBQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1775781580; x= 1775867980; bh=NfhjlSU4W1tjIdd8cyxaakVFbFsMSaUuEOsehEY+nF8=; b=A 7crQJHyfaL3hBxeE/VdxCXUsrp7cPlhFzMfNwGs4wwpP5EqoCKkMNrmQjcWU6PzG 8FWwwxIzWegTqqFPPkXP1qnYZwUeJ4HmWWTxkbmD5eQ2wpWg+ZLwQlLvKh3esMLo Pa9yijsdG2JAk7QTsjiAEHI6H5jF/zCrcl/p1a2WhjpQ5hRAIQnry+ZZ6O4/zy9Z RZkx3+WF/akSEjDFiY9NsTCq30NIM2o24ru4C94Ebeoql1ZGjy4QtakK9fZEy7SG US7qXyPiNAUvWHQ1fTBRQsQEeiZ9I4S1hKh0ux4iIXScvI9YAtirNk74dbOAwABW Hyl11Ce/Dc36eja+hsJdw== X-ME-Sender: <xms:y0bYaQO2Xni6TcQqk8QLvbVk7NoXX4Swjh0G3a35kIccM2eHag_qdA> <xme:y0bYaeYocG6-Ops9N4VoHxG4Yw07W9wJr67mfg9nnkT1diUju9ppvmMkW-RAGMmCS P8YVTXjXRuEMFfjjo17W-J8Etw_18KZBs5f6IAIHeuuOVH6ddO70Q> X-ME-Received: <xmr:y0bYaUoWBid-nSO4TPWY7xos0AmWA2K6JD6wafmQ-nsGQpUTxdPYi1ii0vsl-bjYQm14lQ> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvjeeliecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefkffggfgfuvfevfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhih ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh hnpeelhffghefggfeitefhvdevtdeigeevgeetuedttdelgeekudelfefhhfffveeuvden ucffohhmrghinhepghhtkhdrohhrghdpghhnuhdrohhrghenucevlhhushhtvghrufhiii gvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhithhrhiesghhuthhovhdruggv vhdpnhgspghrtghpthhtohepfedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheprh huuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektdeiiedvseguvggssghughhs rdhgnhhurdhorhhgpdhrtghpthhtohepmhgrihhlsegurghnihgvlhdqmhgvnhgulhgvrh druggv X-ME-Proxy: <xmx:y0bYaSZ9oLYLtwtrGjLx1_1lO6btAF6UKAGuA94h30s0BffsiSxD5g> <xmx:y0bYacToLrBOwfSNwknQ5s7SKQjqnrfQr2pwr06vPehL1l3IVP1hAg> <xmx:y0bYaZ60WsALWJekMO_IlDR5v2pPUJ4mpdDV0DWHCJY3EnQoX0zdhQ> <xmx:y0bYaRzlX1gSigmM-11p4gZzLpOEcq6xXQ159GVQQmabyYdTYKBucg> <xmx:zEbYafKqR-lcUJjhqKLm4hf7y34Da_LaFeuQPXQOLFZst6LPHiIrcCEz> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 9 Apr 2026 20:39:35 -0400 (EDT) Message-ID: <afeebaea-130b-4d96-9327-56c1b7d5b337@HIDDEN> Date: Fri, 10 Apr 2026 03:39:31 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) On 09/04/2026 12:21, martin rudalics wrote: > > I might suggest also logging all x_clear_under_internal_border calls, > > the beginning of redisplay_internal, its end, and the arrivals of > > Expose and ConfigureNotify events. > > > > Not sure how generally applicable this all will be, but all these seem > > useful for the current discussion. > > > > Also having the logs it printed to stderr makes it easier to observe > > the events in real-time, correlating them with what goes on on in the > > window. So maybe a switch like that could be good. 'Log to stderr' > > could be a frame parameter, so that it doesn't just print everything > > for all frames. > > An overhaul is strongly needed but I'd somehow wanted to make it > customizable. > > - The output format has to be improved. I started tracing two or three > calls and subsequently expanded them to more and more calls trying to > keep the sizes of stored Lisp data small. It's completely outdated by > now. > > - The idea of storing raw data in a Lisp structure that gets cut off > after a number of operations seems not useful either any more. Back > then the idea was that one could store there output for a number of > operations in a certain period of time and then continue without > tracing. Hardly needed in practice. Yep, and when using I always had to make sure the number is high enough. Test, check, sometimes increase. That didn't buy any real memory savings or etc, I think. > - Merging output into stderror can be a pain especially with Gtk > warnings. Studying how to turn those off - in particular the > gtk_distribute_natural_allocation: assertion 'extra_space >= 0' failed > ones - is a separate subject. FWIW I see no/few warnings in stderr normally. I think with one of the builds there was just one printed during startup. The GTK3 build now shows none. > - OTOH getting a merged protocol from journalctl when logging, for > example, both gnome-shell and emacs might be the most useful debugging > tool. But for that we would need some real-time filtering of > journalctl output to an emacs buffer something I consider hardly > feasible. Maybe we could just write to two destinations (Lisp structure and stderr) when some option is set to a specific value. > - What we should retain however IMO is the dual property of having the > history for development purposes and for asking users who submit bug > reports to optionally provide a log of recent actions. > > >> > Anyway, the upshot is that both the cairo surface and the inner > window > >> > have the desired dimensions after that. > >> > >> I very slowly begin to understand. BTW what does pane in "resizes to > >> pane" mean? > > > > A typo, sorry. It meant "resizes to pane (outer window) _any_ inner > > widgets synchronously". Could use a rewrite with better > > terminology. Maybe "this resizes all the inner windows/widgets > > synchronously"? > > Do we even have the sizes of all inner windows at hand here? Or would > we have to calculate them ourselves? I think the necessary arithmetics are simple enough, as presented in some patches already sent (or maybe in just the latest one). We call XtConfigureWidget with the outer size for Lucid, and gdk_window_resize with scaled width and height for GTK3. At least that's one way for Xt/GTK to have more responsive visuals. There could be something smarter like more advanced synchronization (only resize the back buffer, render to it, then flip as soon as we receive ConfigureNotify), but if we haven't fixed double-buffering with child frames yet (and I don't have anything functioning to propose), that will be more complex than that. And there's no guarantee that that approach won't result in more flickering anyway. > >> > But with GTK3 in particular, xg_frame_set_char_size doesn't call > >> > x_wait_for_event in the regular scenario (when the frame was and > >> > remains visible). So it never flashes outdated contents, for > example. > >> > >> Jan periodically added and removed a flush_and_sync call in earlier > >> incarnations - nothing of that remained. > > > > It seems that flush_and_sync was replaced with > > > > + (void)gtk_events_pending (); > > + gdk_flush (); > > + x_wait_for_event (f, ConfigureNotify); > > And since c49d379f17bcb0ce82604def2eaa04bda00bd5ec we do that only in > the FRAME_VISIBLE_P (f) && !was_visible case. Right? So for GTK frames > we abandoned ConfigureNotify waits six years ago and there were no > complaints attributable to that change since that. Or maybe there were > and I didn't notice. That's a good point. I'm not aware of such complaints, and visuals are okay too. > > Also there's this: > > > > https://docs.gtk.org/gtk3/method.Container.set_resize_mode.html > > > > Deprecated since: 3.12 > > Resize modes are deprecated. They aren’t necessary anymore since > frame clocks and might introduce obscure bugs if used. > > > > So I'm guessing the later changes to the resizing code (there had > been quite a few) in and around gtkutil.c might have fixed the original > problem better than resize-mode. Neither eliminates the two-step update, > though. > > So we should remove it. Agree. I've retested with older versions: Emacs 28.3 needs resize-mode for the transitions in the test scenario to work correctly - otherwise the big yellow background rectangle stays at its max size. Emacs 29 and newer seem just fine without. > >> > I just talking about X toolkit ports and the question is whether > >> > implementing an "atomic" visuals update based on the asynchronous > >> > process can work. > >> > > >> > Actually I have an experiment patch in that direction already - > but it > >> > works best on no-toolkit using the same combination of static > >> > bit_gravity and background=None. Having a difficulty reproducing a > >> > similar effect of bit gravity with Lucid and GTK3's > configurations of > >> > windows without using unmap/remap - which creates an unavoidable > blink > >> > to the parent frame. > >> > >> But you never experimented with non-child frames IIUC. > > > > Not in relation to this bug report anyway. Should I? Not sure why you > > brought that up, perhaps I phrased something imprecisely earlier. > > I meant in connection with both "atomic" updates and static gravity. I > suppose these would affect non-child frames too. I don't know if it's possible to resize or resize-and-move decorated frames as quickly as we do with child frames. And there is less need to. But if there are particular tests you'd like me to run, please tell. > > Though with x_wait_for_event's performance fixed, the choice becomes > > less obvious. Using it allows to defer the next redisplay until after > > ConfigureNotify has arrived and we're sure the frame has moved and > > resized - meaning we won't paint the borders at the wrong > > place. Otherwise we have to ensure that all containers are resized > > quickly enough, as demonstrated previously. > > > > I guess skipping the wait basically gives an opportunity to start the > > next redisplay 5-10 ms earlier, at the cost of extra/duplicated > > management of attributes. But the question of what the frame will be > > showing at the new position until redisplay completes, needs to be > > addressed some additional way. > > Do you have a strategy for how to implement the changes in an order that > allows to attribute possible bugs to specific changes? My original plan was to point out the issues, throw out some possible solutions (to prove that they exist, first of all), and let someone who sees the big picture adjust the details. I've done some amount of testing across ports, though, and we would get the users of Company/Corfu to try out the results too, so at least with child frames the feedback should be swift. We could maybe split the solution into phases: 1) skip the wait, 2) do the direct resizing of widgets, 3) use background=None temporarily. And roll the next one each 1-2 months. Or not. If complaints come, I might able to tell which of these a particular misbehavior would relate to. Or we could revert selectively, at least is there is a repro scenario. When deciding on the changes, I'm less concerned about immediate breakage than about complicating the implementation, increasing the odds of someone introducing bugs later - for example, after our resize implementations add calls to adjust the inner widget too, that will be now done in two places (the event handling code still needs that too), and someone 1-2 years later might forget to update one of the instances when making changes. So suggestions welcome on that front. > I have no idea > how many people use the Lucid/Motif port these days and how frequently > they pull from master. AFAIK, Lucid is in use. I don't have stats on emacs-devel subscribers, but I wouldn't even be surprised to hear it's the majority. One reason to use it is https://debbugs.gnu.org/5802 and all bug#s merged with it. Every place discussing a variation of this bug report (also Launchpad, GNOME Bugzilla, Reddit) has somebody recommending Lucid as the fix.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 9 Apr 2026 11:50:26 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 09 07:50:26 2026 Received: from localhost ([127.0.0.1]:37393 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wAntx-0008Me-MF for submit <at> debbugs.gnu.org; Thu, 09 Apr 2026 07:50:26 -0400 Received: from fout-a5-smtp.messagingengine.com ([103.168.172.148]:51739) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1wAntu-0008L4-Hz for 80662 <at> debbugs.gnu.org; Thu, 09 Apr 2026 07:50:23 -0400 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailfout.phl.internal (Postfix) with ESMTP id 09547EC04AC; Thu, 9 Apr 2026 07:50:17 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-02.internal (MEProxy); Thu, 09 Apr 2026 07:50:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1775735417; x=1775821817; bh=J+EJoigLBXD/N09OjH1f1slVFSG2+n1taJN39/5KZ2Y=; b= gAQNu7o6fq4944kGA9OWH9r4va0IScBM3OzsulWYpEqOvguOkT2ugewk4i1jomEO QRtUMRgqtAeaYTMtZWwQvkzSGMWUfA+gVXrV8bXY8t2vfvF3FbmLIAh9YyxoD0FG Vly4MgJo1rQkWMqjSKVQYNNmxH4GHpCgVIg2vMRT9qZ1qMFlUUy3duEapcqSv4S3 1yP9/6kvB51HopMUJFq1VP2L4PEnWsrxb3I2B753HNuPdGKSzEkv9fMasl7nwaV5 1Y0VSoeqXdLuMaDqeWg0lj4EmcnYUpYas66qw5UBXPbgFYaXTb0b0shqqTr4L/61 EAy8UlnyBAlFhrqXwIm/Sw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1775735417; x= 1775821817; bh=J+EJoigLBXD/N09OjH1f1slVFSG2+n1taJN39/5KZ2Y=; b=I N7Cja8ufrXrjE0KiaEMU7X+/4NI9HJEmYInNiFAO7TgEr9gyuCfUzCOK/PYptOAt f4FFpWndtkG/ICEYv8GozcvAnYLdYlr2YV+1shqrAMZNvUh1sFgWekjWwU4USvV6 xNmUi8KGEKZNgDSqAwbHWI6dd19Pxmmz+Ued8dvPFLZX5MFMSCSsRQOo8C4i2veO klydCtnrhey/7B5DlpnmDZv5ypv2pfN+X1F7XfzvuC0RPjK1bPjcnutmGhNXuuaM 4AYcFKDaaFMOtEzNCUaYLIJfb9cESi8i4emWVQhS0GcJF0lzuDbeL+XV8WuDQ+dM vezSnNHF8muA7BmEUmWBg== X-ME-Sender: <xms:eJLXaV4WuPtLjfd_gWIB_sJm81ZcWSlaoeDflh9WZcnmuhLFv2-vyA> <xme:eJLXaZ66UBfy81FxmYkbyLRIci2S-BmGB0HjarHkYm5r1da2lGObVUacvmI9-wBVn qcR2J_N8PL937e3A9pI4eGr9puwi5EPwcPLRzaPRPGMjGb_x5_dkg> X-ME-Received: <xmr:eJLXaRd3m_CrwcdYeNy0VtX4bE5DvCCTtpm6PhjuKWNnCkZ5k0XsuHh4JBJ8QYJGr27vaw> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvieegtdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefkffggfgfuhffvvehfjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhih ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh hnpedvleeijeevkeejleffgeduiedujeffhfevudduffdvveetkeegveffjefgffelueen ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepgedpmhhouggvpehsmhhtphho uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd eiiedvseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepmhgrihhlsegurghn ihgvlhdqmhgvnhgulhgvrhdruggvpdhrtghpthhtoheplhhurghnghhruhhoseihrghhoh hordgtohhm X-ME-Proxy: <xmx:eJLXadBshLNgBf7v0n5BwkRMvVEdG43AFrD9JdbZhU40RooXBmA7qw> <xmx:eJLXaU9qJsYjfrRSe2i3JPZg1_afjjP56Eyo4yL5BxyMGyKVnx-k6Q> <xmx:eJLXaYKLSLM9GOMxdMycy-KKj8jnYG5tDKazHrqeDynsdVqGFlQzyw> <xmx:eJLXadhF_WIRRlYWF-8Givv64Ur_qSJNq2XcLrxlRS8L-K0aT3JNlA> <xmx:eZLXadF11oAfp5ems8gYc63WxFs4NKNA9mTRqoEzXlK9LlMNIRLXqTVs> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 9 Apr 2026 07:50:15 -0400 (EDT) Message-ID: <d907ac82-5549-4b9e-83c9-a3af1dd3f117@HIDDEN> Date: Thu, 9 Apr 2026 14:50:13 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step From: Dmitry Gutov <dmitry@HIDDEN> To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <d42ed167-1d2c-474d-98d6-1f0127abf112@HIDDEN> <6e9b966e-4ea7-4dba-b7be-4117ac619d7a@HIDDEN> <1dc90c65-6277-4f5b-b0fd-da9d0a37165d@HIDDEN> <93e50ebe-9b9c-4c3e-af65-25d8b0c69c48@HIDDEN> <7fa6e2f7-ec7f-4666-a0ca-308fdda647d9@HIDDEN> Content-Language: en-US In-Reply-To: <7fa6e2f7-ec7f-4666-a0ca-308fdda647d9@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Po Lu <luangruo@HIDDEN>, Daniel Mendler <mail@HIDDEN> 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 (-) Hi Martin, On 08/04/2026 16:01, Dmitry Gutov wrote: > On 08/04/2026 12:09, martin rudalics wrote: >> > But in x_wait_for_event's execution that happens inside the call to >> > totally_unblock_input. When we don't break right after, pselect at the >> > end of the block can (and apparently does) wait the full timeout if no >> > additional events come. >> >> Is there any way to see that in action, for example, by setting >> 'x-wait-for-event-timeout' to 100.0? > > You can take my test scenario from somewhere upthread, uncomment the > binding for x-wait-for-event-timeout inside my-child-move-a-or-b, and > set the value to 0.2 or 0.3. The delay between two phases of update > increases correspondingly. If the value is higher than 0.5 (the timer's > interval), the full update doesn't happen. > > But I can see the difference between 100ms and 5ms already, the effect > is obvious enough here without changes to default. Before we continue with the rest, I'd like to install this improvement. It seems like android_wait_for_event could use the same as well.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 9 Apr 2026 09:21:57 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 09 05:21:57 2026 Received: from localhost ([127.0.0.1]:37060 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wAlaG-00074p-OK for submit <at> debbugs.gnu.org; Thu, 09 Apr 2026 05:21:57 -0400 Received: from mout.gmx.net ([212.227.15.18]:60379) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1wAlaD-00074h-7M for 80662 <at> debbugs.gnu.org; Thu, 09 Apr 2026 05:21:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1775726507; x=1776331307; i=rudalics@HIDDEN; bh=goItUBT54WnkkrIs0EVZxvwhciGeCUMZErPK195fJ7Q=; 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=KFwDgVuWm1f8r2MStrW7wEvMPc9hR+YQHNh+BpBQxtZkPnFDPWqCwVfHn/4GRSPJ fXblVWiKL66v/uL8pwgUKHGFGFBaeRxsBYJyZAiFU6zf9EW7uKbSlN7/jodZ4IYN2 GYkk5dvthg7G+zneFNGBE9VBTGiFAblHF+moLzy7iB0+0NdbvlLcmGHN8pbbBPqFX oxnMkdBr9yNL13/zTI8efwX9sNuoSM57D+/gYQlCbt43MvG/u9fUm3mUnGsiW6PX5 E471IsKToaot0xml/DtNizDYmobucw2gXYcfJGFnHM4EaPuyqhr/wnguH9JfBNE2q zrhkkivPIsfib0rJ8Q== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MTRMs-1w2x1i089U-00SZaJ; Thu, 09 Apr 2026 11:21:46 +0200 Message-ID: <1f71d842-7baf-4067-8296-a56442f39a8a@HIDDEN> Date: Thu, 9 Apr 2026 11:21:43 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 X-Provags-ID: V03:K1:1tWpa2vavInke4n+qRA1AtkMiTORqz1gXFXVzJXVEPpMH39lpU/ MIxyFBlQ6KFvyq7SQqUmAwqEnnX/HfMQPHF9laZTzf5VcdQVD1rBUTtLdt8zXXUSpP5O6dn cuJkmk0NAojWDL01IAcfKCo0uulKszci1hn7uoimc3+yU/ABbizm+XoOj2fNPBxDS8YRAFq Wt7wVAP0NvUpt77nxbG8g== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:VN7ar8sbvf4=;pajyWZoYVPREQlVPJSp4fFVCpV1 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 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) ID4gSSBtaWdodCBzdWdnZXN0IGFsc28gbG9nZ2luZyBhbGwgeF9jbGVhcl91bmRlcl9pbnRl cm5hbF9ib3JkZXIgY2FsbHMsDQogPiB0aGUgYmVnaW5uaW5nIG9mIHJlZGlzcGxheV9pbnRl cm5hbCwgaXRzIGVuZCwgYW5kIHRoZSBhcnJpdmFscyBvZg0KID4gRXhwb3NlIGFuZCBDb25m aWd1cmVOb3RpZnkgZXZlbnRzLg0KID4NCiA+IE5vdCBzdXJlIGhvdyBnZW5lcmFsbHkgYXBw bGljYWJsZSB0aGlzIGFsbCB3aWxsIGJlLCBidXQgYWxsIHRoZXNlIHNlZW0NCiA+IHVzZWZ1 bCBmb3IgdGhlIGN1cnJlbnQgZGlzY3Vzc2lvbi4NCiA+DQogPiBBbHNvIGhhdmluZyB0aGUg bG9ncyBpdCBwcmludGVkIHRvIHN0ZGVyciBtYWtlcyBpdCBlYXNpZXIgdG8gb2JzZXJ2ZQ0K ID4gdGhlIGV2ZW50cyBpbiByZWFsLXRpbWUsIGNvcnJlbGF0aW5nIHRoZW0gd2l0aCB3aGF0 IGdvZXMgb24gb24gaW4gdGhlDQogPiB3aW5kb3cuIFNvIG1heWJlIGEgc3dpdGNoIGxpa2Ug dGhhdCBjb3VsZCBiZSBnb29kLiAnTG9nIHRvIHN0ZGVycicNCiA+IGNvdWxkIGJlIGEgZnJh bWUgcGFyYW1ldGVyLCBzbyB0aGF0IGl0IGRvZXNuJ3QganVzdCBwcmludCBldmVyeXRoaW5n DQogPiBmb3IgYWxsIGZyYW1lcy4NCg0KQW4gb3ZlcmhhdWwgaXMgc3Ryb25nbHkgbmVlZGVk IGJ1dCBJJ2Qgc29tZWhvdyB3YW50ZWQgdG8gbWFrZSBpdA0KY3VzdG9taXphYmxlLg0KDQot IFRoZSBvdXRwdXQgZm9ybWF0IGhhcyB0byBiZSBpbXByb3ZlZC4gIEkgc3RhcnRlZCB0cmFj aW5nIHR3byBvciB0aHJlZQ0KICAgY2FsbHMgYW5kIHN1YnNlcXVlbnRseSBleHBhbmRlZCB0 aGVtIHRvIG1vcmUgYW5kIG1vcmUgY2FsbHMgdHJ5aW5nIHRvDQogICBrZWVwIHRoZSBzaXpl cyBvZiBzdG9yZWQgTGlzcCBkYXRhIHNtYWxsLiAgSXQncyBjb21wbGV0ZWx5IG91dGRhdGVk IGJ5DQogICBub3cuDQoNCi0gVGhlIGlkZWEgb2Ygc3RvcmluZyByYXcgZGF0YSBpbiBhIExp c3Agc3RydWN0dXJlIHRoYXQgZ2V0cyBjdXQgb2ZmDQogICBhZnRlciBhIG51bWJlciBvZiBv cGVyYXRpb25zIHNlZW1zIG5vdCB1c2VmdWwgZWl0aGVyIGFueSBtb3JlLiAgQmFjaw0KICAg dGhlbiB0aGUgaWRlYSB3YXMgdGhhdCBvbmUgY291bGQgc3RvcmUgdGhlcmUgb3V0cHV0IGZv ciBhIG51bWJlciBvZg0KICAgb3BlcmF0aW9ucyBpbiBhIGNlcnRhaW4gcGVyaW9kIG9mIHRp bWUgYW5kIHRoZW4gY29udGludWUgd2l0aG91dA0KICAgdHJhY2luZy4gIEhhcmRseSBuZWVk ZWQgaW4gcHJhY3RpY2UuDQoNCi0gTWVyZ2luZyBvdXRwdXQgaW50byBzdGRlcnJvciBjYW4g YmUgYSBwYWluIGVzcGVjaWFsbHkgd2l0aCBHdGsNCiAgIHdhcm5pbmdzLiAgU3R1ZHlpbmcg aG93IHRvIHR1cm4gdGhvc2Ugb2ZmIC0gaW4gcGFydGljdWxhciB0aGUNCiAgIGd0a19kaXN0 cmlidXRlX25hdHVyYWxfYWxsb2NhdGlvbjogYXNzZXJ0aW9uICdleHRyYV9zcGFjZSA+PSAw JyBmYWlsZWQNCiAgIG9uZXMgLSBpcyBhIHNlcGFyYXRlIHN1YmplY3QuDQoNCi0gT1RPSCBn ZXR0aW5nIGEgbWVyZ2VkIHByb3RvY29sIGZyb20gam91cm5hbGN0bCB3aGVuIGxvZ2dpbmcs IGZvcg0KICAgZXhhbXBsZSwgYm90aCBnbm9tZS1zaGVsbCBhbmQgZW1hY3MgbWlnaHQgYmUg dGhlIG1vc3QgdXNlZnVsIGRlYnVnZ2luZw0KICAgdG9vbC4gIEJ1dCBmb3IgdGhhdCB3ZSB3 b3VsZCBuZWVkIHNvbWUgcmVhbC10aW1lIGZpbHRlcmluZyBvZg0KICAgam91cm5hbGN0bCBv dXRwdXQgdG8gYW4gZW1hY3MgYnVmZmVyIHNvbWV0aGluZyBJIGNvbnNpZGVyIGhhcmRseQ0K ICAgZmVhc2libGUuDQoNCi0gV2hhdCB3ZSBzaG91bGQgcmV0YWluIGhvd2V2ZXIgSU1PIGlz IHRoZSBkdWFsIHByb3BlcnR5IG9mIGhhdmluZyB0aGUNCiAgIGhpc3RvcnkgZm9yIGRldmVs b3BtZW50IHB1cnBvc2VzIGFuZCBmb3IgYXNraW5nIHVzZXJzIHdobyBzdWJtaXQgYnVnDQog ICByZXBvcnRzIHRvIG9wdGlvbmFsbHkgcHJvdmlkZSBhIGxvZyBvZiByZWNlbnQgYWN0aW9u cy4NCg0KID4+ICA+IEFueXdheSwgdGhlIHVwc2hvdCBpcyB0aGF0IGJvdGggdGhlIGNhaXJv IHN1cmZhY2UgYW5kIHRoZSBpbm5lciB3aW5kb3cNCiA+PiAgPiBoYXZlIHRoZSBkZXNpcmVk IGRpbWVuc2lvbnMgYWZ0ZXIgdGhhdC4NCiA+Pg0KID4+IEkgdmVyeSBzbG93bHkgYmVnaW4g dG8gdW5kZXJzdGFuZC4gIEJUVyB3aGF0IGRvZXMgcGFuZSBpbiAicmVzaXplcyB0bw0KID4+ IHBhbmUiIG1lYW4/DQogPg0KID4gQSB0eXBvLCBzb3JyeS4gSXQgbWVhbnQgInJlc2l6ZXMg dG8gcGFuZSAob3V0ZXIgd2luZG93KSBfYW55XyBpbm5lcg0KID4gd2lkZ2V0cyBzeW5jaHJv bm91c2x5Ii4gQ291bGQgdXNlIGEgcmV3cml0ZSB3aXRoIGJldHRlcg0KID4gdGVybWlub2xv Z3kuIE1heWJlICJ0aGlzIHJlc2l6ZXMgYWxsIHRoZSBpbm5lciB3aW5kb3dzL3dpZGdldHMN CiA+IHN5bmNocm9ub3VzbHkiPw0KDQpEbyB3ZSBldmVuIGhhdmUgdGhlIHNpemVzIG9mIGFs bCBpbm5lciB3aW5kb3dzIGF0IGhhbmQgaGVyZT8gIE9yIHdvdWxkDQp3ZSBoYXZlIHRvIGNh bGN1bGF0ZSB0aGVtIG91cnNlbHZlcz8NCg0KID4+ICA+IEJ1dCB3aXRoIEdUSzMgaW4gcGFy dGljdWxhciwgeGdfZnJhbWVfc2V0X2NoYXJfc2l6ZSBkb2Vzbid0IGNhbGwNCiA+PiAgPiB4 X3dhaXRfZm9yX2V2ZW50IGluIHRoZSByZWd1bGFyIHNjZW5hcmlvICh3aGVuIHRoZSBmcmFt ZSB3YXMgYW5kDQogPj4gID4gcmVtYWlucyB2aXNpYmxlKS4gU28gaXQgbmV2ZXIgZmxhc2hl cyBvdXRkYXRlZCBjb250ZW50cywgZm9yIGV4YW1wbGUuDQogPj4NCiA+PiBKYW4gcGVyaW9k aWNhbGx5IGFkZGVkIGFuZCByZW1vdmVkIGEgZmx1c2hfYW5kX3N5bmMgY2FsbCBpbiBlYXJs aWVyDQogPj4gaW5jYXJuYXRpb25zIC0gbm90aGluZyBvZiB0aGF0IHJlbWFpbmVkLg0KID4N CiA+IEl0IHNlZW1zIHRoYXQgZmx1c2hfYW5kX3N5bmMgd2FzIHJlcGxhY2VkIHdpdGgNCiA+ DQogPiArICAgICAgKHZvaWQpZ3RrX2V2ZW50c19wZW5kaW5nICgpOw0KID4gKyAgICAgIGdk a19mbHVzaCAoKTsNCiA+ICsgICAgICB4X3dhaXRfZm9yX2V2ZW50IChmLCBDb25maWd1cmVO b3RpZnkpOw0KDQpBbmQgc2luY2UgYzQ5ZDM3OWYxN2JjYjBjZTgyNjA0ZGVmMmVhYTA0YmRh MDBiZDVlYyB3ZSBkbyB0aGF0IG9ubHkgaW4NCnRoZSBGUkFNRV9WSVNJQkxFX1AgKGYpICYm ICF3YXNfdmlzaWJsZSBjYXNlLiAgUmlnaHQ/ICBTbyBmb3IgR1RLIGZyYW1lcw0Kd2UgYWJh bmRvbmVkIENvbmZpZ3VyZU5vdGlmeSB3YWl0cyBzaXggeWVhcnMgYWdvIGFuZCB0aGVyZSB3 ZXJlIG5vDQpjb21wbGFpbnRzIGF0dHJpYnV0YWJsZSB0byB0aGF0IGNoYW5nZSBzaW5jZSB0 aGF0LiAgT3IgbWF5YmUgdGhlcmUgd2VyZQ0KYW5kIEkgZGlkbid0IG5vdGljZS4NCg0KID4g QWxzbyB0aGVyZSdzIHRoaXM6DQogPg0KID4gICAgaHR0cHM6Ly9kb2NzLmd0ay5vcmcvZ3Rr My9tZXRob2QuQ29udGFpbmVyLnNldF9yZXNpemVfbW9kZS5odG1sDQogPg0KID4gICAgRGVw cmVjYXRlZCBzaW5jZTogMy4xMg0KID4gICAgUmVzaXplIG1vZGVzIGFyZSBkZXByZWNhdGVk LiBUaGV5IGFyZW7igJl0IG5lY2Vzc2FyeSBhbnltb3JlIHNpbmNlIGZyYW1lIGNsb2NrcyBh bmQgbWlnaHQgaW50cm9kdWNlIG9ic2N1cmUgYnVncyBpZiB1c2VkLg0KID4NCiA+IFNvIEkn bSBndWVzc2luZyB0aGUgbGF0ZXIgY2hhbmdlcyB0byB0aGUgcmVzaXppbmcgY29kZSAodGhl cmUgaGFkIGJlZW4gcXVpdGUgYSBmZXcpIGluIGFuZCBhcm91bmQgZ3RrdXRpbC5jIG1pZ2h0 IGhhdmUgZml4ZWQgdGhlIG9yaWdpbmFsIHByb2JsZW0gYmV0dGVyIHRoYW4gcmVzaXplLW1v ZGUuIE5laXRoZXIgZWxpbWluYXRlcyB0aGUgdHdvLXN0ZXAgdXBkYXRlLCB0aG91Z2guDQoN ClNvIHdlIHNob3VsZCByZW1vdmUgaXQuDQoNCiA+IEFuZCBwcm92aWRlZCB3ZSBzZXQgYml0 X2dyYXZpdHkgYmFjayB0byBTdGF0aWNHcmF2aXR5LCBpdCBkb2VzIG5vdA0KID4gZmxpcCBi YWNrIHRvIG9sZCBjb250ZW50cy4gQnV0IHVubGVzcyB3ZSBhZGQgdGhlIGltcHJvdmVtZW50 IHVzaW5nDQogPiBiYWNrZ3JvdW5kPU5vbmUsIGl0IHNwZW5kcyB0aGUgY29ycmVzcG9uZGlu ZyA3LTEwbXMgYXMgYSBzb2xpZA0KID4gcmVjdGFuZ2xlIGZpbGxlZCB3aXRoIGZyYW1lJ3Mg YmFja2dyb3VuZCBjb2xvci4gU3RpbGwgYmV0dGVyIHRoYW4NCiA+IGZsaWNrZXJpbmcgdG8g b2xkIHRleHQsIHRvIGJlIGNsZWFyLg0KDQpPSy4NCg0KID4+ICA+IEkganVzdCB0YWxraW5n IGFib3V0IFggdG9vbGtpdCBwb3J0cyBhbmQgdGhlIHF1ZXN0aW9uIGlzIHdoZXRoZXINCiA+ PiAgPiBpbXBsZW1lbnRpbmcgYW4gImF0b21pYyIgdmlzdWFscyB1cGRhdGUgYmFzZWQgb24g dGhlIGFzeW5jaHJvbm91cw0KID4+ICA+IHByb2Nlc3MgY2FuIHdvcmsuDQogPj4gID4NCiA+ PiAgPiBBY3R1YWxseSBJIGhhdmUgYW4gZXhwZXJpbWVudCBwYXRjaCBpbiB0aGF0IGRpcmVj dGlvbiBhbHJlYWR5IC0gYnV0IGl0DQogPj4gID4gd29ya3MgYmVzdCBvbiBuby10b29sa2l0 IHVzaW5nIHRoZSBzYW1lIGNvbWJpbmF0aW9uIG9mIHN0YXRpYw0KID4+ICA+IGJpdF9ncmF2 aXR5IGFuZCBiYWNrZ3JvdW5kPU5vbmUuIEhhdmluZyBhIGRpZmZpY3VsdHkgcmVwcm9kdWNp bmcgYQ0KID4+ICA+IHNpbWlsYXIgZWZmZWN0IG9mIGJpdCBncmF2aXR5IHdpdGggTHVjaWQg YW5kIEdUSzMncyBjb25maWd1cmF0aW9ucyBvZg0KID4+ICA+IHdpbmRvd3Mgd2l0aG91dCB1 c2luZyB1bm1hcC9yZW1hcCAtIHdoaWNoIGNyZWF0ZXMgYW4gdW5hdm9pZGFibGUgYmxpbmsN CiA+PiAgPiB0byB0aGUgcGFyZW50IGZyYW1lLg0KID4+DQogPj4gQnV0IHlvdSBuZXZlciBl eHBlcmltZW50ZWQgd2l0aCBub24tY2hpbGQgZnJhbWVzIElJVUMuDQogPg0KID4gTm90IGlu IHJlbGF0aW9uIHRvIHRoaXMgYnVnIHJlcG9ydCBhbnl3YXkuIFNob3VsZCBJPyBOb3Qgc3Vy ZSB3aHkgeW91DQogPiBicm91Z2h0IHRoYXQgdXAsIHBlcmhhcHMgSSBwaHJhc2VkIHNvbWV0 aGluZyBpbXByZWNpc2VseSBlYXJsaWVyLg0KDQpJIG1lYW50IGluIGNvbm5lY3Rpb24gd2l0 aCBib3RoICJhdG9taWMiIHVwZGF0ZXMgYW5kIHN0YXRpYyBncmF2aXR5LiAgSQ0Kc3VwcG9z ZSB0aGVzZSB3b3VsZCBhZmZlY3Qgbm9uLWNoaWxkIGZyYW1lcyB0b28uDQoNCiA+IFRob3Vn aCB3aXRoIHhfd2FpdF9mb3JfZXZlbnQncyBwZXJmb3JtYW5jZSBmaXhlZCwgdGhlIGNob2lj ZSBiZWNvbWVzDQogPiBsZXNzIG9idmlvdXMuIFVzaW5nIGl0IGFsbG93cyB0byBkZWZlciB0 aGUgbmV4dCByZWRpc3BsYXkgdW50aWwgYWZ0ZXINCiA+IENvbmZpZ3VyZU5vdGlmeSBoYXMg YXJyaXZlZCBhbmQgd2UncmUgc3VyZSB0aGUgZnJhbWUgaGFzIG1vdmVkIGFuZA0KID4gcmVz aXplZCAtIG1lYW5pbmcgd2Ugd29uJ3QgcGFpbnQgdGhlIGJvcmRlcnMgYXQgdGhlIHdyb25n DQogPiBwbGFjZS4gT3RoZXJ3aXNlIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgYWxsIGNvbnRh aW5lcnMgYXJlIHJlc2l6ZWQNCiA+IHF1aWNrbHkgZW5vdWdoLCBhcyBkZW1vbnN0cmF0ZWQg cHJldmlvdXNseS4NCiA+DQogPiBJIGd1ZXNzIHNraXBwaW5nIHRoZSB3YWl0IGJhc2ljYWxs eSBnaXZlcyBhbiBvcHBvcnR1bml0eSB0byBzdGFydCB0aGUNCiA+IG5leHQgcmVkaXNwbGF5 IDUtMTAgbXMgZWFybGllciwgYXQgdGhlIGNvc3Qgb2YgZXh0cmEvZHVwbGljYXRlZA0KID4g bWFuYWdlbWVudCBvZiBhdHRyaWJ1dGVzLiBCdXQgdGhlIHF1ZXN0aW9uIG9mIHdoYXQgdGhl IGZyYW1lIHdpbGwgYmUNCiA+IHNob3dpbmcgYXQgdGhlIG5ldyBwb3NpdGlvbiB1bnRpbCBy ZWRpc3BsYXkgY29tcGxldGVzLCBuZWVkcyB0byBiZQ0KID4gYWRkcmVzc2VkIHNvbWUgYWRk aXRpb25hbCB3YXkuDQoNCkRvIHlvdSBoYXZlIGEgc3RyYXRlZ3kgZm9yIGhvdyB0byBpbXBs ZW1lbnQgdGhlIGNoYW5nZXMgaW4gYW4gb3JkZXIgdGhhdA0KYWxsb3dzIHRvIGF0dHJpYnV0 ZSBwb3NzaWJsZSBidWdzIHRvIHNwZWNpZmljIGNoYW5nZXM/ICBJIGhhdmUgbm8gaWRlYQ0K aG93IG1hbnkgcGVvcGxlIHVzZSB0aGUgTHVjaWQvTW90aWYgcG9ydCB0aGVzZSBkYXlzIGFu ZCBob3cgZnJlcXVlbnRseQ0KdGhleSBwdWxsIGZyb20gbWFzdGVyLg0KDQptYXJ0aW4NCg==
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 8 Apr 2026 21:32:15 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 08 17:32:15 2026 Received: from localhost ([127.0.0.1]:57585 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wAaVQ-0007d5-Ov for submit <at> debbugs.gnu.org; Wed, 08 Apr 2026 17:32:15 -0400 Received: from fhigh-a3-smtp.messagingengine.com ([103.168.172.154]:52983) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1wAaVN-0007cc-S7 for 80662 <at> debbugs.gnu.org; Wed, 08 Apr 2026 17:32:11 -0400 Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44]) by mailfhigh.phl.internal (Postfix) with ESMTP id 779FC1400049; Wed, 8 Apr 2026 17:32:04 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-04.internal (MEProxy); Wed, 08 Apr 2026 17:32:04 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1775683924; x=1775770324; bh=S+LZ7eZGeZmV6UxHtnQvtEuH9l+mnkzoU2vUuxDqqAs=; b= EF1jvSTJl0PbFH4DLZeUc7JHrmgQ8x1ngR+3IgpXIH6aNta/iyG5EaPIVJ1kzfFK XyRfe/2KdOOtfFvf3fSRzrQio2SmDFVwPnqaZO7Htwzi9pf6Z7GALFKKOM285z+f VwtdW5TwkmsizRCrlHGXWodDJq8B3nbUVGWMM7Qczfb4V8OTKk8S/fAtViFL+sQ/ SEOo42xzgSX8cfOQgpVZi/zEzR1VmZFvo750Pz5ofxmONnqdCO+GeVotMdsObmio vuRj8f+F0reDxo+s0x4RsBRtIKYqhJXJ9P20wL96YUBtN7vC/x2DDwtZ5Vi862fm 6gN2f4JJnIGHJn73WtVNtw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1775683924; x= 1775770324; bh=S+LZ7eZGeZmV6UxHtnQvtEuH9l+mnkzoU2vUuxDqqAs=; b=M 6OAfDpEWNzfYHBfPpASWdMUQCdlZsYeIuz8ZVRH2qBUZHKuQD+NoFt7HPhfqgtLM bNrabo7ewNtkkWKxoThsxKu6Dhk9Mcp2727Bsr5v+y+ESRwwZlVUo3xnuQgIKNCF zevZLP6U2oGv8Zpb3KMXCsuvg0C25I/EvLjSvVwUySGMpyj+ap1kCqdGS/YQh2w5 bKCP1Z7Ep/6kw5Z/bXmqLSpv6E1ToI9G208UtJR1L98IPJyCjm233qWRohQeMu0k MWdL9kdiBtW37U2Lxqc2cMAqA4AZoxsPAID3dP/Wy4TFmQOCxboSQHTqwgeb3O8j Rx50OMmwl5a3Cq/tL2A2Q== X-ME-Sender: <xms:U8nWaRO6lNTAORujNB2w-V3oR7k6OHfLhHDLwNlbnvZlV_dGaKAAHQ> <xme:U8nWabZD1tc3VmMffq9JdDPMDWh3q1eBSRzpf-T984NhJ03n0TJFoGhnENqPf2xc5 T7CmleeKJbJPlgwRNFUR8aB5_U06RlIfLKXU7OQPhnEqiH00KfQG9g> X-ME-Received: <xmr:U8nWadpgVtt6PJ34el_pUntQTZjG_ePrQCeIED_vDPYFcKCf932xm-7g05kSUS5vEvh2vg> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvgeeijecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefkffggfgfuvfevfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhih ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh hnpeeukefhvdeuvdehgeevjedvffdvhfevteejvdfhgeeuieekvddtvddtfeelteeljeen ucffohhmrghinhepghhtkhdrohhrghenucevlhhushhtvghrufhiiigvpedtnecurfgrrh grmhepmhgrihhlfhhrohhmpegumhhithhrhiesghhuthhovhdruggvvhdpnhgspghrtghp thhtohepfedpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheprhhuuggrlhhitghsse hgmhigrdgrthdprhgtphhtthhopeektdeiiedvseguvggssghughhsrdhgnhhurdhorhhg pdhrtghpthhtohepmhgrihhlsegurghnihgvlhdqmhgvnhgulhgvrhdruggv X-ME-Proxy: <xmx:U8nWaXacjTz8NNSql804DB791Ah1XhCgXULoiVV5bMI8WxU4Di9l7g> <xmx:U8nWadQdB_4xC1th8U71VzQIJGQGeKAabRkce4UmgG6W9PD37M3A2Q> <xmx:U8nWaW6s1e8g4WCZM3-2dhQAVXwpgWc4HOtTgtGJh32gesvwqHMnig> <xmx:U8nWaaxIIN7OELweOyWy0SBMkQNlLd1nmjm1DdPrQydwBJeBRz-qwg> <xmx:VMnWaRSpgJiXbz-g7zQzkH_tGO5tN7XmY1P_OKCVqCTQj1jz3oWkoIoQ> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 8 Apr 2026 17:32:01 -0400 (EDT) Message-ID: <0ec0eeb4-97c0-4d1a-932d-dc470d15177e@HIDDEN> Date: Thu, 9 Apr 2026 00:31:59 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) On 08/04/2026 12:09, martin rudalics wrote: > >> > redisplay_internal start: CR=348x208 garbaged=0 > >> > redisplay_internal end: CR=348x208 updated=1 > >> > adjust_frame_size(1, size-and-position): NS=348x208->508x458 > PS=348x208 > >> > adjust_frame_size(5, x_set_window_size_1): NS=348x208->508x458 > PS=348x208 [apply] > >> > >> What triggers redisplay here? The fact that we have > >> > >> SET_FRAME_GARBAGED (f); > >> > >> and are waiting > >> > >> x_wait_for_event (f, ConfigureNotify); > >> > >> in x_set_window_size_1 alone? IIUC the redisplay following now is the > >> root of all evil. > > > > Both of the logs in that example were with the "skip > x_wait_for_event" change already applied because we've discussed it > previously and chose as the main one, for now. > > > > So redisplay happens sometime after the timer function ends and when > the first ConfigureNotify arrives, asynchronously. > > Which timer function if you skipped the x_wait_for_event? The Lisp function that is executing all them. In my test scenario it's #'my-child-move-a-or-b (with a timer calling it each 0.5 sec). In a different scenario it could be an interactive function or something in post-command-hook (my main use case). > >> > adjust_frame_size(1, size-and-position): NS=348x208->508x458 > PS=348x208 > >> > adjust_frame_size(5, x_set_window_size_1): NS=348x208->508x458 > PS=348x208 [apply] > >> > adjust_frame_size(5, change_frame_size): NS=508x458->508x458 > PS=508x458 [apply] > [...] > > > And "adjust_frame_size(5, change_frame_size)" is the new event, in the > > second log, it it invoked by do_pending_window_change, apparently due > > to the XtConfigureWidget call before that (and the setup by > > EmacsFrameResize). > > OK. If you have any ideas how to improve the frame size history calls, > let's do that. There can be any number we need and the one where we > call XtConfigureWidget in x_set_window_size_and_position_1 would be a > candidate. I might suggest also logging all x_clear_under_internal_border calls, the beginning of redisplay_internal, its end, and the arrivals of Expose and ConfigureNotify events. Not sure how generally applicable this all will be, but all these seem useful for the current discussion. Also having the logs it printed to stderr makes it easier to observe the events in real-time, correlating them with what goes on on in the window. So maybe a switch like that could be good. 'Log to stderr' could be a frame parameter, so that it doesn't just print everything for all frames. > > Anyway, the upshot is that both the cairo surface and the inner window > > have the desired dimensions after that. > > I very slowly begin to understand. BTW what does pane in "resizes to > pane" mean? A typo, sorry. It meant "resizes to pane (outer window) _any_ inner widgets synchronously". Could use a rewrite with better terminology. Maybe "this resizes all the inner windows/widgets synchronously"? IIUC a Lucid frame contains 3 windows in total: widget, column_widget and edit_widget. We don't have the menubar here. > > Sorry if this is difficult to follow - not at all trivial for me > > too. It might help to keep more of previous email in context. For > > events logging, maybe add some standardized logging points as well. Or > > maybe we'll reach clarity in some coming emails even without that. > > The frame size history approach was a first rudimentary approach to do > that. Here I rewrote the formats once but never applied that. It seems > that we have to do much more logging here, also because we cannot see > any effects with GDB because that spoils the timing aspects. Yes, I wouldn't try using breakpoints. Print-debugging seems to be working well enough here. > > But with GTK3 in particular, xg_frame_set_char_size doesn't call > > x_wait_for_event in the regular scenario (when the frame was and > > remains visible). So it never flashes outdated contents, for example. > > Jan periodically added and removed a flush_and_sync call in earlier > incarnations - nothing of that remained. It seems that flush_and_sync was replaced with + (void)gtk_events_pending (); + gdk_flush (); + x_wait_for_event (f, ConfigureNotify); > Did you experiment with the > 'x-gtk-resize-child-frames' settings for GTK? IIRC I added this for the > sake of GNOME only. I remember back at the time 'resize-mode' brought a meaningful improvement (e.g. fixed visual artefacts during fast repeated resizing of the child frame). I've never used the value 'hide' because the effect does not seem useful (it's blinking, we don't want that). Testing 'resize-mode' now, it seems like it actually hurts a little: when the child frame is created with resize-mode=nil, the two-step transition (which is there either way) happens a little faster. But the difference is not big. Also there's this: https://docs.gtk.org/gtk3/method.Container.set_resize_mode.html Deprecated since: 3.12 Resize modes are deprecated. They aren’t necessary anymore since frame clocks and might introduce obscure bugs if used. So I'm guessing the later changes to the resizing code (there had been quite a few) in and around gtkutil.c might have fixed the original problem better than resize-mode. Neither eliminates the two-step update, though. > >> When is there a "sole" one? > > > > The no-toolkit build only has the "inner" window. > > Obviously. Do I recall correctly that all these phantom redrawings do > not occur with a non-toolkit build? It avoids the transition caused by nested windows, yes. And provided we set bit_gravity back to StaticGravity, it does not flip back to old contents. But unless we add the improvement using background=None, it spends the corresponding 7-10ms as a solid rectangle filled with frame's background color. Still better than flickering to old text, to be clear. > >> You mean that the time for trying that would be wasted since it's > likely > >> that it would depend too much on the backend? > > > > Backend meaning PGTK? It's already quite smooth, so there isn't much > to improve there. > > No I meant X. IIUC we were never talking about pgtk here so far. > > > I just talking about X toolkit ports and the question is whether > > implementing an "atomic" visuals update based on the asynchronous > > process can work. > > > > Actually I have an experiment patch in that direction already - but it > > works best on no-toolkit using the same combination of static > > bit_gravity and background=None. Having a difficulty reproducing a > > similar effect of bit gravity with Lucid and GTK3's configurations of > > windows without using unmap/remap - which creates an unavoidable blink > > to the parent frame. > > But you never experimented with non-child frames IIUC. Not in relation to this bug report anyway. Should I? Not sure why you brought that up, perhaps I phrased something imprecisely earlier. > > My mental picture (could be wrong, but so far seems confirmed by > > reality) is we draw through two buffers - first cairo surface, then > > from there to the X window. > > > > If either of these buffers is currently smaller than our contents, the > > result is clipped. So both have to be the right size. > > Concluding here: In all your experiments you've never seen an effect > where we ask for a new size of a child frame and never get a > ConfigureNotify for it waiting for the whole timeout which might be our > major concern. Indeed. Not on this system anyway. I haven't particularly looked for that, but still. > And it does not harm with GTK so why should it harm on > our X builds? Sure. Though with x_wait_for_event's performance fixed, the choice becomes less obvious. Using it allows to defer the next redisplay until after ConfigureNotify has arrived and we're sure the frame has moved and resized - meaning we won't paint the borders at the wrong place. Otherwise we have to ensure that all containers are resized quickly enough, as demonstrated previously. I guess skipping the wait basically gives an opportunity to start the next redisplay 5-10 ms earlier, at the cost of extra/duplicated management of attributes. But the question of what the frame will be showing at the new position until redisplay completes, needs to be addressed some additional way.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 8 Apr 2026 13:02:12 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 08 09:02:12 2026 Received: from localhost ([127.0.0.1]:50361 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wASXr-0001Hh-9j for submit <at> debbugs.gnu.org; Wed, 08 Apr 2026 09:02:11 -0400 Received: from fout-a6-smtp.messagingengine.com ([103.168.172.149]:37981) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1wASXn-0001H8-4w for 80662 <at> debbugs.gnu.org; Wed, 08 Apr 2026 09:02:08 -0400 Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfout.phl.internal (Postfix) with ESMTP id 90F0EEC045B; Wed, 8 Apr 2026 09:02:01 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Wed, 08 Apr 2026 09:02:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1775653321; x=1775739721; bh=tIJeLEHL20VlBM2mx9Efk9ypNbb8C66qzHoV/HuF00o=; b= MRBtlJDyPMQpHDlaAuAkfoTVk+/Ff5oZKYdmxVvfL5AZV3vdcOWGSkVXC9nfc0JY aHrvwBIONOt+Noz22jw14icns+FigRM06A0gU/GavVsoq3RMj8MNcgRNeCJ/6jAX KrjP1dIATjQw2S012yXZ8VA64VXIH+DokDrCSUOSS0FxLER0W3Fq/IZqNTqmh1w5 cGfhQ7pB3tJC8/9D8eLR7nhxz1x94OtJRizwkUhDbrZkmYgWOJznIg1MRtyjHAFe WmkaTMHZsBZ0YYh4dyaJhz01JfVAnZeuEJfEKT7OfCrDFD1D72P2jP1rxhomx5kG Khg6pW5/O32IvB3O+F5Qkw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1775653321; x= 1775739721; bh=tIJeLEHL20VlBM2mx9Efk9ypNbb8C66qzHoV/HuF00o=; b=E ow0UeKfqIE62/4/JP8z35nqN3IRynp5GxrgrFravmQ+BPsAKA/nWdcRS5eAQ2pSY L7zeivmn/KyXbJyXCTCyDnlZ/tKBKQ0X418KeCH4Ugi2p7IVMpRIiSptPMXQtEUN ZTlMmWRfgHmxUon3cHjhwXSXzdcOKBDLSioouColXUENYCbrv/ezdaHB2UCT1ogx TRqPLO4h2WDvWNieBsroou0GoyuxhGfjtp9I9vRWdOj8ipB3A94AAfdP6nHU+UO4 hnbJopIcqRdXIQcBvLhXyKgRRGyczNjfp3H4I78rMTUBoKls9B9sF+ieeZbEX2TA bOvAXKl+HBPGYEaswmd1w== X-ME-Sender: <xms:yVHWaSae4qIJeblAneEKaDYFPs9LXVQ50qP2KlcYI3SEwKgYpa0lWw> <xme:yVHWac1xbWWaGwfvZKinQ9ajx4605BnoQZTEvKbxFbkfSDTloYl-b5XnWdxq12p7u r61Szq7NW6pY12FWU3a5hqzirq_T8PezHyJH5RqZAGiZWFIeyT2_dBA> X-ME-Received: <xmr:yVHWaaWqUWf3enMFED47ebAFknXJ2bfQklpRDOdVBDA5xRFf_Hk4fWOM9n-dFvrPrToR> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvfeeigecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefkffggfgfuvfevfhfhjggtgfesthejredttddvjeenucfhrhhomhepffhmihhtrhih ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh hnpeetudeljeegheetgfehgeejkeeuhedvveeikeeufedtvddtveefhfdvveegudejheen ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepfedpmhhouggvpehsmhhtphho uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd eiiedvseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepmhgrihhlsegurghn ihgvlhdqmhgvnhgulhgvrhdruggv X-ME-Proxy: <xmx:yVHWaeVp_KvhMvj2ip7tqPsrPC02lZlomS5mLChf9vV9f1a4Ez094w> <xmx:yVHWaRdQGqH-0td-NpcObfYf0t9YmljG5c9YoET_ZD2Ig4mucxqGQA> <xmx:yVHWafVE7g2EpkGaTQxftV9BN4fwA7Pwl1DY5FXoTx7JPEVF8thDSA> <xmx:yVHWaSeEFnYtfle9vngCLqylq4V-jGVZgKWZ_b7RN7R6rnRVukbQWw> <xmx:yVHWaTl5qlBENTEpjTmE3fg-gDMaDPqJdUD9gV6WmJu1maQuvLSi0duJ> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 8 Apr 2026 09:01:59 -0400 (EDT) Message-ID: <7fa6e2f7-ec7f-4666-a0ca-308fdda647d9@HIDDEN> Date: Wed, 8 Apr 2026 16:01:57 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <d42ed167-1d2c-474d-98d6-1f0127abf112@HIDDEN> <6e9b966e-4ea7-4dba-b7be-4117ac619d7a@HIDDEN> <1dc90c65-6277-4f5b-b0fd-da9d0a37165d@HIDDEN> <93e50ebe-9b9c-4c3e-af65-25d8b0c69c48@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <93e50ebe-9b9c-4c3e-af65-25d8b0c69c48@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) On 08/04/2026 12:09, martin rudalics wrote: > > But in x_wait_for_event's execution that happens inside the call to > > totally_unblock_input. When we don't break right after, pselect at the > > end of the block can (and apparently does) wait the full timeout if no > > additional events come. > > Is there any way to see that in action, for example, by setting > 'x-wait-for-event-timeout' to 100.0? You can take my test scenario from somewhere upthread, uncomment the binding for x-wait-for-event-timeout inside my-child-move-a-or-b, and set the value to 0.2 or 0.3. The delay between two phases of update increases correspondingly. If the value is higher than 0.5 (the timer's interval), the full update doesn't happen. But I can see the difference between 100ms and 5ms already, the effect is obvious enough here without changes to default.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 8 Apr 2026 09:10:04 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 08 05:10:04 2026 Received: from localhost ([127.0.0.1]:49591 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wAOvD-0002oB-Fh for submit <at> debbugs.gnu.org; Wed, 08 Apr 2026 05:10:04 -0400 Received: from mout.gmx.net ([212.227.17.22]:55825) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1wAOvA-0002nY-69 for 80662 <at> debbugs.gnu.org; Wed, 08 Apr 2026 05:10:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1775639394; x=1776244194; i=rudalics@HIDDEN; bh=DAIwmbhKJiiv2zw0U0nGiaQzIFNgmeB1fJU7lymSlVc=; 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=ZWbJ1MxLfJOK54SjpvwQXo4khVltaaGG8UskDLFijiRqEX5pqA4kcn4cEP2/Y9MZ L8G8cYMNU5aMsFAPh4BylJq6DAHEJDwD35xQaBbD1KhCMXkWFoIqzYvT+Hw2rLyW0 zuXEFVDLQveRUx9X9ExSqBM4DDaUiVBH2mztuHtn3BzwYiXTrSd9qCkc9YW0FwMdU NXoDL9ylCtdaAcghHgpbd5TAXkgRl6r5Zw+mX/0cK+mlCqSgndUgKP3/nMekdFvUO w/76comUiL71XTY3OBjYrAf+BjgSeH8WV9iMmQ+4wjA6bQseJBRa/zczgoa62L/FQ cixmayMGG2aSd96I/Q== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MJE6F-1vume9040x-00PQQv; Wed, 08 Apr 2026 11:09:54 +0200 Message-ID: <75ca1953-ad77-4a92-8f15-dfb219354230@HIDDEN> Date: Wed, 8 Apr 2026 11:09:53 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:ytkRjWH7weS0tm6aCFNbbifJFW1dhZpeQXxqV5I8IU85MTcpxq2 AiM+xS3N8lDtkbX2Vgxqe0D/2/4RK25EADbDBttV+OmNMQi2GGwSK0kHYl+TavYdcrwRlEc Asu+SbJPaOZCFMaS6oRy0qtD5L+F5xoYIoIlFr1TVXF9rgWSBrmCAMuGa8uoRHAeoYndAae Ua1gHyyrY1yzZp85FVEGQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:7ZrxP6oxhBo=;c5RcP4DAkAw/CBeqSXA6cItL8ST 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 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) >> > redisplay_internal start: CR=348x208 garbaged=0 >> > redisplay_internal end: CR=348x208 updated=1 >> > adjust_frame_size(1, size-and-position): NS=348x208->508x458 PS=348x208 >> > adjust_frame_size(5, x_set_window_size_1): NS=348x208->508x458 PS=348x208 [apply] >> >> What triggers redisplay here? The fact that we have >> >> SET_FRAME_GARBAGED (f); >> >> and are waiting >> >> x_wait_for_event (f, ConfigureNotify); >> >> in x_set_window_size_1 alone? IIUC the redisplay following now is the >> root of all evil. > > Both of the logs in that example were with the "skip x_wait_for_event" change already applied because we've discussed it previously and chose as the main one, for now. > > So redisplay happens sometime after the timer function ends and when the first ConfigureNotify arrives, asynchronously. Which timer function if you skipped the x_wait_for_event? >> > adjust_frame_size(1, size-and-position): NS=348x208->508x458 PS=348x208 >> > adjust_frame_size(5, x_set_window_size_1): NS=348x208->508x458 PS=348x208 [apply] >> > adjust_frame_size(5, change_frame_size): NS=508x458->508x458 PS=508x458 [apply] [...] > And "adjust_frame_size(5, change_frame_size)" is the new event, in the > second log, it it invoked by do_pending_window_change, apparently due > to the XtConfigureWidget call before that (and the setup by > EmacsFrameResize). OK. If you have any ideas how to improve the frame size history calls, let's do that. There can be any number we need and the one where we call XtConfigureWidget in x_set_window_size_and_position_1 would be a candidate. > Anyway, the upshot is that both the cairo surface and the inner window > have the desired dimensions after that. I very slowly begin to understand. BTW what does pane in "resizes to pane" mean? > Sorry if this is difficult to follow - not at all trivial for me > too. It might help to keep more of previous email in context. For > events logging, maybe add some standardized logging points as well. Or > maybe we'll reach clarity in some coming emails even without that. The frame size history approach was a first rudimentary approach to do that. Here I rewrote the formats once but never applied that. It seems that we have to do much more logging here, also because we cannot see any effects with GDB because that spoils the timing aspects. > But with GTK3 in particular, xg_frame_set_char_size doesn't call > x_wait_for_event in the regular scenario (when the frame was and > remains visible). So it never flashes outdated contents, for example. Jan periodically added and removed a flush_and_sync call in earlier incarnations - nothing of that remained. Did you experiment with the 'x-gtk-resize-child-frames' settings for GTK? IIRC I added this for the sake of GNOME only. >> When is there a "sole" one? > > The no-toolkit build only has the "inner" window. Obviously. Do I recall correctly that all these phantom redrawings do not occur with a non-toolkit build? >> You mean that the time for trying that would be wasted since it's likely >> that it would depend too much on the backend? > > Backend meaning PGTK? It's already quite smooth, so there isn't much to improve there. No I meant X. IIUC we were never talking about pgtk here so far. > I just talking about X toolkit ports and the question is whether > implementing an "atomic" visuals update based on the asynchronous > process can work. > > Actually I have an experiment patch in that direction already - but it > works best on no-toolkit using the same combination of static > bit_gravity and background=None. Having a difficulty reproducing a > similar effect of bit gravity with Lucid and GTK3's configurations of > windows without using unmap/remap - which creates an unavoidable blink > to the parent frame. But you never experimented with non-child frames IIUC. > My mental picture (could be wrong, but so far seems confirmed by > reality) is we draw through two buffers - first cairo surface, then > from there to the X window. > > If either of these buffers is currently smaller than our contents, the > result is clipped. So both have to be the right size. Concluding here: In all your experiments you've never seen an effect where we ask for a new size of a child frame and never get a ConfigureNotify for it waiting for the whole timeout which might be our major concern. And it does not harm with GTK so why should it harm on our X builds? martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 8 Apr 2026 09:10:03 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 08 05:10:03 2026 Received: from localhost ([127.0.0.1]:49589 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wAOvD-0002o9-0P for submit <at> debbugs.gnu.org; Wed, 08 Apr 2026 05:10:03 -0400 Received: from mout.gmx.net ([212.227.17.21]:35727) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1wAOv9-0002nX-IX for 80662 <at> debbugs.gnu.org; Wed, 08 Apr 2026 05:10:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1775639377; x=1776244177; i=rudalics@HIDDEN; bh=vwQ1gwNIHj3xev2pwdXVq4RwBg+nRC75lm3g+WlbZI8=; 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=XfcGVRDGxq9OZT6pRL7X3Zg+Q19XWsbpyR2H35DUa2DvDR4YQVv3pff6r6seNxRS /4kXw99EbMyR1DinGd5iEjJSqHvIPyAJiKpNFCL5e+c5Q2j/HEHrCd8oWY0t5axaK pYJFmFM8K3xJhPfM3aw39kgz83y7Es/eQUc4bdo6tZ4Wb+4+KUxAUu394ueGTwTS5 KkO4iCKeVsaNMF38HVWAa8d/ERV3BtJ/Q/hI50XDNDfNriMjoS+sLJLhtYYRWhQej 0rXrNeQrF/sku803Ye+Hcd8oyvgNuC+r7rJ7vcOXpq56zSPEx0wQAAY3Tp4kujrhA A8+NgSQrlrIpyuysfw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1Mr9G2-1ve6uF0RHi-00kpbV; Wed, 08 Apr 2026 11:09:37 +0200 Message-ID: <93e50ebe-9b9c-4c3e-af65-25d8b0c69c48@HIDDEN> Date: Wed, 8 Apr 2026 11:09:35 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <d42ed167-1d2c-474d-98d6-1f0127abf112@HIDDEN> <6e9b966e-4ea7-4dba-b7be-4117ac619d7a@HIDDEN> <1dc90c65-6277-4f5b-b0fd-da9d0a37165d@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <1dc90c65-6277-4f5b-b0fd-da9d0a37165d@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:c1rVdNgobBmkWu94h6yQMfxGLAxfWH7W7cnw15J3XQieVG6SVUv vpeQoase+fuEiX+gvKWTwEK0/TRvAnZzMvb0q0uxmLKqXouhXoT4klMFKNy7wHgC/+7MKHj kwCwQ/dD2Ds3qiqE8GwNeTrgoggZjPjKhe6Fuza0tKF67xEqMfYCNBr95qd9snnOtQKxV8d vQc8HTkaVriyU9Z4sah/g== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:LweOnt5luyM=;1reFicO0b7nR4Jg38jG9yuZTfhi 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 z9BYHzVRpV9 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 in x_wait_for_event's execution that happens inside the call to > totally_unblock_input. When we don't break right after, pselect at the > end of the block can (and apparently does) wait the full timeout if no > additional events come. Is there any way to see that in action, for example, by setting 'x-wait-for-event-timeout' to 100.0? martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 8 Apr 2026 04:00:20 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 08 00:00:20 2026 Received: from localhost ([127.0.0.1]:46919 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wAK5T-0003id-4c for submit <at> debbugs.gnu.org; Wed, 08 Apr 2026 00:00:20 -0400 Received: from fhigh-b6-smtp.messagingengine.com ([202.12.124.157]:35161) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1wAK5P-0003gQ-2H for 80662 <at> debbugs.gnu.org; Wed, 08 Apr 2026 00:00:17 -0400 Received: from phl-compute-07.internal (phl-compute-07.internal [10.202.2.47]) by mailfhigh.stl.internal (Postfix) with ESMTP id 2D3857A01F6; Wed, 8 Apr 2026 00:00:09 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-07.internal (MEProxy); Wed, 08 Apr 2026 00:00:09 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1775620808; x=1775707208; bh=ThKxQ8ht/4R0MVjEdumzxgBg1HK2O3UxC1Y04omSVqg=; b= QKKVsbV58L6uqFiYcBN49R6hsGKnMFhd/zsWZDbNHACZd6dvsV18e8PPSJQTr0sT tTrxBBCPWJB3ohtv5l31YOGvCOXdG6rh4xDK9q3sYzPJW8l/ITHDpzsCUIOLrEAQ mefclnSXt9difd5+pv51th6z1wGDeYUNMOVWffAD5h0vZrgmyKZhRjbsfnVmeFkp bWgORs8hRligTZ8LlidXM1k1ktRiTXPSizCeex8Z8yJUCAYer+FWpuN70ScM+aGf Tl1Uvc60C7kriGGqS7/Mq45rdDwPU4BBeWkhajhC+Jiwgyi6fHDSftgSjh+rzz1X X2R332P0lBK3NTwojqAVzg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1775620808; x= 1775707208; bh=ThKxQ8ht/4R0MVjEdumzxgBg1HK2O3UxC1Y04omSVqg=; b=k q71GdFtC6t0/qR7iMGycUj6dU0AnwAi6LXC/WC8b2/IZKUldv7rHwzuN4f2nS5y9 WoNsIZWTAvsphfA25RQ2XCbAwTcWRNAcIrTQt7KBJS+1wCnVpTS7Rqxd6MI/0FKB b5dputTnbkeSwTXjFxUPi79yy0NBUtXBSzCrBYwxLygIiUn9K7cq4+iOyUEQ9SJe Bx33RxtUaTrj5rM4f87LW9+dTqb1xwUvL+DqXA79Qi+guQjoURUcRLzQJ3R3jRVF u/6kfipl5/66iRMqNo0xYhYhuqCZFTqri+T7S3WuwTQrSMjCQ1C42CoW1czcneuO 3XiAUjk68qKeY+HoNRxAg== X-ME-Sender: <xms:yNLVac67hsbXbBAhlESO86h1yWeeSqgfvpMA4K8_Yvc1dRgkSjUSPQ> <xme:yNLVaVUC0wvD-528qmH2ibYWNyYrQKgIEr_Hfoiz4K4SgCU9r1B-Cga4XwdvOUsAs kOrw-Cmd32GcFxGaBH6KJFvzWWYahzAWvDFOuZ2URhT9YD7xiOe46d2> X-ME-Received: <xmr:yNLVaY1kyq2mlerl4hMZ_w3UKewpbTaLsVymehfUOPg1BAexepWlLkCxqBLQy-xbDb96> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvvdehgecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefkffggfgfuvfevfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhih ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh hnpeegleefteekgffhvdfhtdegveevveetteegteevgeettdehhfdukeetheffueekkeen ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepfedpmhhouggvpehsmhhtphho uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd eiiedvseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepmhgrihhlsegurghn ihgvlhdqmhgvnhgulhgvrhdruggv X-ME-Proxy: <xmx:yNLVaa0BSrZsqrEw-yNT-Ut2xTZWEiw-C_PLEbp41GUqWb_0V1BK-A> <xmx:yNLVaT-g4RZbaDGwzkl_Lytw_gg7aFxBYPfiBvR0RyYv5sGECinqCg> <xmx:yNLVaf1Vr9pg7ZtEiMGCK-wOwCS2QUTNMBvdAd4nr_ke2pI_Ff8Mog> <xmx:yNLVaY_097ysDyEL9DyEKEusBwJeUkfu0azXuGJ-RWz91BtMEAElEw> <xmx:yNLVacH2ITun2YPTm5XysyhlMxSiV0mY5w44ygHnNK9rHg5Ugh0cxuC-> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 8 Apr 2026 00:00:05 -0400 (EDT) Message-ID: <20db7ba4-3301-4b13-aeb3-e0022a95e7e4@HIDDEN> Date: Wed, 8 Apr 2026 07:00:00 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) On 07/04/2026 13:04, martin rudalics wrote: > > redisplay_internal start: CR=348x208 garbaged=0 > > redisplay_internal end: CR=348x208 updated=1 > > adjust_frame_size(1, size-and-position): NS=348x208->508x458 PS=348x208 > > adjust_frame_size(5, x_set_window_size_1): NS=348x208->508x458 > PS=348x208 [apply] > > What triggers redisplay here? The fact that we have > > SET_FRAME_GARBAGED (f); > > and are waiting > > x_wait_for_event (f, ConfigureNotify); > > in x_set_window_size_1 alone? IIUC the redisplay following now is the > root of all evil. Both of the logs in that example were with the "skip x_wait_for_event" change already applied because we've discussed it previously and chose as the main one, for now. So redisplay happens sometime after the timer function ends and when the first ConfigureNotify arrives, asynchronously. If we don't skip x_wait_for_event, there is no redisplay before ConfigureNotify and until the wait ends. But the wait calls XPending which flushes the output buffer, causing X to try to display *something*. It will either be the previous window contents (however much of them is available) or a background fill. Or the parent window. (That's not in these two logs.) > > redisplay_internal start: CR=348x208 garbaged=1 > > redisplay_internal end: CR=348x208 updated=1 > > ConfigureNotify(child/outer): x=350 y=100 w=508 h=458 > > ConfigureNotify(child/inner): x=0 y=0 w=508 h=458 > > Expose(child/inner): x=348 y=0 w=160 h=208 count=1 > > Expose(child/inner): x=0 y=208 w=508 h=250 count=0 > > redisplay_internal start: CR=508x458 garbaged=0 > > redisplay_internal end: CR=508x458 updated=1 > > > > And with the proposed change: > > > > redisplay_internal start: CR=348x208 garbaged=0 > > redisplay_internal end: CR=348x208 updated=1 > > adjust_frame_size(1, size-and-position): NS=348x208->508x458 PS=348x208 > > adjust_frame_size(5, x_set_window_size_1): NS=348x208->508x458 > PS=348x208 [apply] > > adjust_frame_size(5, change_frame_size): NS=508x458->508x458 > PS=508x458 [apply] > > And why are the new sizes applied here - I don't see your > > "x_set_window_size_1, not waited for event" Both scenarios not waited for event, so I dropped that part from the logging, sorry if that's confusing. > in the first adjust_frame_size and wonder how the second > adjust_frame_size call happen - since it's a non-delayed call both of > these were false > > if (delay || (redisplaying_p && !safe)) > > Is this from EmacsFrameResize or the ConfigureNotify event? Neither > make an entry here. I'm confused as you may have noticed by now ... It's from the "else" branch at the end of x_set_window_size_and_position_1: adjust_frame_size (...). And "adjust_frame_size(5, change_frame_size)" is the new event, in the second log, it it invoked by do_pending_window_change, apparently due to the XtConfigureWidget call before that (and the setup by EmacsFrameResize). Anyway, the upshot is that both the cairo surface and the inner window have the desired dimensions after that. Sorry if this is difficult to follow - not at all trivial for me too. It might help to keep more of previous email in context. For events logging, maybe add some standardized logging points as well. Or maybe we'll reach clarity in some coming emails even without that. > >> As for the last sentence: Is it an effect of all changes combined or is > >> it a particular change that does that. > > > > Either first two or all three together, depending on > > > > > 1+2 work together - without either the inner window's update is > > two-step. With minor differences that if x_wait_for_event is skipped > > but bit_gravity is unchanged (NorthWestGravity) then the first step > > renders the older buffer contents in the smaller (older dimensions) > > rectangle while the rest filled with background color. > > Because with static gravity we get two ConfigureNotify events? Maybe yes, but that's implementation. More importantly, it's because the X server *delays* the repainting the affected region because it doesn't have anything to put there for a while (so the existing pixels stay until our next redisplay). > > With Xt, in the current implementation, IIUC after we send > > XMoveResizeWindow and then call x_wait_for_event, only the outer > > window is resized at first because their "gluing together" is managed > > by the Xt configuration, which gets updated after the first > > ConfigureNotify arrives, with XtDispatchEvent inside "OTHER:" in > > handle_one_xevent. If redisplay happens right then, it could get > > clipped to the smaller size of the inner window. > > The smaller size is the old size. Yes. > > But that's probably not the main problem. Which is that when we call > > x_wait_for_event, it goes to totally_unblock_input -> ... -> XPending, > > which flushes the current X output buffer, forcing a redraw. Depending > > on the value of bit_gravity, it would either be pixels from the > > previous position (clipped to its size), or just the background > > color. And then there is rest of the wait, and redisplay afterwards > > (IIUC). > > > > I don't have a picture of this scenario in full detail, TBH. It would > > be nice if we could fix it in a way that doesn't increase > > branching. But if we found a way to suppress the update of the window > > until after the wait, that would increase the perceived latency. > > Once more: Is this about resizing _and_ moving only? Why does the same > problem not happend for a simple resizing of the child frame leaving it > at its old position. The two ConfigureNotify events should be received > in both. Is it the Expose events? Simple resizing is also affected (though not everywhere), see below. But due to perception and how the contents move on the screen (or stay the same), it's easier for the brain (my own, at least) to compensate and see a resize as one motion even if it has a similar two-step update. The received events are almost the same, and the double Expose doesn't seem to matter much in its effect on redisplay (applying the optimization to only react to the last Expose does no change). But with GTK3 in particular, xg_frame_set_char_size doesn't call x_wait_for_event in the regular scenario (when the frame was and remains visible). So it never flashes outdated contents, for example. On Lucid O2OH I can measure a difference in how long x_wait_for_event takes without my two-liner patch between resizes and resize-and-moves - and the latter more often take the full timeout. Some small difference in timings of the events maybe. > > > So IIUC it's the move > > > event that harms at the time the Expose events arrive. Right? > > > > I think in most traces I see the Expose event(s) arriving after the > > last (or sole) ConfigureNotify event. > > When is there a "sole" one? The no-toolkit build only has the "inner" window. > > But even when they are > > interleaved that makes no big difference. > > > > I was also curious whether I'm missing some bigger picture that would > > inform more elegant improvement (e.g. moving the Cairo surface > > dimensions update somewhere else at the beginning of redisplay; and > > setting backgrounds to None constantly while dealing with background > > fill some other way; not sure if it's at all feasible to make the > > update atomic without skipping the wait for events, though, without > > Wayland). > > You mean that the time for trying that would be wasted since it's likely > that it would depend too much on the backend? Backend meaning PGTK? It's already quite smooth, so there isn't much to improve there. I just talking about X toolkit ports and the question is whether implementing an "atomic" visuals update based on the asynchronous process can work. Actually I have an experiment patch in that direction already - but it works best on no-toolkit using the same combination of static bit_gravity and background=None. Having a difficulty reproducing a similar effect of bit gravity with Lucid and GTK3's configurations of windows without using unmap/remap - which creates an unavoidable blink to the parent frame. > >> Does an event for the gdk_window_resize precede an event for the > >> gdk_window_move_resize? > > > > I don't think so. > > > > This is with x_cr_update_surface_desired_size added (which is > necessary but not sufficient), with or without the direct > gdk_window_resize call: > > > > adjust_frame_size(1, size-and-position): NS=348x208->508x458 PS=348x208 > > adjust_frame_size(5, xg_frame_set_char_size): NS=348x208->508x458 > PS=348x208 [apply] > > redisplay_internal start: CR=508x458 garbaged=1 > > redisplay_internal end: CR=508x458 updated=1 > > ConfigureNotify(child/outer): x=350 y=100 w=508 h=458 > > ConfigureNotify(child/inner): x=0 y=0 w=508 h=458 > > Expose(child/inner): x=348 y=0 w=160 h=208 count=1 > > Expose(child/inner): x=0 y=208 w=508 h=250 count=0 > > Same as above. So we have a > > >> gdk_window_move_resize (gwin, x, y, outer_width, outer_height); > > followed by > > >> gdk_window_resize (edit_gwin, width / scale, height / scale); > > where IIRC internally GDK resolves the latter to a move/resize with the > position unchanged. Which of the two do in your opinion cause the > ConfigureNotify events? Both? Maybe both. If gdk_window_resize alters dimensions of the inner window (sends the event), and then gdk_window_move_resize's cascades to it, sees that the dimensions already are at the desired values, it could skip resizing the inner window. Not sure if it's important really. The key part seems that the redisplay starts with the inner window already having the desired dimensions - and the ConfigureNotify events arrive later. > >> If not, how would the gdk_window_resize affect > >> behavior? > > > > My hypothesis was that internally it's similar enough to Xt so it > could use a similar fix - which helped. Maybe/probably something updates > some dimensions with a delay. > > > > If I log the width/height for the inner window at the beginning of > redisplay (returned by XGetWindowAttributes, which breaks the visuals > again because of the sync, of course), that finally shows a difference: > > > > redisplay_internal start: XW=348x208 CR=508x458 garbaged=1 > > > > without direct gdk_window_resize vs > > > > redisplay_internal start: XW=508x458 CR=508x458 garbaged=1 > > > > with it. > > So this is the effect of x_cr_update_surface_desired_size. I have no > idea how this affects redisplay. No, this is the effect of gdk_window_resize. The effects of x_cr_update_surface_desired_size can be seen in the value of CR= in the same logs. > > That's the first redisplay, before ConfigureNotify arrives. > > > >> What is the effect of the "inner" resize without cairo - > >> could we do without it if cairo were not used? > > > > No, still needed. Same effect. > > Then how gets redisplay affected in that case? My mental picture (could be wrong, but so far seems confirmed by reality) is we draw through two buffers - first cairo surface, then from there to the X window. If either of these buffers is currently smaller than our contents, the result is clipped. So both have to be the right size. > >> Why does doing things > >> "eagerly" have an effect, in particular when mixing a gdk call with > >> x_cr_update_surface_desired_size? > > > The Cairo context does not belong to GDK, right? We create it > > x_begin_cr_clip connected to FRAME_X_RAW_DRAWABLE, which in the > > single-buffered case is "the window itself" (from the comment). Then > > we reset it upon receiving ConfigureNotify in handle_one_xevent. > > > > And the next redisplay arrives before that. > > But if it's in the magic of cairo, how does a non-cairo build get > affected? If there is no Cairo in the chain, that just requires the X window's size to be correct.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 7 Apr 2026 14:29:49 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 07 10:29:49 2026 Received: from localhost ([127.0.0.1]:37722 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1wA7R7-00043w-6V for submit <at> debbugs.gnu.org; Tue, 07 Apr 2026 10:29:49 -0400 Received: from fout-b8-smtp.messagingengine.com ([202.12.124.151]:55121) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1wA7R3-000431-GF for 80662 <at> debbugs.gnu.org; Tue, 07 Apr 2026 10:29:47 -0400 Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfout.stl.internal (Postfix) with ESMTP id 760E41D0018F; Tue, 7 Apr 2026 10:29:39 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-06.internal (MEProxy); Tue, 07 Apr 2026 10:29:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1775572179; x=1775658579; bh=wX2I23lW/wP07k6ZOsywq0p6iNNYHGISkU2jwT398Pk=; b= UA4tLjmLdCLYTTzsbWo+ZRHsn+0GkFyU7YPd7/PNJFecgpKGtFM5UupQB5eJZe29 aV8MXJ+QhhxMvvKmwOdObo+DXx3lVJ8Jyg+WL/wTeuB0HmDB+cCPJqziL5pzW5Qv X1wCe4+yWBe3dd3sCx49spdfc2H24J5yViDqJiq66LV0fx2klsCoe03lay6poiMQ sqCm76tV2y9jlMabsoqcsGLP3+W5qKGsclINVH3dKemfu+IZ+MfScClxGYDHXR9H /FKQmqzWrgNn3gNTAnnete3LMnn+U6BjyAhYDz+ooYV4utSo9lyabTBAjUtx1NNL AJE3ds56BK5zNU4Em/54OQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1775572179; x= 1775658579; bh=wX2I23lW/wP07k6ZOsywq0p6iNNYHGISkU2jwT398Pk=; b=M 72MU/0nVxA65MqoItz2Ijuth0iEl62msIDmLY+8vxHqSnnP/zempBzdQEQ5YRUxX AO7bDgRYKAT53aiLOrOdNa/GM8/hAZJ8rf/Llis3UWrp/A3p8kyASXmy2R/tLwJU dWK6DCrc/5aKYGwKjgcRzYzd8N3Y+YI1tPGEd7EtAXLt/J/W3XNapnjKYTTzdxAd 65DvVCwVXYUbDQQOLPRV7r50bx2D4JB5/DBtZJ9VGnfVVGD5EeeANqQnI2KMyoC4 pHqxt9h+cIcuPKwDvPfa3N4+Q7p//KNmCl5vcv640Wpytt+gVgwgiUmSi6OZ3yux g/OeY1GvNPMwUndXnKmvQ== X-ME-Sender: <xms:0hTVaVMT_zVGxLTN0KDj5CXYfr9GrCnGAI1Px5KwTyayeq4XfLu8mA> <xme:0hTVafbDTaWe1x9DrO292i9G1DvodD-_hso-nR_C_ORozQQjS77uYQNCZpNIZAsd2 QB_7EEW8fxOl-HKJdUMbdE02-8RphftRIXAL2ljEs2CQSxBqkrxpQ> X-ME-Received: <xmr:0hTVaRp8cW8knTByHyG18aB0di7zX8BmIAE8xcS1X85Wwyd4_0SvIyMLoMO_ekmD2YCa> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgddvtdekkecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpefkffggfgfuvfevfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhih ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh hnpeegleefteekgffhvdfhtdegveevveetteegteevgeettdehhfdukeetheffueekkeen ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepfedpmhhouggvpehsmhhtphho uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd eiiedvseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepmhgrihhlsegurghn ihgvlhdqmhgvnhgulhgvrhdruggv X-ME-Proxy: <xmx:0hTVaba2k0W3rznGzMW_T2zb4L5t1XrBCgEg-fSd6kCPjP4S8QABaA> <xmx:0hTVaRTLNQTZSr6h2zdeNekEjM5Do2IzIrwG066I2-jLjUnxINBFbA> <xmx:0hTVaa7wXLj95be-t5YxCKWmEEAd7EgKfeUWDA8nQEMs0sR8mkMITw> <xmx:0hTVaezXCTIl29kkxrtitbFh0eQIyztOrFKKDpm3vZMr_sC0h9yNJg> <xmx:0xTVaQJgw2atrK9JbteuRWMHk5yUhTftBiAVwqANPOi_exEHemJlGPn7> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 7 Apr 2026 10:29:37 -0400 (EDT) Message-ID: <1dc90c65-6277-4f5b-b0fd-da9d0a37165d@HIDDEN> Date: Tue, 7 Apr 2026 17:29:35 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN> <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN> <d42ed167-1d2c-474d-98d6-1f0127abf112@HIDDEN> <6e9b966e-4ea7-4dba-b7be-4117ac619d7a@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <6e9b966e-4ea7-4dba-b7be-4117ac619d7a@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 Cc: Daniel Mendler <mail@HIDDEN> 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 (-) On 07/04/2026 13:04, martin rudalics wrote: > > On that thought, I got to wondering why x_wait_for_event takes the > full 100 ms every time. > > > > This helps a lot: > [...] > > + if (!f->wait_event_type) > > + break; > > So what happens here without that change? > > if (any && any->wait_event_type == event->type) > any->wait_event_type = 0; /* Indicates we got it. */ > > Does x_any_window_to_frame not yield our frame? I think the above line works fine, and wait_event_type is assigned. But in x_wait_for_event's execution that happens inside the call to totally_unblock_input. When we don't break right after, pselect at the end of the block can (and apparently does) wait the full timeout if no additional events come.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 7 Apr 2026 10:04:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 07 06:04:39 2026
Received: from localhost ([127.0.0.1]:35025 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wA3IU-0005lH-Fu
for submit <at> debbugs.gnu.org; Tue, 07 Apr 2026 06:04:39 -0400
Received: from mout.gmx.net ([212.227.15.15]:46099)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1wA3IR-0005js-FQ
for 80662 <at> debbugs.gnu.org; Tue, 07 Apr 2026 06:04:36 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1775556269; x=1776161069; i=rudalics@HIDDEN;
bh=kKqbc4Vh1P91sIxYPgr9mprU6MDeVfz59icvK/0DFtg=;
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=f4tpsuNg1gnFY7YhwvIHiHQAzFKRBRTs+Sdisr7qiGrqKXB3e3uhLr5KnTD5MT3X
dS3l3S8yu4b6CDF0lz8RaChD5fCe/6HzJiucOrAQIiuwZxHzp6ftsVS9V95CoEAE9
qJsTzoA+WWNtWGYwflN8ntpaZ2sFYJdw/lw72s+yyyl8wrbJ7r61V/JQCkYwC6E4t
LlG1oQ/us4U+D76h8PewPK5nOmVBupyulJVrZdtJQvFtxQbtj7buv6/isW5tyTWIh
6O2z0BARo0TT44BxA6ShbQU3Cq0DaA9Fw8WP61ZFBj57EY8Jn+ILwOa/Z6mJUSHx2
VU/Zi6uSfctfAh5vaQ==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from client.hidden.invalid by mail.gmx.net (mrgmx005
[212.227.17.190]) with ESMTPSA (Nemesis) id 1MWzfv-1vzHng0feb-00Vslm; Tue, 07
Apr 2026 12:04:29 +0200
Message-ID: <6e9b966e-4ea7-4dba-b7be-4117ac619d7a@HIDDEN>
Date: Tue, 7 Apr 2026 12:04:27 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN>
<0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN>
<9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN>
<2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN>
<47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN>
<f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN>
<34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN>
<26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN>
<b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN>
<806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN>
<206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN>
<edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN>
<3655f756-7654-479e-8bcf-3825177b2307@HIDDEN>
<23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN>
<3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN>
<58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN>
<3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN>
<7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN>
<d42ed167-1d2c-474d-98d6-1f0127abf112@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <d42ed167-1d2c-474d-98d6-1f0127abf112@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:Li/FeYaXAqB2nJlaPEXn7K/33AIwgL6pCyPlNGMBaEBRYmCFD2p
GVKchCDCIsv2paonAuF55cgadtQ6NLzc+VxnldJLUOhS78kksxfVqptW1L0ZFK2XA3OKBRW
9tkk9EBBmcd1f7+iCszjPFsNUxpg9yV4b3W5AK2D34oFCiZEhSBiCkO55A5xRJ+ZlYIpslL
pZ/D12aDqDA2QVgryESpA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:mpR01sCm1yg=;84BMkhBtvQLLrJmqVPN3M6r4atx
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
KDbkz4VnPLkJFOCF84i+rnuIlyljdpTuA==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80662
Cc: Daniel Mendler <mail@HIDDEN>
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 (-)
> On that thought, I got to wondering why x_wait_for_event takes the full 100 ms every time.
>
> This helps a lot:
[...]
> + if (!f->wait_event_type)
> + break;
So what happens here without that change?
if (any && any->wait_event_type == event->type)
any->wait_event_type = 0; /* Indicates we got it. */
Does x_any_window_to_frame not yield our frame?
martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 7 Apr 2026 10:04:30 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 07 06:04:30 2026
Received: from localhost ([127.0.0.1]:35022 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1wA3IK-0005ji-Ed
for submit <at> debbugs.gnu.org; Tue, 07 Apr 2026 06:04:30 -0400
Received: from mout.gmx.net ([212.227.15.18]:57277)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1wA3IG-0005i2-0r
for 80662 <at> debbugs.gnu.org; Tue, 07 Apr 2026 06:04:26 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1775556257; x=1776161057; i=rudalics@HIDDEN;
bh=32vKqrphUnnVEnBWdxHrGBaabb3UHBIfWiQw1/ZMcnM=;
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=K2cKU+PD2EqNbMAoJSRMTUFNYEBuSAl+cL0xf8jypBXY7vy50j7fM1EMbPLprx/t
m6SKI3SQr+iWMErTVoBvrARb/8ZTVlOSAkrUoq6P8sAAbLSCVSvIxAFJTSWMDb+2s
Js/H0sd3r+lGMiqOkb1jHJeszzrBWUSjQIfD+TyV8JSIwOQc4RcKtKkzmV52wVNat
lLPx38+9YpWH2uBN4IrIYCLHt1ismtvmFq29m1ZrzPOUt9hvGdFLYWAn6zrM7xFFp
/z+fUZkyivaf9uktwEoK6GrjpNOexqpGJUmm2C/8j6k/DZXnczsve3YUYDkQNAvIr
AJ8H2nOeX8FdoX+epQ==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from client.hidden.invalid by mail.gmx.net (mrgmx004
[212.227.17.190]) with ESMTPSA (Nemesis) id 1N2V4P-1vToKc1JqJ-010oRN; Tue, 07
Apr 2026 12:04:17 +0200
Message-ID: <ff27dbe1-aa23-4957-9f0a-6027812e7843@HIDDEN>
Date: Tue, 7 Apr 2026 12:04:15 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN>
<d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN>
<0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN>
<9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN>
<2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN>
<47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN>
<f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN>
<34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN>
<26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN>
<b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN>
<806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN>
<206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN>
<edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN>
<3655f756-7654-479e-8bcf-3825177b2307@HIDDEN>
<23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN>
<3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN>
<58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN>
<3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN>
<7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:/3Luf3fDflUSzZ0zg1Xj+LRO7XUqvGEDDfaAYpRg8PHm88vd6QI
G20b6+e40L7Maf/wslCaW3z4qBfLDEn/LcgdFfACq3vl6frxSe4BGpwClW1yuTlceXJ/YeW
sG85Q5vmdd5svyBUvGzL/ld+bU7gTmm2BM/tKyehZnUA5NcG3m7YFyhzz4sz7CIi2IJKRxh
l59SHdsbxTNirAhbcce+Q==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:x/a47r0lw3s=;kKCZlvIkeTpBWWLTVcGe0Zd58t4
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
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80662
Cc: Daniel Mendler <mail@HIDDEN>
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 (-)
> redisplay_internal start: CR=348x208 garbaged=0
> redisplay_internal end: CR=348x208 updated=1
> adjust_frame_size(1, size-and-position): NS=348x208->508x458 PS=348x208
> adjust_frame_size(5, x_set_window_size_1): NS=348x208->508x458 PS=348x208 [apply]
What triggers redisplay here? The fact that we have
SET_FRAME_GARBAGED (f);
and are waiting
x_wait_for_event (f, ConfigureNotify);
in x_set_window_size_1 alone? IIUC the redisplay following now is the
root of all evil.
> redisplay_internal start: CR=348x208 garbaged=1
> redisplay_internal end: CR=348x208 updated=1
> ConfigureNotify(child/outer): x=350 y=100 w=508 h=458
> ConfigureNotify(child/inner): x=0 y=0 w=508 h=458
> Expose(child/inner): x=348 y=0 w=160 h=208 count=1
> Expose(child/inner): x=0 y=208 w=508 h=250 count=0
> redisplay_internal start: CR=508x458 garbaged=0
> redisplay_internal end: CR=508x458 updated=1
>
> And with the proposed change:
>
> redisplay_internal start: CR=348x208 garbaged=0
> redisplay_internal end: CR=348x208 updated=1
> adjust_frame_size(1, size-and-position): NS=348x208->508x458 PS=348x208
> adjust_frame_size(5, x_set_window_size_1): NS=348x208->508x458 PS=348x208 [apply]
> adjust_frame_size(5, change_frame_size): NS=508x458->508x458 PS=508x458 [apply]
And why are the new sizes applied here - I don't see your
"x_set_window_size_1, not waited for event"
in the first adjust_frame_size and wonder how the second
adjust_frame_size call happen - since it's a non-delayed call both of
these were false
if (delay || (redisplaying_p && !safe))
Is this from EmacsFrameResize or the ConfigureNotify event? Neither
make an entry here. I'm confused as you may have noticed by now ...
> redisplay_internal start: CR=508x458 garbaged=1
> redisplay_internal end: CR=508x458 updated=1
> ConfigureNotify(child/outer): x=350 y=100 w=508 h=458
> ConfigureNotify(child/inner): x=0 y=0 w=508 h=458
> Expose(child/inner): x=348 y=0 w=160 h=208 count=1
> Expose(child/inner): x=0 y=208 w=508 h=250 count=0
> redisplay_internal start: CR=508x458 garbaged=0
> redisplay_internal end: CR=508x458 updated=1
>> > To recap: the previous patch mostly fixed the no-toolkit build in this
>> > scenario using 1) skipping wait for events (to avoid flushing to X11
>> > too soon), 2) changing no-toolkit bit_gravity back to Static, 3)
>> > switching X11 windows' background to None temporarily (for child frame
>> > and for its parent frame which is naturally rendered behind it) so
>> > that it doesn't flash where the child frame was. And the child frame
>> > shows at the new position only after the new redisplay finishes.
>>
>> As for the last sentence: Is it an effect of all changes combined or is
>> it a particular change that does that.
>
> Either first two or all three together, depending on
>
> 1+2 work together - without either the inner window's update is
> two-step. With minor differences that if x_wait_for_event is skipped
> but bit_gravity is unchanged (NorthWestGravity) then the first step
> renders the older buffer contents in the smaller (older dimensions)
> rectangle while the rest filled with background color.
Because with static gravity we get two ConfigureNotify events?
> Whereas if we
> don't skip x_wait_for_event but do change bit_gravity to Static, the
> first step of the frame's update is just a border at the smaller size
> with just solid background color inside and outside of it. Together,
> the frame is rendered at the new place in "one go", aside from what is
> fixed in (3).
> 3. Without setting the backgrounds to None when XMoveResizeWindow is
> called, the transition has a single moment when the old rectangle of
> the child frame is filled with white (the parent window's background)
> and at the new position of the child frame is just solid yellow (its
> background). The next moment the visuals are fixed (the old position
> shows the parent frame's contents the, new position shows the child
> frame's contents), but it creates a minor "flash" around each move.
OK.
> With Xt, in the current implementation, IIUC after we send
> XMoveResizeWindow and then call x_wait_for_event, only the outer
> window is resized at first because their "gluing together" is managed
> by the Xt configuration, which gets updated after the first
> ConfigureNotify arrives, with XtDispatchEvent inside "OTHER:" in
> handle_one_xevent. If redisplay happens right then, it could get
> clipped to the smaller size of the inner window.
The smaller size is the old size.
> But that's probably not the main problem. Which is that when we call
> x_wait_for_event, it goes to totally_unblock_input -> ... -> XPending,
> which flushes the current X output buffer, forcing a redraw. Depending
> on the value of bit_gravity, it would either be pixels from the
> previous position (clipped to its size), or just the background
> color. And then there is rest of the wait, and redisplay afterwards
> (IIUC).
>
> I don't have a picture of this scenario in full detail, TBH. It would
> be nice if we could fix it in a way that doesn't increase
> branching. But if we found a way to suppress the update of the window
> until after the wait, that would increase the perceived latency.
Once more: Is this about resizing _and_ moving only? Why does the same
problem not happend for a simple resizing of the child frame leaving it
at its old position. The two ConfigureNotify events should be received
in both. Is it the Expose events?
> > So IIUC it's the move
> > event that harms at the time the Expose events arrive. Right?
>
> I think in most traces I see the Expose event(s) arriving after the
> last (or sole) ConfigureNotify event.
When is there a "sole" one?
> But even when they are
> interleaved that makes no big difference.
>
> I was also curious whether I'm missing some bigger picture that would
> inform more elegant improvement (e.g. moving the Cairo surface
> dimensions update somewhere else at the beginning of redisplay; and
> setting backgrounds to None constantly while dealing with background
> fill some other way; not sure if it's at all feasible to make the
> update atomic without skipping the wait for events, though, without
> Wayland).
You mean that the time for trying that would be wasted since it's likely
that it would depend too much on the backend?
>> What precisely is the sequence of events we get for the following calls
>> and our reactions to them?
>>
>> gdk_window_move_resize (gwin, x, y, outer_width, outer_height);
>> if (FRAME_PARENT_FRAME (f))
>> {
>> /* Since the next redisplay will be working with new dimensions,
>> resize the edit widget and Cairo surface so drawing isn't
>> clipped to the old size. */
>> GdkWindow *edit_gwin = gtk_widget_get_window (FRAME_GTK_WIDGET (f));
>> if (edit_gwin)
>> gdk_window_resize (edit_gwin, width / scale, height / scale);
>> #ifdef USE_CAIRO
>> x_cr_update_surface_desired_size (f, width, height);
>> #endif
>> }
>>
>> Does an event for the gdk_window_resize precede an event for the
>> gdk_window_move_resize?
>
> I don't think so.
>
> This is with x_cr_update_surface_desired_size added (which is necessary but not sufficient), with or without the direct gdk_window_resize call:
>
> adjust_frame_size(1, size-and-position): NS=348x208->508x458 PS=348x208
> adjust_frame_size(5, xg_frame_set_char_size): NS=348x208->508x458 PS=348x208 [apply]
> redisplay_internal start: CR=508x458 garbaged=1
> redisplay_internal end: CR=508x458 updated=1
> ConfigureNotify(child/outer): x=350 y=100 w=508 h=458
> ConfigureNotify(child/inner): x=0 y=0 w=508 h=458
> Expose(child/inner): x=348 y=0 w=160 h=208 count=1
> Expose(child/inner): x=0 y=208 w=508 h=250 count=0
Same as above. So we have a
>> gdk_window_move_resize (gwin, x, y, outer_width, outer_height);
followed by
>> gdk_window_resize (edit_gwin, width / scale, height / scale);
where IIRC internally GDK resolves the latter to a move/resize with the
position unchanged. Which of the two do in your opinion cause the
ConfigureNotify events? Both?
>> If not, how would the gdk_window_resize affect
>> behavior?
>
> My hypothesis was that internally it's similar enough to Xt so it could use a similar fix - which helped. Maybe/probably something updates some dimensions with a delay.
>
> If I log the width/height for the inner window at the beginning of redisplay (returned by XGetWindowAttributes, which breaks the visuals again because of the sync, of course), that finally shows a difference:
>
> redisplay_internal start: XW=348x208 CR=508x458 garbaged=1
>
> without direct gdk_window_resize vs
>
> redisplay_internal start: XW=508x458 CR=508x458 garbaged=1
>
> with it.
So this is the effect of x_cr_update_surface_desired_size. I have no
idea how this affects redisplay.
> That's the first redisplay, before ConfigureNotify arrives.
>
>> What is the effect of the "inner" resize without cairo -
>> could we do without it if cairo were not used?
>
> No, still needed. Same effect.
Then how gets redisplay affected in that case?
>> Why does doing things
>> "eagerly" have an effect, in particular when mixing a gdk call with
>> x_cr_update_surface_desired_size?
> The Cairo context does not belong to GDK, right? We create it
> x_begin_cr_clip connected to FRAME_X_RAW_DRAWABLE, which in the
> single-buffered case is "the window itself" (from the comment). Then
> we reset it upon receiving ConfigureNotify in handle_one_xevent.
>
> And the next redisplay arrives before that.
But if it's in the magic of cairo, how does a non-cairo build get
affected?
martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 7 Apr 2026 01:26:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 06 21:26:36 2026
Received: from localhost ([127.0.0.1]:56990 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1w9vDA-000817-5w
for submit <at> debbugs.gnu.org; Mon, 06 Apr 2026 21:26:36 -0400
Received: from fout-b8-smtp.messagingengine.com ([202.12.124.151]:60719)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w9vD7-00080a-9G
for 80662 <at> debbugs.gnu.org; Mon, 06 Apr 2026 21:26:34 -0400
Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42])
by mailfout.stl.internal (Postfix) with ESMTP id 3A97A1D00285;
Mon, 6 Apr 2026 21:26:27 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
by phl-compute-02.internal (MEProxy); Mon, 06 Apr 2026 21:26:27 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc
:cc:content-transfer-encoding:content-type:content-type:date
:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm3; t=1775525186;
x=1775611586; bh=bDRflCp3wUwcS7MtdWnFLRnJjykDtVzG1AE+aAgwVQA=; b=
o3dG5XnS4CJRv+S+daYz4py9Y1bsqmGKDRFZcnbgFWweaSqY3KaLVjqUaXlfHu/G
OJ4Pf2P0IdzkRQ8HIMO6Il6ek1cpSNHU5EgTQXhvlwC/P9ETOEO0tL5mcDHha16Q
CR8k8pCoINkQQC1pFOvrOv0vmDD+yqk2Gh15IYWukbfHRH23YD/jlP9n4ePreDB4
0B+j62ZLDgFGXnD0OznFiwXU4S1MHv6gjOdiUPgBeNOuB1invMuM8Na2/lTRLiE0
TXTT1Bi0+BXeYI8NWFlb+3fChzcllrSiVhf8Xhvo9RvS0OUQGcnYgxyh/4kYjOlo
yvlWWg/2RwOhhSHzsnOIbw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:cc:content-transfer-encoding
:content-type:content-type:date:date:feedback-id:feedback-id
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to:x-me-proxy
:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1775525186; x=
1775611586; bh=bDRflCp3wUwcS7MtdWnFLRnJjykDtVzG1AE+aAgwVQA=; b=s
l6zCAAy2lXCZ6BEdnfVgbjpj2UUJHFDQK+8NK2njygsdHc2Nd5SPfWb9Xv9EYacU
y/nuuEnEYlY4tVMcpgZt18bhpQj5h6QX94MA7Dw4rMlZWytYpW/pWDPJ3vwDJ/65
WDjvh9x7MCeOBiP3ig4Ttpcqdr3gxxwU67+KeNIqCX+BP+1PQIM+VM6G0gCRDp9i
6/FoFb8lO2eDv8PXxybGxqX86Fq7wQZAbiCeKnWI8Cfdsq8vYhW75EMqCfi7VAsh
z6ygkArPR94gnL1many3Vami3AH4jOOeJOaVi/4pbok7d9r7uJxJG9DDy6fveV1T
+wFeD7GCzyxzVFrTINV3Q==
X-ME-Sender: <xms:Ql3UaQOhhnve_zIWOBYJjEEwQ81IXJnlyfopDZWE1cW98Q_LNHaT3A>
<xme:Ql3UaeY3kUeeWn7qgAznkEmQI9zAAQ5sK1ovFyh2lrWSDjMV9M5DNDIe1y7Il5Zbh
Dcus91WtKfkycXN-X9TB9VfGhf_qbCMWmlG3EAFe10EgIt55IuOHYs>
X-ME-Received: <xmr:Ql3UaUp5kyEkN8A3uQBdm4bXfGP8hNiKBCbc3dxr7VmUtLM7WSlL6dYnOSNCKKy4jNF4>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdduleefudcutefuodetggdotefrod
ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
hrpefkffggfgfuhffvvehfjggtgfesthejredttddvjeenucfhrhhomhepffhmihhtrhih
ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh
hnpeekfedufefgjefffedvhfetgeevvefhkeekkefhgfduhfevjeetfffhgeeuteeggfen
ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith
hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepfedpmhhouggvpehsmhhtphho
uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd
eiiedvseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepmhgrihhlsegurghn
ihgvlhdqmhgvnhgulhgvrhdruggv
X-ME-Proxy: <xmx:Ql3UaSakxa-hiTlRSXyOs0iolnNWegStICAFPYNhyKeV3T7yAIrTUQ>
<xmx:Ql3UacSDChq3uH3-3w0T3858V6DlgKHrFPo_wJHumX8oZwCL0tdgBA>
<xmx:Ql3UaZ6zHQSA6ILOl9OURMJ7Q-hZQv7IM_224ms544z8OpZWG0pISA>
<xmx:Ql3UaRx4gHfTixafV4mjoXYLoylbVKhP0RNr7_sJ_Jm9fjyQJ8A5qw>
<xmx:Ql3UafIZf7UwgJ0TCN4uQ_Iq9nFtoaa8LNd3WEQ9ZjBRR9h47ZZHQjaO>
Feedback-ID: i07de48aa:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon,
6 Apr 2026 21:26:25 -0400 (EDT)
Message-ID: <d42ed167-1d2c-474d-98d6-1f0127abf112@HIDDEN>
Date: Tue, 7 Apr 2026 04:26:23 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
From: Dmitry Gutov <dmitry@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN>
<d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN>
<0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN>
<9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN>
<2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN>
<47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN>
<f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN>
<34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN>
<26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN>
<b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN>
<806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN>
<206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN>
<edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN>
<3655f756-7654-479e-8bcf-3825177b2307@HIDDEN>
<23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN>
<3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN>
<58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN>
<3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN>
<7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN>
Content-Language: en-US
In-Reply-To: <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80662
Cc: Daniel Mendler <mail@HIDDEN>
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 (-)
On 07/04/2026 03:56, Dmitry Gutov wrote:
> I don't have a picture of this scenario in full detail, TBH. It would be
> nice if we could fix it in a way that doesn't increase branching. But if
> we found a way to suppress the update of the window until after the
> wait, that would increase the perceived latency.
On that thought, I got to wondering why x_wait_for_event takes the full
100 ms every time.
This helps a lot:
diff --git a/src/xterm.c b/src/xterm.c
index d7451b538e3..c85b9d3b728 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -28445,9 +28492,12 @@
pending_signals = true;
totally_unblock_input ();
/* XTread_socket is called after unblock. */
block_input ();
interrupt_input_blocked = level;
+ if (!f->wait_event_type)
+ break;
+
FD_ZERO (&fds);
FD_SET (fd, &fds);
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 7 Apr 2026 00:56:57 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 06 20:56:57 2026
Received: from localhost ([127.0.0.1]:56428 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1w9ukS-0005lj-7V
for submit <at> debbugs.gnu.org; Mon, 06 Apr 2026 20:56:57 -0400
Received: from fhigh-b5-smtp.messagingengine.com ([202.12.124.156]:33201)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w9ukO-0005lG-H2
for 80662 <at> debbugs.gnu.org; Mon, 06 Apr 2026 20:56:54 -0400
Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44])
by mailfhigh.stl.internal (Postfix) with ESMTP id 99CE87A030C;
Mon, 6 Apr 2026 20:56:46 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
by phl-compute-04.internal (MEProxy); Mon, 06 Apr 2026 20:56:46 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc
:cc:content-transfer-encoding:content-type:content-type:date
:date:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm3; t=1775523406;
x=1775609806; bh=eXKS+t+9lddFLRSm8PrFpPzG/S1w0nLFer/9/7CMfS8=; b=
YeGKn3JIQy7uJFT//otdo9MxGC4YwqhM90O5xS1cV6Up/XoxoC5+KaAM2i6ZuFxZ
xMK1RCdR0g39WNuizjDyFYEweMwptFMdx3hD+SzNAfBFv8CAoSR5E9PBXYNeaPDc
DXlhOGYieSzBb43NWetdpB4qFRyCI1L/PDkdcY/g9lPRijHMHNNzG2l3ZXdX+hdR
zrJKwLNro4Ilbx2zDzfoamUB22gGzMx+jB/1Ib2MLpxQ+mtZBcK6YrjC7p9SXSQX
IBXH5BB/TYojkqyIyMVSmk6+R9B2Sam9AAMKVg1AMIiq/QeM7qrdKDgWFpXfvFSv
4zwOtl5x1vFYtxJvq+LhPA==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:cc:content-transfer-encoding
:content-type:content-type:date:date:feedback-id:feedback-id
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to:x-me-proxy
:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1775523406; x=
1775609806; bh=eXKS+t+9lddFLRSm8PrFpPzG/S1w0nLFer/9/7CMfS8=; b=i
G8C18TfHOn6PMSm0ywjMe3PnNoRaDDXUBy0uWhfE/vCcLhLTnkfI0QF7r8lqo9uf
SCA9TZmLqXckwE3YdHhwznFatTvHhDH8cfjpJS9XXPvBZ7OY1+Y2ptzEK/6PXMhY
VRCFdyMJt2GiyLZIP1UDgNVWIW9oSPhsytE8g7UYVUjH+yuOixRIgVKGEc6e++Gf
GWGCOLH9JdbPG+wntDtEMYFyhrvnCctyifkEmlpTEkphhJD2g0lsYUyhEcoSqaWG
hOrCSM9VCETRLo0FOC07+HSD5wkXMtr9ZtahWX2If7MDzFo3L5YcH6lcXfRpanC5
K+PCO6Hrk9REjBmHsV92g==
X-ME-Sender: <xms:TVbUaRP1YQvW1l0Dzggmu8YbWhVrxPmnGaRhF8wYxE43TKtFqRPsKg>
<xme:TVbUabZiOvSIbyKeIGixYOexW19ZZm9-kliNbDrL3XwL7SPjm6Jgh1FrkqEFk8exP
7AzjDvGdGNlB-hbjeny6_NHkfMyD9J61YhBGgzm_w1gxiSZUsV5>
X-ME-Received: <xmr:TVbUadqT0XnsqaIVY_UB2DFHfuyLHdRccB6IgPusMzIFshZ1ftCwjctwM95b4-F65DRm>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdduledvhecutefuodetggdotefrod
ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr
ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug
hrpefkffggfgfuvfevfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhih
ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh
hnpeegleefteekgffhvdfhtdegveevveetteegteevgeettdehhfdukeetheffueekkeen
ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith
hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepfedpmhhouggvpehsmhhtphho
uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd
eiiedvseguvggssghughhsrdhgnhhurdhorhhgpdhrtghpthhtohepmhgrihhlsegurghn
ihgvlhdqmhgvnhgulhgvrhdruggv
X-ME-Proxy: <xmx:TVbUaXZT1GrKS1n7i4bmTZKXyXV_EC3G0LNoV8MeJl1Udrw_4gcc3w>
<xmx:TVbUadQIje6PtDJg_KFIarB8nB5nLpQ6xxDltTwb1xOpBgThiJMSMQ>
<xmx:TVbUaW67_E02Hr9R8rL6xJX8vxFHV7njr1zbKOAushPOWbvUZODJHg>
<xmx:TVbUaayrO-ALEl8y4KjO2v7GXekyhpOA5OyynYoARWIo0JN2o4vZuA>
<xmx:TlbUacJ2f9rOjHtAGUteYwBcKhZR-j2yROlwRAe1dmmitRKSDri9zZyp>
Feedback-ID: i07de48aa:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon,
6 Apr 2026 20:56:44 -0400 (EDT)
Message-ID: <7c74c28a-7c8b-4b6d-b22f-4624a68ff7b4@HIDDEN>
Date: Tue, 7 Apr 2026 03:56:42 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN>
<a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN>
<d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN>
<0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN>
<9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN>
<2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN>
<47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN>
<f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN>
<34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN>
<26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN>
<b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN>
<806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN>
<206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN>
<edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN>
<3655f756-7654-479e-8bcf-3825177b2307@HIDDEN>
<23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN>
<3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN>
<58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN>
<3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN>
Content-Language: en-US
From: Dmitry Gutov <dmitry@HIDDEN>
In-Reply-To: <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80662
Cc: Daniel Mendler <mail@HIDDEN>
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 (-)
On 06/04/2026 12:06, martin rudalics wrote:
> >> > ConfigureNotify(outer): x=350 y=600 w=348 h=208 window=a0047c
> >> > ConfigureNotify(inner): x=0 y=0 w=348 h=208 window=a0047e
> >> > ConfigureNotify(outer): x=350 y=100 w=508 h=458 window=a0047c
> >> > ConfigureNotify(inner): x=0 y=0 w=508 h=458 window=a0047e
> >> > Expose(inner): x=348 y=0 w=160 h=208 count=1 window=a0047e
> >> > Expose(inner): x=0 y=208 w=508 h=250 count=0 window=a0047e
>
> I hope your explanation below refers to what the trace above shows.
It does.
> > Okay, to answer your original question better: what happens is that
> > two X11 windows get resized and moved, but one of them is a parent of
> > another, so its top-left position is fixed (two zeros) and it only
> > needs to resize. Crucially though that inner window is where our
> > contents are rendered, so when that resize is delayed and we perform
> > redisplay, our contents are "clipped" until the next Expose event or
> > redisplay caused by other reasons.
>
> Can you point out in the above trace where we do that "clipped" (or the
> other one would probably be a "not sufficiently expanded" I suppose)
> redisplay?
Here's a fuller trace with Lucid (from custom logging to stderr).
CR is output_data.x->cr_surface_desired_width and height.
Without the USE_X_TOOLKIT/XtConfigureWidget branch:
redisplay_internal start: CR=348x208 garbaged=0
redisplay_internal end: CR=348x208 updated=1
adjust_frame_size(1, size-and-position): NS=348x208->508x458 PS=348x208
adjust_frame_size(5, x_set_window_size_1): NS=348x208->508x458
PS=348x208 [apply]
redisplay_internal start: CR=348x208 garbaged=1
redisplay_internal end: CR=348x208 updated=1
ConfigureNotify(child/outer): x=350 y=100 w=508 h=458
ConfigureNotify(child/inner): x=0 y=0 w=508 h=458
Expose(child/inner): x=348 y=0 w=160 h=208 count=1
Expose(child/inner): x=0 y=208 w=508 h=250 count=0
redisplay_internal start: CR=508x458 garbaged=0
redisplay_internal end: CR=508x458 updated=1
And with the proposed change:
redisplay_internal start: CR=348x208 garbaged=0
redisplay_internal end: CR=348x208 updated=1
adjust_frame_size(1, size-and-position): NS=348x208->508x458 PS=348x208
adjust_frame_size(5, x_set_window_size_1): NS=348x208->508x458
PS=348x208 [apply]
adjust_frame_size(5, change_frame_size): NS=508x458->508x458 PS=508x458
[apply]
redisplay_internal start: CR=508x458 garbaged=1
redisplay_internal end: CR=508x458 updated=1
ConfigureNotify(child/outer): x=350 y=100 w=508 h=458
ConfigureNotify(child/inner): x=0 y=0 w=508 h=458
Expose(child/inner): x=348 y=0 w=160 h=208 count=1
Expose(child/inner): x=0 y=208 w=508 h=250 count=0
redisplay_internal start: CR=508x458 garbaged=0
redisplay_internal end: CR=508x458 updated=1
> > To recap: the previous patch mostly fixed the no-toolkit build in this
> > scenario using 1) skipping wait for events (to avoid flushing to X11
> > too soon), 2) changing no-toolkit bit_gravity back to Static, 3)
> > switching X11 windows' background to None temporarily (for child frame
> > and for its parent frame which is naturally rendered behind it) so
> > that it doesn't flash where the child frame was. And the child frame
> > shows at the new position only after the new redisplay finishes.
>
> As for the last sentence: Is it an effect of all changes combined or is
> it a particular change that does that.
Either first two or all three together, depending on
1+2 work together - without either the inner window's update is
two-step. With minor differences that if x_wait_for_event is skipped but
bit_gravity is unchanged (NorthWestGravity) then the first step renders
the older buffer contents in the smaller (older dimensions) rectangle
while the rest filled with background color. Whereas if we don't skip
x_wait_for_event but do change bit_gravity to Static, the first step of
the frame's update is just a border at the smaller size with just solid
background color inside and outside of it. Together, the frame is
rendered at the new place in "one go", aside from what is fixed in (3).
3. Without setting the backgrounds to None when XMoveResizeWindow is
called, the transition has a single moment when the old rectangle of the
child frame is filled with white (the parent window's background) and at
the new position of the child frame is just solid yellow (its
background). The next moment the visuals are fixed (the old position
shows the parent frame's contents the, new position shows the child
frame's contents), but it creates a minor "flash" around each move.
> > Anyway that still didn't fix the Lucid and GTK3 builds because their
> > frames consist of nested X11 windows. We resize the outer one window
> > using XMoveResizeWindow, and then wait for the corresponding toolkit
> > (Xt in the Lucid/Motif case, or naturally GTK) to cascade the resize
> > to the nested window(s), which occurs after a round-trip or several to
> > the X server, in the middle of which we get the next redisplay which
> > renders at the clipped size. Hence the two-step update.
>
> When in the non-child frame case we wait for a ConfigureNotify event,
> does that mean we trigger redisplay with the event for the outer window
> and the change for the inner window is not even in place yet? OTOH this
> should not harm because the sizes are the same.
With Xt, in the current implementation, IIUC after we send
XMoveResizeWindow and then call x_wait_for_event, only the outer window
is resized at first because their "gluing together" is managed by the Xt
configuration, which gets updated after the first ConfigureNotify
arrives, with XtDispatchEvent inside "OTHER:" in handle_one_xevent. If
redisplay happens right then, it could get clipped to the smaller size
of the inner window.
But that's probably not the main problem. Which is that when we call
x_wait_for_event, it goes to totally_unblock_input -> ... -> XPending,
which flushes the current X output buffer, forcing a redraw. Depending
on the value of bit_gravity, it would either be pixels from the previous
position (clipped to its size), or just the background color. And then
there is rest of the wait, and redisplay afterwards (IIUC).
I don't have a picture of this scenario in full detail, TBH. It would be
nice if we could fix it in a way that doesn't increase branching. But if
we found a way to suppress the update of the window until after the
wait, that would increase the perceived latency.
> So IIUC it's the move
> event that harms at the time the Expose events arrive. Right?
I think in most traces I see the Expose event(s) arriving after the last
(or sole) ConfigureNotify event. But even when they are interleaved that
makes no big difference.
> > Does it look reasonable? It does add branching and duplicates some of
> the updates we do in response to events (in handle_one_xevent). [And
> GTK3 could use a similar Background=None trick for the parent's window].
> >
> > Happy to discuss any ideas for reorganizing this "properly", but at
> least it's a working patch (on my machine, settings and test examples,
> of course). Tested on both Wayland and X11.
> >
> > (Maybe the cairo surface update could be replaced with testing frame
> size at the start of e.g. x_begin_cr_clip - if that's not too often.
> > And backgrounds could be applied some other way)
>
> I can only install it here on xfce and look whether anything changes to
> the worse. Things like scaling remain untested here. In either case the
> more important clients will be the users of corfu and posframe. So
> before you install, let's Daniel Mendler test it at least.
Certainly. Feedback from Daniel will be most welcome.
I was also curious whether I'm missing some bigger picture that would
inform more elegant improvement (e.g. moving the Cairo surface
dimensions update somewhere else at the beginning of redisplay; and
setting backgrounds to None constantly while dealing with background
fill some other way; not sure if it's at all feasible to make the update
atomic without skipping the wait for events, though, without Wayland).
> What precisely is the sequence of events we get for the following calls
> and our reactions to them?
>
> gdk_window_move_resize (gwin, x, y, outer_width, outer_height);
> if (FRAME_PARENT_FRAME (f))
> {
> /* Since the next redisplay will be working with new dimensions,
> resize the edit widget and Cairo surface so drawing isn't
> clipped to the old size. */
> GdkWindow *edit_gwin = gtk_widget_get_window (FRAME_GTK_WIDGET (f));
> if (edit_gwin)
> gdk_window_resize (edit_gwin, width / scale, height / scale);
> #ifdef USE_CAIRO
> x_cr_update_surface_desired_size (f, width, height);
> #endif
> }
>
> Does an event for the gdk_window_resize precede an event for the
> gdk_window_move_resize?
I don't think so.
This is with x_cr_update_surface_desired_size added (which is necessary
but not sufficient), with or without the direct gdk_window_resize call:
adjust_frame_size(1, size-and-position): NS=348x208->508x458 PS=348x208
adjust_frame_size(5, xg_frame_set_char_size): NS=348x208->508x458
PS=348x208 [apply]
redisplay_internal start: CR=508x458 garbaged=1
redisplay_internal end: CR=508x458 updated=1
ConfigureNotify(child/outer): x=350 y=100 w=508 h=458
ConfigureNotify(child/inner): x=0 y=0 w=508 h=458
Expose(child/inner): x=348 y=0 w=160 h=208 count=1
Expose(child/inner): x=0 y=208 w=508 h=250 count=0
> If not, how would the gdk_window_resize affect
> behavior?
My hypothesis was that internally it's similar enough to Xt so it could
use a similar fix - which helped. Maybe/probably something updates some
dimensions with a delay.
If I log the width/height for the inner window at the beginning of
redisplay (returned by XGetWindowAttributes, which breaks the visuals
again because of the sync, of course), that finally shows a difference:
redisplay_internal start: XW=348x208 CR=508x458 garbaged=1
without direct gdk_window_resize vs
redisplay_internal start: XW=508x458 CR=508x458 garbaged=1
with it.
That's the first redisplay, before ConfigureNotify arrives.
> What is the effect of the "inner" resize without cairo -
> could we do without it if cairo were not used?
No, still needed. Same effect.
> Why does doing things
> "eagerly" have an effect, in particular when mixing a gdk call with
> x_cr_update_surface_desired_size?
The Cairo context does not belong to GDK, right? We create it
x_begin_cr_clip connected to FRAME_X_RAW_DRAWABLE, which in the
single-buffered case is "the window itself" (from the comment). Then we
reset it upon receiving ConfigureNotify in handle_one_xevent.
And the next redisplay arrives before that.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 6 Apr 2026 09:07:06 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Apr 06 05:07:06 2026
Received: from localhost ([127.0.0.1]:44782 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1w9fvF-0007y0-9A
for submit <at> debbugs.gnu.org; Mon, 06 Apr 2026 05:07:05 -0400
Received: from mout.gmx.net ([212.227.17.22]:43243)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w9fvC-0007xT-AG
for 80662 <at> debbugs.gnu.org; Mon, 06 Apr 2026 05:07:03 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1775466416; x=1776071216; i=rudalics@HIDDEN;
bh=YhwSL9O0Cr+uhLfHCK6hvi9CNrPH8iyP2Txmp3nFOa4=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:
References:From:Cc: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=igxPQMgQkBwoSZ0hTYKA8kWdcw24o9TkxF6Be+BBbJ7kKcB3lF9w5GXJEitUBul6
UxjUEVxtUfdGOtaQRMRiw2BrIKRgm98cgcAzbh7B4ACbglAGZcz4FxQs/QYf5JOeI
IflDoAIbCpfme4ExF+YUn4W4NqdY10ddZwQdTWlMmlWg2PpXDF+b/bmU7inYc/Qtz
f+FWoV54VlHoOR4rF/L2onq7kOqQnldri7ubzCTA+V5H4esMAgRF0TTyKcicH9RMI
6KDa6SlKWJf94iXZfmXWG+TWIbzWZmCUAUX2QSpcTj5CvfHU3rJgYvfoNQOvAgj5k
IRpiUh8V/g80BX3Olg==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from client.hidden.invalid by mail.gmx.net (mrgmx105
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MZTqg-1vwtp34Acw-00THn0; Mon, 06
Apr 2026 11:06:56 +0200
Message-ID: <3b3cb44f-2645-4116-8741-fb8af071d1d5@HIDDEN>
Date: Mon, 6 Apr 2026 11:06:54 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN>
<a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN>
<a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN>
<d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN>
<0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN>
<9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN>
<2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN>
<47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN>
<f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN>
<34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN>
<26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN>
<b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN>
<806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN>
<206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN>
<edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN>
<3655f756-7654-479e-8bcf-3825177b2307@HIDDEN>
<23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN>
<3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN>
<58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:XuMlz/Jfh0Wr02+cFq+Se/zoW5JX6W02NfkeSHPV+5geq02D4Tw
mUkIwb6tHqmRfVQ7RGC7OQpF7ONP674fopUPw3d3HEQdu6G1VTGVAfFeMcVN0jlmQ6p8+b4
U6xj2Xv2t/BocMUOfs5QQ6su7y8wRBEWRrsNUW5EiE6zI1I5KNI/79t3ey6wm/m3shRJmZ1
Rq4t8R3s6CyaZ/W0zrQRg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:fcXicViYxH8=;nhi017r/N+v5zQCizwuemZbEruk
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
5/HU3T3BsqCmhlWYskhwmLSJHE8nfGs9w==
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80662
Cc: Daniel Mendler <mail@HIDDEN>
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 (-)
>> > ConfigureNotify(outer): x=350 y=600 w=348 h=208 window=a0047c
>> > ConfigureNotify(inner): x=0 y=0 w=348 h=208 window=a0047e
>> > ConfigureNotify(outer): x=350 y=100 w=508 h=458 window=a0047c
>> > ConfigureNotify(inner): x=0 y=0 w=508 h=458 window=a0047e
>> > Expose(inner): x=348 y=0 w=160 h=208 count=1 window=a0047e
>> > Expose(inner): x=0 y=208 w=508 h=250 count=0 window=a0047e
I hope your explanation below refers to what the trace above shows.
> Okay, to answer your original question better: what happens is that
> two X11 windows get resized and moved, but one of them is a parent of
> another, so its top-left position is fixed (two zeros) and it only
> needs to resize. Crucially though that inner window is where our
> contents are rendered, so when that resize is delayed and we perform
> redisplay, our contents are "clipped" until the next Expose event or
> redisplay caused by other reasons.
Can you point out in the above trace where we do that "clipped" (or the
other one would probably be a "not sufficiently expanded" I suppose)
redisplay?
> To recap: the previous patch mostly fixed the no-toolkit build in this
> scenario using 1) skipping wait for events (to avoid flushing to X11
> too soon), 2) changing no-toolkit bit_gravity back to Static, 3)
> switching X11 windows' background to None temporarily (for child frame
> and for its parent frame which is naturally rendered behind it) so
> that it doesn't flash where the child frame was. And the child frame
> shows at the new position only after the new redisplay finishes.
As for the last sentence: Is it an effect of all changes combined or is
it a particular change that does that.
> One more minor change missing in my last patch is the deletion of the
> clear_under_internal_border call from 'clear_garbaged_frames' because
> it draws at the old size/position (we agreed to postpone these
> cleanups, but while the call remains, it draws the border where it
> shound't).
OK.
> Anyway that still didn't fix the Lucid and GTK3 builds because their
> frames consist of nested X11 windows. We resize the outer one window
> using XMoveResizeWindow, and then wait for the corresponding toolkit
> (Xt in the Lucid/Motif case, or naturally GTK) to cascade the resize
> to the nested window(s), which occurs after a round-trip or several to
> the X server, in the middle of which we get the next redisplay which
> renders at the clipped size. Hence the two-step update.
When in the non-child frame case we wait for a ConfigureNotify event,
does that mean we trigger redisplay with the event for the outer window
and the change for the inner window is not even in place yet? OTOH this
should not harm because the sizes are the same. So IIUC it's the move
event that harms at the time the Expose events arrive. Right?
> Attached is a patch which also adds resizing of the inner window *and*
> its Cairo surface eagerly (both parts are necessary), using different
> methods, specific to the Lucid and GTK ports. This eliminates 98% of
> the remaining flickering from the resize-and-move, which still happens
> occasionally probably due to X flushes triggered by other
> things. Feels much better, though.
See my question below.
> Does it look reasonable? It does add branching and duplicates some of the updates we do in response to events (in handle_one_xevent). [And GTK3 could use a similar Background=None trick for the parent's window].
>
> Happy to discuss any ideas for reorganizing this "properly", but at least it's a working patch (on my machine, settings and test examples, of course). Tested on both Wayland and X11.
>
> (Maybe the cairo surface update could be replaced with testing frame size at the start of e.g. x_begin_cr_clip - if that's not too often.
> And backgrounds could be applied some other way)
I can only install it here on xfce and look whether anything changes to
the worse. Things like scaling remain untested here. In either case the
more important clients will be the users of corfu and posframe. So
before you install, let's Daniel Mendler test it at least.
What precisely is the sequence of events we get for the following calls
and our reactions to them?
gdk_window_move_resize (gwin, x, y, outer_width, outer_height);
if (FRAME_PARENT_FRAME (f))
{
/* Since the next redisplay will be working with new dimensions,
resize the edit widget and Cairo surface so drawing isn't
clipped to the old size. */
GdkWindow *edit_gwin = gtk_widget_get_window (FRAME_GTK_WIDGET (f));
if (edit_gwin)
gdk_window_resize (edit_gwin, width / scale, height / scale);
#ifdef USE_CAIRO
x_cr_update_surface_desired_size (f, width, height);
#endif
}
Does an event for the gdk_window_resize precede an event for the
gdk_window_move_resize? If not, how would the gdk_window_resize affect
behavior? What is the effect of the "inner" resize without cairo -
could we do without it if cairo were not used? Why does doing things
"eagerly" have an effect, in particular when mixing a gdk call with
x_cr_update_surface_desired_size?
martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 6 Apr 2026 03:44:14 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Apr 05 23:44:13 2026 Received: from localhost ([127.0.0.1]:40400 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w9asm-0006Js-7k for submit <at> debbugs.gnu.org; Sun, 05 Apr 2026 23:44:13 -0400 Received: from fhigh-b7-smtp.messagingengine.com ([202.12.124.158]:60815) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w9asj-0006JI-4z for 80662 <at> debbugs.gnu.org; Sun, 05 Apr 2026 23:44:10 -0400 Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfhigh.stl.internal (Postfix) with ESMTP id 21FE07A00AF; Sun, 5 Apr 2026 23:44:03 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-06.internal (MEProxy); Sun, 05 Apr 2026 23:44:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1775447042; x=1775533442; bh=5kPzDrc2iO nmlN6WeevXfiDcL2YAD19p5zxgz6HUP74=; b=cNa6srRTfOiEAErEFqzEpWP+I0 KonLkYZRK03olFGgbwFupIkeno01LiE9L8uPInVqEGdAhbuyPyChWkbKBT81Rn2e a4UNpFoD8xGxyQupu1JQXtScfQNy/ijwvWo3ItxDULUHHB+eZlSHyDDpwnurGjLk XcW2TW9jYUb+35E69N+mPVR8V3xToFx2ZEC6/xYFwLwQ8UsEbSIrAtR0sohZm5Ec uAyd1m+9JPtnS0eXIdkkbOmFJEzGYo4zeqb/GzLwGT+23e6Kl4496xLfzYngMxcu vXcVbkDduVR1ZIX1c4Y4YITh8DXG46Fao5ZXv5H7QPC8eUgVuQ0vwLptmlFw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1775447042; x=1775533442; bh=5kPzDrc2iOnmlN6WeevXfiDcL2YAD19p5zx gz6HUP74=; b=ccZ1CX/rT7cKvFl8DonsXoSAh3kM0GqZPe10E2e97tN2FpixMKg y0JiPzpn4jeK7Xjjq+VU5208QIzPWWJwnVvEY8sIAYcA/jQ/3Vg92Dm2FD7+2tLc w36rxdvKMuh6gjaLv4uxphRYPwtu1M/7YfU1dolVEpr3+wwQxCSFkjV/G4fpRZ9N p+dDEBVbx1j0C9VN0aAzQvRpLlDVOoDpukJVc1R/Q+lfiXz9I1qcC4uF1/QjQIJB 9gOQaiMWwFu9H7OPapFShU6x23vvKmJJaMbbjn04fzj/rUPtVi3Ss78PFG4t7v04 HHY33Wp8XW1CEGdgc42BmxxZWtN3nNO7hcg== X-ME-Sender: <xms:AizTaer2N-LxQ_YHygQ8UC1yMexeplTDbUuIDOlElkNXEa1sZn2v7A> <xme:AizTaSr99f06Gvp99FyqPH-h57JfTNlUSUmH96Y1PHzzzI5LrhCxqxXEqYsduuh1p v8IhgXxCaZU9tfo7kSotLTjzqO1C82QRh9zVKp1b0fXHZMl4GSr32WO> X-ME-Received: <xmr:AizTaQ19MSaKTHu60hOPLvgnhP6hOfdXRMiRtYfwOfEOZ6hs6D1tPlh-ekcAGOAtsx_TiQ> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdduieeifecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpuffrtefokffrpgfnqfghnecuuegr ihhlohhuthemuceftddtnecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjug hrpegtkfffgggfhffuvfhfjgesmhdtreertddvjeenucfhrhhomhepffhmihhtrhihucfi uhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrhhnpe fgkeeugfegkeduuefggfeiheekteeljeeggeeuieefheeuleelleejleejgeehieenucev lhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhithhrhi esghhuthhovhdruggvvhdpnhgspghrtghpthhtohepvddpmhhouggvpehsmhhtphhouhht pdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektdeiie dvseguvggssghughhsrdhgnhhurdhorhhg X-ME-Proxy: <xmx:AizTaZA1Qm88QJtjRLq6gCRvaMCv44jLogA1pjbUyNQra2EMvwUn8A> <xmx:AizTaQes1gU5dgrEkqkpcQE6_CnV5iAa1k5oaMaXRPJB6eD-M6G8uw> <xmx:AizTaWh0AaEfpHu9DmrWEuPBxuita3AKwI93nrfGHessBEXZN6eIiQ> <xmx:AizTaQqzqDegMfiBqtYCnik3T10HXuSWZC2jnpPhc2DJe-nxehFo8Q> <xmx:AizTaTxx5e-1dWFPp8EslwClGF_KHzoBSIMmypEHm1bYYuFzIpRbosxt> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 5 Apr 2026 23:44:01 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------uGeyg0dV08eyddLbfo7zdQ0d" Message-ID: <58e347cf-2cae-471f-99ae-7ebd58bf15cf@HIDDEN> Date: Mon, 6 Apr 2026 06:43:59 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Dmitry Gutov <dmitry@HIDDEN> Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> Content-Language: en-US In-Reply-To: <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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. --------------uGeyg0dV08eyddLbfo7zdQ0d Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 04/04/2026 10:48, martin rudalics wrote: > >> But why do we get two Expose events? Can you show the xexpose.window > >> values for them in the history? And how does these look like for > Lucid? > > > > Because it's the shape of the exposed area (right-to-left "L"). > > > > If you're okay with pointers, the cycle from the test looks like this: > > > > ConfigureNotify(outer): x=350 y=600 w=348 h=208 window=a0047c > > ConfigureNotify(inner): x=0 y=0 w=348 h=208 window=a0047e > > ConfigureNotify(outer): x=350 y=100 w=508 h=458 window=a0047c > > ConfigureNotify(inner): x=0 y=0 w=508 h=458 window=a0047e > > Expose(inner): x=348 y=0 w=160 h=208 count=1 window=a0047e > > Expose(inner): x=0 y=208 w=508 h=250 count=0 window=a0047e > > > > This is Lucid/XWayland. > > And IIUC we clear borders for all these events and you propose to do it > for the count=0 case only. We don't yet redraw the borders on Expose in the Lucid/Motif ports (we do in others), so it's one of the additions of the patch. The (event->xexpose.count == 0) check is just an optimization on top. > >> > The inner window's resize follows the outer window's resize > >> > asynchronously, that might explain the delay. > >> > >> But the size values are the same. The positions differ so we have to > >> move the border rectangle. > > > > The test scenario uses set-frame-size-and-position-pixelwise where the > > frame is resized too - that's where the main difficulty comes from. If > > the frame only moves, the result is fine. If it just resized, it would > > also be okay because the eye expects to see a transition in that place > > of the screen. > > But a ConfigureNotify event always encompasses both - size and position. Okay, to answer your original question better: what happens is that two X11 windows get resized and moved, but one of them is a parent of another, so its top-left position is fixed (two zeros) and it only needs to resize. Crucially though that inner window is where our contents are rendered, so when that resize is delayed and we perform redisplay, our contents are "clipped" until the next Expose event or redisplay caused by other reasons. > > But when our resize-and-move handler ends up resizing > > in the target area anyway, that's an eyesore. > > I don't understand: What is it we do wrong here? Sorry about the wait, it took some time to reconfirm the explanation. To recap: the previous patch mostly fixed the no-toolkit build in this scenario using 1) skipping wait for events (to avoid flushing to X11 too soon), 2) changing no-toolkit bit_gravity back to Static, 3) switching X11 windows' background to None temporarily (for child frame and for its parent frame which is naturally rendered behind it) so that it doesn't flash where the child frame was. And the child frame shows at the new position only after the new redisplay finishes. One more minor change missing in my last patch is the deletion of the clear_under_internal_border call from 'clear_garbaged_frames' because it draws at the old size/position (we agreed to postpone these cleanups, but while the call remains, it draws the border where it shound't). Anyway that still didn't fix the Lucid and GTK3 builds because their frames consist of nested X11 windows. We resize the outer one window using XMoveResizeWindow, and then wait for the corresponding toolkit (Xt in the Lucid/Motif case, or naturally GTK) to cascade the resize to the nested window(s), which occurs after a round-trip or several to the X server, in the middle of which we get the next redisplay which renders at the clipped size. Hence the two-step update. Attached is a patch which also adds resizing of the inner window *and* its Cairo surface eagerly (both parts are necessary), using different methods, specific to the Lucid and GTK ports. This eliminates 98% of the remaining flickering from the resize-and-move, which still happens occasionally probably due to X flushes triggered by other things. Feels much better, though. Does it look reasonable? It does add branching and duplicates some of the updates we do in response to events (in handle_one_xevent). [And GTK3 could use a similar Background=None trick for the parent's window]. Happy to discuss any ideas for reorganizing this "properly", but at least it's a working patch (on my machine, settings and test examples, of course). Tested on both Wayland and X11. (Maybe the cairo surface update could be replaced with testing frame size at the start of e.g. x_begin_cr_clip - if that's not too often. And backgrounds could be applied some other way) --------------uGeyg0dV08eyddLbfo7zdQ0d Content-Type: text/x-patch; charset=UTF-8; name="set_window_size_and_position_skip_wait_for_event_v9.diff" Content-Disposition: attachment; filename="set_window_size_and_position_skip_wait_for_event_v9.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9ndGt1dGlsLmMgYi9zcmMvZ3RrdXRpbC5jCmluZGV4IGIwMWJi NjgwNGVkLi4zZjljMjlhODAyNiAxMDA2NDQKLS0tIGEvc3JjL2d0a3V0aWwuYworKysgYi9z cmMvZ3RrdXRpbC5jCkBAIC0xNDIxLDYgKzE0MjEsMTggQEAgeGdfZnJhbWVfc2V0X3NpemVf YW5kX3Bvc2l0aW9uIChzdHJ1Y3QgZnJhbWUgKmYsIGludCB3aWR0aCwgaW50IGhlaWdodCkK IAogI2lmbmRlZiBIQVZFX1BHVEsKICAgZ2RrX3dpbmRvd19tb3ZlX3Jlc2l6ZSAoZ3dpbiwg eCwgeSwgb3V0ZXJfd2lkdGgsIG91dGVyX2hlaWdodCk7CisgIGlmIChGUkFNRV9QQVJFTlRf RlJBTUUgKGYpKQorICAgIHsKKyAgICAgIC8qIFNpbmNlIHRoZSBuZXh0IHJlZGlzcGxheSB3 aWxsIGJlIHdvcmtpbmcgd2l0aCBuZXcgZGltZW5zaW9ucywKKwkgcmVzaXplIHRoZSBlZGl0 IHdpZGdldCBhbmQgQ2Fpcm8gc3VyZmFjZSBzbyBkcmF3aW5nIGlzbid0CisJIGNsaXBwZWQg dG8gdGhlIG9sZCBzaXplLiAgKi8KKyAgICAgIEdka1dpbmRvdyAqZWRpdF9nd2luID0gZ3Rr X3dpZGdldF9nZXRfd2luZG93IChGUkFNRV9HVEtfV0lER0VUIChmKSk7CisgICAgICBpZiAo ZWRpdF9nd2luKQorCWdka193aW5kb3dfcmVzaXplIChlZGl0X2d3aW4sIHdpZHRoIC8gc2Nh bGUsIGhlaWdodCAvIHNjYWxlKTsKKyNpZmRlZiBVU0VfQ0FJUk8KKyAgICAgIHhfY3JfdXBk YXRlX3N1cmZhY2VfZGVzaXJlZF9zaXplIChmLCB3aWR0aCwgaGVpZ2h0KTsKKyNlbmRpZgor ICAgIH0KICNlbHNlCiAgIGlmIChGUkFNRV9HVEtfT1VURVJfV0lER0VUIChmKSkKICAgICBn ZGtfd2luZG93X21vdmVfcmVzaXplIChnd2luLCB4LCB5LCBvdXRlcl93aWR0aCwgb3V0ZXJf aGVpZ2h0KTsKQEAgLTE0MzIsNyArMTQ0NCw3IEBAIHhnX2ZyYW1lX3NldF9zaXplX2FuZF9w b3NpdGlvbiAoc3RydWN0IGZyYW1lICpmLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgIFNF VF9GUkFNRV9HQVJCQUdFRCAoZik7CiAgIGNhbmNlbF9tb3VzZV9mYWNlIChmKTsKIAotICBp ZiAoRlJBTUVfVklTSUJMRV9QIChmKSkKKyAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAoZikgJiYg IUZSQU1FX1BBUkVOVF9GUkFNRSAoZikpCiAgICAgewogICAgICAgLyogTXVzdCBjYWxsIHRo aXMgdG8gZmx1c2ggb3V0IGV2ZW50cyAqLwogICAgICAgKHZvaWQpZ3RrX2V2ZW50c19wZW5k aW5nICgpOwpkaWZmIC0tZ2l0IGEvc3JjL3dpZGdldC5jIGIvc3JjL3dpZGdldC5jCmluZGV4 IGU3NjdiMDA2ZTNmLi5iODQzYmNhMWZiOSAxMDA2NDQKLS0tIGEvc3JjL3dpZGdldC5jCisr KyBiL3NyYy93aWRnZXQuYwpAQCAtNDI4LDYgKzQyOCwxMCBAQCBFbWFjc0ZyYW1lUmVzaXpl IChXaWRnZXQgd2lkZ2V0KQogICAgICAgIGV3LT5jb3JlLndpZHRoLCBldy0+Y29yZS5oZWln aHQsCiAgICAgICAgZi0+bmV3X3dpZHRoLCBmLT5uZXdfaGVpZ2h0KTsKIAorICBpZiAoRlJB TUVfUElYRUxfV0lEVEggKGYpID09IGV3LT5jb3JlLndpZHRoCisgICAgICAmJiBGUkFNRV9Q SVhFTF9IRUlHSFQgKGYpID09IGV3LT5jb3JlLmhlaWdodCkKKyAgICByZXR1cm47CisKICAg Y2hhbmdlX2ZyYW1lX3NpemUgKGYsIGV3LT5jb3JlLndpZHRoLCBldy0+Y29yZS5oZWlnaHQs CiAJCSAgICAgZmFsc2UsIHRydWUsIGZhbHNlKTsKIApAQCAtNDk1LDYgKzQ5OSw4IEBAIEVt YWNzRnJhbWVFeHBvc2UgKFdpZGdldCB3aWRnZXQsIFhFdmVudCAqZXZlbnQsIFJlZ2lvbiBy ZWdpb24pCiAKICAgZXhwb3NlX2ZyYW1lIChmLCBldmVudC0+eGV4cG9zZS54LCBldmVudC0+ eGV4cG9zZS55LAogCQlldmVudC0+eGV4cG9zZS53aWR0aCwgZXZlbnQtPnhleHBvc2UuaGVp Z2h0KTsKKyAgaWYgKGV2ZW50LT54ZXhwb3NlLmNvdW50ID09IDApCisgICAgeF9jbGVhcl91 bmRlcl9pbnRlcm5hbF9ib3JkZXIgKGYpOwogICBmbHVzaF9mcmFtZSAoZik7CiB9CiAKZGlm ZiAtLWdpdCBhL3NyYy94ZGlzcC5jIGIvc3JjL3hkaXNwLmMKaW5kZXggNGYyYzVjMzk5MDAu LjFjMTFiY2UxZjk5IDEwMDY0NAotLS0gYS9zcmMveGRpc3AuYworKysgYi9zcmMveGRpc3Au YwpAQCAtMTM2NTgsMTEgKzEzNjU4LDYgQEAgY2xlYXJfZ2FyYmFnZWRfZnJhbWVzICh2b2lk KQogCSAgICAgIGlmIChpc190dHlfZnJhbWUgKGYpKQogCQljdXJyZW50X21hdHJpY2VzX2Ns ZWFyZWQgPSB0cnVlOwogCi0jaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCi0gICAgICAgICAg ICAgIGlmIChGUkFNRV9XSU5ET1dfUCAoZikKLSAgICAgICAgICAgICAgICAgICYmIEZSQU1F X1JJRiAoZiktPmNsZWFyX3VuZGVyX2ludGVybmFsX2JvcmRlcikKLSAgICAgICAgICAgICAg ICBGUkFNRV9SSUYgKGYpLT5jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKGYpOwotI2Vu ZGlmCiAJICAgICAgZnNldF9yZWRpc3BsYXkgKGYpOwogCSAgICAgIGYtPmdhcmJhZ2VkID0g ZmFsc2U7CiAJICAgICAgZi0+cmVzaXplZF9wID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMv eGZucy5jIGIvc3JjL3hmbnMuYwppbmRleCAzM2VjODMxMmNiNS4uODdjZTNhZjMwZDcgMTAw NjQ0Ci0tLSBhL3NyYy94Zm5zLmMKKysrIGIvc3JjL3hmbnMuYwpAQCAtNDQ4Myw3ICs0NDgz LDcgQEAgeF93aW5kb3cgKHN0cnVjdCBmcmFtZSAqZikKIAogICBhdHRyaWJ1dGVzLmJhY2tn cm91bmRfcGl4ZWwgPSBGUkFNRV9CQUNLR1JPVU5EX1BJWEVMIChmKTsKICAgYXR0cmlidXRl cy5ib3JkZXJfcGl4ZWwgPSBmLT5vdXRwdXRfZGF0YS54LT5ib3JkZXJfcGl4ZWw7Ci0gIGF0 dHJpYnV0ZXMuYml0X2dyYXZpdHkgPSBOb3J0aFdlc3RHcmF2aXR5OworICBhdHRyaWJ1dGVz LmJpdF9ncmF2aXR5ID0gU3RhdGljR3Jhdml0eTsKICAgYXR0cmlidXRlcy5iYWNraW5nX3N0 b3JlID0gTm90VXNlZnVsOwogICBhdHRyaWJ1dGVzLnNhdmVfdW5kZXIgPSBUcnVlOwogICBh dHRyaWJ1dGVzLmV2ZW50X21hc2sgPSBTVEFOREFSRF9FVkVOVF9TRVQ7CmRpZmYgLS1naXQg YS9zcmMveHRlcm0uYyBiL3NyYy94dGVybS5jCmluZGV4IGQ3NDUxYjUzOGUzLi40YjQ4ODNk Y2VjMyAxMDA2NDQKLS0tIGEvc3JjL3h0ZXJtLmMKKysrIGIvc3JjL3h0ZXJtLmMKQEAgLTc3 MjMsNiArNzcyMyw5IEBAIHhfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChzdHJ1Y3Qg ZnJhbWUgKmYpCiAJICBEaXNwbGF5ICpkaXNwbGF5ID0gRlJBTUVfWF9ESVNQTEFZIChmKTsK IAkgIEdDIGdjID0gZi0+b3V0cHV0X2RhdGEueC0+bm9ybWFsX2djOwogCisJICBpZiAoIWdj KQorCSAgICByZXR1cm47CisKIAkgIFhTZXRGb3JlZ3JvdW5kIChkaXNwbGF5LCBnYywgY29s b3IpOwogCSAgeF9maWxsX3JlY3RhbmdsZSAoZiwgZ2MsIDAsIG1hcmdpbiwgd2lkdGgsIGJv cmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5ib3JkZXJzX3Jlc3BlY3Rf YWxwaGFfYmFja2dyb3VuZCk7CkBAIC0yODUwOSwxMyArMjg1MTIsMTMgQEAgeF9zZXRfd2lu ZG93X3NpemVfMSAoc3RydWN0IGZyYW1lICpmLCBib29sIGNoYW5nZV9ncmF2aXR5LAogICAv KiBCdXQgdGhlIENvbmZpZ3VyZU5vdGlmeSBtYXkgaW4gZmFjdCBuZXZlciBhcnJpdmUsIGFu ZCB0aGVuIHRoaXMgaXMKICAgICAgbm90IHJpZ2h0IGlmIHRoZSBmcmFtZSBpcyB2aXNpYmxl LiAgSW5zdGVhZCB3YWl0ICh3aXRoIHRpbWVvdXQpCiAgICAgIGZvciB0aGUgQ29uZmlndXJl Tm90aWZ5LiAgKi8KLSAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAoZikpCisgIGlmIChGUkFNRV9W SVNJQkxFX1AgKGYpICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKGYpKQogICAgIHsKICAgICAg IHhfd2FpdF9mb3JfZXZlbnQgKGYsIENvbmZpZ3VyZU5vdGlmeSk7CiAKICAgICAgIGlmIChD T05TUCAoZnJhbWVfc2l6ZV9oaXN0b3J5KSkKIAlmcmFtZV9zaXplX2hpc3RvcnlfZXh0cmEK LQkgIChmLCBidWlsZF9zdHJpbmcgKCJ4X3NldF93aW5kb3dfc2l6ZV8xLCB2aXNpYmxlIiks CisJICAoZiwgYnVpbGRfc3RyaW5nICgieF9zZXRfd2luZG93X3NpemVfMSwgd2FpdGVkIGZv ciBldmVudCIpLAogCSAgIEZSQU1FX1BJWEVMX1dJRFRIIChmKSwgRlJBTUVfUElYRUxfSEVJ R0hUIChmKSwgd2lkdGgsIGhlaWdodCwKIAkgICBmLT5uZXdfd2lkdGgsIGYtPm5ld19oZWln aHQpOwogICAgIH0KQEAgLTI4NTIzLDcgKzI4NTI2LDcgQEAgeF9zZXRfd2luZG93X3NpemVf MSAoc3RydWN0IGZyYW1lICpmLCBib29sIGNoYW5nZV9ncmF2aXR5LAogICAgIHsKICAgICAg IGlmIChDT05TUCAoZnJhbWVfc2l6ZV9oaXN0b3J5KSkKIAlmcmFtZV9zaXplX2hpc3Rvcnlf ZXh0cmEKLQkgIChmLCBidWlsZF9zdHJpbmcgKCJ4X3NldF93aW5kb3dfc2l6ZV8xLCBpbnZp c2libGUiKSwKKwkgIChmLCBidWlsZF9zdHJpbmcgKCJ4X3NldF93aW5kb3dfc2l6ZV8xLCBu b3Qgd2FpdGVkIGZvciBldmVudCIpLAogCSAgIEZSQU1FX1BJWEVMX1dJRFRIIChmKSwgRlJB TUVfUElYRUxfSEVJR0hUIChmKSwgd2lkdGgsIGhlaWdodCwKIAkgICBmLT5uZXdfd2lkdGgs IGYtPm5ld19oZWlnaHQpOwogCkBAIC0yODU3OSwxNiArMjg1ODIsNTIgQEAgeF9zZXRfd2lu ZG93X3NpemVfYW5kX3Bvc2l0aW9uXzEgKHN0cnVjdCBmcmFtZSAqZiwgaW50IHdpZHRoLCBp bnQgaGVpZ2h0KQogCiAgIHhfd21fc2V0X3NpemVfaGludCAoZiwgMCwgZmFsc2UpOwogCi0g IFhNb3ZlUmVzaXplV2luZG93IChGUkFNRV9YX0RJU1BMQVkgKGYpLCBGUkFNRV9PVVRFUl9X SU5ET1cgKGYpLAotCQkgICAgIHgsIHksIHdpZHRoLCBoZWlnaHQgKyBGUkFNRV9NRU5VQkFS X0hFSUdIVCAoZikpOworICAvKiBUZW1wb3JhcmlseSBzdXBwcmVzcyBiYWNrZ3JvdW5kIGZp bGwgb24gdGhlIGNoaWxkIGFuZCBwYXJlbnQgZnJhbWUKKyAgICAgd2luZG93cyBzbyB0aGUg WCBzZXJ2ZXIgZG9lc24ndCBmbGFzaCB3aXRoIGJhY2tncm91bmQgY29sb3Igd2hlbgorICAg ICB0aGUgY2hpbGQgZnJhbWUgaXMgbW92ZWQvcmVzaXplZC4gIFBhcmVudCB3aW5kb3cgZmxh c2hlZCB3aGVyZSB0aGUKKyAgICAgY2hpbGQgZnJhbWUgd2FzLCBhbmQgY2hpbGQgZnJhbWUg Zmxhc2hlZCB3aGVyZSBpdHMgc2l6ZSB3aWxsIGJlLiAqLworICBzdHJ1Y3QgZnJhbWUgKnBh cmVudCA9IEZSQU1FX1BBUkVOVF9GUkFNRSAoZik7CisgIGlmIChwYXJlbnQpCisgICAgewor ICAgICAgRGlzcGxheSAqZHB5ID0gRlJBTUVfWF9ESVNQTEFZIChmKTsKKyAgICAgIFhTZXRX aW5kb3dCYWNrZ3JvdW5kUGl4bWFwIChkcHksIEZSQU1FX09VVEVSX1dJTkRPVyAoZiksIE5v bmUpOworICAgICAgWFNldFdpbmRvd0JhY2tncm91bmRQaXhtYXAgKGRweSwgRlJBTUVfWF9X SU5ET1cgKHBhcmVudCksIE5vbmUpOworICAgIH0KKworI2lmZGVmIFVTRV9YX1RPT0xLSVQK KyAgaWYgKHBhcmVudCAmJiBmLT5vdXRwdXRfZGF0YS54LT53aWRnZXQpCisgICAgeworICAg ICAgLyogVXNlIFh0Q29uZmlndXJlV2lkZ2V0IHRvIG1vdmUvcmVzaXplIHRoZSBzaGVsbCB3 aWRnZXQg4oCUIHRoaXMKKwkgcmVzaXplcyB0byBwYW5lIGFuZCBpbm5lciB3aWRnZXRzIHN5 bmNocm9ub3VzbHksIGluc3RlYWQgb2YKKwkgd2FpdGluZyBmb3IgQ29uZmlndXJlTm90aWZ5 IGJlZm9yZSB1cGRhdGluZyBpbm5lcnMuICAqLworICAgICAgWHRDb25maWd1cmVXaWRnZXQg KGYtPm91dHB1dF9kYXRhLngtPndpZGdldCwKKwkJCSB4LCB5LCB3aWR0aCwgaGVpZ2h0ICsg RlJBTUVfTUVOVUJBUl9IRUlHSFQgKGYpLCAwKTsKKyNpZmRlZiBVU0VfQ0FJUk8KKyAgICAg IHhfY3JfdXBkYXRlX3N1cmZhY2VfZGVzaXJlZF9zaXplIChmLCB3aWR0aCwgaGVpZ2h0KTsK KyNlbmRpZgorICAgIH0KKyAgZWxzZQorI2VuZGlmCisgICAgWE1vdmVSZXNpemVXaW5kb3cg KEZSQU1FX1hfRElTUExBWSAoZiksIEZSQU1FX09VVEVSX1dJTkRPVyAoZiksCisJCSAgICAg ICB4LCB5LCB3aWR0aCwgaGVpZ2h0ICsgRlJBTUVfTUVOVUJBUl9IRUlHSFQgKGYpKTsKKwor ICBpZiAocGFyZW50KQorICAgIHsKKyAgICAgIERpc3BsYXkgKmRweSA9IEZSQU1FX1hfRElT UExBWSAoZik7CisgICAgICBYU2V0V2luZG93QmFja2dyb3VuZCAoZHB5LCBGUkFNRV9PVVRF Ul9XSU5ET1cgKGYpLAorCQkJICAgIEZSQU1FX0JBQ0tHUk9VTkRfUElYRUwgKGYpKTsKKyAg ICAgIFhTZXRXaW5kb3dCYWNrZ3JvdW5kIChkcHksIEZSQU1FX1hfV0lORE9XIChwYXJlbnQp LAorCQkJICAgIEZSQU1FX0JBQ0tHUk9VTkRfUElYRUwgKHBhcmVudCkpOworICAgIH0KIAog ICBTRVRfRlJBTUVfR0FSQkFHRUQgKGYpOwogCi0gIGlmIChGUkFNRV9WSVNJQkxFX1AgKGYp KQorICBpZiAoRlJBTUVfVklTSUJMRV9QIChmKSAmJiAhRlJBTUVfUEFSRU5UX0ZSQU1FIChm KSkKICAgICB4X3dhaXRfZm9yX2V2ZW50IChmLCBDb25maWd1cmVOb3RpZnkpOwogICBlbHNl Ci0gICAgLyogQ2FsbCBhZGp1c3RfZnJhbWVfc2l6ZSByaWdodCBhd2F5IGFzIHdpdGggR1RL LiAgSXQgbWlnaHQgYmUKLSAgICAgICB0ZW1wdGluZyB0byBjbGVhciBvdXQgZi0+bmV3X3dp ZHRoIGFuZCBmLT5uZXdfaGVpZ2h0IGhlcmUuICAqLworICAgIC8qIENhbGwgYWRqdXN0X2Zy YW1lX3NpemUgcmlnaHQgYXdheSBhcyB3aXRoIEdUSy4KKyAgICAgICBGb3IgY2hpbGQgZnJh bWVzLCBkb24ndCB3YWl0IGZvciBldmVudHMg4oCUIHRoYXQgd291bGQgZmx1c2ggdGhlIFgK KyAgICAgICBidWZmZXIgYW5kIG1pZ2h0IHNob3cgb3V0ZGF0ZWQgY29udGVudHMgaW4gdGhl IGZyYW1lLiAgKi8KICAgICBhZGp1c3RfZnJhbWVfc2l6ZSAoZiwgRlJBTUVfUElYRUxfVE9f VEVYVF9XSURUSCAoZiwgd2lkdGgpLAogCQkgICAgICAgRlJBTUVfUElYRUxfVE9fVEVYVF9I RUlHSFQgKGYsIGhlaWdodCksCiAJCSAgICAgICA1LCAwLCBReF9zZXRfd2luZG93X3NpemVf MSk7CkBAIC0yODYwOCw3ICsyODY0Nyw4IEBAIHhfc2V0X3dpbmRvd19zaXplX2FuZF9wb3Np dGlvbiAoc3RydWN0IGZyYW1lICpmLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgIHhfc2V0 X3dpbmRvd19zaXplX2FuZF9wb3NpdGlvbl8xIChmLCB3aWR0aCwgaGVpZ2h0KTsKICNlbmRp ZiAvKiBVU0VfR1RLICovCiAKLSAgeF9jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKGYp OworICBpZiAoIUZSQU1FX1BBUkVOVF9GUkFNRSAoZikpCisgICAgeF9jbGVhcl91bmRlcl9p bnRlcm5hbF9ib3JkZXIgKGYpOwogCiAgIC8qIElmIGN1cnNvciB3YXMgb3V0c2lkZSB0aGUg bmV3IHNpemUsIG1hcmsgaXQgYXMgb2ZmLiAgKi8KICAgbWFya193aW5kb3dfY3Vyc29yc19v ZmYgKFhXSU5ET1cgKEZSQU1FX1JPT1RfV0lORE9XIChmKSkpOwo= --------------uGeyg0dV08eyddLbfo7zdQ0d--
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 4 Apr 2026 07:49:03 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 04 03:49:03 2026 Received: from localhost ([127.0.0.1]:42112 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w8vkd-00030K-0a for submit <at> debbugs.gnu.org; Sat, 04 Apr 2026 03:49:03 -0400 Received: from mout.gmx.net ([212.227.15.19]:58127) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w8vkb-0002zN-QJ for 80662 <at> debbugs.gnu.org; Sat, 04 Apr 2026 03:49:02 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1775288935; x=1775893735; i=rudalics@HIDDEN; bh=lytmjsSFB6pw/q8sfCT6Vip6CZ7aZpx4vZmMdOPzh84=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To: 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=oPV70mkxfJOUIANJA6wfJEnR6m1UcLNyrzMe5xD+/+l7p07uSZKIecERrUc7F7zm SJHhe2Q49oyRdn76BWtGmGE0aiOPn6I5pt33xLkC4/0cpc/lXPG3tpeUI5LB5doE2 cbSrTceACUion0gAhSppB0Elsnsh9kI0NyhpCG/5Mn3uOic4+3AC+EU9GUWBGATq2 ErQjykTp3XZRec78ZN8uYMQ2vaVOfFZSnGuL5+63K0raRoMUrh5WktDAkICzX4CRK uWzgErnXj3KgAhDhJM1S3RygCASD7K+cTwv8UmoJBKaPDwhuPVB2NTl/sTR8IF7vY AcyNMpm6N/MH2R09qQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx004 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MMXUD-1vtBse2zcl-00L6iV; Sat, 04 Apr 2026 09:48:55 +0200 Message-ID: <7c1f4293-4072-4577-ba5f-d81c20d9a9b2@HIDDEN> Date: Sat, 4 Apr 2026 09:48:54 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <293e42aa-9972-4565-9cc8-f5eb322ed4ad@HIDDEN> <9bc11d77-d02c-43ad-971d-f40f6fc15552@HIDDEN> <eab379ac-b5d2-4ec3-aeab-7840b0f81c1a@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <eab379ac-b5d2-4ec3-aeab-7840b0f81c1a@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:WcI3yqrpbErxqFXZEDY4JNL+8suZbxyimHJ/g43Xl5uix1Y3e3O qWZdWsIlr9hhwOO3DUd/fYLcug82Pk/t3APzYKXdVI8qHpbNt5+Il9IdPkcXH6JVEyhWXev 4IYDps70G1Zima0ku0vPuYsVJJhYHu2yB6FnqRsqSoBvpfHhpnYrK0ARk6tfL43EK8WUyKG EHSZRqtoNJ6hygRL084bw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:X3NML1mBMsU=;VYve7XAmhm75zGiRGtXc7/H7uLC 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 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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 should fix the warning. Fixed, martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 4 Apr 2026 07:49:00 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sat Apr 04 03:49:00 2026 Received: from localhost ([127.0.0.1]:42108 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w8vkZ-0002zc-I0 for submit <at> debbugs.gnu.org; Sat, 04 Apr 2026 03:48:59 -0400 Received: from mout.gmx.net ([212.227.15.18]:53839) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w8vkW-0002zD-Gp for 80662 <at> debbugs.gnu.org; Sat, 04 Apr 2026 03:48:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1775288927; x=1775893727; i=rudalics@HIDDEN; bh=+3eRq1Obnd0MW4G6wl9Fx4d6jlVls6/N+v+LFlCd2Ag=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To: 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=AHfESBo+BzIb4vPfLBHHz3ch6fA55MEcf7GOeqqU2mihC1iegIgTcx/hShhCRY3F 3tvDCEugSw40m3jtid0crjfKmz9ZXPbbgwX516cdTRRWTM+rem6sOckwDf+LF3AGs XPNFY+WUh1PRWMZwyREOVKwsGm0AOd7BUxnRtlrpztk0QoUSeboD9TtqUrFLSKWgl WqALYF3uiAffcHtLTwtfNh08+q3eGnZeikHdPEwU4S50noQa9XrhZaJsDBa/ESxQ1 GEIQoNPgayJwbf/h/K5tIApejhdCgco0sqwAbd4Ii8QsLDF/ii22PWXQi5PVivnGd gIflXsWrACkMYno/0g== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1N0XCw-1vEeKJ1rjY-00z7Zn; Sat, 04 Apr 2026 09:48:47 +0200 Message-ID: <3e917cb9-ae82-4c9a-a2d3-f445af00d850@HIDDEN> Date: Sat, 4 Apr 2026 09:48:46 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:q25HIe0gHTZP4oOAb8lCRYqqVz4FQvN4RftnGzx0wPTIR9Bxzwk cDsxD79+8u5TX0rcLx+qBwOil13TkWMMFyf38BDqo/a1TZQNtpo8IlAuH5XmLT9S558zS0Y O0WKgYD5HT+oQyCZcsMNSasAjGj0xP0sIk9duwzqgRBqXXxTejxAFr6cfPQdfasDnUIAzrv 1U9uCvddiCfD3t1wefpDQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:HI5eLCtg97k=;nwEg/vRh5CZrQasTDnH5fjd/Kya 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 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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 why do we get two Expose events? Can you show the xexpose.window >> values for them in the history? And how does these look like for Lucid? > > Because it's the shape of the exposed area (right-to-left "L"). > > If you're okay with pointers, the cycle from the test looks like this: > > ConfigureNotify(outer): x=350 y=600 w=348 h=208 window=a0047c > ConfigureNotify(inner): x=0 y=0 w=348 h=208 window=a0047e > ConfigureNotify(outer): x=350 y=100 w=508 h=458 window=a0047c > ConfigureNotify(inner): x=0 y=0 w=508 h=458 window=a0047e > Expose(inner): x=348 y=0 w=160 h=208 count=1 window=a0047e > Expose(inner): x=0 y=208 w=508 h=250 count=0 window=a0047e > > This is Lucid/XWayland. And IIUC we clear borders for all these events and you propose to do it for the count=0 case only. >> > The inner window's resize follows the outer window's resize >> > asynchronously, that might explain the delay. >> >> But the size values are the same. The positions differ so we have to >> move the border rectangle. > > The test scenario uses set-frame-size-and-position-pixelwise where the > frame is resized too - that's where the main difficulty comes from. If > the frame only moves, the result is fine. If it just resized, it would > also be okay because the eye expects to see a transition in that place > of the screen. But a ConfigureNotify event always encompasses both - size and position. > But when our resize-and-move handler ends up resizing > in the target area anyway, that's an eyesore. I don't understand: What is it we do wrong here? >> >> > * Deletion of update_various_frame_slots. I can see it was hollowed >> >> > out in d4fe840df0b5fdb3a, and the remainder doesn't seem to be doing >> >> > anything useful. >> >> >> >> That last one was kind of lackluster anyway. >> > The proposal or the function? >> >> The entire function. > > Let's remove it in a separate change, then. OK. martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 3 Apr 2026 16:27:34 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 03 12:27:33 2026 Received: from localhost ([127.0.0.1]:60697 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w8hMr-0007Rz-8D for submit <at> debbugs.gnu.org; Fri, 03 Apr 2026 12:27:33 -0400 Received: from fout-b2-smtp.messagingengine.com ([202.12.124.145]:42555) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w8hMo-0007Rn-Bq for 80662 <at> debbugs.gnu.org; Fri, 03 Apr 2026 12:27:31 -0400 Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfout.stl.internal (Postfix) with ESMTP id 59E041D0011E; Fri, 3 Apr 2026 12:27:24 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-06.internal (MEProxy); Fri, 03 Apr 2026 12:27:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1775233644; x=1775320044; bh=Mia75/nBFX FQ4F5MQt6IMWWsN3oKpL0VaXe3Omqjyw0=; b=a9rPeHQiqrLfZH2cg598+FG1qV BqekosPxrPJ21IzOkZ/DrrncOdRXsAUdSSKN6/g3p+zrn0bgudSkBZStHkTkUVUB wqfBqu5MH64cIqN1z5nkqVYGNMTqJl/tTgE2HLpROROvemYmk2L6MSr5ddOLhOBN 9PtskbFIvohYsrhdWcR8XEQ5msC7Okfjpe/zHggqAC3QdN49SPHtPIftzNuVaG/v jOqxTb/s96cX76UF0ZSh7Ath73viJqsUPr8lPGVkUbpw3moArnEIZmsrWLCISiG1 WBuCj5SVL1B4jV5V11dsYOP5rJF8Xc5wfGyb+yJ9R9y/+mWkUpWQ5bOZJGlw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1775233644; x=1775320044; bh=Mia75/nBFXFQ4F5MQt6IMWWsN3oKpL0VaXe 3Omqjyw0=; b=NSvoQBT9EdSor1LmVZocWlFCWVM4isNqItd7PI58fPK8o3MG7Cm AS6vfVhiD4OBTzKYYwcQ9KH2N6uECH3v0PWeLWT53DUamLkMH8QTrt3mXqU7emxu hJlXAelSENlUI7l0hZQa7cSZjO/IscqRKaYR+2dy2sPGAqhAvA9GpY1sPb+fve0i fckeCMmRpnvhakKNILpLbgIC6ALqyYlxH4/MfGD6TpaHfQJylTd9b32Y2DAJ//Ht tG47ZcOAB/Gh1l2u7fa4hHnyVjhlBT7lm2H+uucP0Zugwp2+fjcnKOBGSfkuIA7E MXDDFunXZ+cMIyElagBtKJF3D2ZB+EnLcww== X-ME-Sender: <xms:a-rPafiTHAojM-5_OIfsqd4LpfEwKTY3X7-9p-3YTdontOWkPE6RUg> <xme:a-rPaSBwT0xypozxIqPpveuMHj3yGhloh1A7oclzNK-Rk2bdaFK_NxcgusZNy1z5p 5AKx7PxbQTJgCY4PkhsGd0TCZgKfRNpepu1m4duJ_YvFoqTvNYdxg> X-ME-Received: <xmr:a-rPactzWC5XF-32GPbWZhn5JzCHMCkyImTfvqv8iOpRDsT_mr60gJysFizedF8L94ICew> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdelgedvucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh eptgfkffggfgfuvfhfhfgjsehmtderredtvdejnecuhfhrohhmpeffmhhithhrhicuifhu thhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrthhtvghrnhepke fhieejheehjefhhefhuddvteettedvgeelteeigeelueegheffueffleduvdffnecuvehl uhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepughmihhtrhihse hguhhtohhvrdguvghvpdhnsggprhgtphhtthhopedvpdhmohguvgepshhmthhpohhuthdp rhgtphhtthhopehruhgurghlihgtshesghhmgidrrghtpdhrtghpthhtohepkedtieeivd esuggvsggsuhhgshdrghhnuhdrohhrgh X-ME-Proxy: <xmx:a-rPaXb4ryQq04p5Pcg9eGGlsMGaNlYS81E4S88E2fov9ho0eyHSTg> <xmx:a-rPafVLtQKKquHtKwp0mhEf2MU_Hmi7NRWFzFezuVAQjUnz4IltbQ> <xmx:a-rPab5g4yJI_s7rW1q7kPh5PPvd9ttZ-CVbCn1vXjf2eII7yM9ujw> <xmx:a-rPaaiXd_JyBJdd9XtNQ6bhO3CiV9Fk82WhX-teuKfsPiJG2LgeZA> <xmx:bOrPafqetHDLqyn_7yqBXxM2UHsjbYAuVOWXmsF8hNvOLphLBmtbYDr6> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 3 Apr 2026 12:27:22 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------000icbUK758m8ANWGtgCd80g" Message-ID: <eab379ac-b5d2-4ec3-aeab-7840b0f81c1a@HIDDEN> Date: Fri, 3 Apr 2026 19:27:20 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <293e42aa-9972-4565-9cc8-f5eb322ed4ad@HIDDEN> <9bc11d77-d02c-43ad-971d-f40f6fc15552@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <9bc11d77-d02c-43ad-971d-f40f6fc15552@HIDDEN> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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. --------------000icbUK758m8ANWGtgCd80g Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 03/04/2026 11:35, martin rudalics wrote: > That currently gives me here > > In file included from ../../src/xterm.c:636: > In function ‘x_set_window_size_and_position_1’, > inlined from ‘x_set_window_size_and_position’ at ../../src/ > xterm.c:28634:5: > ../../src/xterm.h:1397:44: warning: potential null pointer dereference > [-Wnull-dereference] > 1397 | #define FRAME_X_WINDOW(f) ((f)->output_data.x->window_desc) > | ~~~~~~~~~~~~~~~~^~ > ../../src/xterm.c:28593:30: note: in expansion of macro ‘FRAME_X_WINDOW’ > 28593 | Window parent_window = FRAME_X_WINDOW (FRAME_PARENT_FRAME > (f)); > | ^~~~~~~~~~~~~~ > ../../src/xterm.h:1397:44: warning: potential null pointer dereference > [-Wnull-dereference] > 1397 | #define FRAME_X_WINDOW(f) ((f)->output_data.x->window_desc) > | ~~~~~~~~~~~~~~~~^~ > ../../src/xterm.c:28605:30: note: in expansion of macro ‘FRAME_X_WINDOW’ > 28605 | Window parent_window = FRAME_X_WINDOW (FRAME_PARENT_FRAME > (f)); > | ^~~~~~~~~~~~~~ > ../../src/xterm.c:28608:7: warning: potential null pointer dereference > [-Wnull-dereference] > 28608 | XSetWindowBackground (dpy, parent_window, > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > 28609 | FRAME_BACKGROUND_PIXEL > (FRAME_PARENT_FRAME (f))); > | > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This should fix the warning. --------------000icbUK758m8ANWGtgCd80g Content-Type: text/x-patch; charset=UTF-8; name="set_window_size_and_position_skip_wait_for_event_v6.diff" Content-Disposition: attachment; filename="set_window_size_and_position_skip_wait_for_event_v6.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9ndGt1dGlsLmMgYi9zcmMvZ3RrdXRpbC5jCmluZGV4IGIwMWJi NjgwNGVkLi4yODlmYmMwZWM5MyAxMDA2NDQKLS0tIGEvc3JjL2d0a3V0aWwuYworKysgYi9z cmMvZ3RrdXRpbC5jCkBAIC0xNDMyLDcgKzE0MzIsNyBAQCB4Z19mcmFtZV9zZXRfc2l6ZV9h bmRfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQog ICBTRVRfRlJBTUVfR0FSQkFHRUQgKGYpOwogICBjYW5jZWxfbW91c2VfZmFjZSAoZik7CiAK LSAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAoZikpCisgIGlmIChGUkFNRV9WSVNJQkxFX1AgKGYp ICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKGYpKQogICAgIHsKICAgICAgIC8qIE11c3QgY2Fs bCB0aGlzIHRvIGZsdXNoIG91dCBldmVudHMgKi8KICAgICAgICh2b2lkKWd0a19ldmVudHNf cGVuZGluZyAoKTsKZGlmZiAtLWdpdCBhL3NyYy93aWRnZXQuYyBiL3NyYy93aWRnZXQuYwpp bmRleCBlNzY3YjAwNmUzZi4uYjg0M2JjYTFmYjkgMTAwNjQ0Ci0tLSBhL3NyYy93aWRnZXQu YworKysgYi9zcmMvd2lkZ2V0LmMKQEAgLTQyOCw2ICs0MjgsMTAgQEAgRW1hY3NGcmFtZVJl c2l6ZSAoV2lkZ2V0IHdpZGdldCkKICAgICAgICBldy0+Y29yZS53aWR0aCwgZXctPmNvcmUu aGVpZ2h0LAogICAgICAgIGYtPm5ld193aWR0aCwgZi0+bmV3X2hlaWdodCk7CiAKKyAgaWYg KEZSQU1FX1BJWEVMX1dJRFRIIChmKSA9PSBldy0+Y29yZS53aWR0aAorICAgICAgJiYgRlJB TUVfUElYRUxfSEVJR0hUIChmKSA9PSBldy0+Y29yZS5oZWlnaHQpCisgICAgcmV0dXJuOwor CiAgIGNoYW5nZV9mcmFtZV9zaXplIChmLCBldy0+Y29yZS53aWR0aCwgZXctPmNvcmUuaGVp Z2h0LAogCQkgICAgIGZhbHNlLCB0cnVlLCBmYWxzZSk7CiAKQEAgLTQ5NSw2ICs0OTksOCBA QCBFbWFjc0ZyYW1lRXhwb3NlIChXaWRnZXQgd2lkZ2V0LCBYRXZlbnQgKmV2ZW50LCBSZWdp b24gcmVnaW9uKQogCiAgIGV4cG9zZV9mcmFtZSAoZiwgZXZlbnQtPnhleHBvc2UueCwgZXZl bnQtPnhleHBvc2UueSwKIAkJZXZlbnQtPnhleHBvc2Uud2lkdGgsIGV2ZW50LT54ZXhwb3Nl LmhlaWdodCk7CisgIGlmIChldmVudC0+eGV4cG9zZS5jb3VudCA9PSAwKQorICAgIHhfY2xl YXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChmKTsKICAgZmx1c2hfZnJhbWUgKGYpOwogfQog CmRpZmYgLS1naXQgYS9zcmMveGZucy5jIGIvc3JjL3hmbnMuYwppbmRleCAzM2VjODMxMmNi NS4uODdjZTNhZjMwZDcgMTAwNjQ0Ci0tLSBhL3NyYy94Zm5zLmMKKysrIGIvc3JjL3hmbnMu YwpAQCAtNDQ4Myw3ICs0NDgzLDcgQEAgeF93aW5kb3cgKHN0cnVjdCBmcmFtZSAqZikKIAog ICBhdHRyaWJ1dGVzLmJhY2tncm91bmRfcGl4ZWwgPSBGUkFNRV9CQUNLR1JPVU5EX1BJWEVM IChmKTsKICAgYXR0cmlidXRlcy5ib3JkZXJfcGl4ZWwgPSBmLT5vdXRwdXRfZGF0YS54LT5i b3JkZXJfcGl4ZWw7Ci0gIGF0dHJpYnV0ZXMuYml0X2dyYXZpdHkgPSBOb3J0aFdlc3RHcmF2 aXR5OworICBhdHRyaWJ1dGVzLmJpdF9ncmF2aXR5ID0gU3RhdGljR3Jhdml0eTsKICAgYXR0 cmlidXRlcy5iYWNraW5nX3N0b3JlID0gTm90VXNlZnVsOwogICBhdHRyaWJ1dGVzLnNhdmVf dW5kZXIgPSBUcnVlOwogICBhdHRyaWJ1dGVzLmV2ZW50X21hc2sgPSBTVEFOREFSRF9FVkVO VF9TRVQ7CmRpZmYgLS1naXQgYS9zcmMveHRlcm0uYyBiL3NyYy94dGVybS5jCmluZGV4IGQ3 NDUxYjUzOGUzLi4wZTA3YWYwYWRjMiAxMDA2NDQKLS0tIGEvc3JjL3h0ZXJtLmMKKysrIGIv c3JjL3h0ZXJtLmMKQEAgLTc3MjMsNiArNzcyMyw5IEBAIHhfY2xlYXJfdW5kZXJfaW50ZXJu YWxfYm9yZGVyIChzdHJ1Y3QgZnJhbWUgKmYpCiAJICBEaXNwbGF5ICpkaXNwbGF5ID0gRlJB TUVfWF9ESVNQTEFZIChmKTsKIAkgIEdDIGdjID0gZi0+b3V0cHV0X2RhdGEueC0+bm9ybWFs X2djOwogCisJICBpZiAoIWdjKQorCSAgICByZXR1cm47CisKIAkgIFhTZXRGb3JlZ3JvdW5k IChkaXNwbGF5LCBnYywgY29sb3IpOwogCSAgeF9maWxsX3JlY3RhbmdsZSAoZiwgZ2MsIDAs IG1hcmdpbiwgd2lkdGgsIGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm LT5ib3JkZXJzX3Jlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCk7CkBAIC0yODUwOSwxMyArMjg1 MzcsMTMgQEAgeF9zZXRfd2luZG93X3NpemVfMSAoc3RydWN0IGZyYW1lICpmLCBib29sIGNo YW5nZV9ncmF2aXR5LAogICAvKiBCdXQgdGhlIENvbmZpZ3VyZU5vdGlmeSBtYXkgaW4gZmFj dCBuZXZlciBhcnJpdmUsIGFuZCB0aGVuIHRoaXMgaXMKICAgICAgbm90IHJpZ2h0IGlmIHRo ZSBmcmFtZSBpcyB2aXNpYmxlLiAgSW5zdGVhZCB3YWl0ICh3aXRoIHRpbWVvdXQpCiAgICAg IGZvciB0aGUgQ29uZmlndXJlTm90aWZ5LiAgKi8KLSAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAo ZikpCisgIGlmIChGUkFNRV9WSVNJQkxFX1AgKGYpICYmICFGUkFNRV9QQVJFTlRfRlJBTUUg KGYpKQogICAgIHsKICAgICAgIHhfd2FpdF9mb3JfZXZlbnQgKGYsIENvbmZpZ3VyZU5vdGlm eSk7CiAKICAgICAgIGlmIChDT05TUCAoZnJhbWVfc2l6ZV9oaXN0b3J5KSkKIAlmcmFtZV9z aXplX2hpc3RvcnlfZXh0cmEKLQkgIChmLCBidWlsZF9zdHJpbmcgKCJ4X3NldF93aW5kb3df c2l6ZV8xLCB2aXNpYmxlIiksCisJICAoZiwgYnVpbGRfc3RyaW5nICgieF9zZXRfd2luZG93 X3NpemVfMSwgd2FpdGVkIGZvciBldmVudCIpLAogCSAgIEZSQU1FX1BJWEVMX1dJRFRIIChm KSwgRlJBTUVfUElYRUxfSEVJR0hUIChmKSwgd2lkdGgsIGhlaWdodCwKIAkgICBmLT5uZXdf d2lkdGgsIGYtPm5ld19oZWlnaHQpOwogICAgIH0KQEAgLTI4NTIzLDcgKzI4NTUxLDcgQEAg eF9zZXRfd2luZG93X3NpemVfMSAoc3RydWN0IGZyYW1lICpmLCBib29sIGNoYW5nZV9ncmF2 aXR5LAogICAgIHsKICAgICAgIGlmIChDT05TUCAoZnJhbWVfc2l6ZV9oaXN0b3J5KSkKIAlm cmFtZV9zaXplX2hpc3RvcnlfZXh0cmEKLQkgIChmLCBidWlsZF9zdHJpbmcgKCJ4X3NldF93 aW5kb3dfc2l6ZV8xLCBpbnZpc2libGUiKSwKKwkgIChmLCBidWlsZF9zdHJpbmcgKCJ4X3Nl dF93aW5kb3dfc2l6ZV8xLCBub3Qgd2FpdGVkIGZvciBldmVudCIpLAogCSAgIEZSQU1FX1BJ WEVMX1dJRFRIIChmKSwgRlJBTUVfUElYRUxfSEVJR0hUIChmKSwgd2lkdGgsIGhlaWdodCwK IAkgICBmLT5uZXdfd2lkdGgsIGYtPm5ld19oZWlnaHQpOwogCkBAIC0yODU3OSwxNiArMjg2 MDcsMzggQEAgeF9zZXRfd2luZG93X3NpemVfYW5kX3Bvc2l0aW9uXzEgKHN0cnVjdCBmcmFt ZSAqZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgIHhfd21fc2V0X3NpemVfaGludCAo ZiwgMCwgZmFsc2UpOwogCisgIC8qIFRlbXBvcmFyaWx5IHN1cHByZXNzIGJhY2tncm91bmQg ZmlsbCBvbiB0aGUgY2hpbGQgYW5kIHBhcmVudCBmcmFtZQorICAgICB3aW5kb3dzIHNvIHRo ZSBYIHNlcnZlciBkb2Vzbid0IGZsYXNoIHdpdGggYmFja2dyb3VuZCBjb2xvciB3aGVuCisg ICAgIHRoZSBjaGlsZCBmcmFtZSBpcyBtb3ZlZC9yZXNpemVkLiAgUGFyZW50IHdpbmRvdyBm bGFzaGVkIHdoZXJlIHRoZQorICAgICBjaGlsZCBmcmFtZSB3YXMsIGFuZCBjaGlsZCBmcmFt ZSBmbGFzaGVkIHdoZXJlIGl0cyBzaXplIHdpbGwgYmUuICovCisgIHN0cnVjdCBmcmFtZSAq cGFyZW50ID0gRlJBTUVfUEFSRU5UX0ZSQU1FIChmKTsKKyAgaWYgKHBhcmVudCkKKyAgICB7 CisgICAgICBEaXNwbGF5ICpkcHkgPSBGUkFNRV9YX0RJU1BMQVkgKGYpOworICAgICAgWFNl dFdpbmRvd0JhY2tncm91bmRQaXhtYXAgKGRweSwgRlJBTUVfT1VURVJfV0lORE9XIChmKSwg Tm9uZSk7CisgICAgICBYU2V0V2luZG93QmFja2dyb3VuZFBpeG1hcCAoZHB5LCBGUkFNRV9Y X1dJTkRPVyAocGFyZW50KSwgTm9uZSk7CisgICAgfQorCiAgIFhNb3ZlUmVzaXplV2luZG93 IChGUkFNRV9YX0RJU1BMQVkgKGYpLCBGUkFNRV9PVVRFUl9XSU5ET1cgKGYpLAogCQkgICAg IHgsIHksIHdpZHRoLCBoZWlnaHQgKyBGUkFNRV9NRU5VQkFSX0hFSUdIVCAoZikpOwogCisg IGlmIChwYXJlbnQpCisgICAgeworICAgICAgRGlzcGxheSAqZHB5ID0gRlJBTUVfWF9ESVNQ TEFZIChmKTsKKyAgICAgIFhTZXRXaW5kb3dCYWNrZ3JvdW5kIChkcHksIEZSQU1FX09VVEVS X1dJTkRPVyAoZiksCisJCQkgICAgRlJBTUVfQkFDS0dST1VORF9QSVhFTCAoZikpOworICAg ICAgWFNldFdpbmRvd0JhY2tncm91bmQgKGRweSwgRlJBTUVfWF9XSU5ET1cgKHBhcmVudCks CisJCQkgICAgRlJBTUVfQkFDS0dST1VORF9QSVhFTCAocGFyZW50KSk7CisgICAgfQorCiAg IFNFVF9GUkFNRV9HQVJCQUdFRCAoZik7CiAKLSAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAoZikp CisgIGlmIChGUkFNRV9WSVNJQkxFX1AgKGYpICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKGYp KQogICAgIHhfd2FpdF9mb3JfZXZlbnQgKGYsIENvbmZpZ3VyZU5vdGlmeSk7CiAgIGVsc2UK LSAgICAvKiBDYWxsIGFkanVzdF9mcmFtZV9zaXplIHJpZ2h0IGF3YXkgYXMgd2l0aCBHVEsu ICBJdCBtaWdodCBiZQotICAgICAgIHRlbXB0aW5nIHRvIGNsZWFyIG91dCBmLT5uZXdfd2lk dGggYW5kIGYtPm5ld19oZWlnaHQgaGVyZS4gICovCisgICAgLyogQ2FsbCBhZGp1c3RfZnJh bWVfc2l6ZSByaWdodCBhd2F5IGFzIHdpdGggR1RLLgorICAgICAgIEZvciBjaGlsZCBmcmFt ZXMsIGRvbid0IHdhaXQgZm9yIGV2ZW50cyDigJQgdGhhdCB3b3VsZCBmbHVzaCB0aGUgWAor ICAgICAgIGJ1ZmZlciBhbmQgbWlnaHQgc2hvdyBvdXRkYXRlZCBjb250ZW50cyBpbiB0aGUg ZnJhbWUuICAqLwogICAgIGFkanVzdF9mcmFtZV9zaXplIChmLCBGUkFNRV9QSVhFTF9UT19U RVhUX1dJRFRIIChmLCB3aWR0aCksCiAJCSAgICAgICBGUkFNRV9QSVhFTF9UT19URVhUX0hF SUdIVCAoZiwgaGVpZ2h0KSwKIAkJICAgICAgIDUsIDAsIFF4X3NldF93aW5kb3dfc2l6ZV8x KTsK --------------000icbUK758m8ANWGtgCd80g--
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 3 Apr 2026 16:06:55 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 03 12:06:55 2026 Received: from localhost ([127.0.0.1]:60533 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w8h2t-0006IL-9u for submit <at> debbugs.gnu.org; Fri, 03 Apr 2026 12:06:55 -0400 Received: from fhigh-b4-smtp.messagingengine.com ([202.12.124.155]:34463) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w8h2q-0006Hu-E4 for 80662 <at> debbugs.gnu.org; Fri, 03 Apr 2026 12:06:53 -0400 Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45]) by mailfhigh.stl.internal (Postfix) with ESMTP id 3F9507A024A; Fri, 3 Apr 2026 12:06:45 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-05.internal (MEProxy); Fri, 03 Apr 2026 12:06:46 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1775232405; x=1775318805; bh=MAWV4t9k/3xwa1ZG49L3mtX44SCh1M1pH6Yot8tbG9c=; b= CzmvfAjlgB3AH0hFUh4RUgRi63yUmWy8x0h6aEf3cx/EbqtmTO6DbiIyitQ11CP6 1aAlXuwh0WHYH7CAqZBxcwHdYKShdeN4J9HmIDUs7F7fXC89sGHM65/q0iuRrDnf aWh+s8hCok9c0hCgp46u3/zSNSDFW/uB1ycoGeFagNr9t9O/pb/WVLLVATK+6NYc T9NvJZ0U5bshU1K5wHYF+dBxCcqildZOJ0dIF0XjpkXUwoVbZRU3icZgqPaQluXt SrlTAhrb0yhXgAOWBYFRuq66E2Y42lv+p0c1U3lvcZx/J97iQ227KFaNkh23uFoC TzSrzFw1oHY07OMixQp15w== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm2; t=1775232405; x=1775318805; bh=M AWV4t9k/3xwa1ZG49L3mtX44SCh1M1pH6Yot8tbG9c=; b=F5maF8k9M13dTk8oM fx9Fk2PbsKMeJ1LewG+0Du3EX8AsdavcXX6syyAxbNMygtWpU9OjPKmzBWeq91pM FJAOejAOg15c2eMSHKyGlwXt7wCB8qK9khCk8PB7NrA9l1N/aeF/epfJ1TZv9PEW tRfCy+rVjobJhuTF36J9BTeH8+vvN0vKfTK9w/5Aw6x0vNwaOVa+KXxYUb8mMcvl OIL3cTaeXEjao9K2ZPzyJP//5V6xKOB0LkDiRuWwIYlNhzPCkuVKJg0BVebcg/90 pAvFe7ELzS75d57LZr2b7v+RbCoCqpBEHLT9QplSh41C4QAoWitRjhCkIoj9Ew26 O4iSA== X-ME-Sender: <xms:leXPaWnqBMYMoZICo3A0iahwqmxfH-a90mPJtW0rEVVWLNFAI1zxdQ> <xme:leXPaT3EEbo6kra2k5S8HU3TcG7MJYUGQ-bNkRfE8INbSajMS7bnF4SKRs2wvJTnh RQBolicVD7Hbm0Jd1o4H-rH0OOMDQ6SD-Ex6O7nYds0EaeJxtM7hZg> X-ME-Received: <xmr:leXPaSRSZDJ3JRyjbwa-JicFQuot3wSQJoDKy4l32YSs5jLpUPF1Y_b5KTq3KV7ndqFfgQ> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdelfeekucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh epkfffgggfuffvfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhihucfi uhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrhhnpe egueegteffuddvjeevvdelleeitdeftdduhfeffeffjedukeevjedvfeffgfevgeenucev lhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhithhrhi esghhuthhovhdruggvvhdpnhgspghrtghpthhtohepvddpmhhouggvpehsmhhtphhouhht pdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektdeiie dvseguvggssghughhsrdhgnhhurdhorhhg X-ME-Proxy: <xmx:leXPaVuaja9kbftS1_zzCc9R1KY27r8TSO8ErJBJD0JZAt4WX9KSUA> <xmx:leXPaXb4ohf9IxP70LjVMXwY5865meuM-Hmh4CHaufoe6fKIt2UFgg> <xmx:leXPaau5_Xlof9fsbJtWTigpqyt1aE0McHtfmBZZ5dh0ZZx0QBq_Gg> <xmx:leXPaZFiEDUgpknBKrfspPoQy4hE_E_zPCUNhYH3IYCSG1uM11ofeQ> <xmx:leXPadOdc3p23UkbxHDUbLy89oqOW26MFWhwZODqwC3Keo8kjcbGcbTh> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri, 3 Apr 2026 12:06:44 -0400 (EDT) Message-ID: <23283282-f13a-43bf-8a55-f735da1bc2d4@HIDDEN> Date: Fri, 3 Apr 2026 19:06:42 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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 (-) On 03/04/2026 11:34, martin rudalics wrote: > > That seems like a deeper rabbit hole than the one I'm currently in - > > there is a fair amount of code. Some dnd_in_progress handling, scroll > > bars, xdbe flip, x_drop_xrender_surfaces... something about xinput and > > i18n? With bits of code shared between the ports. Not sure if event > > coalescing will still be needed, or if GTK would do its part on > > that. Would be nice to simplify that forest of ifdefs. > > pgtk should handle some of these too. X related parts are certainly too > hairy at this time. I seem to recall that the handling of input (or some input anyway) was stated a fatal flaw of the pgtk port on X11. If we could reuse some of the approaches from it in gtk3, that would be great. As a Wayland user, though, I'm more inclined to try fixing the parts of pgtk that work differently (such as different scaling on some UI elements) and to try adopting that port more. > > IIUC the issue with Lucid and GTK ports is that they have multiple > > nested X11 windows. Set up by Xt in one case and by Gtk in another. So > > we get several (at least two) ConfigureNotify events, and then two > > Expose events if the frame's size grew, like this: > > > adjust_frame_size(1, size-and-position): NS=348x208->508x458 PS=348x208 > > adjust_frame_size(5, xg_frame_set_char_size): NS=348x208->508x458 > PS=348x208 [apply] > > ClearUnderBorder(redisplay_internal): 508x458 > > ConfigureNotify: x=350 y=100 w=508 h=458 window=12004ff > > So this one should have been for the outer GTK window ... > > > ConfigureNotify: x=0 y=0 w=508 h=458 window=1200503 > > ... and this for the inner X window. I wonder whether the X, Y are zero > because they count from the outer window. But then the heights should > differ too. IIUC one of these windows is a child of another. As such, they have the same dimensions but the positioning of the child would be within its parent. Hence (0,0). > > Expose: x=348 y=0 w=160 h=208 count=1 > > ClearUnderBorder(handle_one_xevent Expose): 508x458 > > Expose: x=0 y=208 w=508 h=250 count=0 > > ClearUnderBorder(handle_one_xevent Expose): 508x458 > > But why do we get two Expose events? Can you show the xexpose.window > values for them in the history? And how does these look like for Lucid? Because it's the shape of the exposed area (right-to-left "L"). If you're okay with pointers, the cycle from the test looks like this: ConfigureNotify(outer): x=350 y=600 w=348 h=208 window=a0047c ConfigureNotify(inner): x=0 y=0 w=348 h=208 window=a0047e ConfigureNotify(outer): x=350 y=100 w=508 h=458 window=a0047c ConfigureNotify(inner): x=0 y=0 w=508 h=458 window=a0047e Expose(inner): x=348 y=0 w=160 h=208 count=1 window=a0047e Expose(inner): x=0 y=208 w=508 h=250 count=0 window=a0047e This is Lucid/XWayland. > > The inner window's resize follows the outer window's resize > > asynchronously, that might explain the delay. > > But the size values are the same. The positions differ so we have to > move the border rectangle. The test scenario uses set-frame-size-and-position-pixelwise where the frame is resized too - that's where the main difficulty comes from. If the frame only moves, the result is fine. If it just resized, it would also be okay because the eye expects to see a transition in that place of the screen. But when our resize-and-move handler ends up resizing in the target area anyway, that's an eyesore. > >> > PGTK somehow feels different, with size-and-position, for example, > >> > looking almost atomic. When captured on video, I can still catch > where > >> > it does the two-part update, but the way the frame is redrawn feels > >> > smoother. We should probably study that for a later improvement. > >> > >> If it already handles the flushing differently? > > > > Yes, IIUC it does flushing via the Wayland protocol. But if it behaves > > okay through XWayland as well, then at least the same behavior could > > be reachable for our other ports too. > > Is the above trace with XWayland or Xorg? XWayland. Most of my testing is over XWayland, but whenever I tried switching back to X11 to find a difference, there was none. With the exception of the PGTK port which moved slightly less smoothly, but not by much. > >> > * Deletion of update_various_frame_slots. I can see it was hollowed > >> > out in d4fe840df0b5fdb3a, and the remainder doesn't seem to be doing > >> > anything useful. > >> > >> That last one was kind of lackluster anyway. > > The proposal or the function? > > The entire function. Let's remove it in a separate change, then.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 3 Apr 2026 08:35:16 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 03 04:35:16 2026 Received: from localhost ([127.0.0.1]:56366 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w8Zzn-0007Nj-Mb for submit <at> debbugs.gnu.org; Fri, 03 Apr 2026 04:35:16 -0400 Received: from mout.gmx.net ([212.227.17.20]:44145) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w8Zzk-0007Mq-SI for 80662 <at> debbugs.gnu.org; Fri, 03 Apr 2026 04:35:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1775205307; x=1775810107; i=rudalics@HIDDEN; bh=Pv4lcj7H3rl9J2SMsxHIrH4Tla5QsLQICRtBaqbrCwM=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To: 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=Rid7juxCBppSYwGOdjTVtGkVw4nNYEV9RZHK/RU6H7c/EE3hWBBo8iBCUeiXMyk9 EtmqmNaAUS1O7aeQWq2oR5IdmD4PGJcSVG2fgyWclHUUf9F/R7KD0wyzZXQgzHS3a S5vup3kdEIBi1FlFC9DpeJFpNwr2puuutAJW8nHUIOZ+wVDGds/8V2x/OIyeDW3jn MLeMwnGIOxHgwqrko234iLy7pmZjPQrm5Y3B1fRYVk6top0+JZqo6J91N9WJkrq07 +7IorPYpw4GroV7w9sRVlVkNpQbTc7Bzncj/cO/nLPpOcGtuD7w8IOZ/UyL8HlhYZ CrMncXQ0OPQRtdpWnw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MFKKX-1wJF5f3Zqj-00CmLy; Fri, 03 Apr 2026 10:35:06 +0200 Message-ID: <9bc11d77-d02c-43ad-971d-f40f6fc15552@HIDDEN> Date: Fri, 3 Apr 2026 10:35:05 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> <293e42aa-9972-4565-9cc8-f5eb322ed4ad@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <293e42aa-9972-4565-9cc8-f5eb322ed4ad@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 X-Provags-ID: V03:K1:cmw5ONhQzQo4YeL2fDJLRurRJFWQTX9g2s52Rnetemfq/KsLWIA BpZ5TEOkNRjFYTmY+VIEOWU4SWjnoFh18bM5NOHNLCT3h5c6lrCKBi3XKUKjujsFj1Pd5vy 2sL8IiTUBticaYng71JyjFirpDMJc1b5/Lx0cjNh0NLsqXcd0SFKWhYl4T7DVs6VXYcekhe dGF4abnqhv+cwaZczxuhQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:Fz8L7CQKmA4=;E2SPvCAz2TlI2WD4qznhVya5ZFC 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 dBniQQ5xIHmvZQ9SE7OnHncA== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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 (-) ID4gU29tZXRoaW5nIGVsc2U6IHNpbmNlIHRoaXMgYnVpbGQgY29uZmlndXJhdGlvbiBhdm9p ZHMgdGhlIHR3by1zdGVwDQogPiB1cGRhdGUgaW5zaWRlIHRoZSBwb3B1cCAoc28gdGhlIGNo aWxkIGZyYW1lIHJlcG9zaXRpb25pbmcgd29ya3MgZ3JlYXQNCiA+IHdpdGhvdXQgdGhvc2Ug Z2xpdGNoZXMpLCBhbm90aGVyIGFzcGVjdCBvZiBob3cgdGhlIHVwZGF0ZSBvbiB0aGUNCiA+ IHNjcmVlbiBpcyBwZXJmb3JtZWQsIGNhbWUgaW50byBmb2N1czogdGhlIGJhY2tncm91bmQg ZmlsbCwgdHdvIG9mDQogPiB0aGVtLiAgVGhlIHByb3Bvc2VkIGNoYW5nZSBpcyB0byB0ZW1w b3JhcmlseSBzZXQgdGhlIHdpbmRvd3MnDQogPiBiYWNrZ3JvdW5kcyB0byBOb25lLCBpc3N1 ZSB0aGUgWDExIGNvbW1hbmQsIGFuZCB0aGVuIHVuZG8gdGhlDQogPiBjaGFuZ2UuIEFsdGVy bmF0aXZlbHksIHdlIGNvdWxkIHNldCB0aGUgYmFja2dyb3VuZCBmb3IgdGhlIGNoaWxkIGZy YW1lDQogPiB0byBOb25lIHdoZXJlIGl0IGlzIGNyZWF0ZWQsIGJ1dCBpdCBnZXRzIG92ZXJ3 cml0dGVuIGluDQogPiB4X3NldF9iYWNrZ3JvdW5kX2NvbG9yLCBhcHBhcmVudGx5IGlmIG9u ZSBhc3NpZ25zIGEgYmFja2dyb3VuZCB0byB0aGUNCiA+IGZyYW1lICh3aGljaCBpcyBjb21t b24gZW5vdWdoKS4gQW5kIHVzaW5nIE5vbmUgYXMgYSBjb25zdGFudA0KID4gYmFja2dyb3Vu ZCBmb3IgdGhlIHJlZ3VsYXIgZnJhbWUgbXVzdCBiZSBldmVuIG1vcmUgZGlzcnVwdGluZy4N Cg0KVGhhdCBjdXJyZW50bHkgZ2l2ZXMgbWUgaGVyZQ0KDQpJbiBmaWxlIGluY2x1ZGVkIGZy b20gLi4vLi4vc3JjL3h0ZXJtLmM6NjM2Og0KSW4gZnVuY3Rpb24g4oCYeF9zZXRfd2luZG93 X3NpemVfYW5kX3Bvc2l0aW9uXzHigJksDQogICAgIGlubGluZWQgZnJvbSDigJh4X3NldF93 aW5kb3dfc2l6ZV9hbmRfcG9zaXRpb27igJkgYXQgLi4vLi4vc3JjL3h0ZXJtLmM6Mjg2MzQ6 NToNCi4uLy4uL3NyYy94dGVybS5oOjEzOTc6NDQ6IHdhcm5pbmc6IHBvdGVudGlhbCBudWxs IHBvaW50ZXIgZGVyZWZlcmVuY2UgWy1XbnVsbC1kZXJlZmVyZW5jZV0NCiAgMTM5NyB8ICNk ZWZpbmUgRlJBTUVfWF9XSU5ET1coZikgKChmKS0+b3V0cHV0X2RhdGEueC0+d2luZG93X2Rl c2MpDQogICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB+fn5+fn5+fn5+fn5+ fn5+Xn4NCi4uLy4uL3NyYy94dGVybS5jOjI4NTkzOjMwOiBub3RlOiBpbiBleHBhbnNpb24g b2YgbWFjcm8g4oCYRlJBTUVfWF9XSU5ET1figJkNCjI4NTkzIHwgICAgICAgV2luZG93IHBh cmVudF93aW5kb3cgPSBGUkFNRV9YX1dJTkRPVyAoRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSk7 DQogICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+ DQouLi8uLi9zcmMveHRlcm0uaDoxMzk3OjQ0OiB3YXJuaW5nOiBwb3RlbnRpYWwgbnVsbCBw b2ludGVyIGRlcmVmZXJlbmNlIFstV251bGwtZGVyZWZlcmVuY2VdDQogIDEzOTcgfCAjZGVm aW5lIEZSQU1FX1hfV0lORE9XKGYpICgoZiktPm91dHB1dF9kYXRhLngtPndpbmRvd19kZXNj KQ0KICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfn5+fn5+fn5+fn5+fn5+ fl5+DQouLi8uLi9zcmMveHRlcm0uYzoyODYwNTozMDogbm90ZTogaW4gZXhwYW5zaW9uIG9m IG1hY3JvIOKAmEZSQU1FX1hfV0lORE9X4oCZDQoyODYwNSB8ICAgICAgIFdpbmRvdyBwYXJl bnRfd2luZG93ID0gRlJBTUVfWF9XSU5ET1cgKEZSQU1FX1BBUkVOVF9GUkFNRSAoZikpOw0K ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn5+fg0K Li4vLi4vc3JjL3h0ZXJtLmM6Mjg2MDg6Nzogd2FybmluZzogcG90ZW50aWFsIG51bGwgcG9p bnRlciBkZXJlZmVyZW5jZSBbLVdudWxsLWRlcmVmZXJlbmNlXQ0KMjg2MDggfCAgICAgICBY U2V0V2luZG93QmFja2dyb3VuZCAoZHB5LCBwYXJlbnRfd2luZG93LA0KICAgICAgIHwgICAg ICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4NCjI4NjA5IHwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSQU1FX0JBQ0tHUk9VTkRfUElYRUwgKEZS QU1FX1BBUkVOVF9GUkFNRSAoZikpKTsNCiAgICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+ fn4NCg0KbWFydGluDQo=
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 3 Apr 2026 08:35:08 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Fri Apr 03 04:35:08 2026 Received: from localhost ([127.0.0.1]:56363 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w8Zzf-0007Mt-HF for submit <at> debbugs.gnu.org; Fri, 03 Apr 2026 04:35:08 -0400 Received: from mout.gmx.net ([212.227.17.20]:51083) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w8Zzb-0007Lg-Gw for 80662 <at> debbugs.gnu.org; Fri, 03 Apr 2026 04:35:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1775205294; x=1775810094; i=rudalics@HIDDEN; bh=Qae7yMJonn3hkzpGBzUUnhjKbboG9NdlHp4NNJ8yuT4=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To: 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=q5CZ96cC+mOuWSltTY60kfEvnSyEIUPLAgrcAocBhijebPqeHw8m/IcndUyY3QK2 0lEVK3w+wwOmC+MBuANBVmN6j0IOUqDNLZt+LYflYTJ3daMgeXMi04yffY3xDceZJ p6PNKYFcRqFOg9NNbr7pMIK3nG0TtkF4alkAWftnvC7zcw8DPTxkZMYmsPaqBWeNA Z41ZFQaEl0Jbcy3Aw4KaEe8ZQsmiOpgCOFhGV0rouJXnA6yjCwUgdWc5LWmmNnoBn jy28LCSZ1fL8FnAk7Kd7zDRUqKAS/uwaWntriEg2i3H7oKd9YYZX4Os+3BOW+zW1u hfrAeseN9rElvEU3WQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx105 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MPGRp-1vriMa15Dh-00I3Jk; Fri, 03 Apr 2026 10:34:53 +0200 Message-ID: <3655f756-7654-479e-8bcf-3825177b2307@HIDDEN> Date: Fri, 3 Apr 2026 10:34:52 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:cmP1/Obm+BTBe3M7qksVFpkxH9J3AG3Oo3cwUHCuGraIo97FQEA KUxvC9QKDwt31IEydOjbBVDHVfapX3GFgz2zltuDDhgYwMaCjoXT0Iw7eto0v4OMyYY5mmO eOykCQpisMGdX7GAWe3ml9udd2OfEM0BXiGSsLndOVi3puw7aeSDr69CtxLd4vs0/GSEQQA 0GYsjB+7PuhN6nMxXly8Q== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:855BFbyGedk=;/S2UXwqqw8ZPGh0NkjAypqwSvgP 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 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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 is that xexpose.count check for here >> >> + if (event->xexpose.count == 0) >> + x_clear_under_internal_border (f); > > > Tiny performance optimization. To render the resized frame, two Expose > events are delivered to cover the mirrored L-shape form. But we only > need one re-render of the borders. xexpose.count == 0 ensures that > it's the last Expose event: > https://www.x.org/releases/X11R7.6/doc/man/man3/XExposeEvent.3.xhtml OK. >> > Apparently that only works for PGTK - and the only g_signal_connect >> > handler for "configure-event" is also set in pgtkterm.c. >> >> Can you try setting one up for GTK? > > That seems like a deeper rabbit hole than the one I'm currently in - > there is a fair amount of code. Some dnd_in_progress handling, scroll > bars, xdbe flip, x_drop_xrender_surfaces... something about xinput and > i18n? With bits of code shared between the ports. Not sure if event > coalescing will still be needed, or if GTK would do its part on > that. Would be nice to simplify that forest of ifdefs. pgtk should handle some of these too. X related parts are certainly too hairy at this time. > You might be curious to hear that the commit that added x_wait_for_event was by Jan in 2009 (5c646d5a31903acabeb267a69f), titled: > > Fix resize due to font change on a maximized/xmonad-controlled frame. Poor Jan. No wonder he eventually left us. >> I think we should skip only the x_wait_for_event in a first step. I >> never tried to understand the inner workings of this: Would you say that >> GTK even informs the window manager about child frame management? What >> would the latter do about it anyway? > > We do seem to call x_net_wm_state for any frame during resize. Could > skip that for child frames, I don't see any difference from adding > such an 'if' around it. Something else to leave for a later stage. >> > I've tried several variants of this, and the Lucid build always >> > exhibits the two-step update (first the frame is refreshed at the new >> > position with the old dimensions - if they are smaller - and then with >> > full size). >> >> Are we getting two events for that, a MotionNotify event first and then >> the ConfigureNotify event? > > I'm not seeing MotionNotify arrive in this scenario. They are usually collapsed into ConfigureNotify. > IIUC the issue with Lucid and GTK ports is that they have multiple > nested X11 windows. Set up by Xt in one case and by Gtk in another. So > we get several (at least two) ConfigureNotify events, and then two > Expose events if the frame's size grew, like this: > adjust_frame_size(1, size-and-position): NS=348x208->508x458 PS=348x208 > adjust_frame_size(5, xg_frame_set_char_size): NS=348x208->508x458 PS=348x208 [apply] > ClearUnderBorder(redisplay_internal): 508x458 > ConfigureNotify: x=350 y=100 w=508 h=458 window=12004ff So this one should have been for the outer GTK window ... > ConfigureNotify: x=0 y=0 w=508 h=458 window=1200503 ... and this for the inner X window. I wonder whether the X, Y are zero because they count from the outer window. But then the heights should differ too. > Expose: x=348 y=0 w=160 h=208 count=1 > ClearUnderBorder(handle_one_xevent Expose): 508x458 > Expose: x=0 y=208 w=508 h=250 count=0 > ClearUnderBorder(handle_one_xevent Expose): 508x458 But why do we get two Expose events? Can you show the xexpose.window values for them in the history? And how does these look like for Lucid? > The inner window's resize follows the outer window's resize > asynchronously, that might explain the delay. But the size values are the same. The positions differ so we have to move the border rectangle. >> > PGTK somehow feels different, with size-and-position, for example, >> > looking almost atomic. When captured on video, I can still catch where >> > it does the two-part update, but the way the frame is redrawn feels >> > smoother. We should probably study that for a later improvement. >> >> If it already handles the flushing differently? > > Yes, IIUC it does flushing via the Wayland protocol. But if it behaves > okay through XWayland as well, then at least the same behavior could > be reachable for our other ports too. Is the above trace with XWayland or Xorg? >> > * Deletion of update_various_frame_slots. I can see it was hollowed >> > out in d4fe840df0b5fdb3a, and the remainder doesn't seem to be doing >> > anything useful. >> >> That last one was kind of lackluster anyway. > The proposal or the function? The entire function. martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 3 Apr 2026 02:04:40 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 02 22:04:40 2026 Received: from localhost ([127.0.0.1]:51597 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w8Ttn-0005jT-VN for submit <at> debbugs.gnu.org; Thu, 02 Apr 2026 22:04:40 -0400 Received: from fhigh-b2-smtp.messagingengine.com ([202.12.124.153]:41103) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w8Ttl-0005j7-HE for 80662 <at> debbugs.gnu.org; Thu, 02 Apr 2026 22:04:38 -0400 Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfhigh.stl.internal (Postfix) with ESMTP id 50F5B7A01A4; Thu, 2 Apr 2026 22:04:31 -0400 (EDT) Received: from phl-frontend-04 ([10.202.2.163]) by phl-compute-06.internal (MEProxy); Thu, 02 Apr 2026 22:04:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1775181870; x=1775268270; bh=ifamlLPUQ5 gw2y+wSrbYr0FgJUg0lg6PXFBHAlJGqlg=; b=enS7OvTeV44dwzFql9GIak1rth jRsIHb7sNz2iq9bqAy1bZSwueqCieas2TAyDIcFEUGZUb3DcKpA3broQEN9COTuX O6fng1oqVN6pegA4KFcs+mqgCPYWW32GamOdV6Ppw4u1+WT/6QosE/Kz4Risy0Qe hItGof21iAYmFvGi046amSowcEe31X0WYKiCOVVezir8b3FjdD/Xjdp9k/H4NYlV wz/O5GIu7ZYDx+bop4JOvOQyekwoON3Cy1SFaheGsZUcZltNkzppSQjUrKs9hcp1 ZDCiQslE9nq5W3VynpTCltgVTxBtlto4vGDlT/W/JOXLW6nhUgieQ9JeRblQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1775181870; x=1775268270; bh=ifamlLPUQ5gw2y+wSrbYr0FgJUg0lg6PXFB HAlJGqlg=; b=dw/MCPn7pzz83ZAxWyQ8J9jS1b6yWaURgAlktomDejXOeDEGoDe WCYdYQD48bRhNnEr5TESf4NJ0ERsC6ACs5cLutf6x7tpxnnA6vQFw3MfPKptS9Nh SHM8V9bmpqm+GYj091gXEv9nasNaxL8MTn/20KdJBfaT4JKRYAoBh89xjg/u1AUa ymcgITZjWFRL4xfew+RV+ioXmam0f5XY/yf0fqe+lK6MwuOBySlIZ+ccF9myFO9+ YUFtAoEI/jFuxRUJpOq13sZh3Loz7XvlxqHBnG6TbS3XEGNnYqzUA65HN1ekq2TG y7MMEMrYjQDDvAJQ+2bBdfCvyLXOdX8U1XA== X-ME-Sender: <xms:LSDPaZq8_kgOWTtwA8zqyMllW3sK1JJDDPoKHiuJq2hpNX7Muycapg> <xme:LSDPaRpJdDSZWqizRcAnY84Gg9Py6HtPQppsVWd3_0g-2R6d_UIIc4Du_iAMdYh0a 7oKm2CadsnZmaG745YEtCQtfL4X4o2SKDxcsc_Gi4BFhZx3Fk3Y> X-ME-Received: <xmr:LSDPaT1ycfNffx1Xb6tND8uwo-rWHY3CzkpwI-8ZM9VPEDaMLeTTI7F2U-HAvnVznplPBw> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdejieeiucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh eptgfkffggfgfuhffvfhgjsehmtderredtvdejnecuhfhrohhmpeffmhhithhrhicuifhu thhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrthhtvghrnheptd ehfeekledugfettdefudeuueettddvvddvgfdvueeigeegudevleefvdevudegnecuvehl uhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepughmihhtrhihse hguhhtohhvrdguvghvpdhnsggprhgtphhtthhopedvpdhmohguvgepshhmthhpohhuthdp rhgtphhtthhopehruhgurghlihgtshesghhmgidrrghtpdhrtghpthhtohepkedtieeivd esuggvsggsuhhgshdrghhnuhdrohhrgh X-ME-Proxy: <xmx:LSDPaQC7BvKL5xlOW8NZz-337ZOVQSnTI9rzWMTB6uiZGzYPaS750w> <xmx:LSDPabccpmbXu_cvUK-DvS9PYibriir3TE2EyBQxjS6h7l2ce-XpfA> <xmx:LSDPaViP0roUoxt9KkEjItY8S9n0MjX-fV6l2j-Wy_JEbUvVPUjdxA> <xmx:LSDPaTrLJAmH87pP_1EifnUSnxcCIzzGqVc0nW3D4yDV6r4RdT7J7g> <xmx:LiDPaWy-tzkCANkSU6bQ9fESLy8rI8_0Bli2d6lSZ0iLTh5mFHQIBN2j> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 2 Apr 2026 22:04:28 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------KmiOojuvhQwsfhtGAsIRdBJ3" Message-ID: <293e42aa-9972-4565-9cc8-f5eb322ed4ad@HIDDEN> Date: Fri, 3 Apr 2026 05:04:26 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step From: Dmitry Gutov <dmitry@HIDDEN> To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> Content-Language: en-US In-Reply-To: <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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. --------------KmiOojuvhQwsfhtGAsIRdBJ3 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 03/04/2026 00:03, Dmitry Gutov wrote: > IIUC the issue with Lucid and GTK ports is that they have multiple > nested X11 windows. Set up by Xt in one case and by Gtk in another. So > we get several (at least two) ConfigureNotify events, and then two > Expose events if the frame's size grew, like this: > > adjust_frame_size(1, size-and-position): NS=348x208->508x458 PS=348x208 > adjust_frame_size(5, xg_frame_set_char_size): NS=348x208->508x458 > PS=348x208 [apply] > ClearUnderBorder(redisplay_internal): 508x458 > ConfigureNotify: x=350 y=100 w=508 h=458 window=12004ff > ConfigureNotify: x=0 y=0 w=508 h=458 window=1200503 > Expose: x=348 y=0 w=160 h=208 count=1 > ClearUnderBorder(handle_one_xevent Expose): 508x458 > Expose: x=0 y=208 w=508 h=250 count=0 > ClearUnderBorder(handle_one_xevent Expose): 508x458 > > The inner window's resize follows the outer window's resize > asynchronously, that might explain the delay. Retesting the no-toolkit build (which only has one window), I've noticed that I've lost the bit_gravity revert in the latest patch. Now added. Something else: since this build configuration avoids the two-step update inside the popup (so the child frame repositioning works great without those glitches), another aspect of how the update on the screen is performed, came into focus: the background fill, two of them. - During the move, the rectangle where the child frame was is filled with the parent frame's background color (usually white). - At the new position, if the previous size was smaller, the new area would fill with the child frame's background before being redrawn. Both are not very apparent, but once you see them one time, it get difficult not to notice. It's like a shimmer. The proposed change is to temporarily set the windows' backgrounds to None, issue the X11 command, and then undo the change. Alternatively, we could set the background for the child frame to None where it is created, but it gets overwritten in x_set_background_color, apparently if one assigns a background to the frame (which is common enough). And using None as a constant background for the regular frame must be even more disrupting. I've tried using backing_store = Always for the parent frame instead, but apparently being obscured by a child window of yours doesn't count for storing, so that didn't work. Thoughts? --------------KmiOojuvhQwsfhtGAsIRdBJ3 Content-Type: text/x-patch; charset=UTF-8; name="set_window_size_and_position_skip_wait_for_event_v5.diff" Content-Disposition: attachment; filename="set_window_size_and_position_skip_wait_for_event_v5.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9ndGt1dGlsLmMgYi9zcmMvZ3RrdXRpbC5jCmluZGV4IGIwMWJi NjgwNGVkLi4yODlmYmMwZWM5MyAxMDA2NDQKLS0tIGEvc3JjL2d0a3V0aWwuYworKysgYi9z cmMvZ3RrdXRpbC5jCkBAIC0xNDMyLDcgKzE0MzIsNyBAQCB4Z19mcmFtZV9zZXRfc2l6ZV9h bmRfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQog ICBTRVRfRlJBTUVfR0FSQkFHRUQgKGYpOwogICBjYW5jZWxfbW91c2VfZmFjZSAoZik7CiAK LSAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAoZikpCisgIGlmIChGUkFNRV9WSVNJQkxFX1AgKGYp ICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKGYpKQogICAgIHsKICAgICAgIC8qIE11c3QgY2Fs bCB0aGlzIHRvIGZsdXNoIG91dCBldmVudHMgKi8KICAgICAgICh2b2lkKWd0a19ldmVudHNf cGVuZGluZyAoKTsKZGlmZiAtLWdpdCBhL3NyYy93aWRnZXQuYyBiL3NyYy93aWRnZXQuYwpp bmRleCBlNzY3YjAwNmUzZi4uYjg0M2JjYTFmYjkgMTAwNjQ0Ci0tLSBhL3NyYy93aWRnZXQu YworKysgYi9zcmMvd2lkZ2V0LmMKQEAgLTQyOCw2ICs0MjgsMTAgQEAgRW1hY3NGcmFtZVJl c2l6ZSAoV2lkZ2V0IHdpZGdldCkKICAgICAgICBldy0+Y29yZS53aWR0aCwgZXctPmNvcmUu aGVpZ2h0LAogICAgICAgIGYtPm5ld193aWR0aCwgZi0+bmV3X2hlaWdodCk7CiAKKyAgaWYg KEZSQU1FX1BJWEVMX1dJRFRIIChmKSA9PSBldy0+Y29yZS53aWR0aAorICAgICAgJiYgRlJB TUVfUElYRUxfSEVJR0hUIChmKSA9PSBldy0+Y29yZS5oZWlnaHQpCisgICAgcmV0dXJuOwor CiAgIGNoYW5nZV9mcmFtZV9zaXplIChmLCBldy0+Y29yZS53aWR0aCwgZXctPmNvcmUuaGVp Z2h0LAogCQkgICAgIGZhbHNlLCB0cnVlLCBmYWxzZSk7CiAKQEAgLTQ5NSw2ICs0OTksOCBA QCBFbWFjc0ZyYW1lRXhwb3NlIChXaWRnZXQgd2lkZ2V0LCBYRXZlbnQgKmV2ZW50LCBSZWdp b24gcmVnaW9uKQogCiAgIGV4cG9zZV9mcmFtZSAoZiwgZXZlbnQtPnhleHBvc2UueCwgZXZl bnQtPnhleHBvc2UueSwKIAkJZXZlbnQtPnhleHBvc2Uud2lkdGgsIGV2ZW50LT54ZXhwb3Nl LmhlaWdodCk7CisgIGlmIChldmVudC0+eGV4cG9zZS5jb3VudCA9PSAwKQorICAgIHhfY2xl YXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChmKTsKICAgZmx1c2hfZnJhbWUgKGYpOwogfQog CmRpZmYgLS1naXQgYS9zcmMveGZucy5jIGIvc3JjL3hmbnMuYwppbmRleCAzM2VjODMxMmNi NS4uODdjZTNhZjMwZDcgMTAwNjQ0Ci0tLSBhL3NyYy94Zm5zLmMKKysrIGIvc3JjL3hmbnMu YwpAQCAtNDQ4Myw3ICs0NDgzLDcgQEAgeF93aW5kb3cgKHN0cnVjdCBmcmFtZSAqZikKIAog ICBhdHRyaWJ1dGVzLmJhY2tncm91bmRfcGl4ZWwgPSBGUkFNRV9CQUNLR1JPVU5EX1BJWEVM IChmKTsKICAgYXR0cmlidXRlcy5ib3JkZXJfcGl4ZWwgPSBmLT5vdXRwdXRfZGF0YS54LT5i b3JkZXJfcGl4ZWw7Ci0gIGF0dHJpYnV0ZXMuYml0X2dyYXZpdHkgPSBOb3J0aFdlc3RHcmF2 aXR5OworICBhdHRyaWJ1dGVzLmJpdF9ncmF2aXR5ID0gU3RhdGljR3Jhdml0eTsKICAgYXR0 cmlidXRlcy5iYWNraW5nX3N0b3JlID0gTm90VXNlZnVsOwogICBhdHRyaWJ1dGVzLnNhdmVf dW5kZXIgPSBUcnVlOwogICBhdHRyaWJ1dGVzLmV2ZW50X21hc2sgPSBTVEFOREFSRF9FVkVO VF9TRVQ7CmRpZmYgLS1naXQgYS9zcmMveHRlcm0uYyBiL3NyYy94dGVybS5jCmluZGV4IGQ3 NDUxYjUzOGUzLi5kYzAxOTJiNjI5ZCAxMDA2NDQKLS0tIGEvc3JjL3h0ZXJtLmMKKysrIGIv c3JjL3h0ZXJtLmMKQEAgLTc3MjMsNiArNzcyMyw5IEBAIHhfY2xlYXJfdW5kZXJfaW50ZXJu YWxfYm9yZGVyIChzdHJ1Y3QgZnJhbWUgKmYpCiAJICBEaXNwbGF5ICpkaXNwbGF5ID0gRlJB TUVfWF9ESVNQTEFZIChmKTsKIAkgIEdDIGdjID0gZi0+b3V0cHV0X2RhdGEueC0+bm9ybWFs X2djOwogCisJICBpZiAoIWdjKQorCSAgICByZXR1cm47CisKIAkgIFhTZXRGb3JlZ3JvdW5k IChkaXNwbGF5LCBnYywgY29sb3IpOwogCSAgeF9maWxsX3JlY3RhbmdsZSAoZiwgZ2MsIDAs IG1hcmdpbiwgd2lkdGgsIGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm LT5ib3JkZXJzX3Jlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCk7CkBAIC0yODUwOSwxMyArMjg1 MTIsMTMgQEAgeF9zZXRfd2luZG93X3NpemVfMSAoc3RydWN0IGZyYW1lICpmLCBib29sIGNo YW5nZV9ncmF2aXR5LAogICAvKiBCdXQgdGhlIENvbmZpZ3VyZU5vdGlmeSBtYXkgaW4gZmFj dCBuZXZlciBhcnJpdmUsIGFuZCB0aGVuIHRoaXMgaXMKICAgICAgbm90IHJpZ2h0IGlmIHRo ZSBmcmFtZSBpcyB2aXNpYmxlLiAgSW5zdGVhZCB3YWl0ICh3aXRoIHRpbWVvdXQpCiAgICAg IGZvciB0aGUgQ29uZmlndXJlTm90aWZ5LiAgKi8KLSAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAo ZikpCisgIGlmIChGUkFNRV9WSVNJQkxFX1AgKGYpICYmICFGUkFNRV9QQVJFTlRfRlJBTUUg KGYpKQogICAgIHsKICAgICAgIHhfd2FpdF9mb3JfZXZlbnQgKGYsIENvbmZpZ3VyZU5vdGlm eSk7CiAKICAgICAgIGlmIChDT05TUCAoZnJhbWVfc2l6ZV9oaXN0b3J5KSkKIAlmcmFtZV9z aXplX2hpc3RvcnlfZXh0cmEKLQkgIChmLCBidWlsZF9zdHJpbmcgKCJ4X3NldF93aW5kb3df c2l6ZV8xLCB2aXNpYmxlIiksCisJICAoZiwgYnVpbGRfc3RyaW5nICgieF9zZXRfd2luZG93 X3NpemVfMSwgd2FpdGVkIGZvciBldmVudCIpLAogCSAgIEZSQU1FX1BJWEVMX1dJRFRIIChm KSwgRlJBTUVfUElYRUxfSEVJR0hUIChmKSwgd2lkdGgsIGhlaWdodCwKIAkgICBmLT5uZXdf d2lkdGgsIGYtPm5ld19oZWlnaHQpOwogICAgIH0KQEAgLTI4NTIzLDcgKzI4NTI2LDcgQEAg eF9zZXRfd2luZG93X3NpemVfMSAoc3RydWN0IGZyYW1lICpmLCBib29sIGNoYW5nZV9ncmF2 aXR5LAogICAgIHsKICAgICAgIGlmIChDT05TUCAoZnJhbWVfc2l6ZV9oaXN0b3J5KSkKIAlm cmFtZV9zaXplX2hpc3RvcnlfZXh0cmEKLQkgIChmLCBidWlsZF9zdHJpbmcgKCJ4X3NldF93 aW5kb3dfc2l6ZV8xLCBpbnZpc2libGUiKSwKKwkgIChmLCBidWlsZF9zdHJpbmcgKCJ4X3Nl dF93aW5kb3dfc2l6ZV8xLCBub3Qgd2FpdGVkIGZvciBldmVudCIpLAogCSAgIEZSQU1FX1BJ WEVMX1dJRFRIIChmKSwgRlJBTUVfUElYRUxfSEVJR0hUIChmKSwgd2lkdGgsIGhlaWdodCwK IAkgICBmLT5uZXdfd2lkdGgsIGYtPm5ld19oZWlnaHQpOwogCkBAIC0yODU3OSwxNiArMjg1 ODIsNDEgQEAgeF9zZXRfd2luZG93X3NpemVfYW5kX3Bvc2l0aW9uXzEgKHN0cnVjdCBmcmFt ZSAqZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAgIHhfd21fc2V0X3NpemVfaGludCAo ZiwgMCwgZmFsc2UpOwogCisgIC8qIFRlbXBvcmFyaWx5IHN1cHByZXNzIGJhY2tncm91bmQg ZmlsbCBvbiB0aGUgY2hpbGQgYW5kIHBhcmVudCBmcmFtZQorICAgICB3aW5kb3dzIHNvIHRo ZSBYIHNlcnZlciBkb2Vzbid0IGZsYXNoIHdpdGggYmFja2dyb3VuZCBjb2xvciB3aGVuCisg ICAgIHRoZSBjaGlsZCBmcmFtZSBpcyBtb3ZlZC9yZXNpemVkLiAgUGFyZW50IHdpbmRvdyBm bGFzaGVkIHdoZXJlIHRoZQorICAgICBjaGlsZCBmcmFtZSB3YXMsIGFuZCBjaGlsZCBmcmFt ZSBmbGFzaGVkIHdoZXJlIGl0cyBzaXplIHdpbGwgYmUuICovCisgIGlmIChGUkFNRV9QQVJF TlRfRlJBTUUgKGYpKQorICAgIHsKKyAgICAgIERpc3BsYXkgKmRweSA9IEZSQU1FX1hfRElT UExBWSAoZik7CisgICAgICBXaW5kb3cgY2hpbGRfd2luZG93ID0gRlJBTUVfT1VURVJfV0lO RE9XIChmKTsKKyAgICAgIFdpbmRvdyBwYXJlbnRfd2luZG93ID0gRlJBTUVfWF9XSU5ET1cg KEZSQU1FX1BBUkVOVF9GUkFNRSAoZikpOworICAgICAgWFNldFdpbmRvd0JhY2tncm91bmRQ aXhtYXAgKGRweSwgY2hpbGRfd2luZG93LCBOb25lKTsKKyAgICAgIFhTZXRXaW5kb3dCYWNr Z3JvdW5kUGl4bWFwIChkcHksIHBhcmVudF93aW5kb3csIE5vbmUpOworICAgIH0KKwogICBY TW92ZVJlc2l6ZVdpbmRvdyAoRlJBTUVfWF9ESVNQTEFZIChmKSwgRlJBTUVfT1VURVJfV0lO RE9XIChmKSwKIAkJICAgICB4LCB5LCB3aWR0aCwgaGVpZ2h0ICsgRlJBTUVfTUVOVUJBUl9I RUlHSFQgKGYpKTsKIAorICBpZiAoRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSkKKyAgICB7Cisg ICAgICBEaXNwbGF5ICpkcHkgPSBGUkFNRV9YX0RJU1BMQVkgKGYpOworICAgICAgV2luZG93 IGNoaWxkX3dpbmRvdyA9IEZSQU1FX09VVEVSX1dJTkRPVyAoZik7CisgICAgICBXaW5kb3cg cGFyZW50X3dpbmRvdyA9IEZSQU1FX1hfV0lORE9XIChGUkFNRV9QQVJFTlRfRlJBTUUgKGYp KTsKKyAgICAgIFhTZXRXaW5kb3dCYWNrZ3JvdW5kIChkcHksIGNoaWxkX3dpbmRvdywKKwkJ CSAgICBGUkFNRV9CQUNLR1JPVU5EX1BJWEVMIChmKSk7CisgICAgICBYU2V0V2luZG93QmFj a2dyb3VuZCAoZHB5LCBwYXJlbnRfd2luZG93LAorCQkJICAgIEZSQU1FX0JBQ0tHUk9VTkRf UElYRUwgKEZSQU1FX1BBUkVOVF9GUkFNRSAoZikpKTsKKyAgICB9CisKICAgU0VUX0ZSQU1F X0dBUkJBR0VEIChmKTsKIAotICBpZiAoRlJBTUVfVklTSUJMRV9QIChmKSkKKyAgaWYgKEZS QU1FX1ZJU0lCTEVfUCAoZikgJiYgIUZSQU1FX1BBUkVOVF9GUkFNRSAoZikpCiAgICAgeF93 YWl0X2Zvcl9ldmVudCAoZiwgQ29uZmlndXJlTm90aWZ5KTsKICAgZWxzZQotICAgIC8qIENh bGwgYWRqdXN0X2ZyYW1lX3NpemUgcmlnaHQgYXdheSBhcyB3aXRoIEdUSy4gIEl0IG1pZ2h0 IGJlCi0gICAgICAgdGVtcHRpbmcgdG8gY2xlYXIgb3V0IGYtPm5ld193aWR0aCBhbmQgZi0+ bmV3X2hlaWdodCBoZXJlLiAgKi8KKyAgICAvKiBDYWxsIGFkanVzdF9mcmFtZV9zaXplIHJp Z2h0IGF3YXkgYXMgd2l0aCBHVEsuCisgICAgICAgRm9yIGNoaWxkIGZyYW1lcywgZG9uJ3Qg d2FpdCBmb3IgZXZlbnRzIOKAlCB0aGF0IHdvdWxkIGZsdXNoIHRoZSBYCisgICAgICAgYnVm ZmVyIGFuZCBjYW4gc2hvdyB0aGUgZnJhbWUgd2l0aCBvdXRkYXRlZCBjb250ZW50cy4gICov CiAgICAgYWRqdXN0X2ZyYW1lX3NpemUgKGYsIEZSQU1FX1BJWEVMX1RPX1RFWFRfV0lEVEgg KGYsIHdpZHRoKSwKIAkJICAgICAgIEZSQU1FX1BJWEVMX1RPX1RFWFRfSEVJR0hUIChmLCBo ZWlnaHQpLAogCQkgICAgICAgNSwgMCwgUXhfc2V0X3dpbmRvd19zaXplXzEpOwo= --------------KmiOojuvhQwsfhtGAsIRdBJ3--
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 2 Apr 2026 21:03:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 02 17:03:39 2026
Received: from localhost ([127.0.0.1]:48190 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1w8PCU-0006vW-LW
for submit <at> debbugs.gnu.org; Thu, 02 Apr 2026 17:03:39 -0400
Received: from fhigh-a7-smtp.messagingengine.com ([103.168.172.158]:43635)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w8PCQ-0006v4-Aq
for 80662 <at> debbugs.gnu.org; Thu, 02 Apr 2026 17:03:36 -0400
Received: from phl-compute-08.internal (phl-compute-08.internal [10.202.2.48])
by mailfhigh.phl.internal (Postfix) with ESMTP id E18191400213;
Thu, 2 Apr 2026 17:03:28 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
by phl-compute-08.internal (MEProxy); Thu, 02 Apr 2026 17:03:28 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc
:content-transfer-encoding:content-type:content-type:date:date
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm3; t=1775163808;
x=1775250208; bh=eaEffQyFdwKpyQ2pJPH+nmQrcEu6/K+R7yzsANvuz/I=; b=
sPfoN6IoaseWW1aG8W0Lz+PF+BxI/+G00xT9rQYVdMQbNtOxqyY9z1JZSR+EZ0Gf
AJ9XtYiFYDgo0RFDwdHEvt039eRcWTUqlqSibSohMVVTvRty8SwhzFkpXAAsnoE1
UicNYZ3vNucH0x8obDdRrkcMmVe+BCKeYnssAwCbW/c/j52QK71BDDokkgTBd+zi
1MNzbdIMcE2FC1wyK44pSktkwCGwIPNyVU/LF2s+fO0qt1PovVYF2D631mektoyu
wn9sAbZsQCljSvUnBgVwT8QLHzGVZKi303vFTI2HIgISmCUgV/ftWYxxPo1TuNFL
Rozur9EfsJ1cUp5acxYqXg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:content-transfer-encoding:content-type
:content-type:date:date:feedback-id:feedback-id:from:from
:in-reply-to:in-reply-to:message-id:mime-version:references
:reply-to:subject:subject:to:to:x-me-proxy:x-me-sender
:x-me-sender:x-sasl-enc; s=fm2; t=1775163808; x=1775250208; bh=e
aEffQyFdwKpyQ2pJPH+nmQrcEu6/K+R7yzsANvuz/I=; b=KZVH1QQ/60LWERhbH
IVpw8pVP1A0F4Td/6KzJ5BVOnUsxeHqlbBnILgu+qdrut5OkyBkR3M5P6STsB7Ec
xY2ffcXf+JzKnHXmtW8XJbHYlbfJuT8ATDPiA5oAy0yr5KzNCFSl2PPdzD+0L3XF
6z81cSynANuYzJ2wrlS0QG4WGLaxyt60l765baMzIvKADG4WzurkSo6gpLiD3KHU
5JQAFYPMQJ0fR8CCmUrjII0s3uN3f4odxYgLvfck6eQY3zpzbNBSgjPRH9xHwlZ7
mvH+g8jQ9OvNGUyX/6RkDX7+2YVjXSJK5ZsaIkBWfrixC8vqwMDqr4oNpZQneTlN
/d8hQ==
X-ME-Sender: <xms:oNnOaVAf18XFuTdwR8d8O6zP0eQ22P-pYtvcZwCpPtT3JLvmrbhhsw>
<xme:oNnOaZjUDZl10o7K46RbaSspA1CquxAjFKE1zc-WBzigzrdTan08iJBTWZAybY4HE
Tr4fglOWnbph-YN6YKsYxU6Za4ORTNposBTCRWRFh6AK5oHrGZikEQ>
X-ME-Received: <xmr:oNnOaeMKTZisG8SluQnUA2GzN4ckiVGWFmv7KaY4FnBqmuGdz9NRVlTV6BnWdsXEIS9PqA>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdejtdeiucetufdoteggodetrfdotf
fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi
lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh
epkfffgggfuffvfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhihucfi
uhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrhhnpe
ekjeeutdeiieeuteeufeejkeduvddvkeehgefgieduveelieejieehkeeukeejheenucff
ohhmrghinhepgidrohhrghenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmh
grihhlfhhrohhmpegumhhithhrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohep
vddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrd
grthdprhgtphhtthhopeektdeiiedvseguvggssghughhsrdhgnhhurdhorhhg
X-ME-Proxy: <xmx:oNnOaa7dsxuIUkgvqEj9dXYWTwz95ez_8B3HkS--Qtm0ha30bstq0g>
<xmx:oNnOac007o7t1ozTWYq01aPDt1uPq3JLF7MqtNekgANnQ19Wj7qJHg>
<xmx:oNnOabaUcO9LOZpD1g7y-2aG3NTMATW_qvvBVxs4abjMTvYVlunLDQ>
<xmx:oNnOaUCI59-3UEOWdwayIpo7X2IhMZ231Q63QzpnczNvhf_DZTG8Lg>
<xmx:oNnOaRKi-sHCfItWLvm3XDzrLa-3yN3lfTyFi0JQIdV_KqUiZMMulxzI>
Feedback-ID: i07de48aa:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu,
2 Apr 2026 17:03:27 -0400 (EDT)
Message-ID: <edd1ef0b-3bf2-4c9f-8334-daf217e046d1@HIDDEN>
Date: Fri, 3 Apr 2026 00:03:25 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN>
<73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN>
<abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN>
<d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN>
<a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN>
<a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN>
<d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN>
<0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN>
<9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN>
<2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN>
<47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN>
<f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN>
<34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN>
<26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN>
<b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN>
<806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN>
<206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN>
Content-Language: en-US
From: Dmitry Gutov <dmitry@HIDDEN>
In-Reply-To: <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80662
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 (-)
On 02/04/2026 11:28, martin rudalics wrote:
> > Simply drawing the borders at one place (at the end of redisplay)
> > doesn't seem to work: if we do skip the wait for events, that means
> > events like ConfigureNotify and Expose are going to arrive after, and
> > that can happen after redisplay finishes.
>
> WOW drawing the borders in the same place twice in a row does not harm
> and IIUC should do it as soon as possible. Let's skip the removal of
> these calls for the moment so they don't get into the way.
No problem. Their performance impact is minimal - as long as the
intermediate state does not hit the screen, we can leave them alone.
> > This was the reason I added x_set_window_size_and_position to
> > EmacsFrameResize in the last patch.
>
> You mean why you added x_clear_under_internal_border, right?
Yes, sorry. Wrong copy-paste.
> > Alternatively though, this call could just as well live in
> > EmacsFrameExpose (which is called to update the enlarged region of the
> > frame). Might be more semantically correct as well, since this event
> > could occur in different situations as well (e.g. something was
> > obscuring the frame and then moved).
>
> What is that xexpose.count check for here
>
> + if (event->xexpose.count == 0)
> + x_clear_under_internal_border (f);
Tiny performance optimization. To render the resized frame, two Expose
events are delivered to cover the mirrored L-shape form. But we only
need one re-render of the borders. xexpose.count == 0 ensures that it's
the last Expose event:
https://www.x.org/releases/X11R7.6/doc/man/man3/XExposeEvent.3.xhtml
Simple applications that do not want to optimize redisplay by
distinguishing between subareas of its window can just ignore all
Expose events with nonzero counts and perform full redisplays on
events with zero counts.
> > Anyway the issue with "briefly honoring the resize and then reverting"
> > is that some Lisp code running right after might register this as
> > success and save "last dimensions we resized to" to a variable, to
> > later treat any request to do that with same parameters as a no-op
> > (posframe does that too). So a delayed rejection of a resize from a
> > window manager via ConfigureNotify could still hurt.
>
> For any frame the last "last dimensions we resized to" should always be
> in the pixel_width and pixel_height slots. There's no other guarantee.
>
> > *If* that does indeed happen - I'm not sure what are the edge cases in
> > this area. The code in gtkutil.c mentions frame being "fullscreen",
> > "fullwidth" and "fullheight". Also some UI elements could be an
> > obstacle (like the top panel in GNOME).
>
> People on a tiling WM are certainly more exposed to it.
>
> > If we're okay with having a separate code path for child frames, these
> > are probably non-issues. Would be nice to not have the "ifs", though.
>
> Let's do it for child frames first.
>
> >> The problem is that here we would put the blame on redisplay for not
> >> drawing the contents correctly. Some twenty years ago this happened
> >> occasionally here and I simply had to maximize the frame temporarily to
> >> make the window manager and redisplay agree on the frame size. I
> >> haven't seen such behavior for years now.
> >
> > Do the examples from above sound relevant?
>
> I can't tell because I don't see them any more.
Okay, then we have to see if more feedback arrives later.
> > Apparently that only works for PGTK - and the only g_signal_connect
> > handler for "configure-event" is also set in pgtkterm.c.
>
> Can you try setting one up for GTK?
That seems like a deeper rabbit hole than the one I'm currently in -
there is a fair amount of code. Some dnd_in_progress handling, scroll
bars, xdbe flip, x_drop_xrender_surfaces... something about xinput and
i18n? With bits of code shared between the ports. Not sure if event
coalescing will still be needed, or if GTK would do its part on that.
Would be nice to simplify that forest of ifdefs.
You might be curious to hear that the commit that added x_wait_for_event
was by Jan in 2009 (5c646d5a31903acabeb267a69f), titled:
Fix resize due to font change on a maximized/xmonad-controlled frame.
> > With GTK3 my added logs consistently say:
> >
> > set_size_and_position before gdk_flush()
> > set_size_and_position after gdk_flush()
> > inside ConfigureNotify
> > inside ConfigureNotify
> >
> > so apparently with non-PGTK we need both gdk_flush and x_wait_for_event.
>
> And we need the gdk_flush to make the x_wait_for_event succeed?
I'm not seeing an immediate negative effect from commenting out
gtk_events_pending() and and gdk_flush(), but maybe it's important for
some other events set up in gtkutil.c, not occurring in my scenario.
> > Note that the patch under discussion skips both of these calls in
> > xg_frame_set_size_and_position, at least for child frames.
>
> I think we should skip only the x_wait_for_event in a first step. I
> never tried to understand the inner workings of this: Would you say that
> GTK even informs the window manager about child frame management? What
> would the latter do about it anyway?
We do seem to call x_net_wm_state for any frame during resize. Could
skip that for child frames, I don't see any difference from adding such
an 'if' around it.
> > I've tried several variants of this, and the Lucid build always
> > exhibits the two-step update (first the frame is refreshed at the new
> > position with the old dimensions - if they are smaller - and then with
> > full size).
>
> Are we getting two events for that, a MotionNotify event first and then
> the ConfigureNotify event?
I'm not seeing MotionNotify arrive in this scenario.
IIUC the issue with Lucid and GTK ports is that they have multiple
nested X11 windows. Set up by Xt in one case and by Gtk in another. So
we get several (at least two) ConfigureNotify events, and then two
Expose events if the frame's size grew, like this:
adjust_frame_size(1, size-and-position): NS=348x208->508x458 PS=348x208
adjust_frame_size(5, xg_frame_set_char_size): NS=348x208->508x458
PS=348x208 [apply]
ClearUnderBorder(redisplay_internal): 508x458
ConfigureNotify: x=350 y=100 w=508 h=458 window=12004ff
ConfigureNotify: x=0 y=0 w=508 h=458 window=1200503
Expose: x=348 y=0 w=160 h=208 count=1
ClearUnderBorder(handle_one_xevent Expose): 508x458
Expose: x=0 y=208 w=508 h=250 count=0
ClearUnderBorder(handle_one_xevent Expose): 508x458
The inner window's resize follows the outer window's resize
asynchronously, that might explain the delay.
> > PGTK somehow feels different, with size-and-position, for example,
> > looking almost atomic. When captured on video, I can still catch where
> > it does the two-part update, but the way the frame is redrawn feels
> > smoother. We should probably study that for a later improvement.
>
> If it already handles the flushing differently?
Yes, IIUC it does flushing via the Wayland protocol. But if it behaves
okay through XWayland as well, then at least the same behavior could be
reachable for our other ports too.
> > Attaching the latest revision, which:
> >
> > * Skips wait for events in x_set_window_size_1,
> x_set_window_size_and_position_1 and xg_frame_set_size_and_position.
> > * Exit early in EmacsFrameResize if the new size matches the current
> one (trivial perf optimization, not important).
> > * EmacsFrameExpose: call x_clear_under_internal_border, but only in
> the last such event in a batch (the last is a tiny perf optimization,
> unimportant).
>
> I'd skip the rest in a first stab. We have enough people here using
> child frames (most of them on GTK admittedly) so we should wait for
> their feedback first.
Sure.
> > * Comments out with intention to delete the calls to
> x_clear_under_internal_border in x_set_window_size_and_position,
> x_set_window_size and clear_garbaged_frames. Seems fine for both kinds
> of frames, but could use further testing.
> >
> > Not included:
> >
> > * Deletion of update_various_frame_slots. I can see it was hollowed
> > out in d4fe840df0b5fdb3a, and the remainder doesn't seem to be doing
> > anything useful.
>
> That last one was kind of lackluster anyway.
The proposal or the function?
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 2 Apr 2026 08:28:41 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Thu Apr 02 04:28:41 2026 Received: from localhost ([127.0.0.1]:41323 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w8DPr-0006Jv-0v for submit <at> debbugs.gnu.org; Thu, 02 Apr 2026 04:28:41 -0400 Received: from mout.gmx.net ([212.227.17.21]:55063) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w8DPm-0006IR-9h for 80662 <at> debbugs.gnu.org; Thu, 02 Apr 2026 04:28:36 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1775118505; x=1775723305; i=rudalics@HIDDEN; bh=+FIV55ZWQqhqwsCPBrxNJoyM4U3ZgHLCJp8Ny6jLQZE=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To: 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=UI2SOfpZexrPIRESZtroQK3fS4vsBbueO4NTtoUxsk/d034oDQ2nK8CUlSggjzgK K+IV1nLqLUZfDtemv6KS9lGEqLgXvBPKnAw7SKctSyZy0hWqeU4UbDHtKE0xTRH9I BwfFuAI1HscIDTgyULAKykuViw63wvq73cJY5JZYmndLBSr/uNtQGCPHE3CW67QmI pGj2T/2rhlno60/kkRUkRb0/hb81ZUkg7uc2OZDxVKt1GSDCoda9kxU9DIOKQp4s+ 34vyStRTLrbLFmauAMeDtPDD7Yd8Jpxtji4z64WuUKao66z8Xi/bzU/DffGVj/yzw paH2YVSF8hj/xj0S9A== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MWAOQ-1w16wt04tO-00U2Gj; Thu, 02 Apr 2026 10:28:25 +0200 Message-ID: <206b05d6-a48c-40b0-aa14-278a9084ba86@HIDDEN> Date: Thu, 2 Apr 2026 10:28:23 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:/Ug/eAA1bmfsQn3mlAkmZZbQaoDtIX7ikHPYYZ6TMpUN/Xdd19L Halz8zcaV8TitnwFOh2+YBjP5pgxpIPQysVyo686B1XHhbB8VBS0cXNmxJuPU56KYiTg5OX OnS6EkSnfgHAtJVGaG2EDi5TW7NOUi+srwlhhRT61BD8hrVl5z8SsNc63eRcpNrm5nkiSiA pB9p+d05Urf3Yn+MMnhNA== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:+GPklTvtEqE=;pF3U3nK0Gp7UNR38Nnqvmk0RoFL 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 WGkZSHfRcBQrO6GNWDpxrFMNjQuVtlenw== X-Spam-Score: 1.3 (+) 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: > Simply drawing the borders at one place (at the end of redisplay) > doesn't seem to work: if we do skip the wait for events, that means > events like ConfigureNotify and Expose are going to arrive [...] Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.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.21 listed in bl.score.senderscore.com] 1.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.21 listed in sa-trusted.bondedsender.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.21 listed in wl.mailspike.net] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [212.227.17.21 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 X-Debbugs-Envelope-To: 80662 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.3 (/) > Simply drawing the borders at one place (at the end of redisplay) > doesn't seem to work: if we do skip the wait for events, that means > events like ConfigureNotify and Expose are going to arrive after, and > that can happen after redisplay finishes. WOW drawing the borders in the same place twice in a row does not harm and IIUC should do it as soon as possible. Let's skip the removal of these calls for the moment so they don't get into the way. > This was the reason I added x_set_window_size_and_position to > EmacsFrameResize in the last patch. You mean why you added x_clear_under_internal_border, right? > Alternatively though, this call could just as well live in > EmacsFrameExpose (which is called to update the enlarged region of the > frame). Might be more semantically correct as well, since this event > could occur in different situations as well (e.g. something was > obscuring the frame and then moved). What is that xexpose.count check for here + if (event->xexpose.count == 0) + x_clear_under_internal_border (f); > Anyway the issue with "briefly honoring the resize and then reverting" > is that some Lisp code running right after might register this as > success and save "last dimensions we resized to" to a variable, to > later treat any request to do that with same parameters as a no-op > (posframe does that too). So a delayed rejection of a resize from a > window manager via ConfigureNotify could still hurt. For any frame the last "last dimensions we resized to" should always be in the pixel_width and pixel_height slots. There's no other guarantee. > *If* that does indeed happen - I'm not sure what are the edge cases in > this area. The code in gtkutil.c mentions frame being "fullscreen", > "fullwidth" and "fullheight". Also some UI elements could be an > obstacle (like the top panel in GNOME). People on a tiling WM are certainly more exposed to it. > If we're okay with having a separate code path for child frames, these > are probably non-issues. Would be nice to not have the "ifs", though. Let's do it for child frames first. >> The problem is that here we would put the blame on redisplay for not >> drawing the contents correctly. Some twenty years ago this happened >> occasionally here and I simply had to maximize the frame temporarily to >> make the window manager and redisplay agree on the frame size. I >> haven't seen such behavior for years now. > > Do the examples from above sound relevant? I can't tell because I don't see them any more. > Apparently that only works for PGTK - and the only g_signal_connect > handler for "configure-event" is also set in pgtkterm.c. Can you try setting one up for GTK? > With GTK3 my added logs consistently say: > > set_size_and_position before gdk_flush() > set_size_and_position after gdk_flush() > inside ConfigureNotify > inside ConfigureNotify > > so apparently with non-PGTK we need both gdk_flush and x_wait_for_event. And we need the gdk_flush to make the x_wait_for_event succeed? > Note that the patch under discussion skips both of these calls in > xg_frame_set_size_and_position, at least for child frames. I think we should skip only the x_wait_for_event in a first step. I never tried to understand the inner workings of this: Would you say that GTK even informs the window manager about child frame management? What would the latter do about it anyway? > I've tried several variants of this, and the Lucid build always > exhibits the two-step update (first the frame is refreshed at the new > position with the old dimensions - if they are smaller - and then with > full size). Are we getting two events for that, a MotionNotify event first and then the ConfigureNotify event? > PGTK somehow feels different, with size-and-position, for example, > looking almost atomic. When captured on video, I can still catch where > it does the two-part update, but the way the frame is redrawn feels > smoother. We should probably study that for a later improvement. If it already handles the flushing differently? > Attaching the latest revision, which: > > * Skips wait for events in x_set_window_size_1, x_set_window_size_and_position_1 and xg_frame_set_size_and_position. > * Exit early in EmacsFrameResize if the new size matches the current one (trivial perf optimization, not important). > * EmacsFrameExpose: call x_clear_under_internal_border, but only in the last such event in a batch (the last is a tiny perf optimization, unimportant). I'd skip the rest in a first stab. We have enough people here using child frames (most of them on GTK admittedly) so we should wait for their feedback first. > * Comments out with intention to delete the calls to x_clear_under_internal_border in x_set_window_size_and_position, x_set_window_size and clear_garbaged_frames. Seems fine for both kinds of frames, but could use further testing. > > Not included: > > * Deletion of update_various_frame_slots. I can see it was hollowed > out in d4fe840df0b5fdb3a, and the remainder doesn't seem to be doing > anything useful. That last one was kind of lackluster anyway. martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 2 Apr 2026 03:52:49 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 01 23:52:49 2026 Received: from localhost ([127.0.0.1]:37545 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w896u-0008DQ-M6 for submit <at> debbugs.gnu.org; Wed, 01 Apr 2026 23:52:49 -0400 Received: from fhigh-a5-smtp.messagingengine.com ([103.168.172.156]:50039) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w896s-0008D5-5i for 80662 <at> debbugs.gnu.org; Wed, 01 Apr 2026 23:52:47 -0400 Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfhigh.phl.internal (Postfix) with ESMTP id A67FF1400051; Wed, 1 Apr 2026 23:52:40 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-06.internal (MEProxy); Wed, 01 Apr 2026 23:52:40 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1775101960; x=1775188360; bh=H7R7fhVs1A /TGThTWLQF3AQYmqrnB9fYF5KjH3LUSuA=; b=YfnwohiksCHSSwTdwPvS16anDT GbjJukqzx5iYHYIAPe7SIuCODTchJ7+boWgyWqL0g+lO6HBpO49vt8W/9ya8SfAj +jjsja3i4JHNvbmzef/89+kKipbKBgmcUw41ioOdVcdnfASKtENsyyrTJ8d6mn7N 2V+zy5jf+xyvZ41byHVtKfCKWoasiCIorBRFKxhK6Nhs3WnLRret4l5EJaA4HFlt BHRjbzfK9o1ISjzkIfWas9e91OhAD5hrrVV8T4g1R6P6P0Nn7dE6OErW7ZxGGBwU W0wy1XLReHruifgXBRnf6ZMK4su3jikq8TwLOfNUr3+R6NR1eVEyTOVGoRMQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t= 1775101960; x=1775188360; bh=H7R7fhVs1A/TGThTWLQF3AQYmqrnB9fYF5K jH3LUSuA=; b=ZBOr/MJGf7ivE0jXL5OQohbP1AEeIrjkN5H7fem6M/2ixNlp+LS M9jJ0wfbtHCxEgq84iE+wlH3WsN+9fc4AE6UFsp3HPcjX0Mqm0OtHdbcp4UMc9yR 8WeYeg3VUhrsVKz9swb6GvA+WZkEpFqpMmoDfEuN96UZNEX1pthZ0BG0g6AL6zd6 395XyVeQKq2U7F6FcHap5eNWhLscFEx5+rNy5W24GdKN+B0lIsroQDfi7KIGZy3N UZMLxqj5Y2RguhI4n+jtnrNb3138lFiKsrGdrdamFXO430tRjnTnltCvuyGl2BZU d9MZvedEGOvLVz4r+a24IITBlXE1wkDlrVg== X-ME-Sender: <xms:COjNaexsLncbx0hcPolRpd0cVST9p8e0wLXJ4FRrnsnZDNqz2fT_hA> <xme:COjNaQQIxF5BCDn_8mhqNloqGEXNWXsNbTPrXn6anLQdz84XSv_vrjgomrY3g5R3A gQKO4eftjx9PGxCyQLfv0W4UOHSNJcX5ZoR-9AXYnNkI7mc3P1imKU> X-ME-Received: <xmr:COjNad_3o4h8eBBvpUplUJStZ5lUU_yHQMuK_2gHPUHcivk9xFi3AsZevY3IqG3uCGwDbg> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdegleekucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh eptgfkffggfgfhuffvfhgjsehmtderredtvdejnecuhfhrohhmpeffmhhithhrhicuifhu thhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrthhtvghrnhepgf ekuefggeekudeugffgieehkeetleejgeegueeifeehueelleeljeeljeegheeinecuvehl uhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepughmihhtrhihse hguhhtohhvrdguvghvpdhnsggprhgtphhtthhopedvpdhmohguvgepshhmthhpohhuthdp rhgtphhtthhopehruhgurghlihgtshesghhmgidrrghtpdhrtghpthhtohepkedtieeivd esuggvsggsuhhgshdrghhnuhdrohhrgh X-ME-Proxy: <xmx:COjNafos8YmcmjgOXN7Yb4Z7x3s5XYIaw1j6T0LMgPTsdhukgNANtw> <xmx:COjNaSlAV5YXA0MBvjG-sIttF2BPOCq53ZwX2FCFMaUyweMkIC3Hiw> <xmx:COjNaeISL7hWWMIQwY_gfRxKshmcpzSVmokAtoCBWUPB_VIL_9rfiQ> <xmx:COjNafzI7va7VPq2wsSLVTKmgivBt9biAhPEX9w8BU6esYWtzJS5jQ> <xmx:COjNaQ69l-V_ihgXgKxZHZCdBF9xIyZN5KaUumm2-4Cbv3ud_0_L73r-> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 1 Apr 2026 23:52:39 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------3gS5335ECeCo4y48GHWbjzCG" Message-ID: <806b4b37-d96a-4453-a979-73242578fa3c@HIDDEN> Date: Thu, 2 Apr 2026 06:52:37 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Dmitry Gutov <dmitry@HIDDEN> Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> Content-Language: en-US In-Reply-To: <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> X-Spam-Score: 1.3 (+) 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: On 01/04/2026 11:49, martin rudalics wrote: > > Does this help? > > I don't know but this part > > > size-and-position (1), TS=340x200~>500x450, TC=42x11~>62x26, > NS=348x208~>508x458, IS=340x200~>500 [...] Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.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. [103.168.172.156 listed in sa-trusted.bondedsender.org] 1.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. [103.168.172.156 listed in bl.score.senderscore.com] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [103.168.172.156 listed in list.dnswl.org] X-Debbugs-Envelope-To: 80662 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.3 (/) This is a multi-part message in MIME format. --------------3gS5335ECeCo4y48GHWbjzCG Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 01/04/2026 11:49, martin rudalics wrote: > > Does this help? > > I don't know but this part > > > size-and-position (1), TS=340x200~>500x450, TC=42x11~>62x26, > NS=348x208~>508x458, IS=340x200~>500x450, MS=8x17 > > x_set_window_size_1 (5), TS=340x200~>500x450, TC=42x11~>62x26, > NS=348x208~>508x458, IS=340x200~>500x450, MS=8x17 IH IV > > ClearUnderBorder, PS=508x458, XS=0x0, DS=0x0 > > ClearUnderBorder, PS=508x458, XS=0x0, DS=0x0 > > ClearUnderBorder, PS=508x458, XS=0x0, DS=0x0 > > EmacsFrameResize, PS=508x458, XS=508x458, DS=508x458 > > change_frame_size (5), MS=8x17 IH IV > > EmacsFrameResize, PS=508x458, XS=508x458 > > change_frame_size_1, delayed, PS=508x458, XS=508x458 > > change_frame_size (5), MS=8x17 IH IV > > looks fishy: We first draw the border with the new sizes 500x458 (three > times in a row is decidedly too often) but delay the size change for > redisplay. Since the border is drawn independently from redisplay, it > seems the new border is in place before we show the buffer contents and > the background. So maybe we should make sure that the new border gets > only drawn when redisplay finishes. Maybe we can skip some of those - like the ones in x_set_window_size and x_set_window_size_and_position. And in clear_garbaged_frames - redisplay should redraw the borders in such case already. They are relatively cheap, though. Simply drawing the borders at one place (at the end of redisplay) doesn't seem to work: if we do skip the wait for events, that means events like ConfigureNotify and Expose are going to arrive after, and that can happen after redisplay finishes. This was the reason I added x_set_window_size_and_position to EmacsFrameResize in the last patch. Alternatively though, this call could just as well live in EmacsFrameExpose (which is called to update the enlarged region of the frame). Might be more semantically correct as well, since this event could occur in different situations as well (e.g. something was obscuring the frame and then moved). > >> In the first case any Lisp code relying on the incorrect assumption > that > >> the frame will get resized is wrong but this would be corrected as soon > >> as the ConfigureNotify arrives. > > > > But the Lisp code might have already run by that point. And either > > failed or created an inconsistent state of its own. Anyway, this is > > not my fight, and the way to supporting those uses seems clear by now. > > The state would have been consistent at the time the resize request is > issued. For example, a package might fit a frame to its buffer and if > the window manager does not honor the resize request, the buffer simply > does not fit. Packages like corfu do that all the time. In practice, > their request is always honored. Actually I think corfu doesn't (call fit-frame-to-buffer) but posframe does. It's the one I'm using lately anyway. Anyway the issue with "briefly honoring the resize and then reverting" is that some Lisp code running right after might register this as success and save "last dimensions we resized to" to a variable, to later treat any request to do that with same parameters as a no-op (posframe does that too). So a delayed rejection of a resize from a window manager via ConfigureNotify could still hurt. *If* that does indeed happen - I'm not sure what are the edge cases in this area. The code in gtkutil.c mentions frame being "fullscreen", "fullwidth" and "fullheight". Also some UI elements could be an obstacle (like the top panel in GNOME). If we're okay with having a separate code path for child frames, these are probably non-issues. Would be nice to not have the "ifs", though. > >> In the second case there is no > >> ConfigureEvent and the user would see wrong contents in the frame - > >> either to large to fit or too small leaving empty space or garbage > >> around the drawn contents. > > > > The scope is larger with this one, that's for sure. > > The problem is that here we would put the blame on redisplay for not > drawing the contents correctly. Some twenty years ago this happened > occasionally here and I simply had to maximize the frame temporarily to > make the window manager and redisplay agree on the frame size. I > haven't seen such behavior for years now. Do the examples from above sound relevant? > >> > IIUC the gtk_events_pending and gdk_flush calls do that. > >> > >> Only with pgtk? Hardly. > > > > I'm pretty sure that's what happens. PGTK receiving and processing the > > events within the GTK framework. > > The doc-string of gdk_flush says indeed > > * Flushes the output buffers of all display connections and waits > * until all requests have been processed. > * This is rarely needed by applications. > > It would be easy to set up a simple flag before the gdk_flush call and > reset it when processing a ConfigureEvent event. If you, at the > location where we x_wait_for_event, see the flag still set, we have a > case where the resize request has not been processed. You would have to > run that experiment in a tight loop for a few minutes. If that check > does not fail in this time, we could assume that gdk_flush really > succeeded in doing the waiting in a more efficient way and we can drop > that extra call. Apparently that only works for PGTK - and the only g_signal_connect handler for "configure-event" is also set in pgtkterm.c. With GTK3 my added logs consistently say: set_size_and_position before gdk_flush() set_size_and_position after gdk_flush() inside ConfigureNotify inside ConfigureNotify so apparently with non-PGTK we need both gdk_flush and x_wait_for_event. Note that the patch under discussion skips both of these calls in xg_frame_set_size_and_position, at least for child frames. > With non-gtk builds we could XSync instead but this is considered "slow" > over a network connection. Probably just as slow as gdk_flush which to > me looks like the GTK equivalent of XSync anyway. Try it. I've tried several variants of this, and the Lucid build always exhibits the two-step update (first the frame is refreshed at the new position with the old dimensions - if they are smaller - and then with full size). PGTK somehow feels different, with size-and-position, for example, looking almost atomic. When captured on video, I can still catch where it does the two-part update, but the way the frame is redrawn feels smoother. We should probably study that for a later improvement. Attaching the latest revision, which: * Skips wait for events in x_set_window_size_1, x_set_window_size_and_position_1 and xg_frame_set_size_and_position. * Exit early in EmacsFrameResize if the new size matches the current one (trivial perf optimization, not important). * EmacsFrameExpose: call x_clear_under_internal_border, but only in the last such event in a batch (the last is a tiny perf optimization, unimportant). * Comments out with intention to delete the calls to x_clear_under_internal_border in x_set_window_size_and_position, x_set_window_size and clear_garbaged_frames. Seems fine for both kinds of frames, but could use further testing. Not included: * Deletion of update_various_frame_slots. I can see it was hollowed out in d4fe840df0b5fdb3a, and the remainder doesn't seem to be doing anything useful. --------------3gS5335ECeCo4y48GHWbjzCG Content-Type: text/x-patch; charset=UTF-8; name="set_window_size_and_position_skip_wait_for_event_v4.diff" Content-Disposition: attachment; filename="set_window_size_and_position_skip_wait_for_event_v4.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9ndGt1dGlsLmMgYi9zcmMvZ3RrdXRpbC5jCmluZGV4IGIwMWJi NjgwNGVkLi43NjczNDU2NzQ1MCAxMDA2NDQKLS0tIGEvc3JjL2d0a3V0aWwuYworKysgYi9z cmMvZ3RrdXRpbC5jCkBAIC0xNDMyLDYgKzE0MzQsNiBAQCB4Z19mcmFtZV9zZXRfc2l6ZV9h bmRfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQog ICBTRVRfRlJBTUVfR0FSQkFHRUQgKGYpOwogICBjYW5jZWxfbW91c2VfZmFjZSAoZik7CiAK LSAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAoZikpCisgIGlmIChGUkFNRV9WSVNJQkxFX1AgKGYp ICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKGYpKQogICAgIHsKICAgICAgIC8qIE11c3QgY2Fs bCB0aGlzIHRvIGZsdXNoIG91dCBldmVudHMgKi8KZGlmZiAtLWdpdCBhL3NyYy93aWRnZXQu YyBiL3NyYy93aWRnZXQuYwppbmRleCBlNzY3YjAwNmUzZi4uMzRkY2Q5NTY3ZTggMTAwNjQ0 Ci0tLSBhL3NyYy93aWRnZXQuYworKysgYi9zcmMvd2lkZ2V0LmMKQEAgLTQyOCw2ICs0MzIs MTAgQEAgRW1hY3NGcmFtZVJlc2l6ZSAoV2lkZ2V0IHdpZGdldCkKICAgICAgICBldy0+Y29y ZS53aWR0aCwgZXctPmNvcmUuaGVpZ2h0LAogICAgICAgIGYtPm5ld193aWR0aCwgZi0+bmV3 X2hlaWdodCk7CiAKKyAgaWYgKEZSQU1FX1BJWEVMX1dJRFRIIChmKSA9PSBldy0+Y29yZS53 aWR0aAorICAgICAgJiYgRlJBTUVfUElYRUxfSEVJR0hUIChmKSA9PSBldy0+Y29yZS5oZWln aHQpCisgICAgcmV0dXJuOworCiAgIGNoYW5nZV9mcmFtZV9zaXplIChmLCBldy0+Y29yZS53 aWR0aCwgZXctPmNvcmUuaGVpZ2h0LAogCQkgICAgIGZhbHNlLCB0cnVlLCBmYWxzZSk7CiAK QEAgLTQ5NSw2ICs1MDMsOCBAQCBFbWFjc0ZyYW1lRXhwb3NlIChXaWRnZXQgd2lkZ2V0LCBY RXZlbnQgKmV2ZW50LCBSZWdpb24gcmVnaW9uKQogCiAgIGV4cG9zZV9mcmFtZSAoZiwgZXZl bnQtPnhleHBvc2UueCwgZXZlbnQtPnhleHBvc2UueSwKIAkJZXZlbnQtPnhleHBvc2Uud2lk dGgsIGV2ZW50LT54ZXhwb3NlLmhlaWdodCk7CisgIGlmIChldmVudC0+eGV4cG9zZS5jb3Vu dCA9PSAwKQorICAgIHhfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChmKTsKICAgZmx1 c2hfZnJhbWUgKGYpOwogfQogCmRpZmYgLS1naXQgYS9zcmMveGRpc3AuYyBiL3NyYy94ZGlz cC5jCmluZGV4IDRmMmM1YzM5OTAwLi5iNDJlMjk3NmJlYyAxMDA2NDQKLS0tIGEvc3JjL3hk aXNwLmMKKysrIGIvc3JjL3hkaXNwLmMKQEAgLTEzNjU4LDExICsxMzY1OCwxMSBAQCBjbGVh cl9nYXJiYWdlZF9mcmFtZXMgKHZvaWQpCiAJICAgICAgaWYgKGlzX3R0eV9mcmFtZSAoZikp CiAJCWN1cnJlbnRfbWF0cmljZXNfY2xlYXJlZCA9IHRydWU7CiAKLSNpZmRlZiBIQVZFX1dJ TkRPV19TWVNURU0KLSAgICAgICAgICAgICAgaWYgKEZSQU1FX1dJTkRPV19QIChmKQotICAg ICAgICAgICAgICAgICAgJiYgRlJBTUVfUklGIChmKS0+Y2xlYXJfdW5kZXJfaW50ZXJuYWxf Ym9yZGVyKQotICAgICAgICAgICAgICAgIEZSQU1FX1JJRiAoZiktPmNsZWFyX3VuZGVyX2lu dGVybmFsX2JvcmRlciAoZik7Ci0jZW5kaWYKKy8qICNpZmRlZiBIQVZFX1dJTkRPV19TWVNU RU0gKi8KKy8qICAgICAgICAgICAgICAgaWYgKEZSQU1FX1dJTkRPV19QIChmKSAqLworLyog ICAgICAgICAgICAgICAgICAgJiYgRlJBTUVfUklGIChmKS0+Y2xlYXJfdW5kZXJfaW50ZXJu YWxfYm9yZGVyKSAqLworLyogICAgICAgICAgICAgICAgIEZSQU1FX1JJRiAoZiktPmNsZWFy X3VuZGVyX2ludGVybmFsX2JvcmRlciAoZiwgImNsZWFyX2dhcmJhZ2VkX2ZyYW1lcyIpOyAq LworLyogI2VuZGlmICovCiAJICAgICAgZnNldF9yZWRpc3BsYXkgKGYpOwogCSAgICAgIGYt PmdhcmJhZ2VkID0gZmFsc2U7CiAJICAgICAgZi0+cmVzaXplZF9wID0gZmFsc2U7CmRpZmYg LS1naXQgYS9zcmMveHRlcm0uYyBiL3NyYy94dGVybS5jCmluZGV4IGQ3NDUxYjUzOGUzLi40 MmQ0YmY3YmRlZCAxMDA2NDQKLS0tIGEvc3JjL3h0ZXJtLmMKKysrIGIvc3JjL3h0ZXJtLmMK QEAgLTc3MjMsMyArNzcyMyw2IEBAIHhfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChz dHJ1Y3QgZnJhbWUgKmYpCiAJICBEaXNwbGF5ICpkaXNwbGF5ID0gRlJBTUVfWF9ESVNQTEFZ IChmKTsKIAkgIEdDIGdjID0gZi0+b3V0cHV0X2RhdGEueC0+bm9ybWFsX2djOwogCisJICBp ZiAoIWdjKQorCSAgICByZXR1cm47CisKQEAgLTI4NTA5LDcgKzI4NTE4LDcgQEAgeF9zZXRf d2luZG93X3NpemVfMSAoc3RydWN0IGZyYW1lICpmLCBib29sIGNoYW5nZV9ncmF2aXR5LAog ICAvKiBCdXQgdGhlIENvbmZpZ3VyZU5vdGlmeSBtYXkgaW4gZmFjdCBuZXZlciBhcnJpdmUs IGFuZCB0aGVuIHRoaXMgaXMKICAgICAgbm90IHJpZ2h0IGlmIHRoZSBmcmFtZSBpcyB2aXNp YmxlLiAgSW5zdGVhZCB3YWl0ICh3aXRoIHRpbWVvdXQpCiAgICAgIGZvciB0aGUgQ29uZmln dXJlTm90aWZ5LiAgKi8KLSAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAoZikpCisgIGlmIChGUkFN RV9WSVNJQkxFX1AgKGYpICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKGYpKQogICAgIHsKICAg ICAgIHhfd2FpdF9mb3JfZXZlbnQgKGYsIENvbmZpZ3VyZU5vdGlmeSk7CiAKQEAgLTI4NTU0 LDcgKzI4NTYzLDcgQEAgeF9zZXRfd2luZG93X3NpemUgKHN0cnVjdCBmcmFtZSAqZiwgYm9v bCBjaGFuZ2VfZ3Jhdml0eSwKICAgICB4X3NldF93aW5kb3dfc2l6ZV8xIChmLCBjaGFuZ2Vf Z3Jhdml0eSwgd2lkdGgsIGhlaWdodCk7CiAjZWxzZSAvKiBub3QgVVNFX0dUSyAqLwogICB4 X3NldF93aW5kb3dfc2l6ZV8xIChmLCBjaGFuZ2VfZ3Jhdml0eSwgd2lkdGgsIGhlaWdodCk7 Ci0gIHhfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChmKTsKKyAgLy8geF9jbGVhcl91 bmRlcl9pbnRlcm5hbF9ib3JkZXIgKGYpOwogI2VuZGlmIC8qIG5vdCBVU0VfR1RLICovCiAK ICAgLyogSWYgY3Vyc29yIHdhcyBvdXRzaWRlIHRoZSBuZXcgc2l6ZSwgbWFyayBpdCBhcyBv ZmYuICAqLwpAQCAtMjg1ODQsNiArMjg1OTMsNiBAQCB4X3NldF93aW5kb3dfc2l6ZV9hbmRf cG9zaXRpb25fMSAoc3RydWN0IGZyYW1lICpmLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAK ICAgU0VUX0ZSQU1FX0dBUkJBR0VEIChmKTsKIAotICBpZiAoRlJBTUVfVklTSUJMRV9QIChm KSkKKyAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAoZikgJiYgIUZSQU1FX1BBUkVOVF9GUkFNRSAo ZikpCiAgICAgeF93YWl0X2Zvcl9ldmVudCAoZiwgQ29uZmlndXJlTm90aWZ5KTsKICAgZWxz ZQpAQCAtMjg2MDgsNyArMjg2MTksNyBAQCB4X3NldF93aW5kb3dfc2l6ZV9hbmRfcG9zaXRp b24gKHN0cnVjdCBmcmFtZSAqZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogICB4X3NldF93 aW5kb3dfc2l6ZV9hbmRfcG9zaXRpb25fMSAoZiwgd2lkdGgsIGhlaWdodCk7CiAjZW5kaWYg LyogVVNFX0dUSyAqLwogCi0gIHhfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChmKTsK KyAgLy8geF9jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKGYpOwogCiAgIC8qIElmIGN1 cnNvciB3YXMgb3V0c2lkZSB0aGUgbmV3IHNpemUsIG1hcmsgaXQgYXMgb2ZmLiAgKi8KICAg bWFya193aW5kb3dfY3Vyc29yc19vZmYgKFhXSU5ET1cgKEZSQU1FX1JPT1RfV0lORE9XIChm KSkpOwo= --------------3gS5335ECeCo4y48GHWbjzCG--
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 1 Apr 2026 08:49:13 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 01 04:49:13 2026 Received: from localhost ([127.0.0.1]:52469 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w7rGC-0004Xh-9I for submit <at> debbugs.gnu.org; Wed, 01 Apr 2026 04:49:13 -0400 Received: from mout.gmx.net ([212.227.15.15]:39745) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w7rG8-0004X2-Hh for 80662 <at> debbugs.gnu.org; Wed, 01 Apr 2026 04:49:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1775033342; x=1775638142; i=rudalics@HIDDEN; bh=z+0NqR+KVSqeSJSChP2EwW1JOB9lX8WIBS+3tb/lZOI=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To: 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=fzFrDvkdWiAiHBAFX93LchvuwOp8a7TyKEZgECMOiVmiJ7dhkJQ6rcK6QlBLvrAg Gkay4WBke86hAKQeH0PgdarZkg6qmTK1tgDSjbX33A+Syj00bA3vWwbtASf0UQ7/A n5+glaKs4S935rv5wf6wd+RBhdCGiz2m1zQtiMAR5njqSrGiQw8hXFMZcZ2gTVOhQ 61Z0zfP/4rL1MYplpT4HaUE7GjX/ZmPMWNlBO/P5h8Dywavhit4BBu2cZNQFKgoiq sqUOAIi5IU0XnssWGB4Wtoytj9y9lO2gZ/g6KX2Tvmg9FdHNBxXEGXTCa45w9PA1M OVR1Z68c8nokENU5rA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1Mof5H-1vjntf0S1B-00nGSB; Wed, 01 Apr 2026 10:49:02 +0200 Message-ID: <b3da5f8a-bbac-4247-adee-40fb8af0dfff@HIDDEN> Date: Wed, 1 Apr 2026 10:49:00 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN> <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:H8YDA1agdO3FnXiDZ34uyNG+V4C0QQ0GzuFLF0259xeDkNm7ijY DmRVdLGda8mZOa61gjJhQKJM2XxXtXtnRUVxvE3DqMtz3lnPT/4ntbmegZTSadjhRyliE8X 7O/swvPS/IFamRKLw/oIw7Q6UZG5dnzC+XJFN5hBAod/mRYEg53na5CRQc7V4nbHQ5pCXTs 7tBaWfipflb2W1urj20EQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:nnAYdX/R/y0=;iVwLa+IvKt4QdkdtQ026tpsq8mg zEFvEL7qQl/pfEVficWcb6FV29RzuTRL5kovlaYdFcKJu8TTZCNn/aewJvPKB4awykJf3jN4A cropw2Gc3uxhGNNXr9H7owTvYo1gdyOmLYwG0wIBWOlKs88JH1vmwYvKizz6DCOrZQlI9uH7r GoeBOh+nrIhnC+iTqYe1yXf6eakhBj6ogQ3/wNclbVw2OospJWEjpRVCKBEijY/uyrykyXkRA KoOjUkoY4KffyOoMho8BsSvzoZ8LlULFAcgWgVVi4BfK/c307eLhrD21/UpreTdkZ9OW1dL8U kEt2HNQWjfVgcr9pd/xZCt0PBhVzkyHSst200fCU9WdEND3zZDwD4sIIK1efyEQx3IbtvIZZE rLMcZTIEQevyhUyHWozClyW2AqGBLydm5h8ecrt3gB0++D8plDe+5PW7vUKdYcS2P7E3C8pY6 t2ReqF4xewvJ7f+/05FNlQIBewB7wwT2+CaCS7zx2RR8qiJBAQUyaQd0cOysFDqvnzt2fDOgQ 3MOxqajxNT5YbhvOLmE2Roib2lHzaZ1mjcqG4tXnHxs1rAVEo13WTbY/h7m8THji3OZF2LlTc l1bBu4X9Z05+aFj4byU8UzdJ5GnpXi6jrqHHVsTuBLn7PPgTfZn0keTX8M79hiGq7XpSiJ5Ja rU4+gY6KqFwgxCxIvKIMPptWViKpxCae5GpQ7LeyvP1pvCcQD+fQlMt9zpWytK1lsxs/WY8Ws UVhnDKRMpy1TJ7cklZ+W6+77c4GeNKXxgrV6xD1hSmBi4KEZaLFQmWGzlCxu4mxpTGrOH1Zfr YiExdtFsK4a1Ni3OfV1DaYsGF4lZsltpeaKBdnAdw7OyVvvp9rleEFLxzaCJ1GWnciZ34kxP9 FASDCo1v83ll37fAN1A4SrdZzST9Bxpn78d7WRloioJGwbLr122rtbdIzH+1XKTB5XYyEYT+l eUOuqZX6yUeR0igOyeUcpCcvEioWh75EbS/kCPidr1Vh+Xn0e9lfMYVl+wAUax5/rWr51mlQx r1zAU/VhzGVEqy0SqM3rwK6lOBVE/H3cLMXDQBIk3uQH/iHck43X350+k5icJxy2xuZQkU7Js 9qYL5QXj75g98NRG7/XZ6ZvlWMbOGkUffnBlxhseu+Oo1B932lkIpB2WOQF7a1Y32E0LP4RyQ K5d+eZtFK+ZiN1yaqdEUtwXAsPj2kQFNIOFEUxX/PH2tzTixUHsfSFE0i5w0o3g8icoqpUVwa rPWdktwz89EUX+H1Z1grkbAUAx98qy1f3SofgZNUGcWN/K2fdrUCqlTWXvExvpAvUERN8P0Zl MEkGgAQEWduv+3VM99QLXw9z6Jgi6ilvdGhHpnGz8BYYOyZ531i1t2+BpZDfjCSQi8PXn+RQM vXgq+pepagmaMOSJvHiW0rA8nWnVMpzQ8vMrfb4zRui0mHgAkxCy1Z+jiF/MJ27Vhzzu2NgjC PMGYKeLeRitoj+uXVrI2d4LBTnNN0KYB6AjionSB2yBvoM2+70FY9D/pBKS23I7aETIlR5WUC ZiL9J7+3cah6SXiobIOml0YE3hest+fcy2fF3tcOAzQXTHKb+3y11a+Wp3FMkn3IIp8VjAxFX PfmUzlV/cQ/QeZTrEjyeNwlBoAowVRXhN4wYZOd+wgZLjFmv8F3lT6rT4cl9hFomkniXFaKX5 yqiQFV/YeZbXQ5zO1WmVWQpyzsT7d+xC2W1QpZVZHRYsfpoEa9V9fO4Q27EYM/olPdWCJKKXA Ttk0nDcsxYIc4dPREvyVWKDr48UOXFAaX1NV7dnbZzlsDPKc7uGzR1JIv4xD3pXQGJ49zYGuA /S3B+mS25ldOnQpMMzpMMfDsbge6wtnx1O7zdy2Bxu4eExqeaFXCjWS3rVfp5sGXB+clnnIxS /Ov2a9ePi01EMlrkVdf39WT1IZFb0XhYQjAWu0dZcaKTU/dP/+8rGCi58nDJRkcddmp9bUEVF Cip20twjFlgvQhQNiraakK9slx/KWIMIMDxXwa1BW83jld7OIwxRkKQKEGp5YIhQiLHyx4HrK O6gpwOl9HLNtVIA3hARuiljt2N+H+M9bbxe5sO+SY4GjqcvqeheXjHcFIx2I9I1esCyc07J7g v5Ptt0OS822zeEkzATnGff2eF8+/4ccG7IDEC6oPwMsv0HK6BjU8HYF3TaLbMZ3nJalT8miR/ enVlSkCNqz5NGxZZ2Oe/F41nddb9/eNelvqm0FsD4VPCYbIg5z7zQKgBQM4+tSSTca49FNsKH lZcn6n6Xk1tAQGp5b0zQ2wHDqALjIwZ6/VQig+wTRUEHqsWR++M+KkHUQtYcNgfuAZFt1vCL8 VfzYxfw01s1PNtWvxjk9OkF/t3SX0NeonyqznKYwXbLDobdjF85PQa0h6Se5zJNltoRAUtQUh f3Nv+9b4L1XU73j37gvozM9hU6F6y9hYzGNnzKdCdsxRs2L/TcQn/xbtvIA/+wa6vc1npr8/Q S2vZDkp/MEsfsbnF/NdtePD19khEhcHe83J6vd0prI/b0wvEUXEfwliWv3yTw7AyCEnHGHrtL WMeo0GpPvqyqsfRQ2I9E9kojNc3hXpDeKfgN/kjGOPng1qXFn4OcCFrzhYk9wEzfuJWvaZjPV h+gI6o2jBok4wslBPppqm49CqXB3f1IfV5b18MmH9/Ps9rI9Zbhp0BW+geR1VQYZNSrY8DdFj MS0Zv+vhdCLnbaZed7NUqiJTfaZljGlY/rzNXfG513YHVeLGLLSBO1ccbcGEOprTZ+C1uKPKI D1mXVixSug16T7jssPkCJdZDWk/TjPDlq3CPlkummi906DNRWfhBlEdzFgLr5luGU8ZFZLERD 0ainMrXqLYoWFHjylFImMFYn3NJqRHK0rEWopB3Z/thyb884w/cVix8YKmZNpLiOTZW6Y+LKa IvfDiBPluf+wAdSf5Quk7DGNY+vClgppKTMIIxxvKgTEVwiSotX9DotLGtuNEnJ/exA6yshT3 NZHbGsP0dRo93QNP8TAhahg+iWicYhCHS0Jfz3Jwvlb3HKE8b4/su3fAqoGiZ6e6DgBgf43LG 8qBLyogz7ONgEHMRmkYYQ+MjQ3V8KCKbXtCnY584zZASjfiGmXwJWIANA/58IpsAvnDWYo/Cf k0FMttYL/K7gsIgzfvDhg8JjnF4IxYrCnBoVv5KTgxyMPUTnoUs0eLkCh2v5AF5+4nynGb8PO 7rtgLYAgsKw6yyoNNWpwQkQz7LaN7rmD2mDbgAzgjDJqDiyErLuL76yR+YhdsW4uxnMHY4wm7 vJBznWvlRcTBH9XBqz7CZ1sYt2yHP0gtzhsq9RBk9CkfJH8GorDseSnatMZuFrPhKmL4eVGyF FndEQ+j3C6m3v1WKB6hCWz1lpVep2qYjY/Zdi3iKClFhDVLBqEoaVLDIJ+cRyU5PfsOcy1XPL YIJvNaGcM5+objvnWhLixcdlaufRVXnJAOXeyykZQgqndR7q+vG2dfUS3zhII68NAcck6Pd0Q YdMcyGtqPEw8Mjaso3y3eWAxvP6xW5unKtIMqzQpX6U4R61sQPvE7YFPBi87gKS+V5vXz+lfa 3lwoS0wRctesWvU8hUxFGZhz4Xufa5C/sYYh4awCiPugY81drmZL5Lpu6EJpR8GOk0yJktKVp bOQ+lKVbm4QbYoJbHLgRU7WE8V+q9BVFEeClCire1Ch6uQmP0bsF5X49epQW+iAr7QmZmn//L IOCjhEF3mT7ptECUVpzFVIXzuq4cIFD94VUshJq6xh7xLuCyDml0Y568An/iMZaxVlMYXEs6s usLajamPucAhsNeRu4UDlh8IaRcibJQRS63JlXVuVWy8+4r8ehkDZDDABF7Y+qebNOT0Ikkei 0bOljuQTHID6Jivvv+aqjjW6pa5Sfyql1H1mhDfOAuVROJTlpwoLlTWjjk6xr+RXiOy9OrFZb wTeMXpCyur6bSbbOVAAWsBAGTEeZz9j9wfSH9CTDfELM3wmXRy/u9l877PRpR9tJilH93nKHJ 2BKVCfbpNzA4mN6JxX5SYI+WQwtVpSfwbjAgmd9n7Qg+spM58esoG9JrnXb7Uq7yXliNSo7hg lxBCsZydwvn4LLYEyZmfHNd1IrMot2MXot8SPVYE71RpFNfWgULypDHGGCeQ8S4fRzKf5hRue wbVebKq2axTeMIrjy02Oe0eUfauk27CCf4cMHgJZFLKotJY6SozSPNC8i2fiUkVomU49sdTrF c5mB3Bbcqc0nfO3jJf6zS901x9y7evf9xc4s8+YUMNXodtEZrPVBSMEdQRu0lREeumUa88IfX f+PTTznicx08f3AamGCEhcioGNci8l/g8Lxxp0z030Va4YmN4gEp8fHzOI84GkrLJJjlyuWMg irpduoLhi//SoiRhUrDqrZ3ytajs5VnZSPwf35YRLP/fDnIqLWY/JfaOVGj/PjIY5mE3RgTZd chQZLeb1hA1XrPDBsT4iBwFzawdfLHlGMu+iy2Nl8j95RYSv7i+5ziSChs2W//5u8A+qpqcBw 0rp0Z3yGgaHW9guEZjQB6Uts4ZPYoVesFQEIeCtAwHdq27aLSuKYhIaMnaUKpxFI7eSKLnQTD XBGHfMe0JCT2iyecMZb5mDrMMleAgnqLfWU+TZDSbTe8hQWRbFGeH8mPpqqg9ZxfecmEQaeEW jp9MpeZNRSHIlGz853BQSgBwQGKAbOwVKjCM/pct0Kw51nZWYrVljdpa8ToxpKeg9lE0SsBMB Iew/xV9DOAo1Dh6tR5ttHLow20NI6ZXshJ3iSBO+rdLhbfQXRsmVFxyYhnGl4gbsEOW2D+nWl P7lXSp6xVifIWLa926Vk+vvy1McScgVHpqd/A/QVsNW0CE/rBpxN3+V2L+ydmKaB4oOMpjH4z IxSDANvyJqJJaR7yjYxrTtwX/wkuMFKd0y2JABWL0Od/s8svNYVmhqi0ejWesnX0XS/6OWX8I A6GxRBTXGWFByJaxS1NSBI6+b3A4vf43zk4gJOD/mW4BGxFsAED5X5cph1H1cWEpP6GnZeexr L5cNyDvLiZpZ0djUH1dqVHyMV5fb0JtYqFF56BZOTaIIwwYU6yiRLGVjeCmjlQmrxzmp2lufP p9Zar67ImIkg+vWRkLKa7fSMfnD4dSSxkV8aUCeFSAH9/ahAXkkhRHaKx2/XTJ8QAi/x9EkBe wM1AHV+oxKj1W6ZhLt+0hoDi9yY0JvlwHjA7FIsilLqQUc4twKjnzfiI1KuHieEMWkaOHdUND oomIPlCtFAm7dmUUJTUBUN9XcW3YOrpn29m4ramVQzIM3HXAjajMDdaKW93bByrF69fBdtyn4 SWlf5EIO/wjzJ622V8m8GCQVIxFKUqf3bOFN3bS0C0EL5NwrieB6J/5lVoV7yS8fkMmwhSuV0 YO1qcMGH/LbFw1IMuQLlVcCrI0nPosnihZWtdOm/y7uJCcssL4Kr90= X-Spam-Score: 1.3 (+) 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: > Does this help? I don't know but this part > size-and-position (1), TS=340x200~>500x450, TC=42x11~>62x26, NS=348x208~>508x458, IS=340x200~>500x450, MS=8x17 > x_set_window_size_1 (5), TS=340x200~>500x450, TC=42x11~>62x26, NS=348x208~>508x458, [...] Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.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 RCVD_IN_MSPIKE_H4 RBL: Very Good reputation (+4) [212.227.15.15 listed in wl.mailspike.net] 1.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.15.15 listed in sa-accredit.habeas.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 X-Debbugs-Envelope-To: 80662 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.3 (/) > Does this help? I don't know but this part > size-and-position (1), TS=340x200~>500x450, TC=42x11~>62x26, NS=348x208~>508x458, IS=340x200~>500x450, MS=8x17 > x_set_window_size_1 (5), TS=340x200~>500x450, TC=42x11~>62x26, NS=348x208~>508x458, IS=340x200~>500x450, MS=8x17 IH IV > ClearUnderBorder, PS=508x458, XS=0x0, DS=0x0 > ClearUnderBorder, PS=508x458, XS=0x0, DS=0x0 > ClearUnderBorder, PS=508x458, XS=0x0, DS=0x0 > EmacsFrameResize, PS=508x458, XS=508x458, DS=508x458 > change_frame_size (5), MS=8x17 IH IV > EmacsFrameResize, PS=508x458, XS=508x458 > change_frame_size_1, delayed, PS=508x458, XS=508x458 > change_frame_size (5), MS=8x17 IH IV looks fishy: We first draw the border with the new sizes 500x458 (three times in a row is decidedly too often) but delay the size change for redisplay. Since the border is drawn independently from redisplay, it seems the new border is in place before we show the buffer contents and the background. So maybe we should make sure that the new border gets only drawn when redisplay finishes. >> In the first case any Lisp code relying on the incorrect assumption that >> the frame will get resized is wrong but this would be corrected as soon >> as the ConfigureNotify arrives. > > But the Lisp code might have already run by that point. And either > failed or created an inconsistent state of its own. Anyway, this is > not my fight, and the way to supporting those uses seems clear by now. The state would have been consistent at the time the resize request is issued. For example, a package might fit a frame to its buffer and if the window manager does not honor the resize request, the buffer simply does not fit. Packages like corfu do that all the time. In practice, their request is always honored. >> In the second case there is no >> ConfigureEvent and the user would see wrong contents in the frame - >> either to large to fit or too small leaving empty space or garbage >> around the drawn contents. > > The scope is larger with this one, that's for sure. The problem is that here we would put the blame on redisplay for not drawing the contents correctly. Some twenty years ago this happened occasionally here and I simply had to maximize the frame temporarily to make the window manager and redisplay agree on the frame size. I haven't seen such behavior for years now. >> > IIUC the gtk_events_pending and gdk_flush calls do that. >> >> Only with pgtk? Hardly. > > I'm pretty sure that's what happens. PGTK receiving and processing the > events within the GTK framework. The doc-string of gdk_flush says indeed * Flushes the output buffers of all display connections and waits * until all requests have been processed. * This is rarely needed by applications. It would be easy to set up a simple flag before the gdk_flush call and reset it when processing a ConfigureEvent event. If you, at the location where we x_wait_for_event, see the flag still set, we have a case where the resize request has not been processed. You would have to run that experiment in a tight loop for a few minutes. If that check does not fail in this time, we could assume that gdk_flush really succeeded in doing the waiting in a more efficient way and we can drop that extra call. With non-gtk builds we could XSync instead but this is considered "slow" over a network connection. Probably just as slow as gdk_flush which to me looks like the GTK equivalent of XSync anyway. Try it. martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 1 Apr 2026 02:27:35 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Mar 31 22:27:35 2026
Received: from localhost ([127.0.0.1]:47371 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1w7lIt-0006Cq-2O
for submit <at> debbugs.gnu.org; Tue, 31 Mar 2026 22:27:35 -0400
Received: from flow-b6-smtp.messagingengine.com ([202.12.124.141]:45275)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w7lIp-0006CO-GG
for 80662 <at> debbugs.gnu.org; Tue, 31 Mar 2026 22:27:32 -0400
Received: from phl-compute-07.internal (phl-compute-07.internal [10.202.2.47])
by mailflow.stl.internal (Postfix) with ESMTP id E277313000A3;
Tue, 31 Mar 2026 22:27:25 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
by phl-compute-07.internal (MEProxy); Tue, 31 Mar 2026 22:27:26 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc
:content-transfer-encoding:content-type:content-type:date:date
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm3; t=1775010445;
x=1775017645; bh=OMjWRwst4RetICbPWPnegwnuoRJMDTYPVMmgv47a8ZY=; b=
ZVNq4r6l79NUIGUp1hYhrAZvph2Qcd6VgwdfZk9lXYlZHqVAFipjvnEMjjJuVVDu
AwK3Z/rIS9iuZZnclyFYLJB6qKi/oWzPU9Pf09GKBaW51Aj4AbrPxqhadnL81jbA
JepPB47SQhqRK/93xkIb/0Ki1hZa6wqFnqqNT8SKccxjePGvRJQe9rDeiodNPU3X
IzpOHIuKrDjbwVt8cB8USYS3OPq90FyKw6OPIvGbrzPaQcPPkGD32yvPFG77WgXo
/w9sbCuyy+yC4S7xZx8itz6CpNmjLUCsvdlN/fNzTe3rTmyodKi5HSUE9r0ouLkM
8Pit+etXOkP6lVhzY+Nenw==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:content-transfer-encoding:content-type
:content-type:date:date:feedback-id:feedback-id:from:from
:in-reply-to:in-reply-to:message-id:mime-version:references
:reply-to:subject:subject:to:to:x-me-proxy:x-me-sender
:x-me-sender:x-sasl-enc; s=fm2; t=1775010445; x=1775017645; bh=O
MjWRwst4RetICbPWPnegwnuoRJMDTYPVMmgv47a8ZY=; b=jQ8RqVyWRNRG2Qmyb
e3GfHfr/A0Ew5aw5p29cJskY8/ofy2ZCNaEBL0d/9s9DF1p1qqSELEkF28Ai9jTL
xXSGHZ0OVxgJ1wcU577ccml0NeOLzeAq62CvfwXCn+Q5tLCawa/iSuI0Tfs78Zjc
YKl4U9G6Tv8Q7ImKC4MzHsWlVeWf+P/PIvqdAdw50vOrjTs22bmFd9iw+wj9MkcG
W+1Gmbul4FKUUQn1zFO9rA76vL+prvgL8lrUsbOmYZtLJ1LrThaUwgGdseQF4iOA
ssmYKEKmBbd5W+v3k+KAz/vujtYYuhVv4l6bo3JC0RnV2kMJluWALlS448PNR6c4
zVrtg==
X-ME-Sender: <xms:jYLMaeOvtaxmUAztQd7SLGn24tocG55jUqv2elQttAO337tg_8Jdmg>
<xme:jYLMaS91OZ2_nU16UVuU3QFDdMJQ_i3gZ0xYzBuKNw39ENvyW1olH9JTiQaKnxcN0
amMXcv_QaEnzHNWOgz7R0rx_WakCfyOWfMfXYPJXVOSs0zEFX4W1MY>
X-ME-Received: <xmr:jYLMaS4VXI5xEaD-X7DnV2J02ppSkLmJMSXquMwktGHMx_zCgps4L8GtrY7vbnHj3F6EKw>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefhedrtddtgdduledtucetufdoteggodetrfdotf
fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceurghi
lhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujfgurh
epkfffgggfuffvfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhihucfi
uhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrhhnpe
egueegteffuddvjeevvdelleeitdeftdduhfeffeffjedukeevjedvfeffgfevgeenucev
lhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhithhrhi
esghhuthhovhdruggvvhdpnhgspghrtghpthhtohepvddpmhhouggvpehsmhhtphhouhht
pdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektdeiie
dvseguvggssghughhsrdhgnhhurdhorhhg
X-ME-Proxy: <xmx:jYLMaZ2hfupHBLuWeB2NWjfYRhPW8N0ILWKuzc_Y3l8rZJNMDDMuKA>
<xmx:jYLMaZBboKnCafkgjiwR5pz0YjB71uhtT74Seqe1-kSvS1R4GRx0Lw>
<xmx:jYLMab1H4jEwJzPodonOCoXACFpwCM6DMF9tN5yxkAWAEzTfJdmtqQ>
<xmx:jYLMaTsMnW3_LEZUbfnevkbEWAAowh6M6rWBixHg40PsDwDxZUozTA>
<xmx:jYLMafjuFwDFOOFhgs__SYo-6Kq1EWpHeYvWRPyi7VtbObRcXUk98RKR>
Feedback-ID: i07de48aa:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
31 Mar 2026 22:27:24 -0400 (EDT)
Message-ID: <26003da5-1e5e-4b19-bbe5-c0c1ec688aa5@HIDDEN>
Date: Wed, 1 Apr 2026 05:27:22 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN>
<73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN>
<abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN>
<d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN>
<a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN>
<a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN>
<d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN>
<0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN>
<9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN>
<2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN>
<47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN>
<f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN>
<34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN>
Content-Language: en-US
From: Dmitry Gutov <dmitry@HIDDEN>
In-Reply-To: <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: 1.3 (+)
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: On 31/03/2026 12:35, martin rudalics wrote: > >> What happens
without the background color? To avoid missing the case > >> that it gets
drawn on top of the borders. > > > > The border still shows up [...]
Content analysis details: (1.3 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
1.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.
[202.12.124.141 listed in sa-accredit.habeas.com]
-0.0 SPF_HELO_PASS SPF: HELO matches SPF record
-0.0 SPF_PASS SPF: sender matches SPF record
1.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.
[202.12.124.141 listed in bl.score.senderscore.com]
-0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/,
low trust
[202.12.124.141 listed in list.dnswl.org]
X-Debbugs-Envelope-To: 80662
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.3 (/)
On 31/03/2026 12:35, martin rudalics wrote:
> >> What happens without the background color? To avoid missing the case
> >> that it gets drawn on top of the borders.
> >
> > The border still shows up as incomplete, see attached.
>
> You could try in x_clear_under_internal_border put something like
>
> if (face)
> {
> unsigned long color = face->background;
> Display *display = FRAME_X_DISPLAY (f);
> GC gc = f->output_data.x->normal_gc;
>
> if (CONSP (frame_size_history))
> frame_size_history_extra
> (f, build_string ("ClearUnderBorder"),
> width, height, 0, 0, 0, 0);
Does this help?
size-and-position (1), TS=340x200~>500x450, TC=42x11~>62x26,
NS=348x208~>508x458, IS=340x200~>500x450, MS=8x17
x_set_window_size_1 (5), TS=340x200~>500x450, TC=42x11~>62x26,
NS=348x208~>508x458, IS=340x200~>500x450, MS=8x17 IH IV
ClearUnderBorder, PS=508x458, XS=0x0, DS=0x0
ClearUnderBorder, PS=508x458, XS=0x0, DS=0x0
ClearUnderBorder, PS=508x458, XS=0x0, DS=0x0
EmacsFrameResize, PS=508x458, XS=508x458, DS=508x458
change_frame_size (5), MS=8x17 IH IV
EmacsFrameResize, PS=508x458, XS=508x458
change_frame_size_1, delayed, PS=508x458, XS=508x458
change_frame_size (5), MS=8x17 IH IV
size-and-position (1), TS=500x450~>340x200, TC=62x26~>42x11,
NS=508x458~>348x208, IS=500x450~>340x200, MS=8x17
x_set_window_size_1 (5), TS=500x450~>340x200, TC=62x26~>42x11,
NS=508x458~>348x208, IS=500x450~>340x200, MS=8x17 IH IV
ClearUnderBorder, PS=348x208, XS=0x0, DS=0x0
ClearUnderBorder, PS=348x208, XS=0x0, DS=0x0
ClearUnderBorder, PS=348x208, XS=0x0, DS=0x0
EmacsFrameResize, PS=348x208, XS=348x208, DS=348x208
change_frame_size (5), MS=8x17 IH IV
EmacsFrameResize, PS=348x208, XS=348x208
change_frame_size_1, delayed, PS=348x208, XS=348x208
change_frame_size (5), MS=8x17 IH IV
size-and-position (1), TS=340x200~>500x450, TC=42x11~>62x26,
NS=348x208~>508x458, IS=340x200~>500x450, MS=8x17
x_set_window_size_1 (5), TS=340x200~>500x450, TC=42x11~>62x26,
NS=348x208~>508x458, IS=340x200~>500x450, MS=8x17 IH IV
ClearUnderBorder, PS=508x458, XS=0x0, DS=0x0
ClearUnderBorder, PS=508x458, XS=0x0, DS=0x0
ClearUnderBorder, PS=508x458, XS=0x0, DS=0x0
EmacsFrameResize, PS=508x458, XS=508x458, DS=508x458
change_frame_size (5), MS=8x17 IH IV
EmacsFrameResize, PS=508x458, XS=508x458
change_frame_size_1, delayed, PS=508x458, XS=508x458
change_frame_size (5), MS=8x17 IH IV
> >> The former case would be handled automatically as soon as we receive
> the
> >> ConfigureNotify event.
> > >
> >> The latter case is the problematic one and to
> >> handle it correctly we are not allowed to put the requested sizes in
> our
> >> frame structure - that is call change_frame_size immediately. It means
> >> that Lisp code simply cannot expect the requested frame and implicitly
> >> window sizes be in place right after a 'set-frame-size' call.
> >
> > Are these cases materially different? Since the values would be
> > updated only after ConfigureNotify, Lisp code right after a
> > 'set-frame-size' call wouldn't be able to rely on frame sizes.
>
> In the first case any Lisp code relying on the incorrect assumption that
> the frame will get resized is wrong but this would be corrected as soon
> as the ConfigureNotify arrives.
But the Lisp code might have already run by that point. And either
failed or created an inconsistent state of its own. Anyway, this is not
my fight, and the way to supporting those uses seems clear by now.
> In the second case there is no
> ConfigureEvent and the user would see wrong contents in the frame -
> either to large to fit or too small leaving empty space or garbage
> around the drawn contents.
The scope is larger with this one, that's for sure.
> >> Now IIUC with pgtk xg_frame_set_char_size does not wait for a
> >> ConfigureNotify event either. Maybe gtk_widget_queue_resize handles
> >> that. What do I know ...
> >
> > IIUC the gtk_events_pending and gdk_flush calls do that.
>
> Only with pgtk? Hardly.
I'm pretty sure that's what happens. PGTK receiving and processing the
events within the GTK framework.
> > And the
> > events are dispatched to 'configure_event' (pgtkterm.c:5498).
>
> Again there's no guarantee that the ConfigureNotify event arrives. But
> what I meant is that if pgtk doesn't wait, maybe gtk could not wait
> either. Lisp code would still continue working with the old sizes after
> calling 'set-frame-size'. Anyway, a user can choose that by setting the
> timeout to 0.
>
> > In my proposal these calls are also skipped in
> > xg_frame_set_size_and_position. I haven't seen the "outdated content
> > flicker" problem on PGTK with or without the patch, though - it seems
> > a lot better at synchronizing.
>
> In which sense does it synchronize better?
Much less inconsistent states or flickering. Is noticeable.
> > Its 'configure_event' doesn't seem to be doing much interesting either.
>
> It might override position values of a child frame. As a rule, these
> should be in place already.
> > Right. My understanding is that this or other events trigger
> > intermediate re-renders which show outdated buffer contents.
>
> If you trace borders as I suggested above, you could in the frame size
> history relate them to "change_frame_size_1, delayed" and the output of
> frame_size_history_adjust calls.
See above.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 31 Mar 2026 09:36:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Mar 31 05:36:13 2026
Received: from localhost ([127.0.0.1]:34884 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1w7VW8-0000f1-40
for submit <at> debbugs.gnu.org; Tue, 31 Mar 2026 05:36:12 -0400
Received: from mout.gmx.net ([212.227.15.18]:46331)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w7VW5-0000eX-0B
for 80662 <at> debbugs.gnu.org; Tue, 31 Mar 2026 05:36:10 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1774949760; x=1775554560; i=rudalics@HIDDEN;
bh=5FpkhMbjvIc24pC0e5FXhbvUdZOBFAX4JNQUWTaWnEY=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:
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=aGUL4Ez8McMWdiX5q11IMmh59E6JrT5Vrq+peXU400A/M6Kxa8+f+MUotNBIIKtU
Ury4FsAlSQVzlkb62Hm+ushnGTxXkgR1CcyyLwsNBVCpLlOxNKCP6jh4Clr7tlmz4
CtmYoKe3rlkHgT/Dn4ji0ng1ZVZUCD4kvGchpjbXt17AYITJGE48mf6Ahp3Ymy8y2
gjDhLmMCnhzgZbx8kqk2aySIxtJK40sW7zc4jZNs8/lNqovlNwSOkXoq445FQpbnL
10vNjw+AW8XAUxvnGBZBE9Cexs9mCpV+n+n1tAk647k3JlQOBUTLHfyh9geOIyk7m
COGnIrp9fOvgaeORjA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from client.hidden.invalid by mail.gmx.net (mrgmx005
[212.227.17.190]) with ESMTPSA (Nemesis) id 1M7K3i-1wAnJE118m-001GKq; Tue, 31
Mar 2026 11:36:00 +0200
Message-ID: <34f70dea-2dec-4c4b-9c48-cb3124af067a@HIDDEN>
Date: Tue, 31 Mar 2026 11:35:59 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN>
<73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN>
<abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN>
<d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN>
<a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN>
<a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN>
<d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN>
<0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN>
<9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN>
<2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN>
<47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN>
<f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:JHF46ojlnMQPW4NAAgRBYfBhPM7JB9JD27Qdu9QXTlubD9ldBxY
NARYYw6cq9CIKh9EA5nOxI8WEUO1M4hAbo7IyRNSxDqWNuqmqHQwaydyTfRoF3QepIfsCQ7
tXsgk7Ofe/je9DTTOgi3DOkfqbjSLBFqDXLrHE55fgNJSRz+gBMX5tPJuiTEUgWhrusaI2f
masUD6cZaAhLWa6YeD8JA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:oNdIOHZ0nVY=;Qk96jxL98C1o/a5OklQKwiRUC9T
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
IEC/m8lbO3t
X-Spam-Score: 1.3 (+)
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: >> What happens without the background color? To avoid
missing
the case >> that it gets drawn on top of the borders. > > The border still
shows up as incomplete,
see attached. You could try in x_clear_under_internal_border
put something like
Content analysis details: (1.3 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
1.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.15.18 listed in sa-trusted.bondedsender.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
1.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.18 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.18 listed in list.dnswl.org]
-0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3)
[212.227.15.18 listed in wl.mailspike.net]
-0.0 RCVD_IN_MSPIKE_WL Mailspike good senders
X-Debbugs-Envelope-To: 80662
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.3 (/)
>> What happens without the background color? To avoid missing the case
>> that it gets drawn on top of the borders.
>
> The border still shows up as incomplete, see attached.
You could try in x_clear_under_internal_border put something like
if (face)
{
unsigned long color = face->background;
Display *display = FRAME_X_DISPLAY (f);
GC gc = f->output_data.x->normal_gc;
if (CONSP (frame_size_history))
frame_size_history_extra
(f, build_string ("ClearUnderBorder"),
width, height, 0, 0, 0, 0);
>> But if you only make the change in EmacsFrameResize, the flickering
>> still remains. Right?
>
> Yes: it "flickers" to the previous buffer contents (old text). But the frame rectangle and its border are fine in that case.
I see.
>> Did I describe that? Waiting for a ConfigureNotify event is supposed to
>> catch two cases:
>>
>> - The window manager refuses our request, sends us other sizes and we
>> install them in reaction to the ConfigureNotify event.
>>
>> - The window manager doesn't send us a ConfigureNotify event at all so
>> we leave the sizes alone.
>>
>> The former case would be handled automatically as soon as we receive the
>> ConfigureNotify event.
> >
>> The latter case is the problematic one and to
>> handle it correctly we are not allowed to put the requested sizes in our
>> frame structure - that is call change_frame_size immediately. It means
>> that Lisp code simply cannot expect the requested frame and implicitly
>> window sizes be in place right after a 'set-frame-size' call.
>
> Are these cases materially different? Since the values would be
> updated only after ConfigureNotify, Lisp code right after a
> 'set-frame-size' call wouldn't be able to rely on frame sizes.
In the first case any Lisp code relying on the incorrect assumption that
the frame will get resized is wrong but this would be corrected as soon
as the ConfigureNotify arrives. In the second case there is no
ConfigureEvent and the user would see wrong contents in the frame -
either to large to fit or too small leaving empty space or garbage
around the drawn contents.
>> Now IIUC with pgtk xg_frame_set_char_size does not wait for a
>> ConfigureNotify event either. Maybe gtk_widget_queue_resize handles
>> that. What do I know ...
>
> IIUC the gtk_events_pending and gdk_flush calls do that.
Only with pgtk? Hardly.
> And the
> events are dispatched to 'configure_event' (pgtkterm.c:5498).
Again there's no guarantee that the ConfigureNotify event arrives. But
what I meant is that if pgtk doesn't wait, maybe gtk could not wait
either. Lisp code would still continue working with the old sizes after
calling 'set-frame-size'. Anyway, a user can choose that by setting the
timeout to 0.
> In my proposal these calls are also skipped in
> xg_frame_set_size_and_position. I haven't seen the "outdated content
> flicker" problem on PGTK with or without the patch, though - it seems
> a lot better at synchronizing.
In which sense does it synchronize better?
> Its 'configure_event' doesn't seem to be doing much interesting either.
It might override position values of a child frame. As a rule, these
should be in place already.
> Right. My understanding is that this or other events trigger
> intermediate re-renders which show outdated buffer contents.
If you trace borders as I suggested above, you could in the frame size
history relate them to "change_frame_size_1, delayed" and the output of
frame_size_history_adjust calls.
> In the code I'm testing we call adjust_frame_size right away,
> though. So the old sizes are not in place - yet the change in
> EmacsFrameResize is still needed.
Calling adjust_frame_size is not enough to install the sizes. It's the
INHIBIT value that controls that.
martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 31 Mar 2026 01:00:45 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Mar 30 21:00:45 2026 Received: from localhost ([127.0.0.1]:57679 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w7NTI-0006gQ-U5 for submit <at> debbugs.gnu.org; Mon, 30 Mar 2026 21:00:44 -0400 Received: from flow-b6-smtp.messagingengine.com ([202.12.124.141]:35131) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w7NTG-0006Lr-W4 for 80662 <at> debbugs.gnu.org; Mon, 30 Mar 2026 21:00:43 -0400 Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42]) by mailflow.stl.internal (Postfix) with ESMTP id 1B27D1300E06; Mon, 30 Mar 2026 21:00:37 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-02.internal (MEProxy); Mon, 30 Mar 2026 21:00:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1774918836; x=1774926036; bh=v/ljEm7fDx xgYLtEW+a8ozQSzRKzpw5LR81Gd4IvEkQ=; b=KnvdCgjOCCQqbY8M33IOii6Rwd FIZeMHuQTCK8FNtwUFDIHe3sJcXEu0oAdnYLfpX5bfj1/RBxqPCahnVVFFe3Txc5 kRrrgG/cugrwiLQTqzTQ2PsjWywmrtpH6+VTxR+w5g/vA5tVPfR2JzcAKxxqyy+K XqKgLrSd9M0sacaJ2OUzRY2oEyl5aaQnIn7o+JET5wkuW0kYTupYiOWkEfjfWCHi AyqkqWfUpgPPjechAW9hATrTT5BZMx/jMoPfp5BzmgyUYrQkVLese+KtuZjA6+qs dUhnyIALh6247XoANavBtDcjRjdwYUyUxPJguzpo6hlsfg+PMD1ZzCWL7kgg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1774918836; x=1774926036; bh=v/ljEm7fDxxgYLtEW+a8ozQSzRKzpw5LR81 Gd4IvEkQ=; b=mmfpeOpD8puHLed+/q+Adkb0lw/pXJCyEjVYwZhf41uo4T+TkN0 QKxt4SNwuDj7WvsNBHYjlPfCeKy4+nBP6/1BQvE/mC5jYSJ66m0eJyK2+MH4TA0j KeSvbPAo1M1prW69fPblINwaGEeo0aYc5k/X91+4jmEJloMZgIh/Dm4oYu/BjzU/ FCOf9/O2qCfsqAMp6nFj7Pp82X876OfdDnbsaFA2mW1lIxqpE1d74E8II9vB19ff GngmrwWDbwng9aZVqZ3IXZNZC5pbG3vULfMiQ/p/SMPKHhrY3ZUvRuQasjdXcoxo YFk4BJC20Mv7b/ui3Me2n8wJtSrOxmi+FDQ== X-ME-Sender: <xms:tBzLaV0EkUUXhd8hHUUsVme-JsfJa8ogVtKUx-jObyn65zokYYnXXw> <xme:tBzLaSEJ-mx6KvT8z_uJwOrNbH0ur9W5HMykN4HIkUVFBkXhc-KZncO0jEyTAHCq2 JU4UfmfCx_Pyrzcez2kg2G1c4evkxwUhBdQ1lhGwam-vaS3CVNe5jI> X-ME-Received: <xmr:tBzLaTh_XkfQ8t2RJ8sjUMpQm3AJ9xmdEAM6jPbILwcFEEX9ISQm1id6yPQuEkHQ6rn6Jw> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefgedtgeekucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurheptgfkffggfgfuvfhfhfgjsehmtderredtvdejnecuhfhrohhmpeffmhhithhrhicu ifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrthhtvghrnh epkefhieejheehjefhhefhuddvteettedvgeelteeigeelueegheffueffleduvdffnecu vehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepughmihhtrh ihsehguhhtohhvrdguvghvpdhnsggprhgtphhtthhopedvpdhmohguvgepshhmthhpohhu thdprhgtphhtthhopehruhgurghlihgtshesghhmgidrrghtpdhrtghpthhtohepkedtie eivdesuggvsggsuhhgshdrghhnuhdrohhrgh X-ME-Proxy: <xmx:tBzLad_DAkmteILGtiYAcR5RXNjJ0qvwrwBojjJaFHtM9LXabvV8Dg> <xmx:tBzLaao9gm_90Kq70a16LXlq-xPoBDLTzFlR8Ye_g7AIvsAvW8M1Tg> <xmx:tBzLac_oKmBNCqDmkE-8tArh4RbWYAeggJE-bOGqBR6fUYWUkpwAWw> <xmx:tBzLaeXM13vpXlw6kVfrEtxvKwqY6RIivzS56ljyXyGEp3rIYLCMpQ> <xmx:tBzLaRoKecdubJc8585r9oYKAu7h8qGw8RkcTNU97Qb1UWm7pf_hKzip> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 30 Mar 2026 21:00:35 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------EZ7gOSE1wEjSw8UxfKYD5l0a" Message-ID: <f3cb494e-8dca-4c0d-aa2d-439337e2f9b5@HIDDEN> Date: Tue, 31 Mar 2026 04:00:33 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> X-Debbugs-Envelope-To: 80662 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. --------------EZ7gOSE1wEjSw8UxfKYD5l0a Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 30/03/2026 11:58, martin rudalics wrote: > >> IIUC all calls of x_clear_under_internal_border are guarded by > >> > >> if (FRAME_X_WINDOW (f)) > >> > >> We could move that check there. Would that suffice in your case? > > > > That doesn't seem to work because some of its uses require an lvalue: > > > > xfns.c: In function ‘x_window’: > > xfns.c:4325:22: error: lvalue required as left operand of assignment > > 4325 | FRAME_X_WINDOW (f) = XtWindow (frame_widget); > > | ^ > > xfns.c: In function ‘x_create_tip_frame’: > > xfns.c:8604:7: error: lvalue required as left operand of assignment > > 8604 | = XCreateWindow (FRAME_X_DISPLAY (f), > > | ^ > > I'm too silly to understand. FRAME_X_WINDOW should check whether an X > window exists for that frame. You mean that's not enough. Right? FRAME_X_WINDOW (f) is also used on the left side of assignment. Having a condition in there doesn't compile. At least here's what I've tried: diff --git a/src/xterm.h b/src/xterm.h index 962c856e772..a8b38f0b2f8 100644 --- a/src/xterm.h +++ b/src/xterm.h @@ -1394,7 +1394,7 @@ #define FRAME_X_OUTPUT(f) ((f)->output_data.x) #define FRAME_OUTPUT_DATA(f) FRAME_X_OUTPUT (f) /* Return the X window used for displaying data in frame F. */ -#define FRAME_X_WINDOW(f) ((f)->output_data.x->window_desc) +#define FRAME_X_WINDOW(f) ((f)->output_data.x->normal_gc ? (f)->output_data.x->window_desc : 0) #define FRAME_NATIVE_WINDOW(f) FRAME_X_WINDOW (f) /* Return the drawable used for rendering to frame F. */ > > The "wrong" rendering of the border is parts of it being missing in > > the areas where the frame geometry has changed (e.g. the frame got > > wider or taller or both). So it's probably new contents drawn but the > > border not redrawn. > > What happens without the background color? To avoid missing the case > that it gets drawn on top of the borders. The border still shows up as incomplete, see attached. > > And EmacsFrameResize has an change_frame_size call without a > > corresponding x_clear_under_internal_border. > > And it doesn't garbage the frame either. But note that > update_various_frame_slots sets up the internal border width so we > probably can clear under it only after that has been done. That works too. But I'm not sure in which scenario it wouldn't be a no-op: ew->emacs_frame.internal_border_width only seems to ever be assigned from f->internal_border_width, in two widget.c functions. In fact, I can comment out the body of 'update_various_frame_slots', and the 'internal-border-width' frame parameter still works and can be updated in a created frame (testing with regular frame, the child frames use a different parameter for some reason). > > But also if we're talking about redisplay_internal, it has a call > > > > FRAME_RIF (f)->clear_under_internal_border (f); > > > > which closely is followed by > > > > update_frame (f, false); > > > > which updates the windows, possibly drawing over the border area as > well? > > > > Anyway, EmacsFrameResize is called by ConfigureNotify processing which > > can happen after, and if the sizes don't match, the border might be > > overwritten again without the new call. > > But if you only make the change in EmacsFrameResize, the flickering > still remains. Right? Yes: it "flickers" to the previous buffer contents (old text). But the frame rectangle and its border are fine in that case. Maybe the question to ask is whether skipping the wait for events in xterm.c makes the change in EmacsFrameResize necessary: yes. If we don't skip waiting for events, the border gets updated fine. But that's probably because an event arriving later triggers a redraw that doesn't take care of the borders. So for better resilience the change in EmacsFrameResize still seems correct. > > So the code like you described (querying for the frame dimensions and > > acting on them) might behave incorrectly. > > Did I describe that? Waiting for a ConfigureNotify event is supposed to > catch two cases: > > - The window manager refuses our request, sends us other sizes and we > install them in reaction to the ConfigureNotify event. > > - The window manager doesn't send us a ConfigureNotify event at all so > we leave the sizes alone. > > The former case would be handled automatically as soon as we receive the > ConfigureNotify event. > > The latter case is the problematic one and to > handle it correctly we are not allowed to put the requested sizes in our > frame structure - that is call change_frame_size immediately. It means > that Lisp code simply cannot expect the requested frame and implicitly > window sizes be in place right after a 'set-frame-size' call. Are these cases materially different? Since the values would be updated only after ConfigureNotify, Lisp code right after a 'set-frame-size' call wouldn't be able to rely on frame sizes. > Now IIUC with pgtk xg_frame_set_char_size does not wait for a > ConfigureNotify event either. Maybe gtk_widget_queue_resize handles > that. What do I know ... IIUC the gtk_events_pending and gdk_flush calls do that. And the events are dispatched to 'configure_event' (pgtkterm.c:5498). In my proposal these calls are also skipped in xg_frame_set_size_and_position. I haven't seen the "outdated content flicker" problem on PGTK with or without the patch, though - it seems a lot better at synchronizing. Its 'configure_event' doesn't seem to be doing much interesting either. > > I don't know too much about such code acting on regular frame. We > > could expose x_wait_for_event to Lisp, maybe (the new function would > > use some "pending" flag though, because code could call it > > arbitrarily; not sure if f->new_size_p would fit). > > The new_size flags is internal. We could add a waiting_for_configured > flag for each frame, set it when requesting a new size and reset it as > soon as a ConfigureNotify event arrives for that frame. Lisp code would > have to loop as long as the flag is set. The implementation could still be in C, it's only a question whether the function is exposed to Lisp. > One thing still stupefies me: We ask for a size change and wait until > the ConfigureNotify event arrives. Apparently it does arrive before the > timeout expires since the size change is applied. So in principle the > timeout per se cannot be the culprit for whatever you observe and the > problem seems to be in how we redisplay things in reaction to the size > change. Right. My understanding is that this or other events trigger intermediate re-renders which show outdated buffer contents. > Now if we remove the timeout for child frames as you propose, the > following could happen: We leave the old sizes in place, do a redraw > with the old sizes and draw the old borders according to the old sizes. > Then the ConfigureNotify event kicks in, we apply the new sizes and > redraw the borders again (that is we "should"). If redrawing the old > borders succeeds in making it to the display, this could explain some > artifacts you observe. In the code I'm testing we call adjust_frame_size right away, though. So the old sizes are not in place - yet the change in EmacsFrameResize is still needed. When I did not in some previous iterations (simply skipping the wait for events), that did lead to more visual artefacts. > In either case I think we should first try to > only clear the borders in EmacsFrameResize and look whether this > already improves the behavior. As described above, the EmacsFrameResize change doesn't fix the "blink old contents" problem. But it helps when I skip the wait for events. Additionally, it seems that deleting the x_clear_under_internal_border calls inside x_set_window_size_and_position and x_set_window_size doesn't have adverse effects. At least with Lucid or no-toolkit builds. --------------EZ7gOSE1wEjSw8UxfKYD5l0a Content-Type: image/jpeg; name="Screenshot from 2026-03-31 00-28-10.jpeg" Content-Disposition: attachment; filename="Screenshot from 2026-03-31 00-28-10.jpeg" Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR CAINAz0DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl 5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk 5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3CwvZr2Nrp444rRhmIlvmI/vHsBUNp4gs b/VfsdlcQXKCBpWmhmV1UhgNpx35zVJree98LXWihHivEtTAN6kI3GAQ2MEH+tUpdM1DVry8 f+zX0xZdKezV5HjJ3k8fcY/KO348CtIxi9yW3/XqjpbPUrHURIbK9t7nyzh/JlV9p9Dg8VTs 9Zku2uLhreKDTIWkX7VLOASUbax24wFyDyW7dKy9F0eWSaQ6jDqiOLYW58+SARlcg4Qw4bjH BOODTLLwsYPC2o2iRPFe3MdzEu+dnXDO2zuQOCvPX1puMFfUlOTsdPJd20RcSXESFI/Nbc4G 1P7x9B71HZ6nYaiZBZXttcmM4fyZVfaffB4rmLq21bUpb9jo89us2kvap5ksRzJzxw54OeD+ eK17XTprfXLadYQlumnCAlSOGDAgY+mfalyRS3/rUOZ9v60/z/A1ri4htIHnuZo4YYxueSRg qqPUk8CqEPiLRLhJHh1jT5FiXfIyXKEIucZPPAzxUPi2xudT8J6nZWcfm3E8DJGm4DcfTJ4r m7DwvcJrN6+pWqR6dPDexyOZExiWVCvQ91BPtXPKUlKyXQ7qVKlKnzTlrfb7juDcwC5W2M0Y nZC6xbhuKg4JA64yRz71KTgZPSuE8G2M+s217eaqxlAjXTIZYpSvmxRE7pFZSCNzdwf4a17v whaJpOowabJdRXN1ayQK817NKo3D0diBzjkDNPmfLzJf10FOjThP2cpa+mnn16Fu58T6Wmla le2V5a3zWELyyRQTqxG0E4OM46VYsNc0zUrR7i2v7WRYlDT+XOreTxk7iDxjnr6Vzj2V3feG tRsR4X+wX39mPaxyb4SshK4CKytnGeeQBVu10q607XReQ6fut49HS38uJkUvKrZ2YJA6dzx7 0ru/l/w/+SLlSpcr119V5fLuaNjrbarY3tzp0drdCGVo4DDeI6TYAOSy52deh5/OpNC1j+2N FTUZIBa5aRXQybghR2U/NgcfLmsnwnHqdvfast5olxYw3d211G7ywsoBVF2kI5OflJ6Y96ow 6Rq8nhLVvDbWDwuwuDDdmVDFNvkZlAAO4ZDYOQKXNKyfl+I5Uqd3G6Wq1v0d79dbaG9Y+JrD U9cbTrCaC6RbbzzcQTK6g79u3jv361tEgAk8AVyOh2V+/i19Tn0T+zLf+zltgDJGxLh89EJ4 x0+nauskTzI2Q/xAiri3y366/mzCtGEZ2jtZdblGxvLq+he4WKKOB1Jg3MSzehbjgGn2N5Jc PPBcRLHcwEBwrZUgjIYH0P8ASoNInNvp62lxFLHNaR7XzG2GA4BU4wc46Dml04PPf3l+Y3jj lCRxiRSrELn5sHkZJ7+lV6GJp0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFNlDGJwvDFTj60MCC2v4buWRIA7LGcGT YQhPQgHv+FPgu4bl5licsYZPLk+UjDYBxz14I6Vn6TLbr4ah8yVYo4odszF9nlkD5sn+HHPN c3Z6xZnRfE9vYaz9okhE0lsftpmkVBCvzKxYtgMTznrVxhe/kS3t5ndUyGaK4iEsMiSRt0dG BB/EVzVjaGLVV083d9JBc6cJpd93IW3hgNytuymc9FIFZ2g+TZeGb2HTbuWTW4beYG0kvHkZ GDNj90zELzjnHOfeqdNW3Ep3f9eR3NRXNtBeW7291BHPC4w0cqBlb6g8GuN0G6jkS7efWLUW P2X/AEhV1eSaSN8/fJYKYuMggEc44FJ4euIh4YXW11a71B4bVxdwrdtLuOMgfe+RgB1GDzk0 SpWvcI1LtWO2jjSGNY4kVI1GFVRgAegFOrgNL1m5WXV7SxuoZn+wefZxR6g97mUbshXcAk/d yvIHHTNbOipo98rx2eu3V1LJAPPh/tF2cHIyxG7dG2ePl29cYolSa3BVL/1/Xc6OGaK4iEsM iSRt0dGBB/EUyC7huXmWJyxhk8uT5SMNgHHPXgjpXKeERpNnpUkD6i63cKSi6glv3JhUOcts Zvk7fMAOuc0ug3llqUOuaVY64ZnMzC2cXxmlRPLT5lYsWwGJ5zjNDp6vyDm2v1OwprtsRmwW 2jOFGSfpXH2uqapq1lqN9beYtxZWTW6wjOGu8ZfjvghQPqak8JXEk95IU1G2ng8gGSFdSkup Fkz94h1Bj7gjpnsKHSaT8g59jprS9hvY2eItlW2ujqVZT6EHpVisuxIk1zUpIyDHiJCR0LgH P6EVqVkWFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUU2RikTsoyQpIFDdgIo4LWO7kkjjiW4cDzCoAYj3qesb So/J0Bby3gWa9mg81iSA0rkZwW+vHtWfaeIrqLT9Qur+aN57W2M7WQsZLeRcDPV2O4dsgY/l VKDfyFf8TqaMDOcc1zWk6tq+oSS27Kqs0HmR3L6bPDHG2QNhDkb+uQQR0PAqto2o6rY+D5dU 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 sdzAQHCtlSCMhgfQ/wBK4jxfYXl54ytri00qTUxZNY3MtvG0YYqPtgyPMZQcMy96mW8fVEy/ z/JnRan4y0rTrTS71Lu1n0+/uvs/2xLlfKjGx2LFuhA2Y696NT8ZaVp1ppd6l3az6ff3X2f7 YlyvlRjY7Fi3QgbMde9clc+GtXit7bUW0P7RJJ4g/tSXTIJYiYY/KKAZZlQtkKxwepPXGaLn w1q8Vvbai2h/aJJPEH9qS6ZBLETDH5RQDLMqFshWOD1J64zVLz7r/wBt/wA3r5FPy7P9f8l9 51up+MtK0600u9S7tZ9Pv7r7P9sS5XyoxsdixboQNmOvejU/GWladaaXepd2s+n3919n+2Jc r5UY2OxYt0IGzHXvXJXPhrV4re21FtD+0SSeIP7Ul0yCWImGPyigGWZULZCscHqT1xmi58Na vFb22otof2iSTxB/akumQSxEwx+UUAyzKhbIVjg9SeuM0Lz7r/23/N6+QPy7P9f8l951up+M tK0600u9S7tZ9Pv7r7P9sS5XyoxsdixboQNmOvejU/GWladaaXepd2s+n3919n+2Jcr5UY2O xYt0IGzHXvXJXPhrV4re21FtD+0SSeIP7Ul0yCWImGPyigGWZULZCscHqT1xmi58NavFb22o tof2iSTxB/akumQSxEwx+UUAyzKhbIVjg9SeuM0Lz7r/ANt/zevkD8uz/X/JfedbqfjLStOt NLvUu7WfT7+6+z/bEuV8qMbHYsW6EDZjr3o1PxlpWnWml3qXdrPp9/dfZ/tiXK+VGNjsWLdC Bsx171yVz4a1eK3ttRbQ/tEkniD+1JdMgliJhj8ooBlmVC2QrHB6k9cZoufDWrxW9tqLaH9o kk8Qf2pLpkEsRMMflFAMsyoWyFY4PUnrjNC8+6/9t/zevkD8uz/X/JfedbqfjLStOtNLvUu7 WfT7+6+z/bEuV8qMbHYsW6EDZjr3o1PxlpWnWml3qXdrPp9/dfZ/tiXK+VGNjsWLdCBsx171 yVz4a1eK3ttRbQ/tEkniD+1JdMgliJhj8ooBlmVC2QrHB6k9cZoufDWrxW9tqLaH9okk8Qf2 pLpkEsRMMflFAMsyoWyFY4PUnrjNC8+6/wDbf83r5A/Ls/1/yX3nW6n4y0rTrTS71Lu1n0+/ uvs/2xLlfKjGx2LFuhA2Y696NT8ZaVp1ppd6l3az6ff3X2f7YlyvlRjY7Fi3QgbMde9clc+G tXit7bUW0P7RJJ4g/tSXTIJYiYY/KKAZZlQtkKxwepPXGaLnw1q8Vvbai2h/aJJPEH9qS6ZB LETDH5RQDLMqFshWOD1J64zQvPuv/bf83r5A/Ls/1/yX3nW6n4y0rTrTS71Lu1n0+/uvs/2x LlfKjGx2LFuhA2Y696NT8ZaVp1ppd6l3az6ff3X2f7YlyvlRjY7Fi3QgbMde9clc+GtXit7b UW0P7RJJ4g/tSXTIJYiYY/KKAZZlQtkKxwepPXGaLnw1q8Vvbai2h/aJJPEH9qS6ZBLETDH5 RQDLMqFshWOD1J64zQvPuv8A23/N6+QPy7P9f8l951up+MtK0600u9S7tZ9Pv7r7P9sS5Xyo xsdixboQNmOvejU/GWladaaXepd2s+n3919n+2Jcr5UY2OxYt0IGzHXvXJXPhrV4re21FtD+ 0SSeIP7Ul0yCWImGPyigGWZULZCscHqT1xmi58NavFb22otof2iSTxB/akumQSxEwx+UUAyz KhbIVjg9SeuM0Lz7r/23/N6+QPy7P9f8l951up+MtK0600u9S7tZ9Pv7r7P9sS5Xyoxsdixb oQNmOvejU/GWladaaXepd2s+n3919n+2Jcr5UY2OxYt0IGzHXvXJXPhrV4re21FtD+0SSeIP 7Ul0yCWImGPyigGWZULZCscHqT1xmi58NavFb22otof2iSTxB/akumQSxEwx+UUAyzKhbIVj g9SeuM0Lz7r/ANt/zevkD8uz/X/JfedbqfjLStOtNLvUu7WfT7+6+z/bEuV8qMbHYsW6EDZj r3o1PxlpWnWml3qXdrPp9/dfZ/tiXK+VGNjsWLdCBsx171yVz4a1eK3ttRbQ/tEkniD+1JdM gliJhj8ooBlmVC2QrHB6k9cZoufDWrxW9tqLaH9okk8Qf2pLpkEsRMMflFAMsyoWyFY4PUnr jNC8+6/9t/zevkD8uz/X/JfedbqfjLStOtNLvUu7WfT7+6+z/bEuV8qMbHYsW6EDZjr3o1Px lpWnWml3qXdrPp9/dfZ/tiXK+VGNjsWLdCBsx171yVz4a1eK3ttRbQ/tEkniD+1JdMgliJhj 8ooBlmVC2QrHB6k9cZoufDWrxW9tqLaH9okk8Qf2pLpkEsRMMflFAMsyoWyFY4PUnrjNC8+6 /wDbf83r5A/Ls/1/yX3nW6n4y0rTrTS71Lu1n0+/uvs/2xLlfKjGx2LFuhA2Y696NT8ZaVp1 ppd6l3az6ff3X2f7YlyvlRjY7Fi3QgbMde9clc+GtXit7bUW0P7RJJ4g/tSXTIJYiYY/KKAZ ZlQtkKxwepPXGaLnw1q8Vvbai2h/aJJPEH9qS6ZBLETDH5RQDLMqFshWOD1J64zQvPuv/bf8 3r5A/Ls/1/yX3nW6n4y0rTrTS71Lu1n0+/uvs/2xLlfKjGx2LFuhA2Y696NT8ZaVp1ppd6l3 az6ff3X2f7YlyvlRjY7Fi3QgbMde9clc+GtXit7bUW0P7RJJ4g/tSXTIJYiYY/KKAZZlQtkK xwepPXGaLnw1q8Vvbai2h/aJJPEH9qS6ZBLETDH5RQDLMqFshWOD1J64zQvPuv8A23/N6+QP y7P9f8l951up+MtK0600u9S7tZ9Pv7r7P9sS5XyoxsdixboQNmOvejU/GWladaaXepd2s+n3 919n+2Jcr5UY2OxYt0IGzHXvXJXPhrV4re21FtD+0SSeIP7Ul0yCWImGPyigGWZULZCscHqT 1xmi58NavFb22otof2iSTxB/akumQSxEwx+UUAyzKhbIVjg9SeuM0Lz7r/23/N6+QPy7P9f8 l951up+MtK0600u9S7tZ9Pv7r7P9sS5XyoxsdixboQNmOvejU/GWladaaXepd2s+n3919n+2 Jcr5UY2OxYt0IGzHXvXJXPhrV4re21FtD+0SSeIP7Ul0yCWImGPyigGWZULZCscHqT1xmi58 NavFb22otof2iSTxB/akumQSxEwx+UUAyzKhbIVjg9SeuM0Lz7r/ANt/zevkD8uz/X/Jfedb qfjLStOtNLvUu7WfT7+6+z/bEuV8qMbHYsW6EDZjr3o1PxlpWnWml3qXdrPp9/dfZ/tiXK+V GNjsWLdCBsx171yVz4a1eK3ttRbQ/tEkniD+1JdMgliJhj8ooBlmVC2QrHB6k9cZoufDWrxW 9tqLaH9okk8Qf2pLpkEsRMMflFAMsyoWyFY4PUnrjNC8+6/9t/zevkD8uz/X/JfedbqfjLSt OtNLvUu7WfT7+6+z/bEuV8qMbHYsW6EDZjr3o1PxlpWnWml3qXdrPp9/dfZ/tiXK+VGNjsWL dCBsx171yVz4a1eK3ttRbQ/tEkniD+1JdMgliJhj8ooBlmVC2QrHB6k9cZoufDWrxW9tqLaH 9okk8Qf2pLpkEsRMMflFAMsyoWyFY4PUnrjNC8+6/wDbf83r5A/Ls/1/yX3nW6n4y0rTrTS7 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 JG3H4/sJdP8APj03U2umvm09LHykE7zKu5gBv2gAZJJYDj6ZI/H9hLp/nx6bqbXTXzaelj5S Cd5lXcwA37QAMkksBx9M4mi+E9WuLa7mlvTaavZ67cXdvdSWZ8uUMgQnyywyjAnGG7dTRovh PVri2u5pb02mr2eu3F3b3UlmfLlDIEJ8ssMowJxhu3U0LX7k/wD0n/Ng/wBX+v8Akjbj8f2E un+fHpuptdNfNp6WPlIJ3mVdzADftAAySSwHH0yR+P7CXT/Pj03U2umvm09LHykE7zKu5gBv 2gAZJJYDj6ZxNF8J6tcW13NLem01ez124u7e6ksz5coZAhPllhlGBOMN26mjRfCerXFtdzS3 ptNXs9duLu3upLM+XKGQIT5ZYZRgTjDdupoWv3J/+k/5sH+r/X/JG3H4/sJdP8+PTdTa6a+b T0sfKQTvMq7mAG/aABkklgOPpnV8P+ILfxFaXM8FtdWxtrl7aWK5QK6uuMjAJHf1rj9F8J6t cW13NLem01ez124u7e6ksz5coZAhPllhlGBOMN26mtvwHY6hYWutpqQYzyavPJ5phMQlBC4d VJPynnHJ+poWu/a/5f5sH5d7fn/kjrKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKAEYBlKnkEYNZ+nWlxa25sZ1iktkXZG4Y5Zf7rLj0755rRJABJ4ArDudemtdA1DXHtVNpbW 0lxFGHw8gUE88YXOPek7JO40m3ZGTonw9tdL0bWNMu72S9i1FPs4YpsaG2ClUiHJztBPPfPS o/D3ga48ORXQs5tDiuHg8mC6g0VYpByOZCsg39Og28810ej+INL121Mthf2lwyKpmSGdZDCS M4bB4PXr6Utv4i0S6tbm6t9Y0+a3tc/aJY7lGSHH98g4X8abVr3EndKxT8IaDeeGvD0GkXeo Q3y242QyR2xhwnoRvbJznnj6VW0Hw7rGgWU2nQazbSWCJILJZLE+ZCzMWBdhJhwMngBc+orU tfEeh3zypaazp9w0UXnSCK6RtkeM7zg8Ljv0qvpPiWy1Wz1C+W4sRYWkzILuK9jmjZFUEuzK cJ16HkYz3obu22Bj6d4L1GOLXbbV9atr2z1nzGuI4LAwMruiplWMrYGF6Y696sJ4a16fQr3R 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 byy+RHKLuPY8n9wHOC3t1oXxR4fe1jul13TDbyy+RHKLuPY8n9wHOC3t1rlvGOhTX3hOWHS/ C0kl3qU8E11brLAvl+WyEhtzhc7U2/KT/WjxjoU194Tlh0vwtJJd6lPBNdW6ywL5flshIbc4 XO1Nvyk/1o/r8v8AggdSvijw+9rHdLrumG3ll8iOUXcex5P7gOcFvbrQvijw+9rHdLrumG3l l8iOUXcex5P7gOcFvbrXLeMdCmvvCcsOl+FpJLvUp4Jrq3WWBfL8tkJDbnC52pt+Un+tHjHQ pr7wnLDpfhaSS71KeCa6t1lgXy/LZCQ25wudqbflJ/rR/X5f8EDqV8UeH3tY7pdd0w28svkR yi7j2PJ/cBzgt7daF8UeH3tY7pdd0w28svkRyi7j2PJ/cBzgt7da5bxjoU194Tlh0vwtJJd6 lPBNdW6ywL5flshIbc4XO1Nvyk/1o8Y6FNfeE5YdL8LSSXepTwTXVussC+X5bISG3OFztTb8 pP8AWj+vy/4IHUr4o8Pvax3S67pht5ZfIjlF3HseT+4DnBb260L4o8Pvax3S67pht5ZfIjlF 3HseT+4DnBb261y3jHQpr7wnLDpfhaSS71KeCa6t1lgXy/LZCQ25wudqbflJ/rR4x0Ka+8Jy w6X4Wkku9SngmurdZYF8vy2QkNucLnam35Sf60f1+X/BA6lfFHh97WO6XXdMNvLL5Ecou49j yf3Ac4Le3WhfFHh97WO6XXdMNvLL5Ecou49jyf3Ac4Le3WuW8Y6FNfeE5YdL8LSSXepTwTXV ussC+X5bISG3OFztTb8pP9aPGOhTX3hOWHS/C0kl3qU8E11brLAvl+WyEhtzhc7U2/KT/Wj+ vy/4IHUr4o8Pvax3S67pht5ZfIjlF3HseT+4DnBb260L4o8Pvax3S67pht5ZfIjlF3HseT+4 DnBb261y3jHQpr7wnLDpfhaSS71KeCa6t1lgXy/LZCQ25wudqbflJ/rR4x0Ka+8Jyw6X4Wkk u9SngmurdZYF8vy2QkNucLnam35Sf60f1+X/AAQOpXxR4fe1jul13TDbyy+RHKLuPY8n9wHO C3t1oXxR4fe1jul13TDbyy+RHKLuPY8n9wHOC3t1rlvGOhTX3hOWHS/C0kl3qU8E11brLAvl +WyEhtzhc7U2/KT/AFo8Y6FNfeE5YdL8LSSXepTwTXVussC+X5bISG3OFztTb8pP9aP6/L/g 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 CYbSNjgAkcjngjpVuvJdJ8TWLeF/HVnpviSS8nthcy2LNqDTzLEIEwyuzFsBiec9atwPrGj3 F9a6Xf6he3E/hv7dGl3cNOTcg4DLuzjOfujjpxSvp8k/wb/Rjtr87fil+p6fRXmfw1v7u91S UjWba5tjZqZ7U6vLezpNuHzsskamLjIKjjOOK9MqmrEp3CiqljqVnqaztZzrMIJmglKg/LIv DLz6U++tEv7KW1kknjWRcFoJmicfRlII/A1L2uMWG8t7qzF3azJcwMCVeBg4bHoR16Ulpew3 sbPEWyrbXR1Ksp9CD0rgPhSNIttKjsYtUuH1iGORLqwnvpHMGJCM+SzEJ25AGc+9dnYkSa5q UkZBjxEhI6FwDn9CKoDUooopAFFFFABRRRQAVwPxSvNRsLDSX067ubd7m6axJgkZfmmidUY4 9G2kHsa76ik1fQadjwk634gn8IWuprqmoJPeao2ljE7/ACsbbyQQM9pVLZ9TnrQdb8QT+ELX U11TUEnvNUbSxid/lY23kggZ7SqWz6nPWvdqKe979bfp/wAH7/IXp5/r/mvuPCTrfiCfwha6 muqagk95qjaWMTv8rG28kEDPaVS2fU560HW/EE/hC11NdU1BJ7zVG0sYnf5WNt5IIGe0qls+ pz1r3aije9+tv0/4P3+Qenn+v+a+48JOt+IJ/CFrqa6pqCT3mqNpYxO/ysbbyQQM9pVLZ9Tn rQdb8QT+ELXU11TUEnvNUbSxid/lY23kggZ7SqWz6nPWvdqKN7362/T/AIP3+Qenn+v+a+48 JOt+IJ/CFrqa6pqCT3mqNpYxO/ysbbyQQM9pVLZ9TnrQdb8QT+ELXU11TUEnvNUbSxid/lY2 3kggZ7SqWz6nPWvdqKN7362/T/g/f5B6ef6/5r7jwk634gn8IWuprqmoJPeao2ljE7/KxtvJ BAz2lUtn1OetB1vxBP4QtdTXVNQSe81RtLGJ3+VjbeSCBntKpbPqc9a92oo3vfrb9P8Ag/f5 B6ef6/5r7jwk634gn8IWuprqmoJPeao2ljE7/KxtvJBAz2lUtn1OetB1vxBP4QtdTXVNQSe8 1RtLGJ3+VjbeSCBntKpbPqc9a92oo3vfrb9P+D9/kHp5/r/mvuPCTrfiCfwha6muqagk95qj aWMTv8rG28kEDPaVS2fU560HW/EE/hC11NdU1BJ7zVG0sYnf5WNt5IIGe0qls+pz1r3aije9 +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 MfNgcxgZJA561NbaP4g1DRvGOlvoFxph1d5Z7aWW4gKDMaIEYRuxBJU9sY716bRR5eVvxuC0 /P7lY4Pw/peoz+NG1S68NjSbP+yFsyrywuWcSA4wjHjHQ+3aqum6PrMHgHVfCz6BJHcpYXMM N2JofKuWbdsC/NuGdw+8ABjrXo1FD1VvX8b/AOYR913Xl+ByOj6Bc6d4stLtbNIbNNDjtHZC oHmq4O3AOTgZ56e9ddRRTbv/AF3d/wBRJW/rysVLG4urlZzdWLWhSZkjDSK/mIOj/L0z6HkV NcySQ2sssUDTyIhZYUIBcgcKCxABPTkgVLRSGcZ4MOsWk+tf2roF1p8Vzey3qSyTwyDDBQEx G7HdwT0xXQacHnv7y/MbxxyhI4xIpViFz82DyMk9/StOijsuwd/MKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/2Q== --------------EZ7gOSE1wEjSw8UxfKYD5l0a--
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 30 Mar 2026 08:58:40 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Mar 30 04:58:39 2026 Received: from localhost ([127.0.0.1]:46391 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w78SB-0005xb-2A for submit <at> debbugs.gnu.org; Mon, 30 Mar 2026 04:58:39 -0400 Received: from mout.gmx.net ([212.227.17.22]:48171) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w78S3-0005uo-Ub for 80662 <at> debbugs.gnu.org; Mon, 30 Mar 2026 04:58:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1774861101; x=1775465901; i=rudalics@HIDDEN; bh=v/lhOIl327gx4jp5jOdCIyKASTGX/dYmt59pLVNcg08=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To: 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=WR7LbxtewtLdJVSOX7a6lcpfUAvRLzioIVovZ4wE6cMtvHj+fUcJJjCKHo62BEBK SVI/3/XLZ90jWJqguQ3u1SpyrP93vM+PYvvL/QjdrPzG88PGYftMxP1W3ZB+R2piX g0vDWEgazHiVKBb6btYN8yXHVW/VF+ZG5JDN20ZzKIZDkNXi6AGlcxKepD1YbWMZn ElGMHOGhYBtv3/goe9lStuh+5DI3ufLe2ixsdRY//gAN0L+hGumIAeYxTpqtt3MSa 4mqo4N75EwUV3BQ/GaqRd3095Q+ZeKvecsooFA9w2S+SMCVvSaWimFZFOhKC+36Fb 9dMYCJInqPkv46avuA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MRCKC-1vv5mT1bJk-00Wx4n; Mon, 30 Mar 2026 10:58:21 +0200 Message-ID: <47d052cc-1b15-4e94-91a2-4dbad94b0ef4@HIDDEN> Date: Mon, 30 Mar 2026 10:58:20 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 X-Provags-ID: V03:K1:R4LV8o5sNl0Sgztsx0jt8r7bQ9Zfrfy0TaUc4tn1+snu7f7pcWj i+EDM6GhmhFGXpJyO5qycxqPgAUF79vw63vsPGbcO6adlDr1dzEqvW4ptCViojCOSg8UWpY /wp7kqB7BIkuARFyIu1He+V27Wd6lbL5JSAh6fU9E7lvhmZHMcC62PJRja44+5tOcWMSLJ5 9yCVjPPlm5DKbIUnCD5Qw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:SwvNy8r9Z8s=;jckHg0S8WU6BT3r5f5QVVb7+qau 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 r6 X-Spam-Score: 1.3 (+) 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: >> IIUC all calls of x_clear_under_internal_border are guarded by >> >> if (FRAME_X_WINDOW (f)) >> >> We could move that check there. Would that suffice in your case? > > That doesn't seem to work be [...] Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.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] 1.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-accredit.habeas.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_H2 RBL: Average reputation (+2) [212.227.17.22 listed in wl.mailspike.net] X-Debbugs-Envelope-To: 80662 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.3 (/) ID4+IElJVUMgYWxsIGNhbGxzIG9mIHhfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIGFy ZSBndWFyZGVkIGJ5DQogPj4NCiA+PiBpZiAoRlJBTUVfWF9XSU5ET1cgKGYpKQ0KID4+DQog Pj4gV2UgY291bGQgbW92ZSB0aGF0IGNoZWNrIHRoZXJlLiAgV291bGQgdGhhdCBzdWZmaWNl IGluIHlvdXIgY2FzZT8NCiA+DQogPiBUaGF0IGRvZXNuJ3Qgc2VlbSB0byB3b3JrIGJlY2F1 c2Ugc29tZSBvZiBpdHMgdXNlcyByZXF1aXJlIGFuIGx2YWx1ZToNCiA+DQogPiB4Zm5zLmM6 IEluIGZ1bmN0aW9uIOKAmHhfd2luZG934oCZOg0KID4geGZucy5jOjQzMjU6MjI6IGVycm9y OiBsdmFsdWUgcmVxdWlyZWQgYXMgbGVmdCBvcGVyYW5kIG9mIGFzc2lnbm1lbnQNCiA+ICAg NDMyNSB8ICAgRlJBTUVfWF9XSU5ET1cgKGYpID0gWHRXaW5kb3cgKGZyYW1lX3dpZGdldCk7 DQogPiAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBeDQogPiB4Zm5zLmM6IEluIGZ1 bmN0aW9uIOKAmHhfY3JlYXRlX3RpcF9mcmFtZeKAmToNCiA+IHhmbnMuYzo4NjA0Ojc6IGVy cm9yOiBsdmFsdWUgcmVxdWlyZWQgYXMgbGVmdCBvcGVyYW5kIG9mIGFzc2lnbm1lbnQNCiA+ ICAgODYwNCB8ICAgICAgID0gWENyZWF0ZVdpbmRvdyAoRlJBTUVfWF9ESVNQTEFZIChmKSwN CiA+ICAgICAgICB8ICAgICAgIF4NCg0KSSdtIHRvbyBzaWxseSB0byB1bmRlcnN0YW5kLiAg RlJBTUVfWF9XSU5ET1cgc2hvdWxkIGNoZWNrIHdoZXRoZXIgYW4gWA0Kd2luZG93IGV4aXN0 cyBmb3IgdGhhdCBmcmFtZS4gIFlvdSBtZWFuIHRoYXQncyBub3QgZW5vdWdoLiAgUmlnaHQ/ DQoNCiA+IFRoZSAid3JvbmciIHJlbmRlcmluZyBvZiB0aGUgYm9yZGVyIGlzIHBhcnRzIG9m IGl0IGJlaW5nIG1pc3NpbmcgaW4NCiA+IHRoZSBhcmVhcyB3aGVyZSB0aGUgZnJhbWUgZ2Vv bWV0cnkgaGFzIGNoYW5nZWQgKGUuZy4gdGhlIGZyYW1lIGdvdA0KID4gd2lkZXIgb3IgdGFs bGVyIG9yIGJvdGgpLiBTbyBpdCdzIHByb2JhYmx5IG5ldyBjb250ZW50cyBkcmF3biBidXQg dGhlDQogPiBib3JkZXIgbm90IHJlZHJhd24uDQoNCldoYXQgaGFwcGVucyB3aXRob3V0IHRo ZSBiYWNrZ3JvdW5kIGNvbG9yPyAgVG8gYXZvaWQgbWlzc2luZyB0aGUgY2FzZQ0KdGhhdCBp dCBnZXRzIGRyYXduIG9uIHRvcCBvZiB0aGUgYm9yZGVycy4NCg0KID4gQW5kIEVtYWNzRnJh bWVSZXNpemUgaGFzIGFuIGNoYW5nZV9mcmFtZV9zaXplIGNhbGwgd2l0aG91dCBhDQogPiBj b3JyZXNwb25kaW5nIHhfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyLg0KDQpBbmQgaXQg ZG9lc24ndCBnYXJiYWdlIHRoZSBmcmFtZSBlaXRoZXIuICBCdXQgbm90ZSB0aGF0DQp1cGRh dGVfdmFyaW91c19mcmFtZV9zbG90cyBzZXRzIHVwIHRoZSBpbnRlcm5hbCBib3JkZXIgd2lk dGggc28gd2UNCnByb2JhYmx5IGNhbiBjbGVhciB1bmRlciBpdCBvbmx5IGFmdGVyIHRoYXQg aGFzIGJlZW4gZG9uZS4NCg0KID4gQnV0IGFsc28gaWYgd2UncmUgdGFsa2luZyBhYm91dCBy ZWRpc3BsYXlfaW50ZXJuYWwsIGl0IGhhcyBhIGNhbGwNCiA+DQogPiAgICAgICAgICAgICAg ICAgICAgICBGUkFNRV9SSUYgKGYpLT5jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKGYp Ow0KID4NCiA+IHdoaWNoIGNsb3NlbHkgaXMgZm9sbG93ZWQgYnkNCiA+DQogPiAgICAgICAg ICAgIHVwZGF0ZV9mcmFtZSAoZiwgZmFsc2UpOw0KID4NCiA+IHdoaWNoIHVwZGF0ZXMgdGhl IHdpbmRvd3MsIHBvc3NpYmx5IGRyYXdpbmcgb3ZlciB0aGUgYm9yZGVyIGFyZWEgYXMgd2Vs bD8NCiA+DQogPiBBbnl3YXksIEVtYWNzRnJhbWVSZXNpemUgaXMgY2FsbGVkIGJ5IENvbmZp Z3VyZU5vdGlmeSBwcm9jZXNzaW5nIHdoaWNoDQogPiBjYW4gaGFwcGVuIGFmdGVyLCBhbmQg aWYgdGhlIHNpemVzIGRvbid0IG1hdGNoLCB0aGUgYm9yZGVyIG1pZ2h0IGJlDQogPiBvdmVy d3JpdHRlbiBhZ2FpbiB3aXRob3V0IHRoZSBuZXcgY2FsbC4NCg0KQnV0IGlmIHlvdSBvbmx5 IG1ha2UgdGhlIGNoYW5nZSBpbiBFbWFjc0ZyYW1lUmVzaXplLCB0aGUgZmxpY2tlcmluZw0K c3RpbGwgcmVtYWlucy4gIFJpZ2h0Pw0KDQogPiBTbyB0aGUgY29kZSBsaWtlIHlvdSBkZXNj cmliZWQgKHF1ZXJ5aW5nIGZvciB0aGUgZnJhbWUgZGltZW5zaW9ucyBhbmQNCiA+IGFjdGlu ZyBvbiB0aGVtKSBtaWdodCBiZWhhdmUgaW5jb3JyZWN0bHkuDQoNCkRpZCBJIGRlc2NyaWJl IHRoYXQ/ICBXYWl0aW5nIGZvciBhIENvbmZpZ3VyZU5vdGlmeSBldmVudCBpcyBzdXBwb3Nl ZCB0bw0KY2F0Y2ggdHdvIGNhc2VzOg0KDQotIFRoZSB3aW5kb3cgbWFuYWdlciByZWZ1c2Vz IG91ciByZXF1ZXN0LCBzZW5kcyB1cyBvdGhlciBzaXplcyBhbmQgd2UNCiAgIGluc3RhbGwg dGhlbSBpbiByZWFjdGlvbiB0byB0aGUgQ29uZmlndXJlTm90aWZ5IGV2ZW50Lg0KDQotIFRo ZSB3aW5kb3cgbWFuYWdlciBkb2Vzbid0IHNlbmQgdXMgYSBDb25maWd1cmVOb3RpZnkgZXZl bnQgYXQgYWxsIHNvDQogICB3ZSBsZWF2ZSB0aGUgc2l6ZXMgYWxvbmUuDQoNClRoZSBmb3Jt ZXIgY2FzZSB3b3VsZCBiZSBoYW5kbGVkIGF1dG9tYXRpY2FsbHkgYXMgc29vbiBhcyB3ZSBy ZWNlaXZlIHRoZQ0KQ29uZmlndXJlTm90aWZ5IGV2ZW50LiAgVGhlIGxhdHRlciBjYXNlIGlz IHRoZSBwcm9ibGVtYXRpYyBvbmUgYW5kIHRvDQpoYW5kbGUgaXQgY29ycmVjdGx5IHdlIGFy ZSBub3QgYWxsb3dlZCB0byBwdXQgdGhlIHJlcXVlc3RlZCBzaXplcyBpbiBvdXINCmZyYW1l IHN0cnVjdHVyZSAtIHRoYXQgaXMgY2FsbCBjaGFuZ2VfZnJhbWVfc2l6ZSBpbW1lZGlhdGVs eS4gIEl0IG1lYW5zDQp0aGF0IExpc3AgY29kZSBzaW1wbHkgY2Fubm90IGV4cGVjdCB0aGUg cmVxdWVzdGVkIGZyYW1lIGFuZCBpbXBsaWNpdGx5DQp3aW5kb3cgc2l6ZXMgYmUgaW4gcGxh Y2UgcmlnaHQgYWZ0ZXIgYSAnc2V0LWZyYW1lLXNpemUnIGNhbGwuDQoNCk5vdyBJSVVDIHdp dGggcGd0ayB4Z19mcmFtZV9zZXRfY2hhcl9zaXplIGRvZXMgbm90IHdhaXQgZm9yIGENCkNv bmZpZ3VyZU5vdGlmeSBldmVudCBlaXRoZXIuICBNYXliZSBndGtfd2lkZ2V0X3F1ZXVlX3Jl c2l6ZSBoYW5kbGVzDQp0aGF0LiAgV2hhdCBkbyBJIGtub3cgLi4uDQoNCiA+IEkgZG9uJ3Qg a25vdyB0b28gbXVjaCBhYm91dCBzdWNoIGNvZGUgYWN0aW5nIG9uIHJlZ3VsYXIgZnJhbWUu IFdlDQogPiBjb3VsZCBleHBvc2UgeF93YWl0X2Zvcl9ldmVudCB0byBMaXNwLCBtYXliZSAo dGhlIG5ldyBmdW5jdGlvbiB3b3VsZA0KID4gdXNlIHNvbWUgInBlbmRpbmciIGZsYWcgdGhv dWdoLCBiZWNhdXNlIGNvZGUgY291bGQgY2FsbCBpdA0KID4gYXJiaXRyYXJpbHk7IG5vdCBz dXJlIGlmIGYtPm5ld19zaXplX3Agd291bGQgZml0KS4NCg0KVGhlIG5ld19zaXplIGZsYWdz IGlzIGludGVybmFsLiAgV2UgY291bGQgYWRkIGEgd2FpdGluZ19mb3JfY29uZmlndXJlZA0K ZmxhZyBmb3IgZWFjaCBmcmFtZSwgc2V0IGl0IHdoZW4gcmVxdWVzdGluZyBhIG5ldyBzaXpl IGFuZCByZXNldCBpdCBhcw0Kc29vbiBhcyBhIENvbmZpZ3VyZU5vdGlmeSBldmVudCBhcnJp dmVzIGZvciB0aGF0IGZyYW1lLiAgTGlzcCBjb2RlIHdvdWxkDQpoYXZlIHRvIGxvb3AgYXMg bG9uZyBhcyB0aGUgZmxhZyBpcyBzZXQuDQoNCk9uZSB0aGluZyBzdGlsbCBzdHVwZWZpZXMg bWU6IFdlIGFzayBmb3IgYSBzaXplIGNoYW5nZSBhbmQgd2FpdCB1bnRpbA0KdGhlIENvbmZp Z3VyZU5vdGlmeSBldmVudCBhcnJpdmVzLiAgQXBwYXJlbnRseSBpdCBkb2VzIGFycml2ZSBi ZWZvcmUgdGhlDQp0aW1lb3V0IGV4cGlyZXMgc2luY2UgdGhlIHNpemUgY2hhbmdlIGlzIGFw cGxpZWQuICBTbyBpbiBwcmluY2lwbGUgdGhlDQp0aW1lb3V0IHBlciBzZSBjYW5ub3QgYmUg dGhlIGN1bHByaXQgZm9yIHdoYXRldmVyIHlvdSBvYnNlcnZlIGFuZCB0aGUNCnByb2JsZW0g c2VlbXMgdG8gYmUgaW4gaG93IHdlIHJlZGlzcGxheSB0aGluZ3MgaW4gcmVhY3Rpb24gdG8g dGhlIHNpemUNCmNoYW5nZS4NCg0KTm93IGlmIHdlIHJlbW92ZSB0aGUgdGltZW91dCBmb3Ig Y2hpbGQgZnJhbWVzIGFzIHlvdSBwcm9wb3NlLCB0aGUNCmZvbGxvd2luZyBjb3VsZCBoYXBw ZW46IFdlIGxlYXZlIHRoZSBvbGQgc2l6ZXMgaW4gcGxhY2UsIGRvIGEgcmVkcmF3DQp3aXRo IHRoZSBvbGQgc2l6ZXMgYW5kIGRyYXcgdGhlIG9sZCBib3JkZXJzIGFjY29yZGluZyB0byB0 aGUgb2xkIHNpemVzLg0KVGhlbiB0aGUgQ29uZmlndXJlTm90aWZ5IGV2ZW50IGtpY2tzIGlu LCB3ZSBhcHBseSB0aGUgbmV3IHNpemVzIGFuZA0KcmVkcmF3IHRoZSBib3JkZXJzIGFnYWlu ICh0aGF0IGlzIHdlICJzaG91bGQiKS4gIElmIHJlZHJhd2luZyB0aGUgb2xkDQpib3JkZXJz IHN1Y2NlZWRzIGluIG1ha2luZyBpdCB0byB0aGUgZGlzcGxheSwgdGhpcyBjb3VsZCBleHBs YWluIHNvbWUNCmFydGlmYWN0cyB5b3Ugb2JzZXJ2ZS4gIEluIGVpdGhlciBjYXNlIEkgdGhp bmsgd2Ugc2hvdWxkIGZpcnN0IHRyeSB0bw0Kb25seSBjbGVhciB0aGUgYm9yZGVycyBpbiBF bWFjc0ZyYW1lUmVzaXplIGFuZCBsb29rIHdoZXRoZXIgdGhpcw0KYWxyZWFkeSBpbXByb3Zl cyB0aGUgYmVoYXZpb3IuDQoNCm1hcnRpbg0K
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 30 Mar 2026 05:09:49 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Mar 30 01:09:49 2026
Received: from localhost ([127.0.0.1]:43390 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1w74sm-0003LU-L7
for submit <at> debbugs.gnu.org; Mon, 30 Mar 2026 01:09:49 -0400
Received: from flow-a4-smtp.messagingengine.com ([103.168.172.139]:39539)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w74sj-0003Ks-3A
for 80662 <at> debbugs.gnu.org; Mon, 30 Mar 2026 01:09:46 -0400
Received: from phl-compute-09.internal (phl-compute-09.internal [10.202.2.49])
by mailflow.phl.internal (Postfix) with ESMTP id A93D213800E7;
Mon, 30 Mar 2026 01:09:39 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
by phl-compute-09.internal (MEProxy); Mon, 30 Mar 2026 01:09:39 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc
:content-transfer-encoding:content-type:content-type:date:date
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm3; t=1774847379;
x=1774854579; bh=fQYLdzPlBQdS/Kwl/DtdYixFK/cO+ICUjTJo8xzN9sM=; b=
ivvtezitvRxEbn3dV6//KA7KWFV4wR72OvKlJ3FJEuLfZF6LBkQ8fEni7sZOj85z
crf9J/+M62MwjbCto4pyCvLXPTMbtIgzgVfCbGeBLQiUH7JbT+UOAD6vg+7sCce7
c6Jcsz+8Kd4i7ngjO0e3Hpw7kMylPP+0EMJxiuFcRNWVNZssJd6Eys1zgucWqYUu
WWj6xJ1DHX/C7HPdpnBMWoCUqxEv7lCF36Udx1+GFJDM+n+Y1A3fti5HZFHe0wHq
9T1TB4CRBUmfQvFkBmGsSPwhgqJC6YzyEsbuBpJShFnjHukM9PKMy62oporgihYU
/+3HiYuKD+9mq2bZ4F2CBg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:content-transfer-encoding:content-type
:content-type:date:date:feedback-id:feedback-id:from:from
:in-reply-to:in-reply-to:message-id:mime-version:references
:reply-to:subject:subject:to:to:x-me-proxy:x-me-sender
:x-me-sender:x-sasl-enc; s=fm1; t=1774847379; x=1774854579; bh=f
QYLdzPlBQdS/Kwl/DtdYixFK/cO+ICUjTJo8xzN9sM=; b=h1QwALZYMOVCo4wsZ
BtMhyr+deKTGH/w4QzsoLalLZIhMcqKTgUTNi6/WKLwl9PenVQEvkKrkRLHl4qmA
svTQoROj1GfFSver+E6Cp4wZxm9WDzlrjpVySYuJVVjrLbpE+pJpwoQN90CfQHtT
vYadMBcwBOQppKDOmy60hdn6jw6h2D8fAJq+TxrqYggHg4GuBVHWE5sEBBQi9oKq
NYIvvFB/pEfAsyeyoDMlkkkfLzGoygl24yhq899ruai2KSnVUjWuhwR+D2xV0VkJ
cJANiQOQ9r+P2V9UIsa4eUGV3OmE2dKH4TrFIjmbes4136KfGn4OnR5Rlt9sfzu7
Q+juw==
X-ME-Sender: <xms:kwXKaW_xKQCRYiyQHYchLtr8apgVdlYmUvjICME1YWd-W6EwYkLBeg>
<xme:kwXKacslrW08wymSzCsLXhMFoAnMt_eaHEbxsbRCZ9xmPFMGqUf_c6EUoTKxTfg1R
0HHGzLZ-QkzKyL4MV7NuwbfBhaEuWLf09kz9cP8d2yebe4nBhaFxw>
X-ME-Received: <xmr:kwXKaZpvGlib50x8L92d6i9GhyfI-rFUNAV8C5cUBjGs-ZYEsLBSsuu-mCBdQuDBdg>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeffeektdelucetufdoteggodetrf
dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu
rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf
gurhepkfffgggfuffvfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhih
ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh
hnpeegueegteffuddvjeevvdelleeitdeftdduhfeffeffjedukeevjedvfeffgfevgeen
ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith
hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepvddpmhhouggvpehsmhhtphho
uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd
eiiedvseguvggssghughhsrdhgnhhurdhorhhg
X-ME-Proxy: <xmx:kwXKaZkpWNmS9cLwin4yawjGJ-xCcc_aQAfKjpk_e0YAf8C0sRFQWw>
<xmx:kwXKadypu7A9szNxuPXaCTmT1lzqXi4UgoyLw6y8SMlRdZP7mVKBVA>
<xmx:kwXKaRnm6tYXl8EG7q4LDehCLiFeGCWy_W0VyGh5peQ5Luk-GudV5w>
<xmx:kwXKaWchXzWvm-aLRHdI6WAxjCNljpUxWfchIA3WKaZjFVsEBKQxwA>
<xmx:kwXKaTT9B-wMHFE1colO2sS4-ysAKG4jztt-gAqB27PJlVIK-kpQEaMW>
Feedback-ID: i07de48aa:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon,
30 Mar 2026 01:09:38 -0400 (EDT)
Message-ID: <d807c85c-86e3-4a4f-959d-cfb5a7895a8a@HIDDEN>
Date: Mon, 30 Mar 2026 08:09:36 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN>
<73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN>
<abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN>
<d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN>
<a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN>
<a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN>
<d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN>
Content-Language: en-US
From: Dmitry Gutov <dmitry@HIDDEN>
In-Reply-To: <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: 1.3 (+)
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: On 26/03/2026 12:23, martin rudalics wrote: > > One remark
wrt set_window_size_and_position_skip_wait_for_event_v3.diff: > > In xg_frame_set_char_size
we have > > else if (FRAME_PARENT_FRAME (f) && [...]
Content analysis details: (1.3 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
1.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.
[103.168.172.139 listed in bl.score.senderscore.com]
-0.0 SPF_HELO_PASS SPF: HELO matches SPF record
-0.0 SPF_PASS SPF: sender matches SPF record
1.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.
[103.168.172.139 listed in sa-accredit.habeas.com]
-0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/,
low trust
[103.168.172.139 listed in list.dnswl.org]
X-Debbugs-Envelope-To: 80662
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.3 (/)
On 26/03/2026 12:23, martin rudalics wrote:
>
> One remark wrt set_window_size_and_position_skip_wait_for_event_v3.diff:
>
> In xg_frame_set_char_size we have
>
> else if (FRAME_PARENT_FRAME (f) && FRAME_VISIBLE_P (f))
> {
> was_visible = true;
>
> so this
>
> + if (FRAME_VISIBLE_P (f) && !was_visible && !FRAME_PARENT_FRAME (f))
>
> should have effect iff the child frame was invisible before. Right?
Yes, looks like this hunk doesn't help.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 30 Mar 2026 04:13:53 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Mar 30 00:13:53 2026
Received: from localhost ([127.0.0.1]:42784 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1w740e-0007DJ-NJ
for submit <at> debbugs.gnu.org; Mon, 30 Mar 2026 00:13:52 -0400
Received: from flow-a5-smtp.messagingengine.com ([103.168.172.140]:56053)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w740b-0007Cn-PW
for 80662 <at> debbugs.gnu.org; Mon, 30 Mar 2026 00:13:51 -0400
Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44])
by mailflow.phl.internal (Postfix) with ESMTP id DC1F31380348;
Mon, 30 Mar 2026 00:13:43 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
by phl-compute-04.internal (MEProxy); Mon, 30 Mar 2026 00:13:43 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc
:content-transfer-encoding:content-type:content-type:date:date
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm3; t=1774844023;
x=1774851223; bh=VksSVDzfss6LbhzfcGXyOlSXiuGueTJbrxBSFbmteVI=; b=
DmOfHK+UOBcmBI/4Lf4EEuAjkTo4IKgCqoSy0EsJGdzEGmzYWwzmzixgwk2etTDF
7bVflD5BMRspPzZfgscK+m+PcwWQf3vyqcBvRSGZp0K9thkyirq5+ywso4Ffd+PL
zQZ/fjxp62Dj4IK5o5yb9FfCDUwSY91K2NH20ojEDHcaxdA8LAaeRMxa6S4mRwPB
onQzgzNUMoMxkjdGwMs9mH0zZN7Ei60qw0exL+lokakyw2dHN28Tjm0YRkWavYKz
TxvgMA3EiPZbt9TATZwVJETxQbKhzunwGgWZfPRWE/pQWOVZ8geWL69zf9sxPQT/
hCn6UVjcd22zUWL74uC1ag==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:content-transfer-encoding:content-type
:content-type:date:date:feedback-id:feedback-id:from:from
:in-reply-to:in-reply-to:message-id:mime-version:references
:reply-to:subject:subject:to:to:x-me-proxy:x-me-sender
:x-me-sender:x-sasl-enc; s=fm1; t=1774844023; x=1774851223; bh=V
ksSVDzfss6LbhzfcGXyOlSXiuGueTJbrxBSFbmteVI=; b=n7hPG+uic6H4XB/qj
c4ePWAhi//4RFTHH5U9M8ud6W0MQv8lIdHNCDGOkXiGf4lBhcp2PThvRAymq6Bl5
moUdIrQFR+r4JKBk9I8h1sVTIyjFwAwC2TfR1INXg2J/66NyJFCV6IstujvYEkb4
vjpSMNYV4xmb95LWSYsdrn0iJxaAYIlNErqkT2S1JP2H5LGYCkzx1MguOky55wvI
thrX4SYlAO3Oe3eClXV4Z+jGfejc92fyaX3RsiZteoUA1HGjLlTrjOmh2BPoxrEC
7TDodMnK+UgQzXembVGqpm2m/twOz6Fqsb1EZrBWC3ur4S/AH2Ouc1Kmg6Y6tc6v
5tzTA==
X-ME-Sender: <xms:d_jJafN0LuVwh2GkPfOXur7Frc23KxoooocYHPj93I-Mgc6B3YpuAQ>
<xme:d_jJaf-8cbQ3qRk1Rd3UsjiPmk8TCMNfc1l8V_ZvA8_V0Vpn5fhDPriy_OE7D0dQB
FZoUv7kBvKkV3yCLJw66iBmW6Dg2UmBDTEzcs44-Fw1OHNIYqnr9NqI>
X-ME-Received: <xmr:d_jJab6Il5VKiPzSoG1g8yehmTt8W7kZf01HNarz3zjDf3HnDR6slN2sreW3go5ApQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeffeejleekucetufdoteggodetrf
dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu
rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf
gurhepkfffgggfuffhvfhfjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhih
ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh
hnpeeileevhffhvdehveduleduheeiieekfeetvdfgledugfehudeikefgudffjeffieen
ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith
hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepvddpmhhouggvpehsmhhtphho
uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd
eiiedvseguvggssghughhsrdhgnhhurdhorhhg
X-ME-Proxy: <xmx:d_jJae01YtFA8GRUS26lv9qi7Ws5c2_UL_P_UNSE4AgJEdCjniqz6g>
<xmx:d_jJaaBhhomabBVYCtZxDfvMplQrWjcN92cjh1ZAKSQsHFJO3gyvfg>
<xmx:d_jJaY08Bad2l-_9q0G3rKbAHa81s112Z1Dslfe4nqePFC7es26zaQ>
<xmx:d_jJacsoMsUJmBHEgv05zeH1JHWpDN59lHuRkD9K84n77-b4sDeryQ>
<xmx:d_jJaUjGxxA_UbYuR5lOYz1J5ws8lEOj79iehNjhHoIp-dXBOGsLUpoJ>
Feedback-ID: i07de48aa:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon,
30 Mar 2026 00:13:42 -0400 (EDT)
Message-ID: <bf70fd09-6bbe-46fe-93df-7238fce36495@HIDDEN>
Date: Mon, 30 Mar 2026 07:13:40 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
From: Dmitry Gutov <dmitry@HIDDEN>
To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN>
<73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN>
<abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN>
<d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN>
<a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN>
<a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN>
<d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN>
<0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN>
<9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN>
<2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN>
Content-Language: en-US
In-Reply-To: <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: 1.3 (+)
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: On 30/03/2026 05:24, Dmitry Gutov wrote: > IIUC the reason
not to do that for regular frames (not child frames) is > that a window manager
can block or alter a resize. Comment by Jan Djärv in gtkutil.c:1329-1334
talks about that, I think.
Content analysis details: (1.3 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
1.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.
[103.168.172.140 listed in sa-accredit.habeas.com]
-0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/,
low trust
[103.168.172.140 listed in list.dnswl.org]
1.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.
[103.168.172.140 listed in bl.score.senderscore.com]
-0.0 SPF_HELO_PASS SPF: HELO matches SPF record
-0.0 SPF_PASS SPF: sender matches SPF record
X-Debbugs-Envelope-To: 80662
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.3 (/)
On 30/03/2026 05:24, Dmitry Gutov wrote:
> IIUC the reason not to do that for regular frames (not child frames) is
> that a window manager can block or alter a resize.
Comment by Jan Djärv in gtkutil.c:1329-1334 talks about that, I think.
I wonder if the meaning was only aimed at GTK port.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 30 Mar 2026 02:24:16 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 29 22:24:15 2026
Received: from localhost ([127.0.0.1]:41306 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1w72IZ-0006eS-3I
for submit <at> debbugs.gnu.org; Sun, 29 Mar 2026 22:24:15 -0400
Received: from flow-a1-smtp.messagingengine.com ([103.168.172.136]:41251)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w72IV-0006e3-Nb
for 80662 <at> debbugs.gnu.org; Sun, 29 Mar 2026 22:24:13 -0400
Received: from phl-compute-05.internal (phl-compute-05.internal [10.202.2.45])
by mailflow.phl.internal (Postfix) with ESMTP id 06AD2138029A;
Sun, 29 Mar 2026 22:24:06 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
by phl-compute-05.internal (MEProxy); Sun, 29 Mar 2026 22:24:06 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc
:content-transfer-encoding:content-type:content-type:date:date
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm3; t=1774837446;
x=1774844646; bh=6Bapac8dXcmxoh1LHNvyfF73YujAcZtX5oZf/jRFfGI=; b=
MZEi0enrdjkMCYQvvaHUZMajbTKQJJmSDcOxTvnWRvdauhIt7FDF/yHjApOcxbM6
MThx8i2CMhtnJxqsZhNRt9HE/LbM2i6VRQ25xHo/ETE1fAqzslJe9OIYY7aqFxz0
DWdiVFnBNq2b64NwmzbKeEQzsk5ir9Hs5IYEpU+tfiLgKNm1b5BVrRlHhJNvYDDe
VOpf1HDZjEt+f6SBGA3xOElihzq+bbHFYJzziDNh9mUPs9yN2wIPC8RH5LGs//3Q
zrqkjF+pjR2/3pk/VpwvuwMt2FlT7m3vKbRXAYSDRj+lWOVQdNo83Uu+jJgzexzN
jrl/xE+wO8D1p/8/nriQCg==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:content-transfer-encoding:content-type
:content-type:date:date:feedback-id:feedback-id:from:from
:in-reply-to:in-reply-to:message-id:mime-version:references
:reply-to:subject:subject:to:to:x-me-proxy:x-me-sender
:x-me-sender:x-sasl-enc; s=fm1; t=1774837446; x=1774844646; bh=6
Bapac8dXcmxoh1LHNvyfF73YujAcZtX5oZf/jRFfGI=; b=wmpaS3vHurp/qd+X1
f/fGv8GNWJccMiIaIZ3sJj3TiG907lx7oiWz9PAYU1k1zm7BaJnuMSQSTNo4Nb/B
FsYzhywRqNUfceJII9OOlTiJYLv7S4V3q6zI3jhxasO95RBpxlu1arAPcgsOcVv8
4emj0oiOm/4s4Cl4tS7d9Ys50J04zwiQFatsrJDWyTwrrueFZO9RojQJDjdCIg9a
2M+fl3oIUD8VoUEniuR2VKkzVwjHtW0CQYXpLWlh/J9d1hT69ULIXPU1UrnjDi6n
o1pv3BwYztGUGOGeD7NNeuKX/viTYkv6yzoFPF5Yj86OiAwVDSyZFOPA+mQGYUWg
P9OSQ==
X-ME-Sender: <xms:xd7JaYP5pnIhgKmKD8aRL7RqnWYg8z0wkHYQQpG4o5oYDtCpIZj6Wg>
<xme:xd7JaU-Om0yLWoVvV4NjXt5mDn4DYeVqm3xEwxr7mhqXWDAxBBeq4LxmRLibaOixF
Vn-R9KMSakNPohOSc2ac93HaCnp9iRVPCH7Hc7GrZHox_95Q0DiqQk>
X-ME-Received: <xmr:xd7Jac6HM0dje_8wAsKD-PwQV67IUBhln-AkaeMWGYz6os0CyUbU1pTsmY8NF2k>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeffeejjeeiucetufdoteggodetrf
dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu
rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf
gurhepkfffgggfuffvfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhih
ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh
hnpeegueegteffuddvjeevvdelleeitdeftdduhfeffeffjedukeevjedvfeffgfevgeen
ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith
hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepvddpmhhouggvpehsmhhtphho
uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd
eiiedvseguvggssghughhsrdhgnhhurdhorhhg
X-ME-Proxy: <xmx:xd7Jab0vtppAcTfvJz9Ur1wDwOq3h81U6FBZ2PAkfomam1Fq6SGgJg>
<xmx:xd7JaTCfeGD76B-7EEVkcePIA586xKDywZQmanrC0Opa0IsLkOlDKg>
<xmx:xd7Jad3SOHCjDpI67S63JuXtIlB9dPd6zVrKC6Z_TLm4bo_jmD9mQQ>
<xmx:xd7JadsI9bpNyCfdONbzdIKodcsQ45U2D-RHSjh-wC3imbUogBX3gA>
<xmx:xt7JaRhrKROkHryrAZpe-NG0MRYS3mPFjlR4t5KtKDWocCo5khgdeIJS>
Feedback-ID: i07de48aa:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun,
29 Mar 2026 22:24:04 -0400 (EDT)
Message-ID: <2d2443b4-9029-4e9e-b833-85809fe75f79@HIDDEN>
Date: Mon, 30 Mar 2026 05:24:03 +0300
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN>
<73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN>
<abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN>
<d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN>
<a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN>
<a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN>
<d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN>
<0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN>
<9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN>
Content-Language: en-US
From: Dmitry Gutov <dmitry@HIDDEN>
In-Reply-To: <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: 1.3 (+)
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: On 29/03/2026 11:47, martin rudalics wrote: > >> > so see
the added check in the > >> > middle of x_clear_under_internal_border as
well. I wonder if > there is > >> > a cleaner way to verify the same thing
(that the graphics context is > [...]
Content analysis details: (1.3 points, 10.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
-0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/,
low trust
[103.168.172.136 listed in list.dnswl.org]
-0.0 SPF_HELO_PASS SPF: HELO matches SPF record
-0.0 SPF_PASS SPF: sender matches SPF record
1.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.
[103.168.172.136 listed in bl.score.senderscore.com]
1.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.
[103.168.172.136 listed in sa-trusted.bondedsender.org]
X-Debbugs-Envelope-To: 80662
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.3 (/)
On 29/03/2026 11:47, martin rudalics wrote:
> >> > so see the added check in the
> >> > middle of x_clear_under_internal_border as well. I wonder if
> there is
> >> > a cleaner way to verify the same thing (that the graphics context is
> >> > ready/available).
>
> IIUC all calls of x_clear_under_internal_border are guarded by
>
> if (FRAME_X_WINDOW (f))
>
> We could move that check there. Would that suffice in your case?
That doesn't seem to work because some of its uses require an lvalue:
xfns.c: In function ‘x_window’:
xfns.c:4325:22: error: lvalue required as left operand of assignment
4325 | FRAME_X_WINDOW (f) = XtWindow (frame_widget);
| ^
xfns.c: In function ‘x_create_tip_frame’:
xfns.c:8604:7: error: lvalue required as left operand of assignment
8604 | = XCreateWindow (FRAME_X_DISPLAY (f),
| ^
> > Somehow that's not enough. Until I added the call to EmacsFrameResize,
> > the borders were getting out of date. Possibly because of the events
> > being skipped, I suppose.
>
> Just trying to understand - I don't know whether you can answer this at
> all: Is this an "old" border that still shows up over new frame contents
> or a "new" border showing up over stale frame contents? Just take
> x_change_tool_bar_height as an example: there we first call
> adjust_frame_size (which gets us the usual delay when waiting for the
> WM) and then, after garbaging the frame, we call
> x_clear_under_internal_border. Maybe that's conceptually wrong.
The "wrong" rendering of the border is parts of it being missing in the
areas where the frame geometry has changed (e.g. the frame got wider or
taller or both). So it's probably new contents drawn but the border not
redrawn.
And EmacsFrameResize has an change_frame_size call without a
corresponding x_clear_under_internal_border.
But also if we're talking about redisplay_internal, it has a call
FRAME_RIF (f)->clear_under_internal_border (f);
which closely is followed by
update_frame (f, false);
which updates the windows, possibly drawing over the border area as well?
Anyway, EmacsFrameResize is called by ConfigureNotify processing which
can happen after, and if the sizes don't match, the border might be
overwritten again without the new call.
> >> If that were the only reason ... We could easily constrain the effect
> >> to the one single case where we change the default font on KDE.
> >
> > Maybe that case doesn't even reproduce on the more recent versiosn of
> KDE or fvwm.
>
> It would be easy to test by setting the default timeout to zero and
> waiting for complaints.
>
> > I've thought about something like that too. Not sure how to resolve
> > that - but I guess we should save the new dimensions before the update
> > to be available to Lisp code. And yet do any other updates that we
> > can, asynchronously.
>
> If we set the timeout to zero, the new sizes are _not_ in place. So we
> can (1) set the default timeout to zero and (2) call change_frame_size
> immediately so the new sizes are in place.
IIUC the reason not to do that for regular frames (not child frames) is
that a window manager can block or alter a resize. I quoted etc/PROBLEMS
for a reference about ConfigureNotify never arriving, but
ConfigureNotify arriving with a different size seems like a regular
enough scenario. Correct me if I'm wrong, though.
So the code like you described (querying for the frame dimensions and
acting on them) might behave incorrectly.
I don't know too much about such code acting on regular frame. We could
expose x_wait_for_event to Lisp, maybe (the new function would use some
"pending" flag though, because code could call it arbitrarily; not sure
if f->new_size_p would fit).
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 29 Mar 2026 08:47:35 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 29 04:47:35 2026 Received: from localhost ([127.0.0.1]:58953 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w6lny-0005tj-JE for submit <at> debbugs.gnu.org; Sun, 29 Mar 2026 04:47:35 -0400 Received: from mout.gmx.net ([212.227.17.21]:55523) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w6lnw-0005tG-4v for 80662 <at> debbugs.gnu.org; Sun, 29 Mar 2026 04:47:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1774774045; x=1775378845; i=rudalics@HIDDEN; bh=Dnc8cNbHfx47wxLwpAtBuRDgl8F8+EOFo20YDYn74Ps=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To: 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=bG2b/p7IDyej7Pc1Ze9fVYuJsUUTXxBGU3cP0yJtMbWD4z/Yxs/Ufd1K0dALxb56 5H7Y+6gtDwkNIB1hTvE51oL5tScWfKjT725i+EqkgkcXNdgPG8/KIOdp0e5VKoPQj mKuDkDavWN1480c/ouWwRCr0kbuC5h7hpNaLeKNiHRisCis8OOvk2D/whyXtgDtso F+QoDyifwMUGWrEttGj93Iac0BKK0Y/bbgh7hpmtPp+byituPgKDksC/Jc8g3UZEn bitaB4EQr9zJ68uAkRhTXiGc3kW0fub1Kk6RLwWCKvBxgCRFnYH5Y7oq+VOZxz4Gf bYycpKoeWHBFIUDGlw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MG9g4-1wIr9l2NrQ-008ink; Sun, 29 Mar 2026 10:47:25 +0200 Message-ID: <9d6d317f-af34-4322-a6ac-eea62b3aa76b@HIDDEN> Date: Sun, 29 Mar 2026 10:47:24 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN> <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:MJYL5cMBOIWRBf8sI30NTFrJjr8lz9B5lNPIKLRb4MLaPBNgpJb neI+lXrejOX7oKZggBFMei88WUr9AaqpkMX16VKEqJg1wEkuxIPyR6fyQ2MB2cfV3jjWFfo ysr7SZMkOG+8hsLhyRPY2IUU7L/rXq3BEmpoFgA6wVmnMhQir+5WAUPzNncZpkhBBAX/nAf KDMNwtwi5we7gdBFcec9Q== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:3HoQ0NEa6Uc=;rnF4hIyS4Qzt4GKJ07bzzomv2rG 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 BK X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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 (-) >> In an initial call, I presume. Can you identify the offending call of >> EmacsFrameResize? Maybe we can exclude it by other means. > > Seems so: > > (gdb) backtrace > #0 XSetForeground (dpy=dpy@entry=0x555555c68350, gc=gc@entry=0x0, foreground=16777215) at ../../src/SetFore.c:39 > #1 0x0000555555699292 in x_clear_under_internal_border (f=f@entry=0x555556a67508) at xterm.c:7729 > #2 0x000055555581d514 in EmacsFrameResize (widget=0x555555be0790) at widget.c:424 > #3 0x00007ffff7cddb4b in XtDispatchEventToWidget (widget=widget@entry=0x555555be0790, event=event@entry=0x7fffffffc7a0) at ../../src/Event.c:927 > #4 0x00007ffff7ce61d3 in _XtDefaultDispatcher (event=0x7fffffffc7a0) at ../../src/Event.c:1381 > #5 0x00007ffff7cde159 in XtDispatchEvent (event=event@entry=0x7fffffffc7a0) at ../../src/Event.c:1480 > #6 0x00005555556a82ec in handle_one_xevent > (dpyinfo=dpyinfo@entry=0x555555c8bb80, event=event@entry=0x7fffffffc7a0, finish=finish@entry=0x7fffffffc79c, hold_quit=hold_quit@entry=0x7fffffffc8a0) at xterm.c:25564 > #7 0x00005555556b3e7d in XTread_socket (terminal=<optimized out>, hold_quit=0x7fffffffc8a0) at xterm.c:25726 > #8 0x00005555556e23d1 in gobble_input () at keyboard.c:8102 > #9 0x00005555556e50a5 in handle_async_input () at keyboard.c:8356 > #10 process_pending_signals () at keyboard.c:8370 > #11 unblock_input_to (level=0) at keyboard.c:8385 > #12 unblock_input_to (level=<optimized out>) at keyboard.c:8379 > #13 unblock_input () at keyboard.c:8404 > #14 0x00005555556b8531 in setup_xi_event_mask (f=f@entry=0x555556a67508) at xfns.c:4165 > #15 0x00005555556c4498 in x_window (window_prompting=<optimized out>, f=0x555556a67508) at xfns.c:4424 > #16 Fx_create_frame (parms=XIL(0x5555569e9873)) at xfns.c:5315 > #17 0x00005555557b69ae in exec_byte_code (fun=<optimized out>, args_template=<optimized out>, nargs=<optimized out>, args=<optimized out>) at /home/dgutov/vc/emacs-master/src/lisp.h:2226 > #18 0x000055555576b5cd in Ffuncall (nargs=nargs@entry=2, args=args@entry=0x7ffff1bff238) at eval.c:3184 > #19 0x000055555576bc42 in Fapply (nargs=2, args=0x7ffff1bff238) at eval.c:2798 > #20 0x00005555557b69ae in exec_byte_code > >> > so see the added check in the >> > middle of x_clear_under_internal_border as well. I wonder if there is >> > a cleaner way to verify the same thing (that the graphics context is >> > ready/available). IIUC all calls of x_clear_under_internal_border are guarded by if (FRAME_X_WINDOW (f)) We could move that check there. Would that suffice in your case? > No, both of my complaints (1 - showing stale contents, 2 - doing a > two-step- update) were showing up before I added the border to the > frame. The border just makes them easier to see. OK. > Somehow that's not enough. Until I added the call to EmacsFrameResize, > the borders were getting out of date. Possibly because of the events > being skipped, I suppose. Just trying to understand - I don't know whether you can answer this at all: Is this an "old" border that still shows up over new frame contents or a "new" border showing up over stale frame contents? Just take x_change_tool_bar_height as an example: there we first call adjust_frame_size (which gets us the usual delay when waiting for the WM) and then, after garbaging the frame, we call x_clear_under_internal_border. Maybe that's conceptually wrong. >> If that were the only reason ... We could easily constrain the effect >> to the one single case where we change the default font on KDE. > > Maybe that case doesn't even reproduce on the more recent versiosn of KDE or fvwm. It would be easy to test by setting the default timeout to zero and waiting for complaints. > I've thought about something like that too. Not sure how to resolve > that - but I guess we should save the new dimensions before the update > to be available to Lisp code. And yet do any other updates that we > can, asynchronously. If we set the timeout to zero, the new sizes are _not_ in place. So we can (1) set the default timeout to zero and (2) call change_frame_size immediately so the new sizes are in place. martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 28 Mar 2026 11:33:04 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sat Mar 28 07:33:04 2026
Received: from localhost ([127.0.0.1]:44726 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1w6RuZ-0006ZS-Jy
for submit <at> debbugs.gnu.org; Sat, 28 Mar 2026 07:33:04 -0400
Received: from fhigh-b7-smtp.messagingengine.com ([202.12.124.158]:43669)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w6RuW-0006Yf-EZ
for 80662 <at> debbugs.gnu.org; Sat, 28 Mar 2026 07:33:01 -0400
Received: from phl-compute-01.internal (phl-compute-01.internal [10.202.2.41])
by mailfhigh.stl.internal (Postfix) with ESMTP id 5FADE7A011F;
Sat, 28 Mar 2026 07:32:54 -0400 (EDT)
Received: from phl-frontend-04 ([10.202.2.163])
by phl-compute-01.internal (MEProxy); Sat, 28 Mar 2026 07:32:54 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc
:content-transfer-encoding:content-type:content-type:date:date
:from:from:in-reply-to:in-reply-to:message-id:mime-version
:references:reply-to:subject:subject:to:to; s=fm3; t=1774697574;
x=1774783974; bh=nVKbKUYGGnSs40wx8MzxsXgwaaaBxZKEoFRAkZxK/Nc=; b=
XFHwnXp8Ko0feqWQG64tNXwgiqnuTl0Q+Jo5rpCxyM8VojlBljSl9ar+Fet1nFs6
cZ4PdJZuVX88gp4TVof5qIVRECSe8XtE6GYCysukhmIu3At8J7k7keMWs7OvA/jK
5MKT/629fFHlePxHQ4c1LgRsXoSa3ru3YP0YAownBIqi6dHEOaIScFfLJfMlsGgs
J/jZizfXt5wDrDmKo3Hjf/vTVjbsJVwcJd3VC+vFzVhOIdyQHpHOFBfzpzQVdBlO
XVHdjXYRlaH70Nh/vaQhPqyHNpm7YYkqrgHIU29T5PuT4n0h4O0z9iWSqfxAzTCO
7ejRhwnFitBi6o1jjjV8ng==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:content-transfer-encoding:content-type
:content-type:date:date:feedback-id:feedback-id:from:from
:in-reply-to:in-reply-to:message-id:mime-version:references
:reply-to:subject:subject:to:to:x-me-proxy:x-me-sender
:x-me-sender:x-sasl-enc; s=fm1; t=1774697574; x=1774783974; bh=n
VKbKUYGGnSs40wx8MzxsXgwaaaBxZKEoFRAkZxK/Nc=; b=MwEGarTx6JICRBm8y
xIpjuBKrYl/LhEkr7UVeZQT4hSqc24VCtvJ1TEtqfU1TopQlZQ4j9Ar/D6XMvpzH
tOXh0hJ+WfByaYLSp6bmjOtPc3sLVSVc6u1c8i04ikZ8crPKfIAMaFg/6sK1bhwt
s3VesE2neUju5RzUQuxyZIKsDzLp72see9rqOR8xvWXJ67p/N8Lft0+ZLmMqznpW
uAjLo75UZPcVYDXDKuHMFub6mqwuSdP4Kaib9KSwLZRh/5BpC0udPci+P8Zws3cZ
EldIjXmaQGkZy+fkkBb/5CvnMGWHNa38626wLVIMWw+gbpk3V/9aaO8rZoH4B9Vq
T5zRg==
X-ME-Sender: <xms:ZbzHaYUmxLuj5L0mQKN0zUKnuBABZJ5UvEZbyLlWd4_WHNpn9pXrWQ>
<xme:ZbzHaczaBDoywMg7aiDlbNyNCC8AmzsLJFF00IMhPuL_IPDqj8ichFD_HLXoZbAxF
SYUijR3InwAZt7sZM6MUmOM9gA1XPCrpJg3BBycBxnTbEDhVWaQ56U>
X-ME-Received: <xmr:ZbzHaeO5jtTFNlu-0lqgGDkXpmJXgES4RnSqFcuYUYy4M4s6LiR7wuBBerTiM1au-11xRQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdeffeeftdeiucetufdoteggodetrf
dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu
rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf
gurhepkfffgggfuffvfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhih
ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh
hnpeegueegteffuddvjeevvdelleeitdeftdduhfeffeffjedukeevjedvfeffgfevgeen
ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith
hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepvddpmhhouggvpehsmhhtphho
uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd
eiiedvseguvggssghughhsrdhgnhhurdhorhhg
X-ME-Proxy: <xmx:ZbzHaV6V0dytrhD6YisEtE1FI7duN4jUyAldLv8mTAmifh_GsWE9_A>
<xmx:ZbzHaXP4riVEK-POfHLDH5XkbOlyingopHKL8vGu3z1WbkbF9O8FPw>
<xmx:ZbzHabnNT97rI-kYtjoj41S8M_zzI8Nbve2ET-w0Qfd57sXp8UhNNQ>
<xmx:ZbzHaWTFLCEgsa0buABOeKDGwlZAvG9wpfVnwEerjYfri_8d6M7pcA>
<xmx:ZrzHaSioxgpL0JJ3Mvyy1Y6c6_BGNq0Od0WdMmFr-Y044dtt5wCEKJHL>
Feedback-ID: i07de48aa:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sat,
28 Mar 2026 07:32:53 -0400 (EDT)
Message-ID: <0c9b1426-9fed-4890-a37a-dc5d411ad2a3@HIDDEN>
Date: Sat, 28 Mar 2026 13:32:51 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN>
<73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN>
<abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN>
<d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN>
<a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN>
<a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN>
<d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN>
Content-Language: en-US
From: Dmitry Gutov <dmitry@HIDDEN>
In-Reply-To: <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80662
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 (-)
On 26/03/2026 12:23, martin rudalics wrote:
> > Except it starts to segfault sometimes,
>
> In an initial call, I presume. Can you identify the offending call of
> EmacsFrameResize? Maybe we can exclude it by other means.
Seems so:
(gdb) backtrace
#0 XSetForeground (dpy=dpy@entry=0x555555c68350, gc=gc@entry=0x0,
foreground=16777215) at ../../src/SetFore.c:39
#1 0x0000555555699292 in x_clear_under_internal_border
(f=f@entry=0x555556a67508) at xterm.c:7729
#2 0x000055555581d514 in EmacsFrameResize (widget=0x555555be0790) at
widget.c:424
#3 0x00007ffff7cddb4b in XtDispatchEventToWidget
(widget=widget@entry=0x555555be0790, event=event@entry=0x7fffffffc7a0)
at ../../src/Event.c:927
#4 0x00007ffff7ce61d3 in _XtDefaultDispatcher (event=0x7fffffffc7a0) at
../../src/Event.c:1381
#5 0x00007ffff7cde159 in XtDispatchEvent
(event=event@entry=0x7fffffffc7a0) at ../../src/Event.c:1480
#6 0x00005555556a82ec in handle_one_xevent
(dpyinfo=dpyinfo@entry=0x555555c8bb80,
event=event@entry=0x7fffffffc7a0, finish=finish@entry=0x7fffffffc79c,
hold_quit=hold_quit@entry=0x7fffffffc8a0) at xterm.c:25564
#7 0x00005555556b3e7d in XTread_socket (terminal=<optimized out>,
hold_quit=0x7fffffffc8a0) at xterm.c:25726
#8 0x00005555556e23d1 in gobble_input () at keyboard.c:8102
#9 0x00005555556e50a5 in handle_async_input () at keyboard.c:8356
#10 process_pending_signals () at keyboard.c:8370
#11 unblock_input_to (level=0) at keyboard.c:8385
#12 unblock_input_to (level=<optimized out>) at keyboard.c:8379
#13 unblock_input () at keyboard.c:8404
#14 0x00005555556b8531 in setup_xi_event_mask (f=f@entry=0x555556a67508)
at xfns.c:4165
#15 0x00005555556c4498 in x_window (window_prompting=<optimized out>,
f=0x555556a67508) at xfns.c:4424
#16 Fx_create_frame (parms=XIL(0x5555569e9873)) at xfns.c:5315
#17 0x00005555557b69ae in exec_byte_code (fun=<optimized out>,
args_template=<optimized out>, nargs=<optimized out>, args=<optimized
out>) at /home/dgutov/vc/emacs-master/src/lisp.h:2226
#18 0x000055555576b5cd in Ffuncall (nargs=nargs@entry=2,
args=args@entry=0x7ffff1bff238) at eval.c:3184
#19 0x000055555576bc42 in Fapply (nargs=2, args=0x7ffff1bff238) at
eval.c:2798
#20 0x00005555557b69ae in exec_byte_code
> > so see the added check in the
> > middle of x_clear_under_internal_border as well. I wonder if there is
> > a cleaner way to verify the same thing (that the graphics context is
> > ready/available).
>
> Given how often it's consulted already in our code base.
>
> > If I explicitly set the parameter(s) to 0, then the border is not shown.
>
> I meant do all those strange artifacts during resizing and moving the
> child frame show up when you remove the border? WOW is the presence of
> the internal border the only cause of all these effects?
No, both of my complaints (1 - showing stale contents, 2 - doing a
two-step- update) were showing up before I added the border to the
frame. The border just makes them easier to see.
> >> > And we also call x_set_window_size_and_position inside
> >> > x_set_window_size_and_position.
> >>
> >> How comes? I don't see that.
> >
> > Sorry, we call x_clear_under_internal_border inside
> x_set_window_size_and_position (wrong copy-paste). And we call it in
> ConfigureNotify handlers. That's the double update I was thinking of.
> >
> > But I'm not seeing any improvement from removing the former call.
>
> IIUC we should x_clear_under_internal_border as soon as possible - that
> is, when _we_ decide to resize the frame. Doing it in ConfigureNotify
> should only handle the case where the user resizes/moves the frame and
> the WM gets back to us.
Somehow that's not enough. Until I added the call to EmacsFrameResize,
the borders were getting out of date. Possibly because of the events
being skipped, I suppose.
> > There is this text in etc/PROBLEMS from 20 years ago...
> >
> > This has been reported for fvwm 2.2.5 and the window manager of KDE
> > 2.1. The reason for the pause is Xt waiting for a ConfigureNotify
> > event from the window manager, which the window manager doesn't send.
> > Xt stops waiting after a default timeout of usually 5 seconds.
>
> If that were the only reason ... We could easily constrain the effect
> to the one single case where we change the default font on KDE.
Maybe that case doesn't even reproduce on the more recent versiosn of
KDE or fvwm.
> > Something like deferring both the adjust_frame_size and
> > x_clear_under_internal_border calls until a ConfigureNotify event is
> > received (asynchronously). Maybe SET_FRAME_GARBAGED call too.
>
> The problem here is that Lisp code might want to change the frame size
> and proceed with the new sizes of the frame's windows right away. How
> would we resolve that? It's told here in xg_frame_set_char_size:
>
> /* We can not call change_frame_size for a mapped frame,
> we can not set pixel width/height either. The window manager may
> override our resize request, XMonad does this all the time.
> The best we can do is try to sync, so lisp code sees the updated
> size as fast as possible.
> For unmapped windows, we can set rows/cols. When
> the frame is mapped again we will (hopefully) get the correct
> size. */
>
> I obviously agree that we should never wait, even for top-level frames.
> Lisp code that works correctly iff a frame has a specific size is
> conceptually wrong. But some code might install the part that reacts to
> size changes right after requesting an initial size of the frame. For
> example, it might call 'set-frame-width' and 'frame-pixel-width' right
> after that to ensure that its idea of the initial size coincides with
> what the WM concedes us. And then base some kind of decisions on what
> it requested and what 'frame-pixel-width' reported.
I've thought about something like that too. Not sure how to resolve that
- but I guess we should save the new dimensions before the update to be
available to Lisp code. And yet do any other updates that we can,
asynchronously.
> One remark wrt set_window_size_and_position_skip_wait_for_event_v3.diff:
>
> In xg_frame_set_char_size we have
>
> else if (FRAME_PARENT_FRAME (f) && FRAME_VISIBLE_P (f))
> {
> was_visible = true;
>
> so this
>
> + if (FRAME_VISIBLE_P (f) && !was_visible && !FRAME_PARENT_FRAME (f))
>
> should have effect iff the child frame was invisible before. Right?
Probably, yes. It was one of the two checks in GTK port. I can try
without that piece of change and see whether that makes a difference.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 26 Mar 2026 10:24:14 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Thu Mar 26 06:24:14 2026
Received: from localhost ([127.0.0.1]:39122 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1w5hsr-0006e0-BF
for submit <at> debbugs.gnu.org; Thu, 26 Mar 2026 06:24:14 -0400
Received: from mout.gmx.net ([212.227.17.21]:42299)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w5hsk-0006cS-Pp
for 80662 <at> debbugs.gnu.org; Thu, 26 Mar 2026 06:24:09 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1774520640; x=1775125440; i=rudalics@HIDDEN;
bh=xTuZT7o0OXhZSyGmGThRIdZE0SUFmR2Y7H7bvtdlCvU=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:
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=gOFOYIixPOBpokrg/41gcSDASXZ8U0le+Ms/m9QUm5j/sNLtQDpTO4XeWjmjs2T7
twDcR740YujKYk6+6yTIrQaUttjtuRvhZtFSr9hOVXmfF1EUgqZ43nS6G9De9PaKh
ftwfXcUgBFQPguvR7ljFmma1T7qyMywcQo56E9bl52TaCkmgerrzbqMIM+q5z+dra
H50t7ccKQJRAXMlBQ7faIuR2R6f3oS8dF9CBdlTTzx4I/twtJ+GHXrOKcckyr++al
afLrrZrFRxnTHMlDvKPh7QhMCJWJHXdjjzOUaQq3QKTsGaiG2iWmmHZ29ppro3U5N
l5E9YkJHxIUbbzf55g==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from client.hidden.invalid by mail.gmx.net (mrgmx104
[212.227.17.168]) with ESMTPSA (Nemesis) id 1MG9g4-1wK3My0rMK-008avN; Thu, 26
Mar 2026 11:24:00 +0100
Message-ID: <d8af87ea-ded7-472e-b86a-084c9539bdf6@HIDDEN>
Date: Thu, 26 Mar 2026 11:23:59 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN>
<73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN>
<abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN>
<d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN>
<a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN>
<a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:0D1j0GLfUw8iB5oNq/llH/xVfmGWgJ+qFGdPXSs+4vaHvGrC15E
dzqB6uLqftBaN8MhJtL0BKEMN1OS4JO5bAvQguD6pwGpJVY1flVu8gVO7PWg5xb/JIX25gJ
zruH06BdaynlQdOYjVVvrFdr0GHUw9OHuV5zA0y1NOBEVCqJyje5gzgh+7IKfegTEBNWmrB
LRvxeidY5kDNCTqqUx4JA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:SgRtRsWPhMg=;nl1GpPGBeazMmC2+MzYqi44U0j7
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
3b
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80662
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 (-)
> Except it starts to segfault sometimes,
In an initial call, I presume. Can you identify the offending call of
EmacsFrameResize? Maybe we can exclude it by other means.
> so see the added check in the
> middle of x_clear_under_internal_border as well. I wonder if there is
> a cleaner way to verify the same thing (that the graphics context is
> ready/available).
Given how often it's consulted already in our code base.
> If I explicitly set the parameter(s) to 0, then the border is not shown.
I meant do all those strange artifacts during resizing and moving the
child frame show up when you remove the border? WOW is the presence of
the internal border the only cause of all these effects?
>> > And we also call x_set_window_size_and_position inside
>> > x_set_window_size_and_position.
>>
>> How comes? I don't see that.
>
> Sorry, we call x_clear_under_internal_border inside x_set_window_size_and_position (wrong copy-paste). And we call it in ConfigureNotify handlers. That's the double update I was thinking of.
>
> But I'm not seeing any improvement from removing the former call.
IIUC we should x_clear_under_internal_border as soon as possible - that
is, when _we_ decide to resize the frame. Doing it in ConfigureNotify
should only handle the case where the user resizes/moves the frame and
the WM gets back to us.
> There is this text in etc/PROBLEMS from 20 years ago...
>
> This has been reported for fvwm 2.2.5 and the window manager of KDE
> 2.1. The reason for the pause is Xt waiting for a ConfigureNotify
> event from the window manager, which the window manager doesn't send.
> Xt stops waiting after a default timeout of usually 5 seconds.
If that were the only reason ... We could easily constrain the effect
to the one single case where we change the default font on KDE.
> Hm, okay. Then I guess the main thing to check is that the buffer text
> fits in the specified frame sizes without wrapping - that would change
> it away from the intended shape.
FWIW it never wrapped here.
> Do you mean turning off double buffering in the parent frame? The child frame already has it off.
I forgot or didn't notice.
> Something like deferring both the adjust_frame_size and
> x_clear_under_internal_border calls until a ConfigureNotify event is
> received (asynchronously). Maybe SET_FRAME_GARBAGED call too.
The problem here is that Lisp code might want to change the frame size
and proceed with the new sizes of the frame's windows right away. How
would we resolve that? It's told here in xg_frame_set_char_size:
/* We can not call change_frame_size for a mapped frame,
we can not set pixel width/height either. The window manager may
override our resize request, XMonad does this all the time.
The best we can do is try to sync, so lisp code sees the updated
size as fast as possible.
For unmapped windows, we can set rows/cols. When
the frame is mapped again we will (hopefully) get the correct size. */
I obviously agree that we should never wait, even for top-level frames.
Lisp code that works correctly iff a frame has a specific size is
conceptually wrong. But some code might install the part that reacts to
size changes right after requesting an initial size of the frame. For
example, it might call 'set-frame-width' and 'frame-pixel-width' right
after that to ensure that its idea of the initial size coincides with
what the WM concedes us. And then base some kind of decisions on what
it requested and what 'frame-pixel-width' reported.
One remark wrt set_window_size_and_position_skip_wait_for_event_v3.diff:
In xg_frame_set_char_size we have
else if (FRAME_PARENT_FRAME (f) && FRAME_VISIBLE_P (f))
{
was_visible = true;
so this
+ if (FRAME_VISIBLE_P (f) && !was_visible && !FRAME_PARENT_FRAME (f))
should have effect iff the child frame was invisible before. Right?
martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 25 Mar 2026 16:06:03 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 25 12:06:03 2026 Received: from localhost ([127.0.0.1]:54055 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w5Qk7-00036H-DE for submit <at> debbugs.gnu.org; Wed, 25 Mar 2026 12:06:03 -0400 Received: from fhigh-b6-smtp.messagingengine.com ([202.12.124.157]:38893) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w5Qk5-00035o-B7 for 80662 <at> debbugs.gnu.org; Wed, 25 Mar 2026 12:06:02 -0400 Received: from phl-compute-03.internal (phl-compute-03.internal [10.202.2.43]) by mailfhigh.stl.internal (Postfix) with ESMTP id 8670B7A02E8; Wed, 25 Mar 2026 12:05:55 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-03.internal (MEProxy); Wed, 25 Mar 2026 12:05:55 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1774454755; x=1774541155; bh=YAOol5/zOc LO+e/HaYYfkuCOlRw9MisC0iGDtda3DJE=; b=N1bdTQx6TR3Cp1oro/OvPvLzwZ pWOpveDVOsON7c6GVsBgJ8QAKyipdRSR6zUXTFmC2ZnmZD+H+D5ueU3oicQ2A+eS 2MveQnoC9tMwkc12YAhTMCrvcNKXv68P04GqE6d0QjwoQUwVGWlVyAMxk8leioDq tuV59pClIengrZhVdO3XhHo17IL2IKJeVv1PWbG2b5GWeMXtSr8q5z8hA07cFHot ijkDZ9QGyNMolAwGFHC5SMz1C+iXfwTORYLQNcreOz+PXqoGbaIa3QVJFpaUM9HE nB34akXOMAU0L8Ol3rvW+0NlEpQYFsmFD5THQ1wr4BnwH3B6Ep8Gd4Ol6ieg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1774454755; x=1774541155; bh=YAOol5/zOcLO+e/HaYYfkuCOlRw9MisC0iG Dtda3DJE=; b=cGZVh/Yh9fw2q8jg7GHloy5T6Gt/aHTpg5HzI35KQSZ5uPPw7w1 DbUEiB8k9+3CIPpEXmHQxPZX7M7zDwar4t8qmdhNl8FKa6VfCJPPeWy5L5o0XUrG u1xO8U5eGDOgpF92N4cjmMafnDKwTUxNwedn14YNyKwaEP2e3qxmkmR2sbN9f5pX x0F6jWRMn74s8Dha5bpwzwjEZ3kxwsi4OGlqcLwfA4p2XVUVe0dcV+/JzMO49tCb ICF7RoYmhBszO9AuplBQ4VFGERuKOIMeDmHwbXeHdYMPLHPh4oOE6L8FSmJpd9KX Zbg032dMOED8f0OoJqjSpgUJIIydbE+6NKA== X-ME-Sender: <xms:4wfEacQJqp4dJaIN3PgB0iuu2w3mzPu3_mooxEf9rtYhuD871NnkRg> <xme:4wfEafzfbyQvtxkMXporkmnuZ5DhQlmFq2SmdcSBQEmaf0HNNq4j1VXKuaIWNEilR gmVY3mUgC9ujmqkrQj-Ctx312wbqMuzIjqRmDwJRGC75alfz5C_ccw> X-ME-Received: <xmr:4wfEaXe8dz9n8iwjtnPLWzC5AI1T0oLBOWUqFhVAxy6y1aXcbWEygUIz2xa8JC4i6HX8gg> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdegledtucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurheptgfkffggfgfuhffvfhgjsehmtderredtvdejnecuhfhrohhmpeffmhhithhrhicu ifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrthhtvghrnh eptdehfeekledugfettdefudeuueettddvvddvgfdvueeigeegudevleefvdevudegnecu vehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepughmihhtrh ihsehguhhtohhvrdguvghvpdhnsggprhgtphhtthhopedvpdhmohguvgepshhmthhpohhu thdprhgtphhtthhopehruhgurghlihgtshesghhmgidrrghtpdhrtghpthhtohepkedtie eivdesuggvsggsuhhgshdrghhnuhdrohhrgh X-ME-Proxy: <xmx:4wfEabJx3LCIJ7A_Qq7WNT3vGF7ldA9uq4E7YVGVoSzonHzLAPBd3Q> <xmx:4wfEaYHS4HFoytS2pnEaAYkW0z3Chru_OIm_uZwbO9GZ6nDziBdzRA> <xmx:4wfEaVpyXQSHnJ0eAhWipDMEgaixHCxmMfvpiVvNeh7j8FuU6zoh7A> <xmx:4wfEaRQ_EyPJjUEtveZhreN4RSP5exbnCQ0UqdkK7mzUu6RllBj0fQ> <xmx:4wfEaaatYYLML7HLqfHQ7SZ3UWAcb1SlgtN2uzBwvQFYJGkssG8ivtHs> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 25 Mar 2026 12:05:53 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------67KDz7cHQqC30gO6Vg3zNZpS" Message-ID: <6aaa9db7-95bf-4542-be89-afb637d1517b@HIDDEN> Date: Wed, 25 Mar 2026 18:05:51 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step From: Dmitry Gutov <dmitry@HIDDEN> To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> Content-Language: en-US In-Reply-To: <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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. --------------67KDz7cHQqC30gO6Vg3zNZpS Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 25/03/2026 17:48, Dmitry Gutov wrote: > > See the updated change in the attachment. And also I added a !FRAME_PARENT_FRAME check to x_set_window_size_1 in that patch for a faster update in this operation too. The gtk3 build seems to benefit from that as well. --------------67KDz7cHQqC30gO6Vg3zNZpS Content-Type: text/x-patch; charset=UTF-8; name="set_window_size_and_position_skip_wait_for_event_v3.diff" Content-Disposition: attachment; filename="set_window_size_and_position_skip_wait_for_event_v3.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9ndGt1dGlsLmMgYi9zcmMvZ3RrdXRpbC5jCmluZGV4IGIwMWJi NjgwNGVkLi5mN2NiYzIyZDdhNCAxMDA2NDQKLS0tIGEvc3JjL2d0a3V0aWwuYworKysgYi9z cmMvZ3RrdXRpbC5jCkBAIC0xMzMzLDcgKzEzMzMsNyBAQCB4Z19mcmFtZV9zZXRfY2hhcl9z aXplIChzdHJ1Y3QgZnJhbWUgKmYsIGludCB3aWR0aCwgaW50IGhlaWdodCkKICAgICAgc2l6 ZSBhcyBmYXN0IGFzIHBvc3NpYmxlLgogICAgICBGb3IgdW5tYXBwZWQgd2luZG93cywgd2Ug Y2FuIHNldCByb3dzL2NvbHMuICBXaGVuCiAgICAgIHRoZSBmcmFtZSBpcyBtYXBwZWQgYWdh aW4gd2Ugd2lsbCAoaG9wZWZ1bGx5KSBnZXQgdGhlIGNvcnJlY3Qgc2l6ZS4gICovCi0gIGlm IChGUkFNRV9WSVNJQkxFX1AgKGYpICYmICF3YXNfdmlzaWJsZSkKKyAgaWYgKEZSQU1FX1ZJ U0lCTEVfUCAoZikgJiYgIXdhc192aXNpYmxlICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKGYp KQogICAgIHsKICAgICAgIGlmIChDT05TUCAoZnJhbWVfc2l6ZV9oaXN0b3J5KSkKIAlmcmFt ZV9zaXplX2hpc3RvcnlfZXh0cmEKQEAgLTE0MzIsNyArMTQzMiw3IEBAIHhnX2ZyYW1lX3Nl dF9zaXplX2FuZF9wb3NpdGlvbiAoc3RydWN0IGZyYW1lICpmLCBpbnQgd2lkdGgsIGludCBo ZWlnaHQpCiAgIFNFVF9GUkFNRV9HQVJCQUdFRCAoZik7CiAgIGNhbmNlbF9tb3VzZV9mYWNl IChmKTsKIAotICBpZiAoRlJBTUVfVklTSUJMRV9QIChmKSkKKyAgaWYgKEZSQU1FX1ZJU0lC TEVfUCAoZikgJiYgIUZSQU1FX1BBUkVOVF9GUkFNRSAoZikpCiAgICAgewogICAgICAgLyog TXVzdCBjYWxsIHRoaXMgdG8gZmx1c2ggb3V0IGV2ZW50cyAqLwogICAgICAgKHZvaWQpZ3Rr X2V2ZW50c19wZW5kaW5nICgpOwpkaWZmIC0tZ2l0IGEvc3JjL3dpZGdldC5jIGIvc3JjL3dp ZGdldC5jCmluZGV4IGU3NjdiMDA2ZTNmLi5lNzRkYWZlYmYxNyAxMDA2NDQKLS0tIGEvc3Jj L3dpZGdldC5jCisrKyBiL3NyYy93aWRnZXQuYwpAQCAtNDMxLDYgKzQzMSw4IEBAIEVtYWNz RnJhbWVSZXNpemUgKFdpZGdldCB3aWRnZXQpCiAgIGNoYW5nZV9mcmFtZV9zaXplIChmLCBl dy0+Y29yZS53aWR0aCwgZXctPmNvcmUuaGVpZ2h0LAogCQkgICAgIGZhbHNlLCB0cnVlLCBm YWxzZSk7CiAKKyAgeF9jbGVhcl91bmRlcl9pbnRlcm5hbF9ib3JkZXIgKGYpOworCiAgIGlm IChnZXRfd21fc2hlbGwgKHdpZGdldCkpCiAgICAgdXBkYXRlX3dtX2hpbnRzIChnZXRfd21f c2hlbGwgKHdpZGdldCksIGV3KTsKICAgdXBkYXRlX3ZhcmlvdXNfZnJhbWVfc2xvdHMgKGV3 KTsKZGlmZiAtLWdpdCBhL3NyYy94Zm5zLmMgYi9zcmMveGZucy5jCmluZGV4IDMzZWM4MzEy Y2I1Li44N2NlM2FmMzBkNyAxMDA2NDQKLS0tIGEvc3JjL3hmbnMuYworKysgYi9zcmMveGZu cy5jCkBAIC00NDgzLDcgKzQ0ODMsNyBAQCB4X3dpbmRvdyAoc3RydWN0IGZyYW1lICpmKQog CiAgIGF0dHJpYnV0ZXMuYmFja2dyb3VuZF9waXhlbCA9IEZSQU1FX0JBQ0tHUk9VTkRfUElY RUwgKGYpOwogICBhdHRyaWJ1dGVzLmJvcmRlcl9waXhlbCA9IGYtPm91dHB1dF9kYXRhLngt PmJvcmRlcl9waXhlbDsKLSAgYXR0cmlidXRlcy5iaXRfZ3Jhdml0eSA9IE5vcnRoV2VzdEdy YXZpdHk7CisgIGF0dHJpYnV0ZXMuYml0X2dyYXZpdHkgPSBTdGF0aWNHcmF2aXR5OwogICBh dHRyaWJ1dGVzLmJhY2tpbmdfc3RvcmUgPSBOb3RVc2VmdWw7CiAgIGF0dHJpYnV0ZXMuc2F2 ZV91bmRlciA9IFRydWU7CiAgIGF0dHJpYnV0ZXMuZXZlbnRfbWFzayA9IFNUQU5EQVJEX0VW RU5UX1NFVDsKZGlmZiAtLWdpdCBhL3NyYy94dGVybS5jIGIvc3JjL3h0ZXJtLmMKaW5kZXgg ZGZjMGFlODA0ZTIuLmI1NmViNWEyOGJlIDEwMDY0NAotLS0gYS9zcmMveHRlcm0uYworKysg Yi9zcmMveHRlcm0uYwpAQCAtNzcyMyw2ICs3NzIzLDkgQEAgeF9jbGVhcl91bmRlcl9pbnRl cm5hbF9ib3JkZXIgKHN0cnVjdCBmcmFtZSAqZikKIAkgIERpc3BsYXkgKmRpc3BsYXkgPSBG UkFNRV9YX0RJU1BMQVkgKGYpOwogCSAgR0MgZ2MgPSBmLT5vdXRwdXRfZGF0YS54LT5ub3Jt YWxfZ2M7CiAKKwkgIGlmICghZ2MpCisJICAgIHJldHVybjsKKwogCSAgWFNldEZvcmVncm91 bmQgKGRpc3BsYXksIGdjLCBjb2xvcik7CiAJICB4X2ZpbGxfcmVjdGFuZ2xlIChmLCBnYywg MCwgbWFyZ2luLCB3aWR0aCwgYm9yZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg IGYtPmJvcmRlcnNfcmVzcGVjdF9hbHBoYV9iYWNrZ3JvdW5kKTsKQEAgLTI4NTAxLDcgKzI4 NTA0LDcgQEAgeF9zZXRfd2luZG93X3NpemVfMSAoc3RydWN0IGZyYW1lICpmLCBib29sIGNo YW5nZV9ncmF2aXR5LAogICAvKiBCdXQgdGhlIENvbmZpZ3VyZU5vdGlmeSBtYXkgaW4gZmFj dCBuZXZlciBhcnJpdmUsIGFuZCB0aGVuIHRoaXMgaXMKICAgICAgbm90IHJpZ2h0IGlmIHRo ZSBmcmFtZSBpcyB2aXNpYmxlLiAgSW5zdGVhZCB3YWl0ICh3aXRoIHRpbWVvdXQpCiAgICAg IGZvciB0aGUgQ29uZmlndXJlTm90aWZ5LiAgKi8KLSAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAo ZikpCisgIGlmIChGUkFNRV9WSVNJQkxFX1AgKGYpICYmICFGUkFNRV9QQVJFTlRfRlJBTUUg KGYpKQogICAgIHsKICAgICAgIHhfd2FpdF9mb3JfZXZlbnQgKGYsIENvbmZpZ3VyZU5vdGlm eSk7CiAKQEAgLTI4NTc2LDcgKzI4NTc5LDcgQEAgeF9zZXRfd2luZG93X3NpemVfYW5kX3Bv c2l0aW9uXzEgKHN0cnVjdCBmcmFtZSAqZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogCiAg IFNFVF9GUkFNRV9HQVJCQUdFRCAoZik7CiAKLSAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAoZikp CisgIGlmIChGUkFNRV9WSVNJQkxFX1AgKGYpICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKGYp KQogICAgIHhfd2FpdF9mb3JfZXZlbnQgKGYsIENvbmZpZ3VyZU5vdGlmeSk7CiAgIGVsc2UK ICAgICAvKiBDYWxsIGFkanVzdF9mcmFtZV9zaXplIHJpZ2h0IGF3YXkgYXMgd2l0aCBHVEsu ICBJdCBtaWdodCBiZQo= --------------67KDz7cHQqC30gO6Vg3zNZpS--
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 25 Mar 2026 15:48:35 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 25 11:48:35 2026 Received: from localhost ([127.0.0.1]:53873 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w5QTB-0001pD-TN for submit <at> debbugs.gnu.org; Wed, 25 Mar 2026 11:48:35 -0400 Received: from fhigh-b6-smtp.messagingengine.com ([202.12.124.157]:33225) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w5QT8-0001om-Ve for 80662 <at> debbugs.gnu.org; Wed, 25 Mar 2026 11:48:32 -0400 Received: from phl-compute-11.internal (phl-compute-11.internal [10.202.2.51]) by mailfhigh.stl.internal (Postfix) with ESMTP id C45427A0416; Wed, 25 Mar 2026 11:48:24 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-11.internal (MEProxy); Wed, 25 Mar 2026 11:48:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1774453704; x=1774540104; bh=N1UHe4bx1A qwqBvKo27gO4QzOsTxy8yp3MNiWDG5G6U=; b=FBaVSEXrbVlM6Qb9dpYRgdeBQD gS06pGHWeuqUUqXxRhDNce0Q0orQPOPORahZGMNlg2Sz+kMPwcFdRXC1ZBrelhkt kacLcQMpD4raWYRnTnNXkx/3ocDQqD4JKygOkFihLSIc8E7OhqQF1ru8i2Am95o9 kmKV2Prru0VxjutQNIRWI0huC2wbt4u0EA98iTYgXgXFrmxmLHtoXqNi0mRk7E1r Y8KrFhkNPSr0/rESXkcj9JrDkvTk46XNMcKdYZNt54TFPdBnN2+Voz3AmgEj9AM0 46tl2PNTPcrkKDE0OD6TZAV57+jAM5xfZ6eC4ehEdC6Z1voBJwFZIMP5tvnA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1774453704; x=1774540104; bh=N1UHe4bx1AqwqBvKo27gO4QzOsTxy8yp3MN iWDG5G6U=; b=ro5GAbO2IKwx1wpA2T+lmTH9Qa3v3lX88GJ+vA5fmn1QZlNhgXS OjyXpE1GOwKd67DvACa+/oxPsnwfIcM1tQouqmXUlPd3Zx3XjIdM1Jcrkhzf29qi Z74AVbd2SSHg5f8TPDwaIYgA/fGiN3BU9W7hH8wVmspGF9WHCOGTSVKC1sXBjNx2 Nq6dSjd+4NC9DuivuSl0btE6FzX3H7FDGbRT6SHKO9UTaEqAXVTaUmMHM+/D4SzY bk7HZz++eoijtGISgYqhSAOul44fPAQgQBSrusbMRinP63ntdh3aaFXzvCVOnyM3 ySmicYd/5GNorLqppeVw6MS1M7Nj0GA5R5w== X-ME-Sender: <xms:yAPEaa9d-JJ1OoKcwQ89Ynog7GdJSWQlXsmyYSR57ERzqzhCjAXJNg> <xme:yAPEaQu90q8y1IjEubYqodnisTC0F1p57J5HtIyKDjJoeseBFXhsMwxfB7UwcbDcB Sm9etSMMw5BCUoYo5otcaNzgxotd0ozt6_fe794tmHnEX_YkVTJUwk> X-ME-Received: <xmr:yAPEadpV_zbwsA27IyfxcxpHJDMKSEb3tDmGiBU-7FtUsyg0G57d028ElZPV5c85NfjixA> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdegkeeiucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurheptgfkffggfgfuvfhfhfgjsehmtderredtvdejnecuhfhrohhmpeffmhhithhrhicu ifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrthhtvghrnh epkefhieejheehjefhhefhuddvteettedvgeelteeigeelueegheffueffleduvdffnecu vehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepughmihhtrh ihsehguhhtohhvrdguvghvpdhnsggprhgtphhtthhopedvpdhmohguvgepshhmthhpohhu thdprhgtphhtthhopehruhgurghlihgtshesghhmgidrrghtpdhrtghpthhtohepkedtie eivdesuggvsggsuhhgshdrghhnuhdrohhrgh X-ME-Proxy: <xmx:yAPEadmyqyrvXHwbHj9FAaODTsCjFA9XXprW8HZtrhxfIHVy1Tj0Rg> <xmx:yAPEaRyanGVO9R4HnYdSiEkagJ7N1fOgfhwJfe9e8pZjr-XrctKGjA> <xmx:yAPEaVmxiu2usgGNl5BzDV_sAZrAY8dlZngeCBIgdVeg4BFRG2UYFw> <xmx:yAPEaacrBEc-QetFhPw3OK8qgmRaPNwUdG2J0xuwPzLgpUFx1obcUw> <xmx:yAPEaYm0WPQUOM_h98WjCPauYrPbEJC1_JHLv-5ajN-mCSm_KAmTZgtt> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed, 25 Mar 2026 11:48:23 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------TZVIilCssP9KJk9Smi6jbe3R" Message-ID: <a7d61a76-7764-4e94-8574-1d3bcf4e6e57@HIDDEN> Date: Wed, 25 Mar 2026 17:48:20 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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. --------------TZVIilCssP9KJk9Smi6jbe3R Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 25/03/2026 10:53, martin rudalics wrote: > > Motif is fine: I just usually don't test it, but in most related > issues it shares behavior with Lucid (and in this one too, just verified). > > I see. > > > The no-toolkit build is different: binding x-wait-for-event-timeout to > > nil doesn't work as a fix with it either. Apparently it does some part > > of the update more immediately than the others? The result being that > > skipping of event doesn't help. > > This might be a clue but I have no idea how to use it. Your earlier bit > gravity change affected the non-toolkit build as well I think? Right. The StaticGravity -> NorthWestGravity change. And if I undo that, the no-toolkit works better. It seems that the effect of *not* moving the bitmap in any direction before the next consistent update actually looks good in practice: you get just one repaint in that area (in the best case) instead of two. Alas the same change in EmacsFrameRealize doesn't do much (the outdated contents don't seem to get displayed anyways). For for the borders, things get better if I add a x_clear_under_internal_border call to it. Except it starts to segfault sometimes, so see the added check in the middle of x_clear_under_internal_border as well. I wonder if there is a cleaner way to verify the same thing (that the graphics context is ready/available). See the updated change in the attachment. > > ConfigureNotify handlers between no-toolkit and Lucid/Motif are > > different enough: no-toolkit calls x_clear_under_internal_border there > > (xterm.c:21638; the gtk3 build does that too actually) but Lucid/Motif > > call EmacsFrameResize which does not call > > x_clear_under_internal_border. > > x_clear_under_internal_border becomes a NOOP when there's no internal > border. So whatever strange things you observe with it should not > happen without it. So does removing the > > (internal-border-width . 2) > > change anything in the behaviors for the various builds? If so, we > maybe clear too often or in the wrong places. I haven't tested all the options, but from what I see the border defaults to 1. Meaning that if I just comment out those frame parameters in the script, as long as (set-face-background 'child-frame-border "dark green" child) is performed, the green border is there. If I explicitly set the parameter(s) to 0, then the border is not shown. > > And we also call x_set_window_size_and_position inside > > x_set_window_size_and_position. > > How comes? I don't see that. Sorry, we call x_clear_under_internal_border inside x_set_window_size_and_position (wrong copy-paste). And we call it in ConfigureNotify handlers. That's the double update I was thinking of. But I'm not seeing any improvement from removing the former call. > > Maybe that alone could create the > > double update? IIUC we do that because we think that the > > ConfigureNotify event delivery is not guaranteed. I wonder if it an > > issue that could be limited to some platforms or specific scenarios. > > I think we wait for the ConfigureNotify for the sole reason to continue > running ordinary Lisp code with the new sizes reliably in place. That > is, if the WM decides to not comply to the new sizes, we are informed > immediately and change our frame and its window sizes right before we > continue with the calling Lisp code. If there are other reasons, I > don't know them. There is this text in etc/PROBLEMS from 20 years ago... This has been reported for fvwm 2.2.5 and the window manager of KDE 2.1. The reason for the pause is Xt waiting for a ConfigureNotify event from the window manager, which the window manager doesn't send. Xt stops waiting after a default timeout of usually 5 seconds. > > The shrinking is the > > > > (set-face-attribute 'default nil :height 50) > > > > > in the new test script, you probably evaled it already. I just meant > > that in my configuration 'emacs -Q' starts with default face's height > > 128, so for the updated test script to be compatible it has to include > > an explicit face height value. > > I just want to inform you that I had to remove that for testing. Hm, okay. Then I guess the main thing to check is that the buffer text fits in the specified frame sizes without wrapping - that would change it away from the intended shape. > >> > The idea is not to have the boxes overlap - in this scenario the > >> > transition happens between two boxes that have no intersection on > the > >> > screen, so I think what we see is the resize-and-move transition > >> > happening in two steps: first the frame then the contents. > >> > >> Do you mean that XMoveResizeWindow does not get called in > >> x_set_window_size_and_position_1? > > > > It does get called - I think the issue is in how the X server, or our > > window setup, is handling it. It looks like the frame getting moved > > and then resizes, but probably because we display outdated content to > > the window manager, or otherwise haven't redisplayed the new buffer > > contents. But this is finicky: the frame resize is asynchronous, and > > we can't really force redisplay before it happens either, because then > > (I tested) we will see the "new" contents blink at the old position, > > before the move-resize happens. > > So maybe it is a double-buffering issue. Maybe, except inhibit-double-buffering is on in the child frame, and if I comment that out, rendering devolves into artefacty mess much quicker. But conceptually, this does seems like a problem which could be fixed using double buffering. > >> This one is strange. The green border is shown only for the very first > >> initial child frame. Subsequent steps don't exhibit it here. > > > > You don't see it at all afterwards? The border looks mostly fine to me > > across toolkits even in the "buggy" scenario (it's only missing along > > the edges where the dimensions of the child frame changed), and the > > "fixed" behavior with the patch applied has it rendering fine. > > Here the initial child frame fills the entire parent frame because you > don't give it initial geometry parameters. That initial frame shows the > green border. In all subsequent steps that border is no more present. Okay, the initial state is something random. But the border is shown in all subsequent steps here. > > If we're talking about the videos and not how these scenarios play out > > on your machine, then *-36.webm has many of similar frames. > > I understand that these are asynchronous wrt what Emacs draws. Do you mean the actual frame updates? The video seems to match what happens on the screen quite well. > > The one > > you show has the yellow background, but at different times the > > background would be white at the same place. Or the bottom popup would > > have an incomplete border, or it would have a blank space at its > > position. > > This is one interpretation. But it hints at clearing the internal > border getting through in some way. The problem here might be with > show_back_buffer. What if you turn double buffering off? Do the > various intermediate resizing artifacts disappear (with the obvious > handicap that flickering increases)? Do you mean turning off double buffering in the parent frame? The child frame already has it off. > > It would be nice if we could ultimately decide that we don't need the > > "is it child frame" check because every 'if' creates a larger testable > > surface. > > Wouldn't setting 'x-wait-for-event-timeout' to some non-float value do > that? As a means to do that - yes. But is it actually a good idea in all cases. > > Or if we could structure the fix in a more async way, relying on > > events more instead of skipping the wait (I wonder if it will > > necessarily mean a slower UI update). > > What to you mean here? Something like deferring both the adjust_frame_size and x_clear_under_internal_border calls until a ConfigureNotify event is received (asynchronously). Maybe SET_FRAME_GARBAGED call too. --------------TZVIilCssP9KJk9Smi6jbe3R Content-Type: text/x-patch; charset=UTF-8; name="set_window_size_and_position_skip_wait_for_event_v2.diff" Content-Disposition: attachment; filename="set_window_size_and_position_skip_wait_for_event_v2.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9ndGt1dGlsLmMgYi9zcmMvZ3RrdXRpbC5jCmluZGV4IGIwMWJi NjgwNGVkLi4yODlmYmMwZWM5MyAxMDA2NDQKLS0tIGEvc3JjL2d0a3V0aWwuYworKysgYi9z cmMvZ3RrdXRpbC5jCkBAIC0xNDMyLDcgKzE0MzIsNyBAQCB4Z19mcmFtZV9zZXRfc2l6ZV9h bmRfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQog ICBTRVRfRlJBTUVfR0FSQkFHRUQgKGYpOwogICBjYW5jZWxfbW91c2VfZmFjZSAoZik7CiAK LSAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAoZikpCisgIGlmIChGUkFNRV9WSVNJQkxFX1AgKGYp ICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKGYpKQogICAgIHsKICAgICAgIC8qIE11c3QgY2Fs bCB0aGlzIHRvIGZsdXNoIG91dCBldmVudHMgKi8KICAgICAgICh2b2lkKWd0a19ldmVudHNf cGVuZGluZyAoKTsKZGlmZiAtLWdpdCBhL3NyYy93aWRnZXQuYyBiL3NyYy93aWRnZXQuYwpp bmRleCBlNzY3YjAwNmUzZi4uZTc0ZGFmZWJmMTcgMTAwNjQ0Ci0tLSBhL3NyYy93aWRnZXQu YworKysgYi9zcmMvd2lkZ2V0LmMKQEAgLTQzMSw2ICs0MzEsOCBAQCBFbWFjc0ZyYW1lUmVz aXplIChXaWRnZXQgd2lkZ2V0KQogICBjaGFuZ2VfZnJhbWVfc2l6ZSAoZiwgZXctPmNvcmUu d2lkdGgsIGV3LT5jb3JlLmhlaWdodCwKIAkJICAgICBmYWxzZSwgdHJ1ZSwgZmFsc2UpOwog CisgIHhfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9yZGVyIChmKTsKKwogICBpZiAoZ2V0X3dt X3NoZWxsICh3aWRnZXQpKQogICAgIHVwZGF0ZV93bV9oaW50cyAoZ2V0X3dtX3NoZWxsICh3 aWRnZXQpLCBldyk7CiAgIHVwZGF0ZV92YXJpb3VzX2ZyYW1lX3Nsb3RzIChldyk7CmRpZmYg LS1naXQgYS9zcmMveGZucy5jIGIvc3JjL3hmbnMuYwppbmRleCAzM2VjODMxMmNiNS4uODdj ZTNhZjMwZDcgMTAwNjQ0Ci0tLSBhL3NyYy94Zm5zLmMKKysrIGIvc3JjL3hmbnMuYwpAQCAt NDQ4Myw3ICs0NDgzLDcgQEAgeF93aW5kb3cgKHN0cnVjdCBmcmFtZSAqZikKIAogICBhdHRy aWJ1dGVzLmJhY2tncm91bmRfcGl4ZWwgPSBGUkFNRV9CQUNLR1JPVU5EX1BJWEVMIChmKTsK ICAgYXR0cmlidXRlcy5ib3JkZXJfcGl4ZWwgPSBmLT5vdXRwdXRfZGF0YS54LT5ib3JkZXJf cGl4ZWw7Ci0gIGF0dHJpYnV0ZXMuYml0X2dyYXZpdHkgPSBOb3J0aFdlc3RHcmF2aXR5Owor ICBhdHRyaWJ1dGVzLmJpdF9ncmF2aXR5ID0gU3RhdGljR3Jhdml0eTsKICAgYXR0cmlidXRl cy5iYWNraW5nX3N0b3JlID0gTm90VXNlZnVsOwogICBhdHRyaWJ1dGVzLnNhdmVfdW5kZXIg PSBUcnVlOwogICBhdHRyaWJ1dGVzLmV2ZW50X21hc2sgPSBTVEFOREFSRF9FVkVOVF9TRVQ7 CmRpZmYgLS1naXQgYS9zcmMveHRlcm0uYyBiL3NyYy94dGVybS5jCmluZGV4IGRmYzBhZTgw NGUyLi5iNTZlYjVhMjhiZSAxMDA2NDQKLS0tIGEvc3JjL3h0ZXJtLmMKKysrIGIvc3JjL3h0 ZXJtLmMKQEAgLTc3MjMsNiArNzcyMyw5IEBAIHhfY2xlYXJfdW5kZXJfaW50ZXJuYWxfYm9y ZGVyIChzdHJ1Y3QgZnJhbWUgKmYpCiAJICBEaXNwbGF5ICpkaXNwbGF5ID0gRlJBTUVfWF9E SVNQTEFZIChmKTsKIAkgIEdDIGdjID0gZi0+b3V0cHV0X2RhdGEueC0+bm9ybWFsX2djOwog CisJICBpZiAoIWdjKQorCSAgICByZXR1cm47CisKIAkgIFhTZXRGb3JlZ3JvdW5kIChkaXNw bGF5LCBnYywgY29sb3IpOwogCSAgeF9maWxsX3JlY3RhbmdsZSAoZiwgZ2MsIDAsIG1hcmdp biwgd2lkdGgsIGJvcmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5ib3Jk ZXJzX3Jlc3BlY3RfYWxwaGFfYmFja2dyb3VuZCk7CkBAIC0yODUwMSw3ICsyODUwNCw3IEBA IHhfc2V0X3dpbmRvd19zaXplXzEgKHN0cnVjdCBmcmFtZSAqZiwgYm9vbCBjaGFuZ2VfZ3Jh dml0eSwKICAgLyogQnV0IHRoZSBDb25maWd1cmVOb3RpZnkgbWF5IGluIGZhY3QgbmV2ZXIg YXJyaXZlLCBhbmQgdGhlbiB0aGlzIGlzCiAgICAgIG5vdCByaWdodCBpZiB0aGUgZnJhbWUg aXMgdmlzaWJsZS4gIEluc3RlYWQgd2FpdCAod2l0aCB0aW1lb3V0KQogICAgICBmb3IgdGhl IENvbmZpZ3VyZU5vdGlmeS4gICovCi0gIGlmIChGUkFNRV9WSVNJQkxFX1AgKGYpKQorICBp ZiAoRlJBTUVfVklTSUJMRV9QIChmKSAmJiAhRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSkKICAg ICB7CiAgICAgICB4X3dhaXRfZm9yX2V2ZW50IChmLCBDb25maWd1cmVOb3RpZnkpOwogCkBA IC0yODU3Niw3ICsyODU3OSw3IEBAIHhfc2V0X3dpbmRvd19zaXplX2FuZF9wb3NpdGlvbl8x IChzdHJ1Y3QgZnJhbWUgKmYsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIAogICBTRVRfRlJB TUVfR0FSQkFHRUQgKGYpOwogCi0gIGlmIChGUkFNRV9WSVNJQkxFX1AgKGYpKQorICBpZiAo RlJBTUVfVklTSUJMRV9QIChmKSAmJiAhRlJBTUVfUEFSRU5UX0ZSQU1FIChmKSkKICAgICB4 X3dhaXRfZm9yX2V2ZW50IChmLCBDb25maWd1cmVOb3RpZnkpOwogICBlbHNlCiAgICAgLyog Q2FsbCBhZGp1c3RfZnJhbWVfc2l6ZSByaWdodCBhd2F5IGFzIHdpdGggR1RLLiAgSXQgbWln aHQgYmUK --------------TZVIilCssP9KJk9Smi6jbe3R--
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 25 Mar 2026 08:53:58 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Wed Mar 25 04:53:58 2026 Received: from localhost ([127.0.0.1]:50275 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w5Jzx-0003Kw-MR for submit <at> debbugs.gnu.org; Wed, 25 Mar 2026 04:53:58 -0400 Received: from mout.gmx.net ([212.227.17.20]:45303) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w5Jzu-0003KY-RS for 80662 <at> debbugs.gnu.org; Wed, 25 Mar 2026 04:53:56 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1774428825; x=1775033625; i=rudalics@HIDDEN; bh=0DmbgcWcC1O/DsPkrfUSOWbRo/VYuXHqI2l2c1wlTgQ=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To: 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=hMUwVeRhVp6F8tzYu2zEbD1VoAIXhbziY3DsTbAQX3+VZCDnWNS4bbmNwmT76m28 ucFQuwAgrlq60MXG3KkCZ+0u9JVUN4zmH4eARfSjs2B9H2xPSQiWtOjHgD1lU7v3e R/w+SbZhqPXaJz3+w9fzu2FxaWmr7OHVfpPoFTzatU5HpT3r/MZpoByG08DeSeOYO G8MKAuGyxA8omsoafJizfkUEckBPVpKUQwebCjIDXKmqjvkpR0JMQAY1gk58AN5sN pvjnLfTbLYjIfUtYEsZUXFcFGbVxH8FSs9/ujTTe7HlLuQaBlzkjUV1aNqQQvYhCl TbcU/3v9SQpWoWqC9A== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1M6ll8-1wCUzf2l5y-00GwW6; Wed, 25 Mar 2026 09:53:45 +0100 Message-ID: <a99d2659-5614-442a-927b-2e7c7f408681@HIDDEN> Date: Wed, 25 Mar 2026 09:53:44 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:8iOJf3SMZXN+PMGylNNlmuedrgaitKZGOjr3hFPwPsvTFD6Ubrs LI2d/OXi0BdLI5FKKXeAQnEcrlTuQQlf6PYUMdogTImcqc1eTw6/B2xtUhMPSqaAMMlDkg+ C33SDBu7r4CWrPOl9Cq0QLXiEDZOph6FToqYrTh7oRO4OT05EbWKbheohDGnXHiDiOyAaJU zO6b/CHwoeVMnDmyZvUwQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:0BPWXnN8Ijo=;t8/4dH4sdMx1wRjcTUixzlvgWjx VaR2AA4d8NLhcxvgRwR0SVQU4YLBWX0bZzmCd+0pLD8L5QbJAOB1LYJvxaR80NhP9Fk8ZCYjw CksYx7OCdVNNeCCdBe6b3uaylzTJnlSCrqD76iHYSYtW5YSLU5jOY0GBfcM9T+9FMmAtIYfj7 IUSfgI6UTC4AZQfBzsiC5Qz2qqIQDcFZUG/7ZXf64ourvH3pOYM444di+2vUiM5R7FCOP6T3j L7gVMEAywh1W7LsL8Nuczh6pUnYf0TLiSUgEmRnpEKoOaGTejxW3AjRLOy7yhLbbMlLQ3SN58 CzPQohcnlNYsQ0FiuUZPTMQr6OopjTNdA8ea8ATkqA+0pjgsrVB/oCqehEtSpDg1Ga6U2J/dj WuAhyNgz0e3RD0CWlhJ/4N/x8ll/DOc/BUoM2uaicLsukoE4SP6zHTTwRdILMD0VfsWnZmL6i +BLSpVEG+oqOjsM0hFE8sKKmCU/9jCpy4BmsopQKT79577wFTuovbvWnwXajpvEDPozc+rm5Q 12WL9WyMWbddnXwfqqBK0ahVAXdxqMTzN2gCjfCrjUoEhPlO+ske9fz3E3YHCFAlOBliuit5u /CHHL6Hus6uGiY5gFSD387N5WW9AIrX4ruhlMuqM3ehGorX1M6zn9SXXPh6p4b7LFs/Xp44KU uPvaAUu9f5tf7px/WTrHhbDSgSXakT4227ibo4icscf0OCrxLi1zi2orX7jNxn8jRKaCX6o4w jc6bf3k7gucFE6xT5FT+iZw9rqrH8kcosJSXQBT9rdzRKb8vHYOJTtPokYN/QovIq0+Au6jZJ H1YJtQusWsEWvI4yTL7aOEkSj09nFJqpZKLb89zf6DTyEdpYyqN7pB9IBJqrgVVFXbH5LMbXO Yvj75oSllOukqVNh1fDY72D1X+d0kGXiEjaw/jz3RDJDM29ayt1HunnNTx3pysL7u7HhRuYad F8V2/MoVX+LuqDpYFVmwSFAprR1apbngR2KnW66SgUAeixM7JtFBIqzUVitmP5LnCqe70mRJa oy9k3YSWx1sSXeRgZxeidWcuJvGfFisqIPCCc32iuxDjqRfi2uyb/BoUNaeMxuZHCPr0S3Y/E vU+jhTnS8h4nyOi1IzdPfuoG0gpu9CQsrhcFAMo5qLQO8DFXpwOQvZmwAkMygyqJggrxDhO4E jp0WHCJrvPbC0yjtqhD2FKAxfMxBxXgbTtDcoE9guMTBhkic//ridm7gN4oxGqPyXJ9GGOtyb 3Pb7gF6/0HUFVnE/1K/vyXs3kRLfNPaWh3WhtzTfcOqRY5Ym1vEXmAaw28tCsNNU+O2nzMGBK En6W89OZ+TEGhcMICrFMNtLJ+HqfUoDkTYpE28j1/AIPp+5wLsKeaQxiS96y8EwiCoXJdjoNh uIRuG2Syxvhbo3w1kuod3k3T7cXBmHpJPvQCq7t0VMmO4MFL0DXNtUfN+BpwLbyHH3Z7SEvSR GvILjq3qBcEbNFpi9OgdWsoPJMFIjA3Qm3qyy1v+e0a2Q727DGcRtShm1h+7KVeiUeJWVMm0M wiMlkLLBL0IaNFO69xZuEBoYqhk93NFRlxqvi1OunKxQnma6eHGPsbLqV0AqBE5o6gIb60tOO tCy090VdAyJZa+0rBf0m/PVyBNc5jK5qeYyEKRuYKUCGk+V00t5kx9k92tci27ngmvltTDJU0 wv4usZ9btZq4OZsv+nY1LdjQxS6gyNt1VCqvEBZeYQ3zcQhl0kB8SY9HgMd7m5BxcfGPMGZrc pS9EbIAe/r5yWavIPJvLcup3HEj5KYpQ5BKqn/ytgkaKsricQmNHNCb8mxwBdsGu+Qsq7px+Q F8+k6/LIRVevDwUAsMpgYCSugJJVe6Re3UNRQyzZK5LWxtRufWm4RbfWX+mUaYAvI9qhaE5SA 5EZqabWiQlsgqJOMLfnCtggb3xpmDZYXcMbPps+g6f93qutQ81UsZTxBISzz/ipr2KAwXEN9z 9KCV4hD4eVM0/8f7zIcPXsVG49xrdWuQs1HYx5wY5SA/gs9vBeMxdXl2IRq3sKrUqW+yq+CmY lQWoL6SIhWpNJGM2P3H+Gi45bIuIVzLNQxIVzi5g04RGo6ots/P00+ml1GwAf8gSXORMZZHNW irFRdRRArCuDQfeKzNOZvhT5V8R8COWweA6W/+YEk8baZN6u63XQQ97MrmQmN725lRayO8106 SZpLXqfCmfmC+vef3UAVGmQlWZhFLassHHr7B18n1pCpXWyoq+zNcxEtCT0DOyOYXLtm0Iu+b X8g2ajbEz4BYTJZLcOVUOl6vkhsHnt37VQegbGt7T2/pe/j7vp1u/XpoXOOXooHKSLXfhI1s7 G4CLSFkdcK4uAiN4kKb7fh/YB/wkEJIh+hrosHKu3/BMYY1jnjqTY7yQOAbiQ1/kYtZDWoJLm 4ZuEP9FtOKpxhFuyZEImuenYUCCu6BSNR24EdOhz6LCFJdfj1yOdIRTtMUhyQU+KvjJ0aARie gq8R+KkqnnRp0suGEBai0zgFH3zCBxo7s0JSXc/uqnwROM+mho9aRphKdlVsmXGXFwIR2tXSP Wvp+yoNBCJvPpPSpLSVNM3KwL1dfMB7Nwxkl5bJ8fpnUJSYAkTJS+0pJTsX+T9E5NemlCQFf7 NcftkBj10I1cbuYepbUUvw6fUGnl0TxJhmcetpMH9t7qB7/iEwcc0FLJ/qLIAWGQrBksH5IUd uSb0gRE5I4AziT7ZZHdPDrjuRaEuRUoapbqUgtnOax9dyrzTHZ1HeEe5FHN0ZPkhNRtVFzgWZ Z4dGQglYJcAPe/wCA7SAYHr+MbBGJY96lpu3mB6n0M4SaX+WrYwH0I7nIQQAaFMn1h1QMjkn+ 5WrWtvFj2EPwqP+XKyymhXBsDDILMEBGze/eq6nQCXxrXR16vlIbVpNpmuyFygayyhBUc5c1B MoJZvA6hs5K8PEJcd2onegbDOq9Q7m7n2WZijkHRv+laGizx0WQoKlaYRiwjrLe2DAKxGD+me aEKAq3Wh2ckWmDJOBJ2T4Vi1NWluc3vbe5wmOxEdF1tIox8iaK0yMpdoPWRqaneg2IKWpbQ3S /CAjWgQk4hlRIrKsG4IH71s/ey1jZVcaFS/U/mKCknmzsFgR4CDftipLQyVK0GZi7UIbFrbOT Mw3sTfb6p8uHd6WVKPhb6jaPFuRO74zTV3ZaMTXT7s8OvIvovd6B3vy/yHjnlrdSnB81rnU11 biQ056zzgtC+aBnlN4Uw5d5uVGM950u9U0il1sqVR3IlJOxfOzWA8N9sot3zEGN+fxmPp7A+z 1zeIEwaqoCH4uR+OQ1xRKSmfC4mTbuZDp74Z8kUkiQo9e7tEvMYUptv25ZDc5HTOkNPeaUm7C 0UTUwGLqPbIPnEoZHvhiP8i0kO1/aV/+UxlZj8HZt/U+vZ6sXWYOGIkmiIjHomEI3NU4/f+Qf blHETV+3ky1HO/7YWek+1ZOjJ81Tx5CDdDoGH7rEqc6SdHqs3PTNz83eyUaN8Lg1rik0jEw8L eqqCvUsrDjBTlP34UJd2ylbG8Bi3y2RrGfr9903uMTaaYBm/ArQ/RrlD//VveksZZ8Pk/mhsc kbMxy7WHIxm/JbrZtf9iT3mwGGY31CVFp1Hq4u3bt2lGQYogkVxzFFHvcZwd7Cgx/KMCvFhIJ AYnbNp5hwdx5fuBGqXEIv+9kHgErj9DWmTiTCKjD9NiGz5f/XYBg8DliKh/dfzFoCBQLNhqtt katrK8qL6mDWXM7o/uErEvzjIuF+wU7RIlJMVyhBZ1xkmnXZ4fJxExDVJct0/GuOdZf6TRTWn 0lK54noYy4/PcC1yh6mDr/UQsudndRilH1z7CdKDf949daiSCiH/A2+UZcdcnkNKoTT49KJDo vHm6PnkXwpGhMAJQrFcvlimiNrf1sHsBl7CUWAjsvVHnwpPBVDy5ozEWBPd06VNtwj/8iyeEe 9pr03VbAJYMDVAIooEvssPyidkwYa4ydRQC6PNBVTHAt0eFgspOsq4G8QCajfkgie7mLVEckc f3HVlgrnkJ6st6BFjKrb65ht0K1oDlqBmQT5tgtBa6fX1OKgjm8APPxMSI2EYscMc9pDQESyX IV2OV6LIBGp9Df/krofRgsyo6K1vU1qIDdeI174p8/mbJZdS1GCO36vTRPtT3pOelJVmSMLLT bgkvMFfEWc+kYxdBYDuznZ5RSRGIrIYwvRDujzNVOus31o2WyFK2Sds1HZror1e+rJK0YQmbg OICKVL6sIImZrUiJW4qZy2FB8dxzm6UPx203sFhazDi7UE1HKby/4h+xVbf+naSJ6ZjSpfBav PkCzjD4DZmpzlOGwWL5EGPGoYbpdFQUSTPZABNPipgp7bmZHuKPF43h0VvKpnWGGpgMl6ymuL XhFmeXshbwJIdBH+KY1Upl0738BPUH7rlCfrQe93GAXE2LhzFTWLceIYONyvLy3AHi8aKp+TP WJ/+Ay+Y2WOeBNfCikEQchgDU6imj8j0DWkVyqGcnKAzN8F/tlbFTTCKjYnM6cQ6IySjTwMuP yAnAtO+TTsb6hIC43ql6pxCZMdGaCPM6eUmkJndDPRdFaC9gzTTB5y7nC0VWHGAjEyqcq3E91 eskf0270b3SGH5YqbC30dVsiYG2hsfg7WtT4Yu60l/MUzgTFlYeZBgo8Ird6kzTSHKZqiquxR k6s2RuCS3pG0zDTK3q8b/zmbja+B4/HDS11DdBB26FiBc0u0li3xIetTUYeC+MgyDehlKVa/p 3fyq4LcNtCKQvZfUlksgtH4HcvmIdgYXgoyoqiPqmm7ay2Tk1HeUH0/+IFZBWFVOK6FQVAR4w fpoFOd6odNo3e0RHx4M6UWJrwMfqVeOee+zXmodBzxENwPcy3aenIvJiFj0oh+ld+yRYcRZTT rKD4mwzGUAAI5frVVaVTDXVlQ1Pd88wXHQzjSZ/F4B3bi/loMlKQH1jCWxjX1KkyU/VnpZ1jL LjBPZMZ2DGWt/iQCb+VDxOSo8gnku0+34NP0U8kOY/T63w/KD9HNhKkDpyUouD+I8WpGaIKPd cDYDogsAFwJzV9AIbdjKv6AXBUAVNhhB02Hu7/PKlkjj3HtgzjiDnnix69pfJtj+OlVqaAZId MGoYtHcHIQpKblJO+OQZUR7hlImFxwPuyBU87P9VHvNTcZpsl4XF5HhiAfK39dFfeqDRqQrij Y1c+GZUlFcyWcXVfHI05xzYtS2A1EG4kSrOEtZ8J2mB2xEZ2nSZ80fDk88s0TGy2b4GQyosz/ 7SOeyzBkAlMtUZKWhQR+mQcJgvAjQP5A8L1Yj6MMTTt1xR4l1VIb63C/DAxCfhyeAo2dRHbcV Bhi3MnXRjLcjJ9ZNvnckQ0loU2qkaY5i3fE2W9FXJWPUP4GONMY+SUHEgP3s3Ab0tbYq1DybP MnDbs6xSD0R4JuzBfPoo0hvaFOk/snUj/IEbufT0DNpqZ85oYfZWgXbruCWCTTTk5VtYDfKAB rB X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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 (-) > Motif is fine: I just usually don't test it, but in most related issues it shares behavior with Lucid (and in this one too, just verified). I see. > The no-toolkit build is different: binding x-wait-for-event-timeout to > nil doesn't work as a fix with it either. Apparently it does some part > of the update more immediately than the others? The result being that > skipping of event doesn't help. This might be a clue but I have no idea how to use it. Your earlier bit gravity change affected the non-toolkit build as well I think? > ConfigureNotify handlers between no-toolkit and Lucid/Motif are > different enough: no-toolkit calls x_clear_under_internal_border there > (xterm.c:21638; the gtk3 build does that too actually) but Lucid/Motif > call EmacsFrameResize which does not call > x_clear_under_internal_border. x_clear_under_internal_border becomes a NOOP when there's no internal border. So whatever strange things you observe with it should not happen without it. So does removing the (internal-border-width . 2) change anything in the behaviors for the various builds? If so, we maybe clear too often or in the wrong places. > And we also call x_set_window_size_and_position inside > x_set_window_size_and_position. How comes? I don't see that. > Maybe that alone could create the > double update? IIUC we do that because we think that the > ConfigureNotify event delivery is not guaranteed. I wonder if it an > issue that could be limited to some platforms or specific scenarios. I think we wait for the ConfigureNotify for the sole reason to continue running ordinary Lisp code with the new sizes reliably in place. That is, if the WM decides to not comply to the new sizes, we are informed immediately and change our frame and its window sizes right before we continue with the calling Lisp code. If there are other reasons, I don't know them. >> All frames, child frames only or normal frames only? Is mouse-dragging a >> normal frame slower than on X? > > It might be difficult to make a direct comparison. Dragging a frame by > the title is instant in both cases (just follows the mouse). Dragging > the top-left corner to resize looks smoother with the PGTK build - but > if I look at the top and right edges of the frame, grey rectangle > areas appear there repeatedly during that process (signifying regions > that are outdated and haven't been updated yet). There are WM options for what to show and whether sending events to the calling processes when resizing. Maybe these vary for Wayland and X. > The shrinking is the > > (set-face-attribute 'default nil :height 50) > > in the new test script, you probably evaled it already. I just meant > that in my configuration 'emacs -Q' starts with default face's height > 128, so for the updated test script to be compatible it has to include > an explicit face height value. I just want to inform you that I had to remove that for testing. >> > The idea is not to have the boxes overlap - in this scenario the >> > transition happens between two boxes that have no intersection on the >> > screen, so I think what we see is the resize-and-move transition >> > happening in two steps: first the frame then the contents. >> >> Do you mean that XMoveResizeWindow does not get called in >> x_set_window_size_and_position_1? > > It does get called - I think the issue is in how the X server, or our > window setup, is handling it. It looks like the frame getting moved > and then resizes, but probably because we display outdated content to > the window manager, or otherwise haven't redisplayed the new buffer > contents. But this is finicky: the frame resize is asynchronous, and > we can't really force redisplay before it happens either, because then > (I tested) we will see the "new" contents blink at the old position, > before the move-resize happens. So maybe it is a double-buffering issue. >> This one is strange. The green border is shown only for the very first >> initial child frame. Subsequent steps don't exhibit it here. > > You don't see it at all afterwards? The border looks mostly fine to me > across toolkits even in the "buggy" scenario (it's only missing along > the edges where the dimensions of the child frame changed), and the > "fixed" behavior with the patch applied has it rendering fine. Here the initial child frame fills the entire parent frame because you don't give it initial geometry parameters. That initial frame shows the green border. In all subsequent steps that border is no more present. > If we're talking about the videos and not how these scenarios play out > on your machine, then *-36.webm has many of similar frames. I understand that these are asynchronous wrt what Emacs draws. > The one > you show has the yellow background, but at different times the > background would be white at the same place. Or the bottom popup would > have an incomplete border, or it would have a blank space at its > position. This is one interpretation. But it hints at clearing the internal border getting through in some way. The problem here might be with show_back_buffer. What if you turn double buffering off? Do the various intermediate resizing artifacts disappear (with the obvious handicap that flickering increases)? > Most of these are only easy to notice when stepping through > the video frame by frame (keys . and , in smplayer or mpv). Otherwise, > at normal speed, they are just flickers. As long as incorrect text is > not shown. If in at least one frame like the one I posted border and background don't match, we have redrawn too early wrt to the expected final picture. I think this is double buffering at work with something old and something new shown simultaneously. > It would be nice if we could ultimately decide that we don't need the > "is it child frame" check because every 'if' creates a larger testable > surface. Wouldn't setting 'x-wait-for-event-timeout' to some non-float value do that? > Or if we could structure the fix in a more async way, relying on > events more instead of skipping the wait (I wonder if it will > necessarily mean a slower UI update). What to you mean here? martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 25 Mar 2026 03:25:12 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Mar 24 23:25:12 2026 Received: from localhost ([127.0.0.1]:48282 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w5Ern-0001E0-M6 for submit <at> debbugs.gnu.org; Tue, 24 Mar 2026 23:25:12 -0400 Received: from fout-b3-smtp.messagingengine.com ([202.12.124.146]:40057) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w5Erl-0001Bw-5T for 80662 <at> debbugs.gnu.org; Tue, 24 Mar 2026 23:25:09 -0400 Received: from phl-compute-06.internal (phl-compute-06.internal [10.202.2.46]) by mailfout.stl.internal (Postfix) with ESMTP id AA61D1D001BD; Tue, 24 Mar 2026 23:25:03 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-06.internal (MEProxy); Tue, 24 Mar 2026 23:25:03 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1774409103; x=1774495503; bh=qsBpk8ASdgb+KQsMuUUjfrukw89NV1X6qTDwGpiOndk=; b= j0zLC+6UeFvFmGbsE5npubuKCf56sYTRth6lqbPhOkXnbDldJ2QbNg/D1KdmWsrs WItQy8hc9avJobswhIFDku65HehD8btTHhxgjYUJ+WeuD+ZVnOwf5nS8B3senZih zutrXSND5671zybPUs66TmlP9iiyJJ0yx9rHcOk+vBngfqWZg+ZIGN6ueWyfQneJ bnq7FwUStb31oHCaIwuz+vLkwzIQUqgFbiYFHL6Lfeg4nG9uP9c8A5OPmSqwf7yy PuM3bxCsXskJCB1zpjfXgmAqgSEvt/Jbxo7Qus88P6AwoAax/GgyrTu6YTzSR9KM ChpnZf9Bk+XqmkrSkQujZQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; t=1774409103; x=1774495503; bh=q sBpk8ASdgb+KQsMuUUjfrukw89NV1X6qTDwGpiOndk=; b=AdOl7Pz336FqrnPS7 7ufEMURwAeLMYsb95SbulZhMFXDvy/R5Ph0lEYVf2f49mWkLq46R2ApZTFY6u7n8 thEuWUegYcxd/gzEDvqUO7Fc5HXXKQt1IpBqA9IdT95VibvppZQR2ubonQRZfUDT VhGKzKy/zoVj2gafGy2ZESFRHhDMGTN0XxmKw+j8lD8XZ+c2TC+L/hCyrDXH7IUG yX+TLuOInwMYNBmJxhNmuognRJCeNjp5wrRrqvgaHH2kofjzmUhWY9DBRmVIOZ9U y7X8/aSpNWfygJt78Tr9ytRCXVJb7eg3VrZhm+YY3N333gIFAsOnL37DnCWDPfEd VfSyw== X-ME-Sender: <xms:j1XDaahivGM2h9KqPG2d57Ratib9CBP1JUjVqUUkHwl7_KvuoU5GIQ> <xme:j1XDaRCRTDP8tqpDuPVt5eH4QDug-S8qV5F3N_VKbB6B58nl3UFlkGTLzGl7jF3fS rggt1HDpWj9wNAybBcnN_CW89vrechQBn0MCtIRoxayZZfQqONCDRCK> X-ME-Received: <xmr:j1XDafsZ93B_UiICOaoUMjo4WZ62LQq0eOX_5ui8Covidf-Yu3onlP_jwnZi6lCQ-fiwOw> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdeffeejucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepkfffgggfuffvfhfhjggtgfesthejredttddvjeenucfhrhhomhepffhmihhtrhih ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh hnpedvgeegkeeiheejgeetieffieetjeetffdvledvvdeghedvveegvddukedvtddtkeen ucffohhmrghinhepjhhumhhpshhhrghrvgdrtghomhenucevlhhushhtvghrufhiiigvpe dtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhithhrhiesghhuthhovhdruggvvhdp nhgspghrtghpthhtohepvddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtoheprhhuug grlhhitghssehgmhigrdgrthdprhgtphhtthhopeektdeiiedvseguvggssghughhsrdhg nhhurdhorhhg X-ME-Proxy: <xmx:j1XDaebay98HQnUkolEEyOSaFMqAUvN8bZXs0JSdM-I-XS0U-ydeeQ> <xmx:j1XDaaVVRZoIlb7FF3gU6Q7RImCGDvErfwkQe8AqquWaH1V62y1YQQ> <xmx:j1XDaa6gK6JYsQDNy-rw4U30TYIYqd9V3h1oVkz0uuav5Zo1WhRsaQ> <xmx:j1XDadhw7B5AYv9mnx1IfxW2mBZ2r57d9C34DJnn9_UMWSQ3_dhX5Q> <xmx:j1XDaSodEiLVPtJiIUeTfSKkArEKM1IgWuptE3lzGnu0Y0A1fUKCtESh> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 24 Mar 2026 23:25:01 -0400 (EDT) Message-ID: <6235ad99-3a79-4452-951d-5170fce6a6e4@HIDDEN> Date: Wed, 25 Mar 2026 05:24:59 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <be6b5f8c-961d-4959-964c-604bed2a39d1@HIDDEN> <17c09aec-7204-4770-998c-4dddf637cc78@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <17c09aec-7204-4770-998c-4dddf637cc78@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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 (-) On 24/03/2026 20:32, martin rudalics wrote: > > Resending this message for posterity, as the previous try was > rejected by the mailing list as too big (4 MB total). > > > > Videos now here: > > > > https://jumpshare.com/share/8PrAIGygMRluOUzJs8IS > > https://jumpshare.com/share/Dx3IZw3fz25XkMq4pBpj > > > > And screenshots in jpeg. > > I can't see much new here. It's just the message from earlier that you already received but the mailing lists rejected, so in the interest of keeping the discussion coherent in the list archives I've recent it after optimizing the size. > Wasn't the screencast I posted earlier more > indicative? You probably meant screenshot. I've had to take more time to reply to your email properly, rather than doing it piecemeal.
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 25 Mar 2026 03:20:32 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Mar 24 23:20:31 2026 Received: from localhost ([127.0.0.1]:48238 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w5EnF-0000uG-Se for submit <at> debbugs.gnu.org; Tue, 24 Mar 2026 23:20:31 -0400 Received: from fhigh-b6-smtp.messagingengine.com ([202.12.124.157]:57811) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w5EnC-0000rE-Dx for 80662 <at> debbugs.gnu.org; Tue, 24 Mar 2026 23:20:28 -0400 Received: from phl-compute-03.internal (phl-compute-03.internal [10.202.2.43]) by mailfhigh.stl.internal (Postfix) with ESMTP id 506DA7A017D; Tue, 24 Mar 2026 23:20:20 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-03.internal (MEProxy); Tue, 24 Mar 2026 23:20:20 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :content-transfer-encoding:content-type:content-type:date:date :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm3; t=1774408820; x=1774495220; bh=AZAc7wRql6Y1OX7jjaaET3NrakNjxTUlumPTBOHMQic=; b= pKPFHE3xFzpdGh+bzs1Bm0AANDP2zIu219GnWN9ACCHrY+HS8UMarbA0kbHRIUXY W7hBbI07icktybR6QDgAGs5ozzHeWOxiLGTbX4v+AeNvL6Wig5aguz6Cj8qkpkJ8 43Hl6DYp8QbKJNvly3ZWFr4nGWPmTSOvoVpgZo4XRLDuYmKNR7xT0SEqRdw1GKpC FxXjv+KuA/fLqu/scOJFqtB3DZTljwj45/lhAQJib6gJKS24fVdm76h+IhQ7GmzD QwUQUuGOCBcj8kg+jCKDjQmCAzvrhHn2ccRPKl9SXmX9vs5Sn0IQw8GdTSd+qY0B 690Cl0WTw7aha9/wBBGX2A== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :content-type:date:date:feedback-id:feedback-id:from:from :in-reply-to:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; t=1774408820; x=1774495220; bh=A ZAc7wRql6Y1OX7jjaaET3NrakNjxTUlumPTBOHMQic=; b=2AYbRMW8FjQjSuQvF Pf1ucqEhFRREMmJfZnWfrlErMq456fc3uZJfGL0QZzEWAq5p0Moc1n9Wt7J90Y9l eLNJaJ+U/nam2JjJrk10hwBKzRDllYobz+0SSiXywj1ugU4QiZhzY7CZt5dgQEER 8EHKpyxGsaQIr0GPQaHLAp/OFH6Excn762b5P5I+CqyGBjW4ftxWQHiPnwhH2eFf 1J7FJHgqDrClDX3iGgsUPuoAfaQC/M/9AK0MvM3iJ75HnWOuBHCTCmW/3O1gzfv4 roW6b40FXQDmGIwlExLGJvt02RckCzo+BxW08QvoUVfwQG4yulXAfEJxkanlW2hG uLVtA== X-ME-Sender: <xms:c1TDaWrr_jWXV0NeN6db9oA0zbjcIAVmo2uToOYuHwfE3rTmOqzCUQ> <xme:c1TDaaoXV8-sOczuBaKQfDoCJ3Eu4GI1zls_39TnolE5PAHKrv-mh7Eyi7T6aZb_Z 5lmfvQMp0GomlqWxz_4BTt9bjOuVcn1P4L0UoeRZwaB29dao4nxuNU> X-ME-Received: <xmr:c1TDaY3FWPhbrmULtOf6rSnnuwQqgTWCFXeo0K3pq6tWQKSV_fXknRzLkYEpo3mEJ8ap9g> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvdeffeeiucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurhepkfffgggfuffvfhfhjggtgfesthekredttddvjeenucfhrhhomhepffhmihhtrhih ucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdguvghvqeenucggtffrrghtthgvrh hnpeegueegteffuddvjeevvdelleeitdeftdduhfeffeffjedukeevjedvfeffgfevgeen ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpegumhhith hrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtohepvddpmhhouggvpehsmhhtphho uhhtpdhrtghpthhtoheprhhuuggrlhhitghssehgmhigrdgrthdprhgtphhtthhopeektd eiiedvseguvggssghughhsrdhgnhhurdhorhhg X-ME-Proxy: <xmx:c1TDaRAUHwvVuvbsm886-gQvwZbEo7YD9IbVcyguAiV0E6wvvhfhwg> <xmx:c1TDaYdoyPB1pvuwP21vFucIsPBNRdceAWElAQhhGUeVsPT6MmtbKA> <xmx:c1TDaei2SZ8gj3zITBEE7200SGfEeSWENLpfE3786JDQybjlC3f1Fw> <xmx:c1TDaYoDLLZuBVr0o4LD94k5eUOEsOqxH_YF7rhpgPKXDqG6pynBCQ> <xmx:dFTDabz52gUxzL8bbsHH5nFvtp0pb12m3OmTMSqex6bKRVUu-P-qymM4> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 24 Mar 2026 23:20:18 -0400 (EDT) Message-ID: <d8436293-05cd-4c27-bf69-041e50eae46b@HIDDEN> Date: Wed, 25 Mar 2026 05:20:16 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> Content-Language: en-US From: Dmitry Gutov <dmitry@HIDDEN> In-Reply-To: <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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 (-) On 24/03/2026 11:52, martin rudalics wrote: > > And it looks like out of these three, the x-wait-for-event-timeout > > workaround only helps with Lucid. > > If it does not help with Motif and without toolkits, something should be > fishy. Motif is fine: I just usually don't test it, but in most related issues it shares behavior with Lucid (and in this one too, just verified). The no-toolkit build is different: binding x-wait-for-event-timeout to nil doesn't work as a fix with it either. Apparently it does some part of the update more immediately than the others? The result being that skipping of event doesn't help. ConfigureNotify handlers between no-toolkit and Lucid/Motif are different enough: no-toolkit calls x_clear_under_internal_border there (xterm.c:21638; the gtk3 build does that too actually) but Lucid/Motif call EmacsFrameResize which does not call x_clear_under_internal_border. And we also call x_set_window_size_and_position inside x_set_window_size_and_position. Maybe that alone could create the double update? IIUC we do that because we think that the ConfigureNotify event delivery is not guaranteed. I wonder if it an issue that could be limited to some platforms or specific scenarios. > > The PGTK port doesn't have this problem (on Wayland), apparently > > syncing the window state correctly. But it resizes and moves frames > > more slowly. > > All frames, child frames only or normal frames only? Is mouse-dragging a > normal frame slower than on X? It might be difficult to make a direct comparison. Dragging a frame by the title is instant in both cases (just follows the mouse). Dragging the top-left corner to resize looks smoother with the PGTK build - but if I look at the top and right edges of the frame, grey rectangle areas appear there repeatedly during that process (signifying regions that are outdated and haven't been updated yet). > > Right, I'm at 2x scaling so the pixel counts would be twice as > > large. We should halve all numbers when at 1x scaling. Attaching the > > new version (I've had to change the default font's height as well, for > > dimensions to be right). > > I can't shrink the font here because I then can't see the text any more. > In either case, here on xfce nothing strange happens when loading that > file. The shrinking is the (set-face-attribute 'default nil :height 50) in the new test script, you probably evaled it already. I just meant that in my configuration 'emacs -Q' starts with default face's height 128, so for the updated test script to be compatible it has to include an explicit face height value. > > The idea is not to have the boxes overlap - in this scenario the > > transition happens between two boxes that have no intersection on the > > screen, so I think what we see is the resize-and-move transition > > happening in two steps: first the frame then the contents. > > Do you mean that XMoveResizeWindow does not get called in > x_set_window_size_and_position_1? It does get called - I think the issue is in how the X server, or our window setup, is handling it. It looks like the frame getting moved and then resizes, but probably because we display outdated content to the window manager, or otherwise haven't redisplayed the new buffer contents. But this is finicky: the frame resize is asynchronous, and we can't really force redisplay before it happens either, because then (I tested) we will see the "new" contents blink at the old position, before the move-resize happens. > > I'm attaching the scenario version labeled as 1x, with half values. It > > also includes a green border for better clarity. > > This one is strange. The green border is shown only for the very first > initial child frame. Subsequent steps don't exhibit it here. You don't see it at all afterwards? The border looks mostly fine to me across toolkits even in the "buggy" scenario (it's only missing along the edges where the dimensions of the child frame changed), and the "fixed" behavior with the patch applied has it rendering fine. > > Having the sizes different is probably not necessary to reproduce this > > bug - but it helps to notice the two-step transformation - how the > > frame contents get painted in two steps, first at the previous size > > (but new position) and then at the new size. > > Exactly what x_set_window_size_and_position is supposed to avoid. Right. Even so, using set-frame-size-and-position already creates an improvement in how the frame motion looks in many cases. Just not to the extend that we'd hoped (yet). > > Attached are two screencast made with the Lucid build. The first one > > is where the binding (x-wait-for-event-timeout nil) stays commented > > out. The video shows the "hourglass" transition pattern where the edge > > of text moves from one diagonal direction (from one buffer content) to > > the other diagonal direction (from the other buffer content), at both > > popup positions, in the middle. That is observable at normal speed, > > and looks pretty bad. The second vid is after I uncomment > > (x-wait-for-event-timeout nil) in the definition of > > my-child-move-a-or-b and re-evaluate it. The text contents are now > > up-to-date during transitions, but the window areas are still lagging: > > during normal playback this feels like shimmer (especially when the > > frame has no border), but if you reduce the playback speed in the > > video player to e.g. 1/4th and/or step through frames one by one, that > > becomes easy to notice. Attached are also two screenshots from the > > video #2 around 00:00:01 with transition states. The first one is > > during transition from big (above) to smaller (below): with blank > > white rectangle where the big had just been and a slightly incomplete > > rectangle below (the border is partially missing). The second is > > during the transition from below to above: there is a blank white area > > below where the popup had been, and above its content are rendered > > aligned with the top-left of the bigger rectangle while the rest is > > blank white yet. The next frame in both cases will render the > > consistent full state. Anyway, this second problem probably hurts > > less, but it still contributes to the "flickery" effect. > > I cannot see much wrong with these. The only exception being a frame in > Screencast from 2026-03-23 22-20-36.webm which I attach. It shows a > yellow background and the green border and buffer contents clearly > inside. If we're talking about the videos and not how these scenarios play out on your machine, then *-36.webm has many of similar frames. The one you show has the yellow background, but at different times the background would be white at the same place. Or the bottom popup would have an incomplete border, or it would have a blank space at its position. Most of these are only easy to notice when stepping through the video frame by frame (keys . and , in smplayer or mpv). Otherwise, at normal speed, they are just flickers. As long as incorrect text is not shown. And *-19.webm is more egregious because it shows the popup's contents changing including the text. Take a look at where the bottom popup gets displayed the first time: the right edge of the text moves, changing the diagonal. It's like that for the whole video which you should have received (but not the mailing list), and the uploaded version might have overoptimized the bitrate, so this change is only seen once. > > Here's what I was thinking: if setting x-wait-for-event-timeout to nil > > helps at least with the first part of the problem (outdated contents, > > the hourglass transition), then the problem happens during the > > x_wait_for_event call inside > > x_set_window_size_and_position_1. Because > > x-wait-for-event-timeout=nil makes x_wait_for_event a no-op. We could > > try skipping it for child frames because IIUC it is there to handle > > window managers refusing the resize requests or altering the > > dimensions, but for child frames that shouldn't happen (is that > > right?). > > Don't ask me. It's all heuristics like any timeouts. Some heuristics work better than others - and probably only experience across different platforms could tell us which might be safer to use (or remove). It would be nice if we could ultimately decide that we don't need the "is it child frame" check because every 'if' creates a larger testable surface. Or if we could structure the fix in a more async way, relying on events more instead of skipping the wait (I wonder if it will necessarily mean a slower UI update).
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 24 Mar 2026 18:32:36 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Mar 24 14:32:35 2026 Received: from localhost ([127.0.0.1]:46190 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w56YN-0007y7-IG for submit <at> debbugs.gnu.org; Tue, 24 Mar 2026 14:32:35 -0400 Received: from mout.gmx.net ([212.227.15.18]:53257) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w56YL-0007xQ-6v for 80662 <at> debbugs.gnu.org; Tue, 24 Mar 2026 14:32:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1774377144; x=1774981944; i=rudalics@HIDDEN; bh=TleJEjG/J+uNjFg1j9CDIckEHUWvddNfIgwiQSBl+GQ=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To: 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=OSP1RnPtY88hMUWFCFwmkh8jT5hXG3eBCs6ZZvkQ+v6wYLB5wfW/sBn6Zxbc+Dyd YIg60Fszk5IbFFK6XaUfIKLNszbKokt4F+LMBTJLq0tE79VVccpSNqkKrGJxg+Rxd EC/wns9ITLNzYlJJtEzNYwCzrzEVPCPIhSINwoxDUegHjSQFgMhmwXB4TFkGMQeIN yq+Q0oxQC52riATMYWYFD/TGGcXzmukIPDWIzd4hrZRJgfMHukbyU+9DP0KSgNyqS n2/xI04+FWfrvlIcW90bO0AdKe6Hc178BFKcLPj4Ko6T/hGCyts9pBUJVEwYJ83+f aaWUxfgI/1mHwsiM/g== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1M8hV5-1w9lNW3XVZ-00Dd80; Tue, 24 Mar 2026 19:32:23 +0100 Message-ID: <17c09aec-7204-4770-998c-4dddf637cc78@HIDDEN> Date: Tue, 24 Mar 2026 19:32:22 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <be6b5f8c-961d-4959-964c-604bed2a39d1@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <be6b5f8c-961d-4959-964c-604bed2a39d1@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:+Pre1xGdSNsnjp2v8NZS30gMkotu/7emvPeWZt2/Atsr8vHzeAr vdPRQ7Q1I+WbsKq3t9zT1twF5xxzSCSu09vHScp0oK7J1Zb8bO5WXcvI0TGbb3U43nJRQGu Gaq3h7N3FG25qmSQjVAM7x8C6KTxRUd4GJtb3/Y7S2ZODsGDadTf8l3lg92ZJvHmSBmcQCF 8vdQaWBrNq1w10y8yTcWQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:2TWakROQbe8=;FGVnCXBks1grMnx/TyXdPIwqbTZ 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 qSEYHTvHa3gNabUDXWfDxIiZLfLmSX5cg== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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 (-) > Resending this message for posterity, as the previous try was rejected by the mailing list as too big (4 MB total). > > Videos now here: > > https://jumpshare.com/share/8PrAIGygMRluOUzJs8IS > https://jumpshare.com/share/Dx3IZw3fz25XkMq4pBpj > > And screenshots in jpeg. I can't see much new here. Wasn't the screencast I posted earlier more indicative? martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 24 Mar 2026 17:23:20 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Mar 24 13:23:20 2026
Received: from localhost ([127.0.0.1]:45900 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1w55TM-0002L8-JR
for submit <at> debbugs.gnu.org; Tue, 24 Mar 2026 13:23:20 -0400
Received: from fout-b4-smtp.messagingengine.com ([202.12.124.147]:60075)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w55TK-0002KX-5d
for 80662 <at> debbugs.gnu.org; Tue, 24 Mar 2026 13:23:18 -0400
Received: from phl-compute-04.internal (phl-compute-04.internal [10.202.2.44])
by mailfout.stl.internal (Postfix) with ESMTP id 3D5191D001A9;
Tue, 24 Mar 2026 13:23:12 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
by phl-compute-04.internal (MEProxy); Tue, 24 Mar 2026 13:23:12 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc
:content-type:content-type:date:date:from:from:in-reply-to
:in-reply-to:message-id:mime-version:references:reply-to:subject
:subject:to:to; s=fm3; t=1774372991; x=1774459391; bh=Gmo5WfVAAV
HazZtfcPHMxzLDRp64OWNjgw9a98tgaQ4=; b=Web3ETXajgoi5J/iPWeDhiQ/pX
/vDIhbbfxj3zPQYUqsRWgCyw330WPc4ahzQbUbNoxgM9GqGcGIh813/FnwdFeol5
4JuK/ILT7FwiY7jj05/8WfhmF05yKhFCPbg33fjIF1bYuh1XWSMdo9X8k9eZ3dmF
Zo6uAVS3mI9KSlmcETTvLT/pq2Wkrk17X6CjM0lXUg4KjsVFp3eBmgCeajBVe1AJ
uEMCAei717rxsVQZl1NH1mKHHAZ4p3izj7RZcAOdbpiiGR6FnJ0riYrAHM6ND1lK
G9nLMRXb7XcEhqWfaltOEyEb4CDo1uIfgkjoDU9fOnL9a6MHJFY01VRQtb0A==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:content-type:content-type:date:date
:feedback-id:feedback-id:from:from:in-reply-to:in-reply-to
:message-id:mime-version:references:reply-to:subject:subject:to
:to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=
1774372991; x=1774459391; bh=Gmo5WfVAAVHazZtfcPHMxzLDRp64OWNjgw9
a98tgaQ4=; b=qqaNznwpzXYwFlV3AvTFLgyrlnhwYRD8QrzNDJ8xVaOygqVxewn
S51M3gBv22xw4e8lpUC9oKgRG2pM4L9JZrd3qKriHcz7HI8tqg4RDv7Skz6GL0i2
aIIsxDLHVQJ9V7layyVeswEkh8I+fCG63ejPHVXPW2SsIWYZiJU394+WiKRUPf+O
J3hwL59vWfG6vc1TDxfaF6FL5Z+2efIDyKMkNRi+61vLt/cLdypo2SxeO82RgP2Q
sZMxnxOLYfYS7LNhfDMsQ8PuqF7TY56oCxESUwkbRXFsd8OGPac7JkQe8JSZoByd
ESLIDZxT78ejZe9Z0XBykhDtUyLzDIrTM3g==
X-ME-Sender: <xms:f8jCaSQ3pddfxOJlp_wAiZGgb7PEDIskFtp2oacM60en3OYyqdTfyw>
<xme:f8jCadxxpiaKIV7ruduRX_yXQg03Un6qq-IrhhaZo-gLbgsKgxEBCwpTYDm8GMDJV
ZA8m0ML_kHihWtj2KZ0Mu-O-nybtmVP5wq3WZLXRQFKF-vZ4l32mXBS>
X-ME-Received: <xmr:f8jCadcYQ_L-DHfBpLWx0FnwMQzRJ5eQ1FcbFK9KhMAtqVEcWeIIJVRjk2kSyO5QKmiofg>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvddvudejucetufdoteggodetrf
dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu
rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf
gurheptgfkffggfgfhuffvfhgjsehmtderredtvdejnecuhfhrohhmpeffmhhithhrhicu
ifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrthhtvghrnh
eptdefgeffgfehjeevffejhfetfffhieekkeevtddutdefhfdvhfffgfeutdffudevnecu
ffhomhgrihhnpehjuhhmphhshhgrrhgvrdgtohhmnecuvehluhhsthgvrhfuihiivgeptd
enucfrrghrrghmpehmrghilhhfrhhomhepughmihhtrhihsehguhhtohhvrdguvghvpdhn
sggprhgtphhtthhopedvpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopehruhgurg
hlihgtshesghhmgidrrghtpdhrtghpthhtohepkedtieeivdesuggvsggsuhhgshdrghhn
uhdrohhrgh
X-ME-Proxy: <xmx:f8jCaZIG8e6OWMeFw9V9UFKgEFqGOKL7mJMi-8lDc0a3HuDA1FzOOg>
<xmx:f8jCaeF15dxiCtyYJdY6lsSqPdo_-ye55sZwCrRcCebdWsT9pBGMkg>
<xmx:f8jCaTpCn5ywKVzrOmZMv-h81xga5GdqOCKJ1tYp1PFdBppuXW8zjg>
<xmx:f8jCaXQBXPp4GlwA_5zn3D8iAOdYsS-TVDtlWNpLZmxCTkxfWDFDZA>
<xmx:f8jCaQa68sI1yO0QGqOH8hBkSHB2CoBT_XwsLKfbAap1OiX2PGaBkFDT>
Feedback-ID: i07de48aa:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue,
24 Mar 2026 13:23:09 -0400 (EDT)
Content-Type: multipart/mixed; boundary="------------KZYqah6IIxD5kSZYsGQ88PNk"
Message-ID: <be6b5f8c-961d-4959-964c-604bed2a39d1@HIDDEN>
Date: Tue, 24 Mar 2026 19:23:06 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Dmitry Gutov <dmitry@HIDDEN>
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
<a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN>
Content-Language: en-US
In-Reply-To: <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN>
X-Debbugs-Envelope-To: 80662
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.
--------------KZYqah6IIxD5kSZYsGQ88PNk
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Resending this message for posterity, as the previous try was rejected
by the mailing list as too big (4 MB total).
Videos now here:
https://jumpshare.com/share/8PrAIGygMRluOUzJs8IS
https://jumpshare.com/share/Dx3IZw3fz25XkMq4pBpj
And screenshots in jpeg.
On 23/03/2026 12:33, martin rudalics wrote:
> > Long story short, evaluate the attached stript.
> >
> > The childrame will start moving up and down, between two different
> > dimensions and two different buffer contents (which are formed before
> > each move).
> >
> > Something that we can see is that when a "smaller" size turns into a
> > "bigger" one, the previous contents that were displayed in the "smaller"
> > size, creating a criss-cross effect. They shouldn't even be retained,
> > though, given that only one buffer is used for the whole process.
>
> I can vaguely observe it on GNOME Lucid. The behavior with GTK seems
> better at least but maybe for other reasons.
The GTK3 behavior in my testing is no different in this scenario. The
no-toolkit also exhibits this problem.
And it looks like out of these three, the x-wait-for-event-timeout
workaround only helps with Lucid.
The PGTK port doesn't have this problem (on Wayland), apparently syncing
the window state correctly. But it resizes and moves frames more slowly.
> I had to tweak the
> dimensions a bit to better fit them into my parent frame and used
>
> (set-frame-size-and-position-pixelwise child 400 300 300 400)
>
> in 'my-child-move-a' and
>
> (set-frame-size-and-position-pixelwise child 800 600 200 300)
>
> in 'my-child-move-b'. So maybe my settings won't be able to reproduce
> the behavior you see although the child frames overlap here.
Right, I'm at 2x scaling so the pixel counts would be twice as large. We
should halve all numbers when at 1x scaling. Attaching the new version
(I've had to change the default font's height as well, for dimensions to
be right).
The idea is not to have the boxes overlap - in this scenario the
transition happens between two boxes that have no intersection on the
screen, so I think what we see is the resize-and-move transition
happening in two steps: first the frame then the contents.
I'm attaching the scenario version labeled as 1x, with half values. It
also includes a green border for better clarity.
> Once the behavior got weird when I did not change the size - in that
> case moving the frame to the right also showed some contents of the
> parent frame on its left in the same yellow background, for example, via
>
> (set-frame-size-and-position-pixelwise child 400 300 600 400)
>
> and
>
> (set-frame-size-and-position-pixelwise child 400 300 300 400)
>
> but I cannot reproduce such behavior any more.
Having the sizes different is probably not necessary to reproduce this
bug - but it helps to notice the two-step transformation - how the frame
contents get painted in two steps, first at the previous size (but new
position) and then at the new size.
The most pressing issue (for me - the use cases is rendering a
completion popup) seems that in the first step the contents are the old
ones as well: the blinking text is the most apparent. But the rest is
easy enough to notice too.
Attached are two screencast made with the Lucid build.
The first one is where the binding (x-wait-for-event-timeout nil) stays
commented out. The video shows the "hourglass" transition pattern where
the edge of text moves from one diagonal direction (from one buffer
content) to the other diagonal direction (from the other buffer
content), at both popup positions, in the middle. That is observable at
normal speed, and looks pretty bad.
The second vid is after I uncomment (x-wait-for-event-timeout nil) in
the definition of my-child-move-a-or-b and re-evaluate it. The text
contents are now up-to-date during transitions, but the window areas are
still lagging: during normal playback this feels like shimmer
(especially when the frame has no border), but if you reduce the
playback speed in the video player to e.g. 1/4th and/or step through
frames one by one, that becomes easy to notice.
Attached are also two screenshots from the video #2 around 00:00:01 with
transition states. The first one is during transition from big (above)
to smaller (below): with blank white rectangle where the big had just
been and a slightly incomplete rectangle below (the border is partially
missing). The second is during the transition from below to above: there
is a blank white area below where the popup had been, and above its
content are rendered aligned with the top-left of the bigger rectangle
while the rest is blank white yet. The next frame in both cases will
render the consistent full state.
Anyway, this second problem probably hurts less, but it still
contributes to the "flickery" effect.
> > diff --git a/src/xterm.c b/src/xterm.c
> > index dfc0ae804e2..15d9e880413 100644
> > --- a/src/xterm.c
> > +++ b/src/xterm.c
> > @@ -28503,7 +28503,8 @@ x_set_window_size_1 (struct frame *f, bool
> change_gravity,
> > for the ConfigureNotify. */
> > if (FRAME_VISIBLE_P (f))
> > {
> > - x_wait_for_event (f, ConfigureNotify);
> > + if (!FRAME_PARENT_FRAME (f))
> > + x_wait_for_event (f, ConfigureNotify);
> > if (CONSP (frame_size_history))
> > frame_size_history_extra
> > @@ -28577,7 +28578,9 @@ x_set_window_size_and_position_1 (struct
> frame *f, int width, int height)
> > SET_FRAME_GARBAGED (f);
> > if (FRAME_VISIBLE_P (f))
> > - x_wait_for_event (f, ConfigureNotify);
> > + if (!FRAME_PARENT_FRAME (f)) {
> > + x_wait_for_event (f, ConfigureNotify);
> > + }
> > else
> > /* Call adjust_frame_size right away as with GTK. It might be
> > tempting to clear out f->new_width and f->new_height here. */
> >
> >
>
> Was I supposed to apply that diff?
Maybe or maybe not, since it doesn't work reliably, even with Lucid. So
at best it could server as a starting point for the solution.
Here's what I was thinking: if setting x-wait-for-event-timeout to nil
helps at least with the first part of the problem (outdated contents,
the hourglass transition), then the problem happens during the
x_wait_for_event call inside x_set_window_size_and_position_1. Because
x-wait-for-event-timeout=nil makes x_wait_for_event a no-op. We could
try skipping it for child frames because IIUC it is there to handle
window managers refusing the resize requests or altering the dimensions,
but for child frames that shouldn't happen (is that right?).
Anyway, I must be missing something because the result of this change
differs from the effect of binding x-wait-for-event-timeout to nil,
adding some rendering artefacts in a more complex scenario that I'm also
testing.
--------------KZYqah6IIxD5kSZYsGQ88PNk
Content-Type: text/x-emacs-lisp; charset=UTF-8;
name="my-child-set-size-and-position-1x.el"
Content-Disposition: attachment;
filename="my-child-set-size-and-position-1x.el"
Content-Transfer-Encoding: base64
KGRlZnZhciBjaGlsZCBuaWwpCihkZWZ2YXIgYnVmZmVyICIqbXktbm90ZXMqIikKCihkZWZ1
biBteS1jaGlsZCAoKQogIChpbnRlcmFjdGl2ZSkKICAoc2V0cSBjaGlsZAogICAgKG1ha2Ut
ZnJhbWUKICAgICBgKChwYXJlbnQtZnJhbWUgLiAsKHNlbGVjdGVkLWZyYW1lKSkKICAgICAg
IChuby1mb2N1cy1vbi1tYXAgLiB0KQogICAgICAgKHVuZGVjb3JhdGVkIC4gdCkKICAgICAg
IChpbnZpc2libGUgLiB0KQogICAgICAgOzsgKGxlZnQgLiAxLjApCiAgICAgICA7OyAodG9w
IC4gMC41KQogICAgICAgOzsgKHdpZHRoIC4gMC4zKQogICAgICAgOzsgKGhlaWdodCAuIDAu
OCkKICAgICAgIChib3JkZXItd2lkdGggLiAwKQogICAgICAgKGludGVybmFsLWJvcmRlci13
aWR0aCAuIDIpCiAgICAgICAoYmFja2dyb3VuZC1jb2xvciAuICJ5ZWxsb3ciKQogICAgICAg
KGNoaWxkLWZyYW1lLWJvcmRlci13aWR0aCAuIDEpCiAgICAgICAodG9vbC1iYXItbGluZXMg
LiAwKQogICAgICAgKG1lbnUtYmFyLWxpbmVzIC4gMCkKICAgICAgIChtaW5pYnVmZmVyIC4g
bmlsKQogICAgICAgKHZlcnRpY2FsLXNjcm9sbC1iYXJzIC4gbmlsKQogICAgICAgKGhvcml6
b250YWwtc2Nyb2xsLWJhcnMgLiBuaWwpCiAgICAgICAobGVmdC1mcmluZ2UgLiAwKQogICAg
ICAgKHJpZ2h0LWZyaW5nZSAuIDApCiAgICAgICAoZHJhZy1pbnRlcm5hbC1ib3JkZXIgLiB0
KQogICAgICAgKGRyYWctd2l0aC1tb2RlLWxpbmUgLiB0KQogICAgICAgKGRyYWctd2l0aC1o
ZWFkZXItbGluZSAuIHQpCiAgICAgICAoZHJhZy13aXRoLXRhYi1saW5lIC4gdCkKICAgICAg
IChtaW4taGVpZ2h0IC4gMSkKICAgICAgIChtaW4td2lkdGggLiAxKQogICAgICAgKHNuYXAt
d2lkdGggLiAyNSkKICAgICAgICh0b3AtdmlzaWJsZSAuIDUwKQogICAgICAgKG5vLXNwZWNp
YWwtZ2x5cGhzIC4gdCkKICAgICAgICh1bnNwbGl0dGFibGUgLiB0KQogICAgICAgKGN1cnNv
ci10eXBlIC4gbmlsKQogICAgICAgKGluaGliaXQtZG91YmxlLWJ1ZmZlcmluZyAuIHQpCiAg
ICAgICApKSkKICAoc2V0LWZhY2UtYmFja2dyb3VuZCAnY2hpbGQtZnJhbWUtYm9yZGVyICJk
YXJrIGdyZWVuIiBjaGlsZCkKICAoc2V0cSBteS1jaGlsZC13aW5kb3cgKGZyYW1lLXJvb3Qt
d2luZG93IGNoaWxkKSkKICAod2hlbiAoZ2V0LWJ1ZmZlciBidWZmZXIpIChraWxsLWJ1ZmZl
ciBidWZmZXIpKQogIChzZXQtd2luZG93LWJ1ZmZlciBteS1jaGlsZC13aW5kb3cKICAgICAg
ICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRl
IGJ1ZmZlcikKICAgICAgICAgICAgICAgICAgICAgICAoc2V0cS1sb2NhbCBtb2RlLWxpbmUt
Zm9ybWF0IG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAoc2V0cS1sb2NhbCBsZWZ0LWZy
aW5nZS13aWR0aCAwKQogICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWJ1ZmZlcikp
KSkKCihzZXQtZmFjZS1hdHRyaWJ1dGUgJ2RlZmF1bHQgbmlsIDpoZWlnaHQgNTApCjs7KHNl
dC1mYWNlLWF0dHJpYnV0ZSAnZGVmYXVsdCBuaWwgOmhlaWdodCAxMTApCgooZGVmdW4gbXkt
Y2hpbGQtbW92ZS1hICgpCiAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyCiAgICAoZXJh
c2UtYnVmZmVyKQogICAgKGluc2VydCAobWFwY29uY2F0IChsYW1iZGEgKG4pIChtYWtlLXN0
cmluZyAoKyAzMCBuKSAoKyA/YSBuKSkpCiAgICAgICAgICAgICAgICAgICAgICAgJyggMCAx
IDIgMyA0IDUgNiA3IDggOSAxMAogICAgICAgICAgICAgICAgICAgICAgICAgIDExIDEyIDEz
IDE0IDE1IDE2IDE3IDE4IDE5IDIwCiAgICAgICAgICAgICAgICAgICAgICAgICAgMjEgMjIg
MjMgMjQgMjUpCiAgICAgICAgICAgICAgICAgICAgICAgIlxuIikpCiAgICAoZ290by1jaGFy
IChwb2ludC1taW4pKSkKICA7OyhzZXQtZnJhbWUtc2l6ZS1hbmQtcG9zaXRpb24tcGl4ZWx3
aXNlIGNoaWxkIDQwMCAzMDAgMzAwIDQwMCkKICA7OyhzZXQtZnJhbWUtc2l6ZS1hbmQtcG9z
aXRpb24tcGl4ZWx3aXNlIGNoaWxkIDY4MCA0MDAgNzAwIDEyMDApCiAgKHNldC1mcmFtZS1z
aXplLWFuZC1wb3NpdGlvbi1waXhlbHdpc2UgY2hpbGQgMzQwIDIwMCAzNTAgNjAwKQogICkK
CihkZWZ1biBteS1jaGlsZC1tb3ZlLWIgKCkKICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZm
ZXIKICAgIChlcmFzZS1idWZmZXIpCiAgICAoaW5zZXJ0IChtYXBjb25jYXQgKGxhbWJkYSAo
bikgKG1ha2Utc3RyaW5nICgtIDQwIG4pICgrID9hIG4pKSkKICAgICAgICAgICAgICAgICAg
ICAgICAnKCAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAKICAgICAgICAgICAgICAgICAgICAg
ICAgICAyMSAyMiAyMyAyNCAyNSkKICAgICAgICAgICAgICAgICAgICAgICAiXG4iKSkKICAg
IChnb3RvLWNoYXIgKHBvaW50LW1pbikpKQogIDs7KHNldC1mcmFtZS1zaXplLWFuZC1wb3Np
dGlvbi1waXhlbHdpc2UgY2hpbGQgODAwIDYwMCAyMDAgMzAwKQogIDs7KHNldC1mcmFtZS1z
aXplLWFuZC1wb3NpdGlvbi1waXhlbHdpc2UgY2hpbGQgMTAwMCA5MDAgNzAwIDIwMCkKICAo
c2V0LWZyYW1lLXNpemUtYW5kLXBvc2l0aW9uLXBpeGVsd2lzZSBjaGlsZCA1MDAgNDUwIDM1
MCAxMDApCiAgKQoKKGRlZnZhciBjb3VudGVyIDApCgooZGVmdW4gbXktY2hpbGQtbW92ZS1h
LW9yLWIgKCkKICAoZGVmdmFyIHgtd2FpdC1mb3ItZXZlbnQtdGltZW91dCkKICAobGV0ICg7
OyhpbmhpYml0LXJlZGlzcGxheSB0KQogICAgICAgIDs7KHgtd2FpdC1mb3ItZXZlbnQtdGlt
ZW91dCBuaWwpCiAgICAgICAgOzsoeC1mYXN0LXByb3RvY29sLXJlcXVlc3RzIHQpCiAgICAg
ICAgKQogICAgKGNsLWluY2YgY291bnRlcikKICAgICh1bmxlc3MgKGZyYW1lLXZpc2libGUt
cCBjaGlsZCkKICAgICAgKG1ha2UtZnJhbWUtdmlzaWJsZSBjaGlsZCkpCiAgICA7OyBGb3Jj
ZSBwYXJlbnQgdG8gbmVlZCByZWRpc3BsYXkgdG9vOgogICAgOzsgKHdpdGgtY3VycmVudC1i
dWZmZXIgKHdpbmRvdy1idWZmZXIgKGZyYW1lLXNlbGVjdGVkLXdpbmRvdyAoZnJhbWUtcGFy
ZW50IGNoaWxkKSkpCiAgICA7OyAgIChzYXZlLWV4Y3Vyc2lvbiAoZ290by1jaGFyIChwb2lu
dC1tYXgpKSAoaW5zZXJ0ICIgIikgKGRlbGV0ZS1jaGFyIC0xKSkpCiAgICAoaWYgKD0gKCUg
Y291bnRlciAyKSAwKQogICAgICAgIChteS1jaGlsZC1tb3ZlLWEpCiAgICAgIChteS1jaGls
ZC1tb3ZlLWIpKSkpCgoobXktY2hpbGQpCgo7OyAoc2V0cSBmcmFtZS1zaXplLWhpc3Rvcnkg
KGNvbnMgMjAgbmlsKSkKCihzZXRxIHR0dAogICAgICAocnVuLXdpdGgtdGltZXIgMC4yIDAu
NSAjJ215LWNoaWxkLW1vdmUtYS1vci1iKSkKCjs7IChjYW5jZWwtdGltZXIgdHR0KQo7OyAo
ZGVsZXRlLWZyYW1lIGNoaWxkKQo=
--------------KZYqah6IIxD5kSZYsGQ88PNk
Content-Type: image/jpeg; name="Screenshot from 2026-03-23 22-21-12.jpeg"
Content-Disposition: attachment; filename="Screenshot from 2026-03-23
22-21-12.jpeg"
Content-Transfer-Encoding: base64
/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
CAaABMsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDqPhD4puNe8B3+seJryOV7e/ePzjCiBYxH
G2MIAOrHtnmulh8d+CLiyuL2HV7R4IOJCAcr+GM1xX7PcENz8NtRhniWSNtVkDKwyCPKirn9
B8IaRe/GjVrU26pp9u5P2ZR8j/UUo+/P2cd7X+RM5KEeZnsmg+IvDXidHbR7qC628sAMEfga
yPEvi/wvp3m6e+vW+nXwGN5iD7D9CCKh074dx6H47l17S2S2s5I9jW0YwPyp/j3wxos3h7Ur
6XTbeS5MTMJGTnOKwxMrQUr+717mlBqU2nv0Nbwp5V5ocEzarDrIcki8SJYw49MKAKfqXiHw
1o18bTUb23gnCb/LYc7fWud+DYVfh7YhVCgSPgD61yHjfSbXW/jfp9ld58kwqWA/i9jW8nZK
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
aNXA6ZGazp0uRt9wlVc0k+hy1oJfEWtLfFGjs4B+7yPvGunubqKzgM0zbUXqalREiUKihVHY
CkkiSeMpKoZD2Na9LGdtbo5LUL0eJryKysAzWyENLKRgfSuriRba2VB92NcUscEUIxFGiD2G
Keecg9DRfSwdbnLat4hjv4zp2mq8txKdrHacLW1o9iNN0+O3zkgZY+9WYrSC3z5USKT3Aqei
/QAooopAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHjv7OZI+H9//wBhWT/0
VFXsOe1eO/s7ypD8ONSkkYKiapKzE9h5UVT3fibxX441a60/wk62NlbNte+Y/e/z7VMpJaFR
i9+h62tBHpXN+DNE1vQ9NaHXNZ/tS4Y583HSulzTS5dBPUQg0hK55YZpTyMV4brR8R+I/irc
eH9M1+XToY4y+cHHSqUXLYNNme45UDJYUKyuMg5FfPni3SPGHhKWyhXxlJez3UgCw8hiM17t
pUcsemWscxzIIl3n1bHNCaZLfK0mty6FoLcgCjPFYPjLWpfDnhS+1SFN8kKfKMdzxWcpWTdi
4wcpKKN7evrj2NKCT2xXh1h4d8c+IdAbxJ/wlnkyOhmihGcADnB7Cu5+GHiXUfEOgyjVPmur
V/LaXGN/vVppxvfXsJxkm01ojuaKKa5wuaAHcUZ445rxvVNY8S+NvGt74d0DU/7Mt7L/AF03
96o4NS8UfDzxfY6frOrnVNNvWEauw5DGin7yu9PUJrldtz2jNFIDmloEHfFJuGcZ59KxfFH9
sf2Q40MD7axAUn+EeteV+GLzxhZfEuDTdc1U3G8ncnbGKjmSlZluPu3R7cDng0hZR1OKo65q
aaNot3qMnK28Zcj1xXjulad438e2tz4hj8RmwtizNa24BxgdqpNOfKLltHmZ7iKWvPvhl4tv
dctbrTtXOdTsm2yE/wAS9M16CDwKuUeV2vcleYUhHHFLRU9LAIBQRS0ULQBB0paKKACiiigA
zRRRQAUUUUAFLRRTGJRS0UAIaMUtFKwCUUtFMBKQg4p1FJ7WAaARRjinUU0K3QbjilxS0UDE
xRilooATFGKWigBKMUtFACYoxS0UAJijFLRQAmKMUtFACYoxS0UAJijFLRQAmKMUtFACYoxS
0UAJRilooATFGKWigBMUUtFACYoxS0UAJRilooATFGKWigBMUYpaKAExRilooASjFLRQAmKM
UtFACUYpaKAExRilooATFGKWigBMUYpaKAExRilooATFGKWigBKMUtFACYoxS0UAJijFLRQA
mKMUtFACUYpaKAExRilooATFGKWigBMUYpaKAEoxS0UAJijFLRQAmKMUtFACYoxS0UAJRilo
oATFGKWigBKMUtFACYoxS0UAJijFLRQAmKMUtFACUYpaKAExRilooATFGKWigBMUYpaKAExR
ilooATFGKWigBMUUtJSAKKKKBHgHwnma3+BfiWVPvC9nH/kGKmeAPAureJvCC3MuqzWVsxYx
eQ2C5/2q1vgNYR6n8KdZspT+7n1CaM+2YYqZpem/EjwOk+kaNpkOo6ezHypJHxtz360rxvp8
XQ03p8r2ubHwz1nV7LxPqXhHV7g3DWcfmRyMcnGR3/GvVgQyg15z8PvBepaXf3eu64+dVuxt
dQchV9M16Kq7QAKIxly+9uRKXNUfKtBTVY2Nmt39qFtCLgjBlCDdj0zVls4qpqAuP7MuRagN
c+WfKB7tjilJyim47gtZJHk0u3xf8aFO3da6Odremf8A9deyADHArzz4beE9R0UalfazEsd/
fS72CnOBXoftVqSlGLtZ9RS9opuM3dLYXtVHVrQX+lz2hRH81CoDjIq8aKiSumrlKVnc8Ni+
GHj60sLqxttdgS3nckIHOFX06V6h4K8PzeHPDkNhcvHJcLzJIn8RrocClostHbXuDlJ310YU
h+lLRVEnl9r4J8T6N491DWtFubRbK+OZUm5PrVfxH4G8Y+JfFGnXt3eWAsbOUSCNM5wD9Ote
sY5oxSkue3NrYtyve2lyKLJUk1LS0VVzOMbKw3nOa4M+D9Tf4kx+IDPF9jX+D+LpXe4oxWFS
l7RpvobQqOF0upheL9Hutd8LX+m2UiRz3EZVWfoK4m08JeN9I0vQ9O02+tEgtUK3YP8AGSe1
ep4pMVtJuVN0+5MJuDujz7wp4M1XQ/GerazdXEL295GFRE6hsjOa9BHCgUuAKKilD2cFDsTJ
uU3N9RO9LRRViCiiigAooooAKKKKACiiigAoFFFAC0UUUxhRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0lABRRRSEeQf
s4/8k91D/sKyf+ioq9eI5615D+zj/wAk91D/ALCsn/oqKvXehyTj60aDF7UACgcDFJwP4hRc
NR1JxRuBxgijvQtdQDFHejvR3oJFNFM4JIzz6U+le5TQUUUUCCiiigBaKSimMWikooAKKKKL
CCiiiiwBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRQKAFooopjCiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlpKACiii
kI8a/Z8Mo+GWqeQMy/2nLsHv5MVY/iufx/o+pWl3qGsFLeWX5bdP4ea3f2c/+SeX/wD2FZP/
AEVFU/xkLbtKz0Eg/nXPXm6Vqi9DejFVG4M9StXL2cDNyzRqSfwrxbV08R+KPiNPo1j4hbTo
EBbg9h6DvXs1lhbC2yePJX+QrzDU/hXaeKPE9zqX9uMi7sMtq2GU+hoqKcqsHHbqKFuSSe5t
+EfBOvaHqZutS8VS6lCPuwsDgV3v8VeIabBqfw3+ImnaOuoTXmmak+xRM2SK9uB3Ekdq6E09
UZtcrs9xe9c74vj8QTaakXh6RYrl2w0p/gHrXRd6Q9cipnHmVgi+VnjPw8v/ABLb/EK60zXd
Ua9YI270zXs4ryDw0zD4034POUevX16Vjh6rqw5maV6apz5ULRRRW5iFFFFABRRRTAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKBRQKAFooopjCiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlpKAC
iiikI8X+ABuB8LtXa1UNcDUpTEpPBbyYsCsvxPo/xU8Um3NzotnGIGyu2Vef1rc/ZyGfh7qH
/YVk/wDRUVevAEHqfzqZxUtJLQ0jNx+Hc4fwPceNZJHg8VabbW1vFEFhaJwxYj1wa5m88M+M
vCPia91TwpBHqEF65eSGV8BT6da9e6nmj6U5cyas7IiLdmeUeH/CHiTXPFsPiPxbHHbPbHdD
bxtkA16soAzil5IwaUUR5UrRVhNtu8txeormPGV34ns7KBvC9jDd3JfEiStgBa6XvRtB55zQ
9tBwaTu0ePeCPDnjaH4kPrevadBb2ssb72SQHBI4AANex4xSAHHJoFKMFBWihylKTvJi0UUU
yQooopgFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAtFFFMY
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABSUtJQAUUUUhHj/wCzkf8Ai3moDv8A2rJ/6Kir17IAG44Poa8X+Ahuh8LNX+xA
G5/tKXys/wB7yYsVaHw/8c6pA+oaj4umtrrlkgUEhcdBwaXNrYvl93mPXgSeoxRuXdtyM151
8KPE+pa3YXdlq8hlu7OQp5p/iFctq8ev+KPiRPo9n4ifTIUBbKnnjsB3qKlSNOahe9x0qcqk
XJq1j27IHcGqt1qNrZSKlxIEZuma4zwj4H1zQtSa6v8AxZPqcP8Azyccfzrsb7TrS/GLmESE
jAz2q5aK6IW+pZjdJUDxuGU9CDUg6VyulF9I1htLLkwvzGD2rqxTW1yU9WgFFFFBTCiiigQU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABQKKKAFooopjCii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKSlpKACiiikI8f8A2cs/8K9v8f8AQVk/9FRV2fjnxnZeFdHkBYTahMpSC2U/MxPG
celef/Aj7YfhRrIsAPtZ1GURZ6bvJixWFZ+Cvifa6ydXu9Ls9Sut2Y2uLhT5f0GaL3euxVup
6P8ACjw1d6J4flvNSXbeXshmIPVVPQGsrVPhXYeJ/EtzqJ1pwhb5ltnw6n0Jrf8AB1546lvp
08V6daW9rs/dGFwTn04Ncxf+FvGPhbxRd6t4SjivYbxi8kEz4Cn05NZVIw9pGT07DhOUlJX1
6mfYW+ofDb4h6bo8V/Nd6bqb7FEzZK17amDmvKfDfg3xLrHi2PxJ4uSOCS3O6C3jYEKa9E1L
WrbSRtkV2cjICrnNOClGP7zcUlzTShtb8TJuiG8a2mDnapzXViuY0W0nur+XVrqPZ5n+qU9Q
K6cdK3k1ZWM435mmFFFFQy2FFFFAgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigBaKKKYwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpaSgAooopCPIP2cf+Se6h/wBhWT/0VFXr
2Pc15D+zj/yT2/8A+wrJ/wCioq9foATGetGPSlopAJ0NI0MbHJRSfcU6igYY4xgUUUtACUtF
FMAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpaKACiiigAoopKAFooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKSloAKSlooAKKSloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACkpaSgAooooEeQfs4/wDJPb//ALCsn/oqKvX68g/Zx/5J7f8A/YVk
/wDRUVev0AFFFFIApaSloGFFFFABRRRTAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlooAKKKKACkpa
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApKWkoAKKKKBHkH7OP/JPb/8A
7Csn/oqKvX68g/Zx/wCSe3//AGFZP/RUVev0AFFFFIApaSloGFFFFABRRRTAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigBKWiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooASloooAKKKKAEpaKKACiiigAooooAKKKKACiiigAooooASloooAKKKK
AEpaKKACiiigAooooAKKKKACiiigAooooAKSlpKAFooooAKKKKACiiigAooooAKKKKACiiig
AooooAKSlpKACiiigR5B+zj/AMk9v/8AsKyf+ioq9fryD9nH/knt/wD9hWT/ANFRV6/QAUUU
UgClpKWgYUUUUAFFFFMAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiikoAWiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKSgBaKK
KACiikoAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKSloAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACikpaACiiigAopKWgAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlpKACiiigR5B+zj/yT2//AOwrJ/6Kir1+
vIP2cf8Aknmof9hWT/0VFXsFAxKKWikAlLRSUALRRRQAUUUUwCiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKSlooAKKKKACiikoAWiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopKWgAooooAKKSloAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpaSgA
ooooEeQfs4/8k8v/APsKyf8AoqKvX68f/Zy/5J7f/wDYVk/9FRV6+OKLBcWiims6ohZ2CqOp
NIY+kpkcqSoGjdWX1B4p9OwBRRSHOKGgFpaaOlLQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFJQAt
FFFABSUtFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFJQAUtFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUlAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0lABRRRQI8W+
AF9baf8ADPUbi7k8uJdVky3/AGyir1KbxLpNutq0l0ALr/U8ferx/wCDMH2j4N62gUEjUpSM
/wDXGKpp5n1DRtPnGC9i2DjtzW0afNTclujSEdbz+E9hXWrCTUzpyTg3YTf5ftWH4j8RaCIZ
9L1C+kgZhhiqnj8ayfCOL7xbdagQG/0ZV3eldB4nsrV9FuppLaN22HkqM1zKfuJy+Y6cV7Rx
fyJPCsNlFoNuun3b3VtyVlbqau6nrdho8IkvphGD+J/KsbwDx4UtAF2gluPxrN8YaJfXGqw6
pbxG6SEYNv61q9XdbEUlz3v0NO38f6DdXq20VxKWc4UmMgGujuLqC1tzPPIEiAyWPpXGaX4l
0+S/is9R0P7BcHhWkjAGai+Jd68FnYQqjSQySjcidXHpRJX0huXGHPJKJ0Om+LtG1bUDY2N0
ZbgDdjaQMfWt0HIri/DOoQz6hFbxeGprDbFxcOgAx6ZrsxgdKl2vpsRJWY6iiigQUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFJ
S0AFFFFABRRRQAUUUUAFFFFABRRRQAUUlFAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFJS0lABRRRQI8X/AGf4WuPhjq0K4+fUpVGf+uMVb2heBNSs9P1S3vXiLTk/Z9pyB9ayf2cf
+SfagP8AqKyf+ioq9g2gVSnKOw5XcOTzOO8C+Hr/AMPWU6agUaV24KHPFV9bt/GV+1zaWsFm
LN8qjM3zY967jBx1oK96HJS3Roqlne2pwXhjTPGGi/ZbGdLN7BGJdg3zYPpWp4gl8VR6kjaL
BbvbbPm8w85rqCCSOaUjOKfOuxEWk27bnnp8PeJfEV/bza6ttbxwEEeSeTXT+IPDsWuacluX
aOSHmJx1BFbmKTaQevHpUuV3daFKct7nJ+HovFVtf/ZdV8l9PjTCyqfnJ7V1o6UHkUAUN3dy
W7i0UUUhBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUlAC0UUUAFFFJQAtFFFABSUt
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFJS0AFFFFABRSUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLRQAUUUUAF
FFFABRRRQAUUUUAFFFFABSUtJQAUUUUCPH/2cf8Akn9//wBhWT/0VFXsNeKfADULbTfhrqNz
dyeXEuqyZb/tlFXqU3ijSLdbRpbsAXf+p4+9T5Xa/QpJt2W5s0yR1jQs7BVHUk8VQXW7CTVP
7NSfN3s37MdqxPEniXQI4ptM1C7liJGHKKePxpJN7dQhFydkdTHLHMgeN1dT0KnIp9YfhdbC
PQ7YabcNPac7JG6mrmqa3p+jw+bfTiMdh1J/Ck9HZkxd9jQpa5W1+IOgXdykEM0xkc4AMRFd
FcXkFrbtPPIEjUZLGm1bcpprcsUVg6X4v0bWNRNjZXDSThS2ChAx9a3etFmtwaa3FooooEFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtFABRRRQAUUUlAC0UUUAFJS0UAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFJS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUtJS
0AFFFFABRSUtABRRRQAUUUUAFJS0lAC0UUUAFFFFABRSUtABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUlLSUAFFFFAjwf4M24ufg5rabdxGoykD/tjFU9w73+iafcrgtYNgj05qz+z
/Abj4YatEv3n1KVRn/rjFXRaH4H1Gy0/U7e7eJjcE+Tg9PrXTCa9k6b6milyR9ot72JPCTi+
8V3F8ygn7OqhvSt/xRY2j6PdSvbRyOUPJUZ6VU8D+HL7QLWZb9keV24KnPFU9ZtPGt9NdW9s
lkto5IQs3OK5PZz5eWL2NIRSqNp6F/wCB/wiVmoAABbgfWs7xjoN/davBqtrEbpIRg2/rSeG
tK8Y6Oba0mFkbBGJchvmx7Vqa+/ipdSRtFS3Ntt+YSdSa05W2u5nQThJ2M3SvFFi99HZ6noJ
0644CNIgwT7cUz4l3kkVnYQpG0kUko3InVx6VE3h7xJr+qW02uLbRQwHP7o8mun8ReHo9b01
LfeUli5icdQap2jK89UaxcIzV9TL8Nal52oRWi+GptPRYuLh1AB9s12Ark/D0Piu11FbbVGg
l09I8CUH5ye1dYOlTK99TCV7u7FopKWpEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUlAC0UUUAFFFFABRRRQAUUUUAFFFFABSUtFABRRRQAUlLSUALR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFJQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJQAUUUUCPIP2cv8Aknl//wBh
WT/0VFXr4FeQfs4/8k81D/sKyf8AoqKvXx0oYwpMc0popAJSkUDrS00AmKTvRRQwFpaaQaUU
ALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAJS0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUlFAC0UUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFJS0lABRRRQI8e/ZzYJ8PNQLHCjVJCT/ANsoq6bWPi14U0a7e2luZ5ZU
OGEERYfnXIfAW2e8+FOs2sblHm1GZAw/hzDFzWVp9prnw6u7qKfwodctnbLXIj3YH1wazbkp
pdC3C8L9T1zwt410jxhA8ultMfL+8sse0io/Evj/AMP+FHWPU7lxKwyI4k3N+VQeCfE2h+Ib
KSTSrSOznjH723CBSp/CvHdN1+7Xx/rd7N4Zm8QypOVjCjIiGfQg1fLJ6xeg1G17nt3hnxro
fisOdKuWdk6pIu1h+FdF2rwjQl1u6+Jlnqdt4SutGtpGxchhhcflivd/WnzQfwKxPLKPxCVB
d3kFhayXN1IscMa7mZjjAqevJvjXdzFND04SMltdXO2bacZHHFKd7XQ4x5nY6fQvib4c8Sa+
dG06a4e62lgWiIUgehrsx0rG0Tw9pOj2dsLCyhjZIwokCDcR7mtkUfmTbUWikpaYBRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFJQAtFJS0AFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFJQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUlAC0UUUAFFFJQAtFFFABSUtFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFJQAtFJS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRSUtABR
RRQAUUlLQAUUUUAFFJS0AFFFJQAtFFFABRRRQAUUUlAC0UUUAFJS0UAFFFFABRRRQAUUUUAF
FFFABRRRQAUlLSUAFFFFAjxP4AG8/wCFbautmE806hL5e7pv8qLGf0q9n4xlHtvK00q2RvYr
wDTP2cv+Se3/AP2FZP8A0VFXr4UY560OzKjKyaOA+GvgW68Lfa73UpEa/uj84jOVFZ2v+Atf
0zxDJr/gu6SK4mJM1vKQEY/jxXqIoK980nrsCnLq9zgPCh+I8uqFvEqWSWXpERu/SvQOgpBn
uaU9Kd7iExxXM+NvCEHjDRfsbv5c8Z3Qy91aumowCaJAm1K6PN/BFh8QNH1ePTdba1m0OGMq
kwYFye3vXpI6U1wCKcOlJPUG9RaKSlpgFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSU
tJQAtFFFABRRSUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFJS0AFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFACUtJS0AFFFFABRSUtABRRRQAUUlLQAUUUUAFFFFABRR
RQAUUlLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0lABRRRQI8g/Zx/5J5f/wDY
Vk/9FRV6/jmvIP2cf+Seah/2FZP/AEVFXsFMYmKKWiiwCUYpaKVrAJigClooAaRxSjgUtFFg
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACkpaKACiiigApKWigAooooAKKKKACiiigAooooAKKKKACiii
gBKWiigAoopKAFooooAKKKKAEpaKKACiiigAooooAKKKKACiikoAWiiigAooooAKKKKACiii
gAooooAKKKKACiiigApKWkoAKKKKBHkH7OP/ACTzUP8AsKyf+ioq9grx/wDZx/5J5qH/AGFZ
P/RUVewUxhRRRQAUUUUgCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBKWiigAooooAKKKKACiiigAooooAKKK
KACiikoAWiiigAooooAKKKKACiiigAooooAKKKKACiiigApKWkoAKKKKBHkH7OP/ACTzUP8A
sKyf+ioq9grx/wDZx/5J5qH/AGFZP/RUVewUxhRRRQAUUUUgCiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikpaACiiigAooooAKKKKACiiigAoooo
AKKKKACiikoAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKSgBaKKKACiikoAWiiigApKWigAooooAKKKKACi
iigAooooAKKKKACiiigAopKWgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKSloAKSl
ooAKKSloAKKKKACikpaACiikoAWiiigAooooAKKKKACiiigApKWigAooooAKKKKACiiigAoo
ooAKKKKACkpaSgAooooEeQfs4/8AJPNQ/wCwrJ/6Kir2CvH/ANnH/knmof8AYVk/9FRV7BTG
FFFFABRRRSAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpaKACi
iigAoopKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApKWigAooooAKKK
KACiiigAooooAKKKKACiiigBKWiigApKWigAooooAKKKKACikpaACiiigAooooAKKKKACkop
aACiiigAooooAKKKKACiiigAooooAKKKKACiiigApKWkoAKKKKBHkH7OP/JPL/8A7Csn/oqK
vYK8f/Zx/wCSeah/2FZP/RUVewUxhRRRQAUUUUgCiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKSlooAKKSii4C0lFFK4C0UlGaLgLRSUUXAWikoouAtFJRRcBaKSjNFwClpKKLgLRSUUXAW
ikoouAUtJRRcBaKSii4BS0lFFwFpKKKLgLRSZoouAtFJRRcBaSiii4C0UlFFwCiijNFwFopK
KLgLRSUUXAWikoouAtFJS0wCiiigApKWkoAKKKKBHkH7OP8AyTzUP+wrJ/6Kir2CvH/2cf8A
knmof9hWT/0VFXsFMYUUUUAFFFFIAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKSlooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlpKACi
iipAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKWkFLTQBRRRTAKSlpKACiiigR5B+
zj/yTzUP+wrJ/wCioq9grx/9nH/knmof9hWT/wBFRV7BTGFFFFABRRRSAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKSloAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKSgBaKKKACiiigAooooAKSlooAKKKKA
CiiigAooooAKKKKACiiigApKWkoAKKKKkAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAFLSUtNAFFFFMApKWkoAKKKKBHkH7OP/JPNQ/7Csn/oqKvYK8f/AGcf+Seah/2FZP8A0VFX
sFMYUUUUAFFFFIAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlo
oAKKKKACiikoAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooASloooAKKKKACiiig
AooooAKKKSgBaKKKACiiigAopKWgBKWkpaACiikoAWikpaACiiigBKWkpaACiiigAooooAKK
KKACikpaACiiigApKWigAooooAKKKKACiiigAooooAKKKKACkpaSgAooooEeQfs4/wDJPL//
ALCsn/oqKvYK8f8A2cf+Seah/wBhWT/0VFXsFMYUUUUAFFFFIAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiikoAWiiigAooooAKKK
KACiiigAooooAKSlooAKKKKACkpaKACiiigAooooAKKKSgBaKKKACiiigAooooASloooAKKK
SgBaKKKACiiigAooooAKKKKACiiigAooooAKKKSgBaKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACkpaSgAooooEeQfs4/8k81D/sKyf8AoqKvYK8f/Zx/5J5qH/YVk/8ARUVewUxhRRRQ
AUUUUgCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApKWigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooASloooAKSl
ooAKSlpKAFopKWgAooooAKKSloAKKKKAEpaSloAKKKKACiiigAooooAKKKKACiiigAopKKAF
ooooAKKKSgBaKKKACiiigAooooAKKKKACiiigApKWkoAKKKKBHkH7OP/ACTzUP8AsKyf+ioq
9grx/wDZx/5J5qH/AGFZP/RUVewUxhRRRQAUUUUgCiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAoopKAFooooAKKKSgBaKKKACkpaKACiiigAooooAKKKKACiiigA
ooooAKKKKACikpaACiiigAopKWgAooooAKKKSgBaSlooAKKKKACikpaACikpaACkpaSgBaKS
loAKKKKACikpaACiikoAWiiigAooooAKKKKACiiigApKWigAooooAKKSloAKKKKACiiigAoo
ooAKSlpKACiiigR5B+zj/wAk81D/ALCsn/oqKvYK8f8A2cf+Seah/wBhWT/0VFXsFMYUUUUA
FFFFIAopKKYC0Uh6UDpU9QFooopgFFFFABRRRQAUUUUAFFFFABRSUtABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUlLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSU
ALRRRQAUUUlAC0UUUAFFFJQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFJS0AFFFFABRSUt
ABRRRQAUUUlAC0UUUAFFFFABRSUtABRSUtABSUtJQAtFJS0AFFFFABRSUtABRRSUALRRRQAU
UUUAFFJS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJQAUUUUCPIP2cf+Seah/2
FZP/AEVFXsFePfs5f8k81D/sKyf+ioq9g9KYxaKbUNzdQWlu81zKsUScs7HAFAE+aD0qrZX1
rqNstxZXCTwN0dDkGrPtSWoBS0nSgHNDethCnpQOlNc4FKp4ot1C+th1FJS0DCiiigAooooA
KKKKACiiigAoopKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiikoAWkpaSgBaKKKACkpaKACkpaKACikpaACiikoAWiiigAooooAKKSigBaKKKACiiko
AWikpaACiiigAopKWgAooooAKKKKACiiigAoopKAFooooAKKKKACiiigAooooAKKKKACiiig
AopKWgApKWkoAKKKKBHinwF1CLS/hbqt5MkjxxanKxWNcsf3UXQV0Nt8bfClzaXUyLerNAcG
3eLEjfQZrI/Z0APw7v8AIBH9qydf+uUVZnhzSLG9+Omszz26MLdyY1xwD9KIe/P2a3tcmc1B
XZ6L4Q+Iui+MppbeyE8F1Gu5obhdrY9awPHHxB8NWyXWi6vZam8JBWWSGLgfQ5roh4JsYfGT
+JYGMdy6bGjUYB96PHFvD/wiuov5aF2hbkqD2rCvJezU7+71NsP71Rxa16EPw4/sT/hE7VvD
zztprMxT7R9/Oec0eI/iPoHhfWv7M1D7R9pMfmDYmQR6fWs74Pjb8P7EHj94/wD6FXL+K7O3
1H476bBdRCWIQghT61vJuysRg4qXPzdLnV+H/i54f8Q6omnpDd2k8hxH9pj2hq6nX/ENh4a0
1r7UJNsQ6AdWPoK8z+L9rb2+taFPBCsUyuAHQY4zUXxVJvNe8I2U7kWryKWBOA2cUqd8RP2d
FWktxuLptSqfC9jr/C/xO0bxbq39nWdrfQzFSwM8W1SB75ruQAOlU4bGzgmjaK2ijaNNqMqg
ED0q5Qm9mK1tRaKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAJS0lLQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAJS0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUlFAC0UUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0lABRRRQI8K+CEGq3Hws1NNGuIoLz+1JNjyjKj91
FUlj8NPiNp+uXGsxa/p4u7lszHaeRn6Vo/s5f8k81D/sKyf+ioq9ewCOlCdpc0dxOKaaZS0x
blLWNLtw9wFAdh0JrznxJ4S+I+t3N/BBr2nxabMxEcbKdwU9ulephAKXbSmo1NWh0nKmrX+Z
5J4Q8D/EDwrJZ2h1ywl0mKTdJEqncQeuCRW/qPgi/vPiXa+Jo7mJbWKII0R+9mu8xRjnNOTu
kuw6bcJNrqcJ498F33iu+0+W0uI4RbMC2/vzU3jrwTH4p0e0jEwgv7PBt5ewbHf24rtfrXNe
MfCbeLtPitRqt1p3lvu3wdW9jWcYOLbg7NmrquSjGWyOd8IaX4ys/EUX/CS6/Z3UUcJWO3iP
zN6E16QOlcF4T+GcHhjW/wC1X1m71C4CGNfO6AH8a70Vp5mb3FooooEFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRSUALRRRQAUUUlAC0UUUAFJS0lAC0UUUAFFFFABRRRQAUUUUAF
FFFABRRSUALRRRQAUUUUAFFFFABRRRQAUUUUAFJS0UAFFFFABRSUtABRSUtABSUtJQAtFJS0
AFFFFABRSUtABRRSUALRRRQAUUUUAFFFFABRRRQAUlLRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BSUtJQAUUUUCPH/2cs/8K9v+P+YrJ/6Kir1/IGc4xXjf7PlzHZ/DLVbiU4ji1KV2PsIYqoy3
2p/EfUbtrjXotF0GJtsbeYEeQe3IzUOSUuVblWduZ7HuCSI5IRgwHcHNSVy/gjwxY+GdIMFh
qU9/FId3myybs/Sunz2rTYQVC95bRtteeNT6FgKlzg14ZrHhO68XfF24sr+XUbXTViLLJESF
Jx0BoUXJ6Cbtue1/b7PH/H1F/wB9ipkdXUMrBlPTFfOvjj4f6f4c1PStN0jWdTe+u5ARHLKW
GM17/pds1rYW0DkkpEqknuQKUWncJ80Wk1oy9iikpR0ouMWikpaACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigApKWigAooooAKKKSgBaKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAoopKAFooooAKKSloAKKKKACiikoAWiiigAooooAKKSloAKKSloAKSlpKAFopKWgAoo
ooAKKSloAKKKKACiiigAooooAKKSloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpa
SgAooooEfP8A8KXeP4EeJWjzuF7P0/64xVY+G3w407xH4NW91e4adWLeVGrY8qtH9n+0ivfh
hq1rMu6KbUpUYexhip8Xw38beH7i4g8La9bwabOxPlzAkqD+FTzpOyXvFuzhZvS4vwzku9C8
dax4WN41zY28XmxZOQvI4/WvYUIKA1xfgbwKPC4nu72f7Vqdx/rZx0x6Cu1AAAFOCkopT3Jk
7zco7CEkHpkUjMB8xxgd6celVb+Ga4065ht3Ec0kZWNz/C2ODSnzcrcdwSV7M8n00nxb8Zbq
9cb7bR22J6Z6fzr2KuM8A+Cp/CtpdNfXCXF7dSb5ZEHBrs6pS5oRurNbk2kpNSd10DFLSUoo
GhaKKKBhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFJS0UAFFFFABSUtFABSUtFABRSUtABRRSUALRRRQAlLRRQ
AlLRRQAUUUUAFFFJQAUtFFABRRRQAUUUUAFFFFABRRRQAlLRRQAUUUlAC0UUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFJS0lABRRRQI8g/Zx/5J7f/wDYVk/9FRV6/gdK8g/Zx/5J7f8A
/YVk/wDRUVetyTRQlfNkRC3AyetAyQDijIoGMcdDVeS7tYWxJPGh9GYCgCwaSoY7y2mIEc8b
k9ArA1PQAgGKWik9qADNLUSzQtIYllUuOqg5IqagAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikpaACiiigAo
oooAKKKKACikpaACiiigApKWigApKWigAopKWgAooooAKKSloAKKKKAEpaSloAKKKKACiiig
AooooAKKKKACiiigAopKKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlpKACiiigR
4z+z6ksvwy1SOFtsjanKFb0PkxVz3jfwnqnh/UbPUbnXLmeaaUZTedo57V0/7OfPw81Af9RW
T/0VFVj4yDB0o+kg/nXNiW6dqkd9jpoe+3Tex6fZuWsbfnJMSkn8K8G1rT9N1/4n3FlrmuS2
FmoJGJdgJHbJ4Fe8WbKtjbH/AKYr/KvOh4J8FeMfEV7dSTm8uIn2zQbsbTTqQnKrCS2W5NKS
jTncueB/A/hjSL9tQ0XW59QYcYa5Eij8BXofevC5NIh+H/xV0e00OZkstQfZJb7s7RmvcUO7
Jz0NbRmqi5o7GMvdko+Q+uc8X6HqGv6clpY3zWeW/eOhw2PaujzTTgtmlOCnGzHGbg7o8Q+H
GnT6H8TbrTX1C4ulWN8mVs5Ne4g5FeP+GFx8aNQ5z8r17AOlY4WpKpTvI2xNNQqWiLRRRXSY
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUlAC0UUUAFFFJQAtFFFABRRRQAUUUUAF
FFFABRRSUALRRRQAUUUUAFFFJQAtFFFABRRRQAUUUUAFFFFABRRRQAUlLRQAUUUUAFFJS0AF
FJS0AFJS0UAFFJS0AFFFFABRSUtABRRSUALRRRQAUUUUAFFFFABRRRQAUlLRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABSUtJQAUUUUCPGP2f45pvhdq8VtII521KURuf4W8mLBqHWPhb4/8QiM6
h4ps3MRJj+VuP0q7+zkM/D3UP+wrJ/6Kir14KB0FDinujSM3FWRxfgnQPFuizS/8JFrUF/bi
MJCkanK4+orC1n4c67beILjWPB+rRWE1yxaZJRkE16lg8UEA9qmSba12Ji7X8zzXwv8ADnUr
fX113xTqKX+oIcxmPO1TXpQUCgLinU0ktlYW7u9xD0rl/GWneI9TsYI/Depw2Fwr5d5BkEel
dPmgqrDpT06ji+V3PK/B3w58TaJ42Ov6vrVvdo6MrxxqcsSPpXqopvQdKcOlJRUVZIHJyeru
LRSUtMQUUUUAFFFFABRRRQAUUUUAFFFFABSUtFABSUtFABSUtFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0UAFFFFABRRRQAUUUUAFJS0
UAFFFFABRRRQAlFLRQAUUUUAFFFFACUtFFABSUtJQAtJS0UAFFJS0AJS0UUAFJS0lAC0lLRQ
AUUUUAFFJS0AJS0UUAFJS0lABS0lLQAUUUUAJS0lLQAUlLRQAUUUUAFFFFABRSUtABRRRQAU
lLRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJQAUUUUCPIP2cT/xb3UB3/tWT/wBFRV6tLf2t
u6xz3EUch6KzgE1498A4Zrj4WavDbyeXNJqUqo/90+TFzWjF8F7SazluNY1nUJtQYMxdJflU
9qXN73K9u5fL7t+vY9WU7hnIPpg1DJf2kMnlyTxo3ozAV5p8GtUvprO/0u8necWkpEcjnJx6
VyOt2Gka/wDFC5tNf1qWxs1BIKy7ASOgz0FZ1KsKdRRi7qXUcKc2pOSs0e9Q31rO22GeN29F
YGqupa1BpcirOG2kZ3AZxXG+CPA3hbSL5tQ0PWp79xwc3IkUflXfTQRzKVeNX3cHcM1pJPoQ
rDLS8t763We3kDoe4qyOelclZL/ZHiU2MZ/cz/Mq9hXWiqatZgNIpw6UGgdKBJWFopKWkMKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
ApKWigAooooAKKKKACkpaKACiiigApKWigApKWigAopKWgAoopKAFooooAKKKKACiiigAooo
oAKKKSgBaKKKACiiigAooooAKKKKACiiigAooooAKKKSgBaKKKACiiigAooooAKKKKACiiig
AooooAKKKKACkpaSgAooooEeP/s5/wDJPNQ/7Csn/oqKt/x948i0e2Oj6R/petXY2Rxp8wTP
GSa5T4D20978KNZtrabyZpdRmRJP7pMMXNVdP+DHjHSbt7yy8TWn2iQkl5EYkfQkUykluegf
DbwnJ4U8OMLwhry4YzSnupPasYeDfBHjHxHe3Ly/bJ43xNblsbTWr4O8P+MdG1CaXxBr0Wo2
7rhI0B+U+vIrF1r4aazF4im1nwjqyadPcEtMJASCfwrOfK6ik1r0HCbkpJv/AIJgT6XD4A+K
ejWuhSMlnqMmyW2DZCDNe4qck15x4V+HF/Z69/bvibUk1HUV5QoDtU+vNdjqmqXFifLtbKS4
ZuhXoDTXNCPv6sJS55e7tYy7j9541tgvPlqc11grA0TTLhLiXUb3/j4m52f3B6VvitJS5kjO
LetwNAoNA6UhhS0UUhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUtFFABRRRQAlLSUtABRRRQAUlLRQA
UlLRQAUUUUAFFFFACUtFFABRRRQAlLRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRSUUALRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUAFFFFAjyD9nH/knuof9hWT/ANFRV66Bz0ry
L9nH/knl/wD9hWT/ANFRV6/RcYdKOD2oopXATgdqQBc5xTqKYaiUopaKYCGgUtFABRRRSAKK
KKACiiigAooooAKKKKACkpaKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKSlpKAFooooAKSlpKAFooooAKSlooAKKKKAC
kpaSgBaKKSgBaKKKACiiigAoopKAFooooAKKKKACiiigAooooAKKKKACkpaKACiiigAopKWg
AopKWgApKWigBKWkpaACiiigAopKWgApKWkoAWiiigAooooAKKKKACiiigApKWigAooooAKK
KKACiiigAooooAKKKKACkpaSgAooooEeQfs4/wDJPL//ALCsn/oqKvYK8f8A2cf+SeX/AP2F
ZP8A0VFXsFIYUUUUAFFFFNAFFFFMAooooAKKKKQBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUlLRQAUUUUAFFFJQAtFFFABRSUtABRRRQAUUUlAC0UUUAFFFFABRRRQAUUUUAFFJRQA
tFFFABRSUtABRRRQAUUUlAC0UUUAFFJS0AFFJS0AFFJS0AFJS0lAC0UlLQAUUUUAFFJS0AFF
FFABRRRQAUUUUAFFJS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJQAUUUUCPIP
2cf+SeX/AP2FZP8A0VFXsFeP/s4/8k81D/sKyf8AoqKvYKQwooooAKKKKaAKKKKYBRRRSAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
ApKWigApKWigAooooAKKKKACkpaKACiiigApKWigBKKWigAopKWgAoopKAFooooAKKKKACii
igBKWiigAoopKAFooooAKKKKACiiigAooooAKKKKACiiigApKWkoAWiiigAooooAKKKKACii
igAooooAKKKKACiiigApKWkoAKKKKBHkH7OP/JPNQ/7Csn/oqKvYK8f/AGcf+SeX/wD2FZP/
AEVFXsFIYUUUUAFFFFMAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAoopKAFooooASloooAKKKKACiikoAWiiigAooooAKKKKACikooAWiikoAWiii
gAopKWgAooooAKSlpKAFpKWkoAWiiigAooooAKKKKACiiigBKWiigAooooAKKSloAKKKKACi
iigAooooAKKSigBaKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpaSgAooooEeQfs4/8A
JPL/AP7Csn/oqKvYK8f/AGcf+SeX/wD2FZP/AEVFXsFIYUUUUAFFFJTQC0UlFAC0UlLQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSUALRRRQAUUUlAC0UUUAFJS0UAFFFJ
QAtFFJQAtFFJQAtFFFABRRRQAUUUlAC0UUUAFFFFABRRRQAUUUUAFFFJQAtJS0UAFFFFABRS
UtABRSUtABSUtFABRSUtABRRRQAUUlLQAUUUlAC0UUUAFFFFABRRRQAUUUUAFJS0UAFFFFAB
RRRQAUUUUAFFFFABRRRQAUlLSUAFFFFAjyD9nH/knl//ANhWT/0VFXsFeP8A7OPHw8v/APsK
yf8AoqKvX6QxaKSori5htIGnnkCRryWPagCWk71BZ31vf26z20okibow71P3qkJi0Gig0mAU
UUUkMWiiimAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0UAFFFFABRRSUALRRRQAU
UlLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUALRRRQAUUlLQAUUUUAFFFJQAtFFFAB
RRRQAUUlLQAlLSUtABSUtJQAtFJS0AFFFFABRSUtABRRRQAUUUUAFFFFABRSUtABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUAFFFFAjxH4D6nFpPwu1K7njd401WTIQZP+qir0
i78badaJp7PHKRff6vA+79a8x+CkBuPg9raL1/tGUj/vzFTg76jocDhiZLFuv41vGkpUpS6o
1pqN7z2PWIvEtpca+2jxpJ9oWMSFsfLisbxN4ns7RZ7G+0m8nt8YeRF+UiqHgo/btfutQHzD
yFTd710/iRduhXThQT5ZrlbXKnL5hTSVVp/Ij8JyadNoFvJpcLw2jZKI/UU/XPE1poIVZlea
VvuxR8sapeA8/wDCKWhPUlun1qv4m8M3Wo6imp6e6m8iGFSQ/Ka0a1XLsRQUW5c77jLXx81z
fx2x0K/jWQ4V2XpXTalqttpdkbq6bbGBnHc+1cla+K9V0q/gsvEdjDCJDhZozmo/iVNMLXTT
AiurSghW+631qnHnlyx0NIRVSSVrGtofjSLXdT+xxabdwptLLNIuFNdSDkVyXh+98SPdxR6h
pdpBYbPlkifJB7V1o6VDkm7JGcklJ2FooooEFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUlAC0UUUAFFFFABSUtFABRRRQAUUUUAFJS0UAFFFFABSUtF
ABSUtFABRSUtABRRSUALRRRQAUUUUAFFFFABRRRQAUUUlAC0UUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUlAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0lABRRRQI8Z/Z7hNx8N
NUizgPqcq/8AkGKuu0b4fjTLPUYHvfO+2E7Ttx5dcv8As4n/AIt9fjt/asn/AKKir2DAq1Jx
HLWPKcz4R8Lv4Xs5YGuPtBkbO7GKoav4X8Q6nPOqa8IrWTpFs+6PSu0AwMUhFJyT6GiqOLuc
ToPg7XNEmt0TXt9lE2Wg2fe/Gr/iHR9dvdRjuNL1b7JGFw0eM5PrXUYoPPNCn5EwlyzcrbnE
WvgnULm9iute1X7aIjlEC4xXSavottrOnm0uFymPkI6qfWtPAPNJ/FSm2wc2nc5TQPDus6Pq
Y8/WDcacqFVt2XkHtzXWjikPB6ClFDd3cUpXdxaKKKQgooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAopKWgApKWigAooooAKKKKACiiigBKWiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACikpaACiiigApKWigApKWigAooooAKKKKAEpaKKACiiigBKWiigAooooAKKKKACi
iigAooooAKKKKACikooAWiiigAooooAKKKKACiiigAooooAKKKKACiiigApKWkoAKKKKBHj/
AOzj/wAk/v8A/sKyf+ioq9grxD4EapFo/wAL9SvJkd0TVJMhBz/qoq9Hu/HOnWiaczxSkX33
MD7v1p8rav0KinKVludRiobm5hs7dp53CRoMsx7Vlw+JLa419tHjik85YxIXx8uKx/Eviq1s
xPZXmkXdxbgYd1X5TSWyt1HCLm2l03Opsr231C2W4tZBJE/Rh3qx0rC8LXFhcaBbT6ZA0Fo2
dkbdRzTtd8T2WhbVmV5Z3HyxR/eNN6NERfM7I2wPyo61x1p46lurqOE6BfxBzgOy8Cuj1HVr
bSrFru6bbGBn6+1Kb5X7xcoSTsy7796cOlcxonjFNb1L7LHpd3AhQus8i/KRXTjmm4tPUTTT
sxaKKKQgooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopKWgAooooAKKKKA
CiiigAooooAKKKKACiiigAoopKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiikoAWkpaKACiikoAWiiigApK
WigAooooAKKKSgBaKKKACiiigAooooASloooAKKSloAKKKKACikpaACiiigAoopKAFpKWigA
ooooAKKKKACiiigAooooASlpKWgAooooAKKSloAKKKSgBaKKKACiiigApKWigAooooAKSloo
AKKKKACiiigAooooAKKKKACiiigApKWkoAKKKKBHhXwVh+0fB/W4x97+0ZSP+/MVPy+paDBM
pJlsGx9Oaufs+QfaPhrqkWcb9TlXP/bKKuw0fwCNLtNQt2vDKLsnBx/q63jUSpum+pfPyQ5o
/Ff8Cp4JkN9r91ffeHkKmfeum8RhRod220EmM9vaqvhLws3hi1lh+0mcu27cRis3VPCWvanc
3P8AxUBitpTxEEzgelY+zsuVM1jyqo5XLvgP5vClnnsW/nUPijwvc6nqUWp2Dp9shXCrIflN
QaF4M1jRbiDbrrSWkRJMGz71XvEGh67qF8s+n6wbRAuNgFVy33ZlRXLNpPcy7bxVrOk30Nn4
jsYIkkO1JYjnNR/EqW4+zaZ5Cq6tMCFb7pPvVi28E6hdXkNxreq/bFhOVTbiun1fR7bWNPNp
cJlQPlPdT60Nxi7vU1g4wmnuY/h648TSXqR6lYWcNgI/leFsnPauqGa5PQPDer6RqYM2sNca
eqELAw5B+tdYKlq3W5lJai0UUUiQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkzS0hoYBm
ikFLSWoC0UlFMAooopXAKKKKLgFFFFFwCiiii4BRRRRcAoooouAUUUUXAKKKKLgFFFFFwCii
ii4BRRRRcAoooouAUUUUXAKKKKLgFFFFFwCiiii4BRRRRcAoooouAUUUUXAKKKKLgFFFFFwC
iiii4BRRRRcAoooouAUUUUXAKKKKLgFFFFFwCiiii4BRRRRcAoooouAUUUUXAKKKKLgFFFFF
wCiiii4BRRRRcAoooouAUUUUXAKKKKLgFFFFFwCiiii4BRRRRcAoooouAUUUUXAKKKKLgLRS
CimgFooooAKSlpKACiiigR4/+zj/AMk9v/8AsKyf+ioq9f78V5B+zj/yT3UP+wrJ/wCioq9f
HSmDFAoNA4ooGB6UnelopMBBQTS9qTHFAdApaTHFLSSsAtFFFMAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACkNLSGkwAUUCiiIBRRRTAKKKKkAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooABRQKWmgCiiimAUlLSUA
FFFFAjxz9neVYPhxqUsjBY01OVmJ7Dyoq0tQ+MUSXc0Gj+Hr3VFiODLCfl/lWR8AbVb74Xav
aOSEm1KVGI7AwxU2Dwr458CXNw/hWK1vNPY72EzDcR9KzfNzrsaJLlb69jv/AAZ4wn8VW8jz
6Ldaa6fwzd/pWd4q+J1p4c1BdPt9Pn1O9PWG3PIqXwF48XxdFcQTW4g1G2H71F6fhXlPhu78
XJ4+1+TQLOzu7oztn7YwDKM9snpVatc0XoOMbJ8yPWfCHxFsvFV3JZtaS6fepybec/NXa143
pXhnx1efEOx13WLKxtY42zO1u4+Yfh1r2LuapzUtlYz5HDd3FrN1rWrLw/pst9fTLHDGMjJ5
Y+grSNeRfG12/wCJBHLn7G1z+99McdamSbWm5cI80rG54U+JreKfEA06Lw/e29syF1vJPuHH
4V6CDmqWlJaJpdsLFYxbiMbNnTGO1XRTWi1Ja1CloopiCiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKQ0tJQwAUUUtJaAJRS0UwEopaKVgEopaKLAJRS0UWASiilosAlFLRRYBKKKWiwCUU
tJRYAoopaLAJRRS0WASiilosAlFFLRYBKKKWiwCUUtFFgEopaSiwBRS0lFgCiilosAlFFLRY
BKKWkosAUUUUWAKKKWiwCUUUtFgEopaKLAJRS0lFgCilpKLAFFFLRYBKKKWiwCUUUUWAKKWi
iwCUUUtFgEoopaLAJRRS0WASiiiiwBRRS0WASiiiiwBRRS0WASiilosAlFFLRYBKKWiiwCUU
UUWAKKKWiwCUUtFFgEopaKLAJRS0lFgCiilosAlLRRTQBRRRQAUlLSUAFFFFAjxP4AW9xcfD
fVooJ/JaTUJUV8fdbyouav8A/Cu/Hw3Qjxy6wsTnhuh7Uz9nIZ+Huof9hWT/ANFRV6+FGKHa
9xpuKcV1OP8AAvgaDwdbzM1x9pvJz+8nIxmszxT8M/7V1UavoepNpOp/xSpnDflXom0Um0VM
lzaocW4q1zgfCXg/xXpOrfa9a8UvqEOP9Tg4P513+OaQLilpiA1jeJvDdj4o0eTTr5fkb7rD
qp9RW1SYzQCbWqPPfB3gTX/C2uB5fEr3ejJGUjs2U/Ke1egjOTmlxQKYC0UUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFJS0AFFFFABRRRQAUUUUAFFFJQAtJS0UAFFFJQAtFFFABSUtFABRRRQAUUUlAC0UU
lAC0UUUAFFFFABRRSUALRRRQAUUUUAFFFFABRRRQAUUUUAFJS0UAFFFFABRSUtABRSUtABSU
tFABRSUtABRRRQAUUlLQAUUUlAC0UUUAFFFFABRRRQAUUUUAFJS0UAFFFFABRRRQAUUUUAFF
FFABRRRQAUlLSUAFFFFAjyD9nH/knl//ANhWT/0VFXsFeP8A7OP/ACTy/wD+wrJ/6Kir2CkM
KKKKACiikoAWiiigAooopgFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUtFFABRRRQAUUlLQAlLRRQAUlFLQ
AUUUUAFFFJQAtFFFABRSUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJQAtJS0UAJS0l
LQAUUUUAFJS0lAC0UUUAFFFFABRSUtABRSUtABSUtJQAtFJS0AFFFFABRSUtABRRRQAUUUUA
FFFFABSUUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUAFFFFAjyD9nH/knl//
ANhWT/0VFXsFeP8A7OP/ACTzUP8AsKyf+ioq9gpDCiiigApKWkoAWiiigAooopgFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFACUtJS0AFFFFACUtFFACUtFFABRRRQAUUUUAFFFFABRRRQAlLRRQAUUUUAFFF
FABSUtFABRRRQAUUUUAFJS0UAFFFFABSUtFACUUtFABRSUtABRRSUALRRRQAUUUUAJS0UUAF
FFFABRRSUAFLRRQAUUUUAJS0UUAFFFFABRRRQAUUUUAFFFJQAtFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABSUtJQAUUUUCPIP2cf+Seah/2FZP8A0VFXsFeP/s4/8k8v/wDsKyf+ioq9
gpDCiiigAooooAKKKKACiiimAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAJS0UUAFFFFABRSUtABRSUtACUU
tFABSUtFABRRRQAUUUUAJS0UUAFFFFABRRRQAlLRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRS
UtACUtFFABSUtFABSUtFABRRRQAUUUUAFFFFABRRRQAlLRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRSUUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUAFFFFAjyD9nH/knl/wD9
hWT/ANFRV7BXj/7OP/JPL/8A7Csn/oqKvYKQwooooAKSlpKAFooooAKKKKYBRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUlLQAUUUUAFFFFABRRRQAlFLSUALSUtFABSUtJQAtFFFABSUtFABRRRQAUlLSU
ALRRSUALRRRQAUUUUAJS0UlAC0UUUAFFFFABRRRQAUUUUAFFFFABSUtFABRRRQAUUlLQAUUl
LQAUlLRQAlLSUtABRRRQAlLSUtABRRSUALRRRQAUUUUAFFFFABRRRQAUlLRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABSUtJQAUUUUCPIP2cf+SeX/8A2FZP/RUVewV4/wDs4/8AJPL/AP7Csn/o
qKvYKQwooooAKKKSgBaKKKACiiimAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAJS0UUAFFFFABRSUtABRRRQ
AUlFLQAUUUUAFFFJQAtFFFABRSUtABRRRQAUUUUAFFFFABRRRQAUUlLQAUUUUAFFJRQAtFFF
ABRSUtABRRRQAUUUlAC0UUUAFFFFABRSUtABRSUtABSUtJQAtFJS0AFFFFABRSUtABRRSUAL
RRRQAUUUUAFFJS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJQAUUUUCPIP2cf+
SeX/AP2FZP8A0VFXsFeP/s4/8k81D/sKyf8AoqKvYKQwooooAKSlpKAFooooAKKKKYBRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAlLSUtABRRRQAlLRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABSUtFABRRRQAUUUUAFJS0UAFFFFABSUtFABSUtFABRSUtABRRSUALRRRQAUUUUAFFFFA
BRRRQAUUUlAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUlAC0UUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUUUUAFJS0lABRRRQI8g/Zx/wCSeah/2FZP/RUVewV4/wDs4/8AJPL/AP7Csn/o
qKvYKQwooooAKSlooAKKKKACiiimAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAJS0UUAFFFFABRSUtACUtJS
0AJRS0lAC0UUUAFFFFABRRRQAlLRRQAUUUUAFFFFABRSUtABRRRQAlLSUtABRSUtABRRRQAU
UUUAFFJS0AJS0UUAFJS0UAFJS0UAFFJS0AFFJS0AFFFFABRRRQAlLSUtABRRRQAlLRRQAUUU
UAFFFFABRRRQAUlFFAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0lABRRRQI8g/Z
x/5J5f8A/YVk/wDRUVewV4/+zj/yTy//AOwrJ/6Kir2CkMKKKKACkpaSgBaKKKACiiimAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFJS0AFFFFABRRRQAUUUUAFFFJQAtJS0UAFFFJQAtFFFABSUtFABRR
RQAUUUlAC0UUlAC0UUUAFFFFABRRSUALRRRQAUUUUAFFJS0AFFJS0AFFFFABSUtFABRRRQAU
UlLQAUUlLQAUlLSUALRSUtABRRRQAUUlLQAUUUlAC0UUUAFFFFABRRRQAUUUUAFJS0UAFFFF
ABRRRQAUUUUAFFFFABRRRQAUlLSUAFFFFAjyD9nH/knl/wD9hWT/ANFRV7BXj/7OP/JPL/8A
7Csn/oqKvYKQwooooAKKKSgBaKKKACiiimAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAJS0UUAFFFFABRSUt
ABRRRQAUlFLQAUUUUAFFFJQAtFFFABRSUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSU
ALRRRQAUUlLQAUUUUAFFFJQAtFFFABRRRQAUUlLQAUUlLQAUlLSUALRSUtABRRRQAUUlLQAU
UUUAFFFFABRRRQAUUlLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0lABRRRQI8g
/Zx/5J5f/wDYVk/9FRV7BXj/AOzj/wAk8v8A/sKyf+ioq9gpDCiiigApKWkoAKWiigBKWiim
AUUUUAFFFFABRRRQAUUUUAFFFFABRRSUALRRRQAUUUUAFFFFABRRRQAUUlLQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFJS0AFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAJS0lLQAUUUUAFFFFABRRRQAUUlFAC0UUUAFFFFABRRRQAUUU
lAC0UUUAFFFFABSUtJQAtFFFABRRRQAUlLSUALRSUtABRRRQAUUUUAFFJS0AFFFJQAtFFFAB
RRRQAUUUlAC0UUUAFFFJQAtFFFABRRRQAUUlLQAUUUUAFFFFABRRRQAUUUlAC0UUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUlLQAUlLSYoAKKMUUAeQfs4/8AJPNQ/wCwrJ/6Kir2CvH/ANnH
/knl/wD9hWT/ANFRV7BSAKKKKACiiimAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRSUtABRRRQAUUUUAFFFFABRRRQAUUUUAJS0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUlLQAUUUUAFJS0UAFJS0UAFFFFABRRRQAUUUUAFFFFACUtFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFJQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUlAH
kH7OP/JPL/8A7Csn/oqKvYK8f/Zx/wCSeX//AGFZP/RUVewUgCiiigApKWkpgLRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFACUtJS0AFFFFABRRRQAUUUUAJS0UlAC0lLRQAUUUlAC0UUUAFJS0
UAFFFFABRRSUALRRSUALRRRQAUUUUAFFFJQAtFFFABRRRQAUUUUAFFFFABRRRQAUlLRQAUUU
UAFFJS0AFFJS0AFJS0UAFFJS0AFFFFABRSUtABRRSUALRRRQAUUUUAFFFFABRRRQAUlLRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUAeQfs4/8k8v/APsKyf8AoqKvYK8f/Zx/5J5f
/wDYVk/9FRV7BSAKKKKACiikpgLRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUlAC0UUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAJS0lLQAUUUUAF
FJS0AFFFFABSUUUALRRRQAUUUlAC0UUUAFFFFABRSUtABRRSUALRRRQAUUUUAFFFFABRRRQA
UUlLQAUUUUAFFJS0AFFJS0AFFFJQAtFFJQAtFJS0AFFJS0AFFJS0AFJS0UAFFJS0AFFFFABR
SUtABRRSUALRRRQAUUUUAFFJRQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UlAHkH7OP/JPL/8A7Csn/oqKvYK8f/Zx/wCSeah/2FZP/RUVewUgCiiigApKWimAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAlLSUtABRRRQAlLSUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFJS0UAFFFFABRRRQAUlLRQAUUUUAFJS0UAFJS0UAFFJS0AFFFJQAtFFFABR
RRQAUUUUAFFFFABRRSUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSUALRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFJQB5B+zj/wAk81D/ALCsn/oqKvYK8f8A2cf+SeX/
AP2FZP8A0VFXsFIAooooAKKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAJS0
lLQAUUlLQAUUlLQAUUUUAFFFFABRRRQAlLRRQAUUUUAFFFFABRSUtABRRRQAUUlLQAUUUUAF
FJRQAtFFFACUtJS0AJS0UUAFJS0UAFJS0UAFFFFABRSUtABRRRQAUUUUAJS0lLQAUUUUAFFF
FABRRRQAUUUUAFFFFABRSUUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFJQ
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
sgYPWq1jBqfxM8QakG1a50/T7GXy0EDEbueKI5LfETpynaMbXl67DnO2nU9fwR1FGD25rxrR
01vRPidFolzqtzcWcR+Xe5O8Y71qeKb/AFLxL47TwlYXklnbrHvmljOG6ZNE8laxKoqd1bmb
7IJT5dHueogNjkUYz0rw/wAUaNrfgrVNNt7TXr24s7hhuZ3OQc8jrXWfEHxHfafZ6TpWnSFL
rUGEZkHVRwM062SuNWnTpTUue+voDnypXPRAH9BRj868Z8U+Dta8I+Hv7VsvEd9PPuAmV3OB
n05rom8TXWifCiPVGlaa8KAKz8ksT3pYnJlTUHRmp8zsCnaKcj0QB89KCOx4ryG28E61feGm
8SP4ivVv5IfPSAOduOuOtaPwz1i+bw1qd5ql1JPJASSXOcYHani8mVCj7SFRSadmvMFN25me
mYbsBilII68V494e0XVviQtxrV3rd3YxLK0cMcLEDj8ak+H9xrUPjm+03UtQnnjtlZVV2JBx
3qq+RqjQlN1FzR3iEZtpvoeuYbtzS4bHIryW5fUviB421DRodSnsNOsOrwnBbnFZ09nrnhf4
gafo/wDbN3cWDsrKzufmHoacMivR5pVEpWvy+W4Kd7tbHteCenNADY6CvNfHWsajfeKNO8Ka
ZcPbG7XdLKhwVH/6q5vxh4c1rwRbWc1h4hvriKd9spdzwfzqcJkftqSnOoouWqXdAp80rI9u
x6daAHz0H51534x8T3mheCNONrITe3YSIOevI5P1rC1fwNreieGZddg8R30l8qiR4i52jP41
ODyb28Oec1G7aXnYFO7Siew49etJhs9B+dedeG/EF1YfC6fVryd57mNWYM5ySewrF0PwhrXi
3RT4kufEF5b3MytJDCjnbx070sPk3tJz9pNRjF8t+7E6mtkewHI6im15d8J9R1S7utUj1S8l
neIhVDtnGDXqI+6DXBjcK8LXdFu9upd9bC0UUVyAFFFFABRRRQAUUUUAFFFFABSUtJQAp6Vf
sP8AVNVA9Kv2P+qavoeGf+RivRmVX4S6KWkFLX6SjlCikpaACiiigAoopKAFpKWigAooooAK
KSloAKKSloAKSlpKAFopKWgAooooAKKSloAKKKSgBaKKKACiiigAooooAKKKKACkpaKACiii
gAopKWgAooooAKKKKACiiigAooooAKSlpKAPIP2cf+Seah/2FZP/AEVFXsFeP/s48fDy/wD+
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
KKACiiigAooooAKKKKACkpaKACiiigAooooAKKKKACiiigAooooAKKKKACkpaSgDyD9nH/kn
l/8A9hWT/wBFRV7BXj/7OP8AyTy//wCwrJ/6Kir2CkAUUUUAFFFFMApKWigBMCkIp1IetJgJ
ijFLRS17gJigCloFCAMUYpaKoBMUYpaKAG4FGBS0UAJgUYFLRTAMUYoFLSATFGKWigBMUmBT
qSgBMCjApaKAExS4ooFABijFLRQAmKMUtFADcCjApaKAEwKMClooAMUYpaKAExRilooATFJg
U6koATAowKWigBMClxRS0AJijFLRQAmKMUtIaAEwKMClooATAowKWigAxRilooATFGKWigBM
UmBSmigBMCjApaKAEwKXFFLQAmKMUtFACYpMU6kNACYFGBS0UAJgUYFLRQAYoxS0UAJijFLR
QA3FGKWigBMCjApaKAEwKXFFLQAmKMUtFACYpMU6koATAowKWigBMClAooFABijFLRQAmKMU
tFADcCjApaKAEwKMClooATHtS0CloAKKKKACikpaACiiigApKWkoAWiiigAopKWgAopKWgBK
WkpaACkpaSgBaKSloAKKKKAEpaSloAKSlooAKKKKACiiigAopKWgAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiikoA8g/Zx/5J5f/APYVk/8ARUVewV4/+zj/AMk81D/sKyf+
ioq9gpAFFFFABRRRTAKKKKACkpaKAEopaKAEopaKACiiigAooooASilooASilpKAFooooAKK
KKACkpaKAEopaKAEpaKKACiiigAooooASilooASilooAKKKKACiiigApKWigBKKWigBKWiig
AooooAKKKKAEopaKAEopaKACiiigAooooASilooASilooASloooAKKKKACkpaKAEoopaAEop
aKACikpaACiiigBKKWigBKKWigAooooAKKKKACkpaSgAopaKAEopaKACiikoAWiiigBKKWig
BKKWigBKWiigApKWigApKWigAopKWgAoopKAFooooAKKKKACiiigAooooAKKKSgBaKKKACii
igAooooAKKKKACiiigAooooAKKKSgBaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AoopKAPIP2cf+Seah/2FZP8A0VFXsFeP/s4/8k8v/wDsKyf+ioq9gpAFFFFABRRRTQBRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUALRRRQAUUUUAFFFFABRRRQAlLSUtABRRRQA
lLRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAlLSUtABRRRQAUUlLQAUUlLQAlLRRQAUUUUAFFFFABR
RRQAlLRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRSUUAFLRRQAUUUUAJS0lLQAUUUUAFJS0UAF
JS0UAFFFFABRRRQAlLRRQAUUUUAJS0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUlFAC0UUUAF
FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSUAf/2Q==
--------------KZYqah6IIxD5kSZYsGQ88PNk
Content-Type: image/jpeg; name="Screenshot from 2026-03-23 22-21-20.jpeg"
Content-Disposition: attachment; filename="Screenshot from 2026-03-23
22-21-20.jpeg"
Content-Transfer-Encoding: base64
/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRof
Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwh
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAAR
CAaABMsDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK
FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl
5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk
NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDqPhF4puNe8B3+seJryOV7e/ePzjCiBYxH
G2MIAOrHtnmulh8d+CLiynvYdXtHgg4kIByv4YzXFfs9wQ3Pw21GGeJZI21WQMrDII8qKuf0
HwhpF78Z9WtTbqmn27k/ZlHyP9RSj78/Zx3tf5EzkoR5meyaD4h8NeJkc6PdwXO3lgBgj8DW
R4l8X+F9O83T316306+AxvMQfYfoQRUOnfDuPQ/HcuvaWyW1nJHsa2jGB+VP8e+GNFm8Palf
S6bbyXJiZhIyc5xWGJlaClf3evc0oNSm09+hreFPKvNEgmbVYdZD5IvEiWMP7YUAU/U/EPhr
Rr42mo3tvBOE3+Ww52+tc78Gwq/D2xCqFAkfA/4FXIeN9Jtdb+N+n2V3nyTCpYD+L2Nbydkr
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
Na9LGVtbo5LUL3/hJryKysQzWyENLKRgfSuriVba2VR92NcUscEUIxFGiD2GKeecg9DRfSwd
bnLat4hjv4zp+mq8txKdpO04WtrR7Eabp8dvnJAyx96sxWkEGTFEik9wKnzRfoAUUUUgCiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDx79nMkfD6//wCwrJ/6Kir2DPavHf2d
5Uh+G+pSSMFRNUlZiew8qKp7zxN4q8catdaf4SdbGytm2vfMfvf59qmUkvdKUXv0PW1oI9K5
rwXoet6HprQ63rP9qTsc+bg8V02aaXLoJ6iEGkJXuwzTjyMGvDNaPiPxH8Vbjw/pmvy6dDHG
Xzg46VSi5bBpsz3HKgZLChWVxkcivnzxbpHjDwlLZQr4ykvZ7qQBYeQSM17tpUcsemW0cxzI
Il3n1bHNCaZLfK0mty6FpSeQBSHOKwvGOtyeHPCl9qkKb5IUyox3PFZylZN22LjFykoo3d46
ZwfQ0oJPUV4fZeHvHHiDQG8S/wDCWeS7IZooRnAA5wewrt/hh4nv/EegSjUzvurV/LaXGN/v
VJpx5r69uonGSbutEd1RSZzSN0zRcB1ITxxzXjmqaz4l8b+Nb3w74f1P+zLey/10396oYNT8
T/DvxfY6frWsHVNNvWEaMw5DGim+ZXenqE1yu257VmjNIDmincQtJkdM8+lYvig6v/ZDjQ8f
bWICk/w+9eV+Gr3xfZfEqDTdc1Y3O8ncg6YxURmublehTi+W6Pbgc0hZV6nFUNb1OPRtGvNR
kGVt4y5HrjtXjulad438e2tz4hi8RNYW5ZmtbcZ6DtVKSc+UOW0OZnuQPOKWvPvhj4svdbtL
rTtXOdTsm2yE/wAS9M16BngVUlyu17krzQtIenFLRUvVWAaBSkUtFCAAOKKKKdwCiiii4Bmi
iii4BRRRRcYUtFFFwEopaKLgFJilooASilooASkIyKdSUPawCAEUuOKKWi4rdBuOKXFLRRcY
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
SasnsF1t1E9qXZjmqGr6vZ6Hp7314+2FOpFTadqEGqafBeWzFoZ13IT6Uezly89tNriutmWP
xpdmeajnljtoHmc4RBlj7Vn6H4isPENtLcWDl445DG2RjmhU5OLmlouoaLc1Pxo27qMAfWse
x8T6bqGtXOk28ha6t13OMcYojTlJNxV0tx3S3NjHbNAG7ijgjJrHvfE+m6frVtpM8hF1cnEa
gUQpym7QV+oN21ZsYxxR3xRw3XtWVrviLT/DlslxfyFUdgq4GSTShTlOSjBXbB9zV27aTp3p
sMyXEKSIco6hlPsah1C/t9LsZby4bbDEMsaSi27JasPQs7O9J+NUdH1m01zTY76yYtBJkKSP
SrzFY1ZieAMmnKDg3GSs0JWewu3PNH41kaN4m07XZbuOxkLtatskyO9a+B+JpzpypvlmrNDT
T2DG4UEY4rHTxPpr+IToayE3oUttxxitjgjJolTlC3MrX1+QXT2EAzxRt296yNX8Tabod3a2
15IVkuXCRgDvWxkPQ6clFSasnsK626ie1GzHNZ+s61ZaBp7Xt6+2FeMjk1Zsr2HUbKG6gbMU
yB0PsaPZy5edrR6XC62e5OB70be+aXGKKjQdgooopAFFFFMAooooAKKKKQwooooAKKKKACii
igAooooAKKKKACiiigBT2+tYHhT/AJKB4k/65xfyrfPb61z/AIU/5KB4k/65xfyr6bhf/fvk
/wBDGt8J3g6UtIOlLX6MjlCiiigAooooAKKKKACiiigAooooAKKKKACikpaACkpaKACiiigA
ooooASlpKWgAooooAKKKKACiiigAoopKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAK
SlpKACiiigR5B+zj/wAk81D/ALCsn/oqKvYK8f8A2cf+Seah/wBhWT/0VFXsFMYUUUUAFFFF
IApD1paQ9aAOG+KPPheFexu4x+tZPi3xHrejEW9j4Z/tOzEKl5C3BGORitb4pf8AIqR/9fcf
86u6hIw0KXPXyPX2r5jO61KlWpyqw5l2Jwaviprq0jm/h9rFprWiSXFnpCaWomKvAhyN3rWt
4m1nVtGt0fSdGOpyN95d2Ntcp8Jf+QBefMD/AKY2f0r0kOVJx0xXy2JnTpZnJzhzRvsdWG0T
T3ueceCfEsWteIb+CXw2mk6iibppFPL89DXb6teXVhpb3NlZG8uFHyQA43V554VbPxT147uT
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
1D/sKyf+ioq9grx/9nH/AJJ5qH/YVk/9FRV7BTGFFFFABRRRSAKSlooAaQaUdKWigBKKWigA
pKWigAooooAKKKKAEopaKACkpaKAEpaKKACkpaKAEopaKACkpaKAEpaKKACiiigApKWigBKK
WigBKWiigBKKWigBKKWigApKWigAooooASloooAKSlooAKSlooAKKKKACiiigBKKWigApKWi
gBKWiigAooooAKSlooAKSlooAKKKKACiiigApKWigBKKWigBKWiigApKWkoAKKWigApKWigA
ooooAKKKKACiiigApKWigBKWiigApKWigBKKWigApKWigBpGaNvApaWgPISloooAKKSloAKK
SloAKKKKACiikoAWiiigAopKWgAooooAKKKSgBaKKKACiiigAooooAKKKKACiiigAooooAKS
lpKAFooooAKKKSgBaKKKACiiigAooooAKKKKACiiigApKWkoAKKKKBHkH7OP/JPNQ/7Csn/o
qKvYK8f/AGcf+Seah/2FZP8A0VFXsFMYUUUUAFFFIelIAozSUtMBaKQ9KB0qeoC0UUUwCiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKSloAKKSloAKKKSgBaKKSgBaKKKACiiigBKWiigA
ooooASlpKWgAooooAKKSloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigApKWkoAKKKKBHkH7OP/ACTzUP8AsKyf+ioq9grx79nL/knmof8AYVk/9FRV7BTG
LRSGoLm6gtLd5rmVYok5Z2OAKAJ80dqq2V/a6jbLcWdwk8DdHQ5Bq17UlqAUUdKM80XEB6UD
pQ3SgUuoxaKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSUALRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUlAC0UUUAFFFJQAtFFFABRSUtABRRSUALRRR
QAUUUUAFFJS0AJS0lLQAUUUUAJS0lLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0lABRRRQI8U+AuoRaX8LdVvJkkeOLU5WKxrlj+5i
6Cuhtvjb4UubS6mRb1ZoDg27xYkb6DNZH7OgB+Hd/kAj+1ZOD/1yirM8N6TY3vx01mee3Rhb
uTGuOAfpRD35+zW9rkzmoK7PRfCHxF0XxlNLb2Qnguo13NDcLtbHrWB44+IXhq2S60XVrLU3
hIKyyQxcD6HNdEPBNjB4yfxLAxjuXTY0ajAPvR45t4f+EU1F/LQu0LclQe1YV5L2anf3epth
/eqOLWvQh+HH9if8Inat4ea4bTWZin2j7+c85pPEfxI0DwvrX9mah9o+0mPzBsTII9PrWf8A
B4Ffh/Yg4/1j9P8Aerl/Fdnb6j8d9Ngu4hLEIQQp9a3k3ZWIwcVLn5ulzq/D/wAXfD/iDVE0
9Ibu0nkOI/tKbQ1dTr/iKw8Naa19qMgWIdAOrH0FeZ/F61trfWtCnghWKdXADoMcZqH4qk3m
veELKdyLR5FLAnAbOKVK+Ik6VFWkh8jhaVTZ7HYeFvihovizVf7OtbW+gnKllM8W1WA9813I
ORVCPT7KKaJ47aKNo12oyqAQKvjgChX6g1oLRRRTEFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABSUtJQAtFFFABSUtJQAtFFFABRRSUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUtF
FABRRSUAFLRRQAlLRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtFABRRRQAUUUUAJS0lLQAUU
UlAC0UUUAFFFFABSUtFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUAFFFFAjwr
4IQatcfCzU00a4igvP7Uk2PKMqP3UVSWHw0+Iun65cazFr+ni7uW3THaef0rR/Zy/wCSeah/
2FZP/RUVevYGOlCfLLmjuS4ppqRT00XKWsaXbh7gKA7DoT3rzjxL4S+I+t3F/BBr2nxabMxE
cbIdwU9ulephQPrS7eaUlGpq0VSc6atf5nknhDwN8QPCslnaHXLCXSYpN0kKqdxB64yK39R8
EX958S7TxNHcxLaxRBGiP3s13uBSY5zTbukuw6bdOTa6nCePfBd94rvtPltLiOEWzAtv781N
468FR+KdHtEEwgv7PBt5TwA3v7cV2tc14x8Jt4u0+K1Gq3WneW+7fb9W9jWcYOLcoOzZq6zl
yxlsjnvCGleMbPxDF/wkuv2d1FHCRHbwn5m9zXoyiuD8JfDK38L63/ar6zeahcBCi+d0AP41
3taeZlqLRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUlAC0UUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUlAC0UUUAFFFFABRRRQ
AUUUlAC0UUUAFFFFABRRRQAUUUUAFFFFABRRSUALRRRQAUUUUAFFJS0AFFJS0AFFFJQAtFFJ
QAtFFFABRRRQAUUUUAFFFJQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0lAC0UUlAC0UU
lAC0UUUAFFFFABRRRQAUUUUAFFFFABSUtJQAUUUUCPH/ANnLP/Cvb/8A7Csn/oqKvX8gdSAK
8b/Z8uY7P4ZarcTHEcWpSux9hDFVGa+1P4kajdNca9FougxMVibzAjyD25GahySlyrcqztzP
Y9wSVHJCMGA7g5p4rmPBHhix8M6SYLDUpr+Jzu82V92fpXTZ5rTYQ6oHvLaNtrzxqfQsBUxN
eF6v4TuvF3xduLK/l1G101YiyyREhScdAaFFyegm7bntf2+zx/x9Rf8AfYqZHV1DKwZT0xXz
r44+H+n+HNT0rTdI1nU3vruQERyylhjNe/6Xata2FtA5yY4lUk9yBSi07hPmi0mtGXsCikxS
jpRcYtFJS0AFFFFABRRRQAUUUUAFFFFABRRSUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFACUtFJQAtFFFABRRRQAUUUUAFFJS0AFFFJQAtFFJQAt
FFFABRRRQAUUUUAFFFJQAUtFFABRRRQAUUlLQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABSUtJQAUUUUCPn/4Uu8fwI8StH94Xs/T/rjFVj4bfDnTvEfg
1bzV7hp1Yt5Uatjyq0f2f7WK9+GGrWsy7optSlRh7GGKnxfDfxt4fuLiDwtr1vBp0xJ8uYEl
QfwqedJ2S94t2cLN6XF+Gcl3oXjrWPCxvGubG3i82Ik5C8jj9a9hQgqDXF+BvAo8Lie7vZ/t
Wp3H+tn7EegrtQABiiCkopT3Jk7zco7CEkHpkUMQPmIGB3parahDNcadcw27hJpIysbn+Fsc
GifNytx3BJXszyfTSfFvxlur1xvttHbYnpnt+texVxfgLwXP4VtLpr64S4vbqTfLIg4PpXaV
SlzQjdWa3JtJSabuugYpaTNLQMKKKKBhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlL
RQAUUUUAFFFJQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtFABRRRQAUUUlAC0UU
UAFFFFABSUtFABRRRQAUUUUAFFJS0AJS0UUAFFFFABRRRQAUUUUAJS0UUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUAFFFFAjyD9nH/knt//ANhW
T/0VFXr+B0ryD9nH/knt/wD9hWT/ANFRV63JNFCR5siJuOBk9aBkg6UZFAxjjoaryXdrC2JJ
40PozAUAWaKrx3ltMwEc8bk9ArA1YoAQDFLRTT6UALkUtQrNC0hiWVS46qDkipaAFooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACkpaSgBaKKKACiikoAWiiigAoopKAFooooAKK
KKACiiigAooooAKKKKACiikoAWkpaSgBaKKSgApaKKACikpaACkpaKACiikoAWiiigAopKWg
AooooAKSlooAKKKKACiiigBKWkpaACiikoAWiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigApKWkoAKKKKBHjH7PqSy/DLVI4W2yNqcoVvQ+TFWB428J6p4f1Gz1G51
y5nmmlGU3naOe1dN+znz8PNQH/UVk/8ARUVT/GXg6Uf+mg/nXNiW6dqkd9jpoe+3Tex6jZsW
sbfJyTEpJ/CvBdb0/Tdf+J1xZa5rkthZqCRiXYCR2yeBXu9myrYWxz/yxX+VedjwT4K8ZeIr
26lnN5cRPtmg3Y2mnUhOVWElstyaUlGnO5b8D+B/DGkX7ahoutz6gw4w1yJFH4CvRO9eGSaP
D8P/AIqaPa6HMyWWoPskt92dozXt6Hdk571tGaqLmjsYytGSj5Elc34v0PUNf05LSwvms8t+
8dDhse1dHmmnBOamcFONmOM3F3R4j8N9Nn0P4mXWmvf3F0qxvkytnJr3EHIrx/wuuPjPqHOf
kfivYB0rLC1JVKd5G2JpqFS0RaKKK6TAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
koAWiiigAooooAKKKKACiiigAooooAKKKKACkpaKACiiigAooooAKKKKACiiigAooooAKKSl
oAKKSloAKKKKACiikoAWiiigAooooAKKKKACiikoAWiiigAooooAKKKKACiiigAooooAKKKK
ACkpaSgBaKKKACiikoAWiiigAooooAKKKKACiiigAooooAKSlpKACiiigR4x+z/HNN8L9Xjt
pBHO2pSiNz0VvJiwah1n4W+P/EIjOoeKbNzESY/lbj9Ku/s4j/i3uof9hWT/ANFRV68FA6Ch
xT3RpGbirI4rwToHi3RZpf8AhItagv7cRhIUjU5XH1FYesfDjXbXxBcax4P1aKwmuWLTJKCQ
TXqRHSggelTJNta7Exdr+Z5t4X+HOpW+vDXfFOopf6ghzGY87VNekBQKUDsaWnZLZWE9Xd7i
HpXMeMtO8R6nYwR+G9TisLhXy7yDII9K6fNBVWHSnp1HF8rueV+Dvhz4n0Txsdf1fWre7R0Z
XjjU5Yke4r1UcCm4wOnNOHSkoqOiQOTk9XcWiiimIKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACkpaKACiiigAooooAKKKKACkpaKACiiigAooooASilooAKKKKAEpaKKAEpaKKAEpaK
KACiiigBKWiigBKWkpaACiikoAWkpaKAEpaKKACiiigBKWiigAooooASloooAKKKKAEpaKKA
CkpaKACiiigAooooAKSlooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpaSgAooooE
eP8A7OJ/4t7qA7/2rJ/6Kir1aW/tbd1jnuIo5D0VnAJrx/4BwzXPws1eG3k8uZ9SlVH/ALp8
mLmtGP4LWk1nLcaxrOoTagwZi6S/Kp7Uub3uV7dy+X3b9ex6srbhnIPpg1DJf2kMvlyTxo3+
0wFeafBrU76Wzv8AS7yd51tJSI5GOTj0rkdbsNJ174oXNpr+tS2NmoJBWXYCR2z2rOpVhTqR
jF3Uuo4U5tSclZo95ivrWdisM8bt6KwNVdS1uDS5USdW2sM7gMgVx3gfwN4W0i/bUND1qe/Y
cHNyJFH5V38sMUwKvGr54O4ZrSSfQhWI7S9t76ES28gdD3FWevSuSsl/sjxQbOM4gnG5VHQV
1oqmrWYDdtOFBoFAkrBS0UUhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRSUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSUALRRRQAUUUUAF
FFFABRRRQAUUUUAFFJS0AJS0UUAFFFFACUtFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUAFFFFAjx/8AZz/5J5qH/YVk/wDRUVdB
4+8eRaPbHR9I/wBL1q7GyONPmCZ4yTXJ/Ae2nvPhRrNtbTeTNLqMqJJ/dJhi5qrp/wAGfGOk
3b3ll4mtPtEhJLyIzEfQkUykluegfDbwnJ4U8OMt4Q15cMZpT/dJ7Vjjwb4I8YeIr25eX7ZP
G+Jrctjaa1fB3h/xjo2oTS+INei1K3dcJGgPyn15FYutfDTWYvEM2s+EdWTTri4JaYSAkE1n
PldRSa16DhNyUk3/AME5+fSovAPxS0a10GRktNRk2S2wbIQZr3EEEnHWvN/Cvw3v7TXv7d8T
ammoaiOUZAdqn1rstU1WewPl21jJcsw4K9Aaa5oR993YSlzz93axl3H7zxtbBefLU5rrBXP6
Jplwk8uo3v8Ax8Tc7f7g9K6AVpKXMkZxb1uBoFBoFIYUtFFIYUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFJS0lAC0UUUAFFFJQAtFFFABRRSUALRRRQAUUUlAC0UUUAFFFFABRRRQAU
UUlAC0lLRQAUUUlABS0UUAFFFFABSUtFABRRRQAUUUUAFFFFABRRRQAUlLRQAUUUUAFFFFAC
UtJS0AFFFJQAtFFFABRRRQAUlLRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0lA
BRRRQI8g/Zx/5J5qH/YVk/8ARUVeu456V5F+zj/yTy//AOwrJ/6Kir1+i4xOlAwe1LRSuAhw
O1IAuc06jFNBqJSilopgIaBS0UAFFFFIAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KSgBaKKKACkpaKACiiigAooooAKSlooAKKKSgBaSlooAKKKKACiiigAooooAKKKKACiiigAo
pKWgAopKWgApKWigAoopKAFooooAKKKKAEpaKKACiikoAKWiigAooooASloooAKKKKACiiig
AooooAKSlpKAFooooAKSlpKAFooooAKKKKACiiigAooooAKKKKACkpaSgAooooEeQfs4/wDJ
PNQ/7Csn/oqKvYK8f/Zx/wCSeX//AGFZP/RUVewUhhRRRQAUUUU0AUUUUwCiiigAooopAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAlLRRQAUUUUAFFFFABRRRQAUUlLQAUUUlAC0UUlAC0UUUAFFFFACUtFFA
BRRSUAFLRRQAUUUUAFFJS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
FFFABRRRQAUlLSUAFFFFAjyD9nH/AJJ5f/8AYVk/9FRV7BXj/wCzj/yTy/8A+wrJ/wCioq9g
oGFFFFIAooopoAooopgFFFFIAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpaK
ACiiigAoopKAFooooAKKSloAKKKKACiiigAooooAKKKKACiiigApKWigAooooAKKKSgBaKKK
ACiiigAooooAKKKKACiiigBKWkpaAEpaKKACiiigBKWiigAooooASloooAKKKKACiiigAooo
oAKSlooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpaSgAooooEeQfs4/8k8v/APsK
yf8AoqKvYK8f/Zx/5J5f/wDYVk/9FRV7BSGFFFFABRRRTAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACkpaSgBaKKKACiikoAWiiigAoopKAFoopKAFoopKAFooo
oAKKKKACiiigAoopKAFpKWkoAWiikoAKWkpaACiiigApKWkoAWiiigAooooAKKSloAKKKKAC
kpaKACikpaACiiigBKWkpaACiikoAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigApKWkoAKKKKBHkH7OP/JPL/wD7Csn/AKKir2CvH/2cf+Seah/2FZP/AEVFXsFI
YUUUUAFFFJTQC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFJQA
tFFJQAtFFFABRRRQAUUUUAFFFFABRRSUALSUtFABRRRQAUUUUAFFJS0AFFFFABRRRQAUUlLQ
AUUlLQAUUUlAC0UUlAC0UUUAFFFFABRRRQAUUUlAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUlLSUALRRRQAUUUlAC0UUUAFFFFABRRRQAUUUUAFFFFABSUtJQAUUUUCPIP2cf+Seah/wBh
WT/0VFXsFeP/ALOJx8PL/wD7Csn/AKKir1+kMWikqK4uYbSBp55AkajJY9qAJqb3qCzvre/t
1ntpRJE3Rh3qfvVITFoNFBpDClpKKSAWiiimAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABSUtFABRRRQAUUUUAFJS0UAFFFFABRRRQAUUUUAFFFFABRRRQAlLRRQAUUUUAFFFF
ABRRRQAUUlLQAUUUlAC0UUlAC0UUUAFFFFACUtFFABRRRQAlLRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFJS0UAFFFFABRRRQAUUUUAFFFFABRRRQAUlLSUAFFFFAjxH4D6nFpP
wu1K7nR3jTVZMhBk/wCqir0i68badaJp7PHKRff6vA+79a8x+CkBuPg/raL1/tGUj/vzFTg7
6jocDhiZLFuv41vGkpUpS6o1pqN7z2PWIvEtpca+2jRpIbgRiQtj5cVjeJvE9naLPY32k3k9
vjDyIvykVQ8FN9u1+61AfMPIVN3vXT+JF26FdOFBPlnt7VytpxTl8wppKq0/kR+E5NOm0G3k
0uF4rRslEfqKfrnia00EKsyvLK33Yo+WNUvAef8AhFLQnqS3T61X8TeGbrUdRTU9PdTeQjCp
IflNaNarl2IoKLcud9xtr4+a5v47c6FfxrIcK7LXTalqttpdkbq6bbGBnHc+1cja+K9W0q/g
svEdjDCJDhZYzmo/iTLMttpxhQOrSghW+631q1FTlyx0NaUFUmlaxr6H4zi13U/scem3cKFS
yzSLhTXUVyWgXniR7uKK/wBLtILDZ8skT5IPautHSpk03ZGckr6C0UUVJIUUUUAFFFFABRRR
QAUUUUAFFJS0AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFJS0AFFFFABRSUtABRRRQAUUUlAC0UUUAFFJRQAtFFFABRRSUALRRSUALR
RRQAUUUUAFFJS0AFFFJQAtFFJQAtFJRQAtFJS0AFFFJQAtFFFABRRRQAUUlLQAlLRRQAUUUU
AJS0lLQAUUUUAFFJS0AFFFJQAtFFFABRSUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFJS0lABRRRQI8Z/Z7hNx8NNUizgPqcq/+QYq67Rvh+NMs9Rge9877YTtO3Hl1y/7O
P/JP78f9RWT/ANFRV7BgVak4jeseU5nwj4XfwvZywNcfaGkbO7GKoav4X8Q6nPOq68IrWTpF
s+6PSu0AwMUhGaTkn0NFUcXc4nQvB2uaJNbomvb7KJstBs+9+NXvEOj67e6jHcaXq32SMLho
8ZyfWuoIpTg80KfkTCXLNytucRa+CdQub2K617VftoiOUQLjFdJq+iW2tWBtLlfkA+Qjqp9a
0uDzS859qbbYOo07o5PQPD2taNqY87Vzc6cqFVgI5HpzXWikJ5zTqUnfUUpczCiiipEFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJQAtFFFABRRSUALRRRQAUUUlAC0UUUAFFFJQ
AtFFFABRRRQAUUUUAFFFJQAtJS0UAFFFJQAUtFFABRRRQAUlLRQAUUUUAFFFFABRRRQAlLRR
QAUlLRQAUUUUAFFFFACUtJS0AFFFJQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABSUtJQAUUUUCPH/2cf8Akn1//wBhWT/0VFXsFeIfAjVItG+F+p3kyO6JqkmQ
g5/1UVej3fjnTrRNOZ4pSL77mB9360+VtX6FRTlKy3OoxxUNzcw2du087hI0GWY9qy4fEltc
a+2jxxSecIxIXx8uKx/Eviq1sxPZXmkXdxbjh3UfKaS2Vuo4Rc5NLpudTZXtvqFstxayCSJ+
jDvVjpWF4XubC40C2n0yBoLRs7I26jmna94ostC2rMryzuMrFH9403o0RF8zsjawe3SnVxlp
46muruOE6BfRBzgOw4FdJqOqW+k2LXd222MDP19qJPl1ZcoSW5d68mnVy+ieMU1vUvskel3c
EZUss8i/Ka6gdKcotbhJNaMWiiipJCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopKA
FooooAKSlooAKKKKACiiigAooooAKKKKACkpaKACiiigAooooAKKKKACiiigAooooAKKSloA
KKSloAKSlooAKKKSgBaKKKACiiigAooooAKKKSgApaKKACiiigAooooAKKKKACiiigAooooA
KSlpKAFooooAKKKSgBaKKKACiiigAooooAKKKKACiiigApKWkoAKKKKBHhXwVh+0fB/W4x97
+0ZSP+/MVPy+paDBMpJlsG/rVz9nyAXHw11SLON+pyrn/tlFXYaP4BGl2l/bteGUXZODj7lb
xqJU3TfUvn5Ic0fiv+BU8EyG+1+6vs7h5Cpn3rpvEYUaHdttBJjPaqvhPws3hi1lh+0mcu27
cRis3VPCWvanc3P/ABUBitpTxEEzgelY+zsuVM1jyqo53LvgP5vClnnsW/nUHijwtc6nqcWp
2Dp9shGFWQ/KRUOheDdY0W4g2660lpESTBs+9V7xBoeu6hfLPp+sG0QLjYFquW+7MqK5ZtJ7
mXbeK9Z0i+hs/EdjBGkhCpLEc5pnxLluPs+meQqurTAhW+6T71PbeCNQuryG41vVftiwnKpt
xXT6vo9trGnm0uEyoHynup9aG1F66msHGE09zG8Pz+JpL1I9SsLOGxEfyvC2TntXVDPeuU0D
w3q+kamDLrDXGnKhCwMOQfrXWCpat1uZS3FooopEhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRSUALSUGilcAoooouAUUUUXAKKKKLgFFFFFwCiiii4BRRR
RcAoooouAUUUUXAKKKKLgFFFFFwCiiii4BRRRRcAoooouAUUUUXAKKKKLgFFFFFwCiiii4BR
RRRcAoooouAUUUUXAKKKKLgFFFFFwCiiii4BRRRRcAoooouAUUUUXAKKKKLgFFFFFwCiiii4
BRRRRcAoooouAUUUUXAKKKKLgFFFFFwCiiii4BRRRRcAoooouAUUUUXAKKKKLgFFFFFwCiii
i4BS0gpaaAKKKKACkpaSgAooooEeP/s4/wDJPb//ALCsn/oqKvX+/FeQfs4/8k91D/sKyf8A
oqKvXx0pgxRQaBxRQMD0pO9LRSYCCgmlpMZFIOgClpMYFLSSsAtFFFUAUUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAJRQaKkAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAAUtIKWmgCiiimAUlLS
UAFFFFAjxz9neVYPhxqUsjBY01OVmJ7Dyoq0tQ+MUSXc0Gj+Hr3VFiODLCfl/lWR8ALVb74X
avauSEm1KVGI7AwxUkHhXxz4Eubh/CsVpeaex3sJmG4j6Vm+bnXY0SXK317HfeDPGE/iq3ke
fRbrTXT+Gbv9KzvFXxOtPDmoLp9vp8+p3p+9Dbnlam8BePF8XRXEE1uINRthiVF6fhXlPhy7
8XR+Ptfk0Czsru6M7Z+2MAyjPbJ6VWrXNF6DjGyfMj1jwh8RbLxVdyWbWktheoObec/NXaV4
7pXhnx1efEOx13WLKwtI42zO1u4+Yfh1r2HuapzUnorGfI4bu4Vna1rVl4f02W+vpljhQZAJ
5Y+grS7V5F8bXbb4fSXP2Nrr98exHHWpltoVCPNKxueFfia3inxANOi8P3tvbMhdbyT7hx+F
eggg1S0uKzTS7YWQjFuEHl7OmMdqu4prbUT3CloopiCiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigBKKWilYBKKWkosAUUtFFgEopaKLAJRRS0WASiilos
AlFLSUWAKKKWiwCUUUtFgEopaSiwBRS0UWASilpKLAFFLSUWAKKWkosAUUtJRYAoooosAUUt
JRYAopaSiwBRS0UWASiilosAlFFFFgCilpKLAFFLSUWAKKKWiwCUUtJRYAopaSiwBRS0UWAS
iloosAlFFLRYBKKWkosAUUUtFgEoopaLAJRRS0WASilpKLAFFLRRYBKKWiiwCUUtJRYAopaS
iwBRS0lFgCiloosAlFFLRYBKKWiiwCCloopoAooooAKSlpKACiiigR4p+z/b3Fx8NtWign8l
pNQlRXx91vKi5q//AMK88fDdCPHLrCxOeG6HtUf7OQ/4t7qH/YVk/wDRUVevqvFDte5SbinF
dTkPAvgaHwfbzM1x9pvJz+8nIxurM8U/DP8AtXVRq+h6k2k6n/FKmcN+Veh4pCBUyXMEW4q1
zgvCfhDxXpOq/a9a8UvqEPTycHB/Ou+xSAEUtMQVjeJvDdj4p0d9Ovl+RuVYdVPqK2cUhoBO
2qPPPB3gLxB4X10PL4le70ZEKx2bA8elehqCOtLRTAWiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACikpaACiiigAoopKAFooooAKKKKACiiigAooooAKKKKACiikoAWkpaKACiiigAooooAKKK
KACiiigAooooAKKSloAKKSloAKKKKACiikoAWiiigAooooAKKKKACiikoAWiiigAooooAKKK
KACiiigAooooAKKKKACkpaSgBaKKKACiikoAWiiigAooooAKKKKACiiigAooooAKSlpKACii
igR5B+zl/wAk8v8A/sKyf+ioq9fryD9nL/knl/8A9hWT/wBFRV6/SGLSUtFACUUUUALSUtJi
gApaKKYBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAlLRRQAUUUUAJS0UUAJS0UUAFFFFABSUtFABSUtFABRR
RQAUUUUAFFFFABRRRQAUlLRQAUUUUAFFFFACUtFFABSUtFABRRRQAUUUUAFFJS0AFJS0lAC0
lLSUALRRRQAUUUUAJS0UUAFFFFACUtFFABRRRQAlLRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJQAUUUUCPIP2cf+SeX/8A2FZP/RUVewV4/wDs
4/8AJPL/AP7Csn/oqKvYKQwooooAKKKSgBaKKKACiiimAUUUUAFFFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAJS0lLQ
AUUUUAJS0lLQAUUUUAFFJS0AFFFFABRRSUALRRRQAUUlLQAUUUUAFJS0UAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUlAC0UUUAFFFFABSUtFABRRRQAUUUUAFFJS0AJS0UUAFFFFACUtFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFJS0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJ
QAUUUUCPIP2cf+SeX/8A2FZP/RUVewV4/wDs4/8AJPL/AP7Csn/oqKvYKQwooooAKSlpKAFo
oooAKKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUlLQAUUUUAJS0UUAFFFFABSUtJQAtFFFABRRSUAL
RRRQAUUUlAC0UUUAFFFJQAtFFFABRRRQAUUUUAFFFJQAtJS0UAFFFJQAUtFFABRRRQAUlLRQ
AUUUUAJS0UUAFFFFABRRRQAUlLRQAlLRRQAUUUUAJS0lLQAUUUlAC0UUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0lABRRRQI8g/Zx/5J5f/wDYVk/9FRV7BXj/
AOzj/wAk81D/ALCsn/oqKvYKTGFFFFABSUtJQAtFFFABRRRTAKKKKACiiigAooooAKKKKACi
iigApKWigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAopKWgAooooAKSlpKAFpKWigApKWigAooooAKKKKACiiigAoopKAFpKWigAoooo
AKKKKACiiigBKWiigAooooAKKSloAKKSloAKSlooAKKKSgBaKKKAEopaKACiiigApKWkoAKW
iigAooooAKKKKACkpaKACiiigAooooAKSlpKAFooooAKSlpKAFooooAKKKKACiiigAooooAK
KKKACkpaSgAooooEeQfs4/8AJPNQ/wCwrJ/6Kir2CvH/ANnH/knmof8AYVk/9FRV7BSGFFFF
ABRRSUALRRRQAUUUUwCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopKWgAooooASloooAKKKKACikpaACkpa
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooASloooAKKKKACiiigAopKWgAopKW
gAoopKAFoopKAFooooAKKKKAEpaKKACiiigBKWiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlpKACiiigR5B+zj/wAk8v8A/sKyf+io
q9grx/8AZx/5J5f/APYVk/8ARUVewUhhRRRQAUUUlAC0UUUAFFFFMAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooASlpKWgAooooASlpKWgAooooAKKSloAKKKKACiikoAWiiigAopKWgAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKSgBaKKKACiiigAooooAKKKKACiiigAopKWgBKWiigAooooAS
loooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACkpaSgAooooEeQfs4/8k8v/wDsKyf+ioq9grx/9nH/AJJ5f/8AYVk/9FRV7BSGFFFFABSU
tJQAtFFFABRRRTAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikp
aACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKSloAKKKKAEpaKKACikpaACkpaSgBaSloo
AKKKSgBaKKKACiikoAWiiigAoopKAClopKAFooooAKKKKACiikoAWkpaSgBaKKSgApaKKACi
iigApKWkoAWiikoAWiiigAooooAKKSloAKSlooASlpKWgAooooASlpKWgAoopKAFooooAKKK
KACiiigAooooAKSlooAKKKKACiiigAooooAKKKKACiiigApKWkoAKKKKBHkH7OP/ACTy/wD+
wrJ/6Kir2CvH/wBnH/knmof9hWT/ANFRV7BSGFFFFABSUtJQAtFFFABRRRTAKKKKACiiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo
oooAKKKKACiiigAooooAKKSloAKKKKACikooAWiiigAooooAKKKKACiiigAooooAKKKSgBaK
KKACiiigAooooAKKKKACiiigAooooAKKSloAKKSloAKKKKACiikoAWiiigAooooAKKKKACii
koAWiiigAooooAKKKKACiiigAooooAKKKKACiikoAWiiigAoopKAFooooAKKKKACiiigAooo
oAKKKKACkpaSgAooooEeQfs4/wDJPNQ/7Csn/oqKvYK8f/Zx/wCSeX//AGFZP/RUVewUhhRR
RQAUUUlAC0UUUAFFFFMAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBKWiigAooooAKKKKACkpa
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooASloooAKKKKACiiigAooooAKKSlo
AKKKSgBaKKSgBaKKKACiiigBKWiigAooooASloooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpaSgAooooEeQfs4/8k8v/wDsKyf+ioq9
grx/9nH/AJJ5f/8AYVk/9FRV7BSGFFFFABSUtJQAUtFFACUtFFMAooooAKKKKACiiigAoooo
AKKKKACikpaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKSgBaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACikpaACiiigAopKWgAopKWgAopKWgAooooAKKKSgBaKKKACikooAWiiigAooooAKKKSgBa
KKKACiiigAopKKAFoopKAFoopKAFooooAKKSloAKKKSgBaKKKACikpaACikpaAEpaKKACiii
gBKWkpaACiiigAooooAKKKSgBaKKKACikpaACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKSlpMUAFFGKKAPIP2cf8Aknl//wBhWT/0VFXsFeP/ALOP/JPL/wD7Csn/AKKir2Ck
AUUUUAFFFJTAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikpaACiiigBKWiigAooooAKSlpK
AFooooAKKKSgBaKKKACiikoAWiiigAooooAKKKKACiiigAooooAKKKSgBaSlooAKKKKAEpaK
KACiiigApKWigAooooAKKKKACiiigAooooAKSlooAKKKKACiiigBKWiigAoopKAFooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiikoA8g/Zx/5J5f8A/YVk
/wDRUVewV4/+zj/yTzUP+wrJ/wCioq9gpAFFFFABSUtJTQC0UUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRSUtABRRRQAlLRSUALRRRQAUlLRQAUUUUAFJS0UAFFFFABRRSUAFFL
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRSUtABRSUtABRRRQAUlLSUALRRRQAUUUUAFFFFABSU
tJQAUtFFABRRRQAUUUUAFJS0UAFFFFABRRRQAUlLSUALRRRQAUUUlAC0UUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUlAHkH7OP8AyTzUP+wrJ/6Kir2CvH/2cf8Aknmof9hWT/0VFXsFIAoo
ooAKKKSmgFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKSgBaKKKACiiigAooooAKKK
KACikpaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKSloAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopKWgAooooASlopKAFooooAKKSlo
AKSlpKAFoopKAFooooAKKSloAKKKKACiikoAWikpaACiiigAooooASlopKAFooooAKKKKACi
kooAWikpaACiikoAWiiigAooooAKKKSgApaKKACiikoAKWkpaACiiigAopKWgAooooAKKKKA
CiiigAooooAKKKKACiikoAWiiigAooooAKKKKACiiigAooooAKKKKACkpaSgDyD9nH/knl//
ANhWT/0VFXsFeP8A7OP/ACTzUP8AsKyf+ioq9gpAFFFFABRRSUwFooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKSloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii
gAooooAKKKKAEpaSloAKKKKAEpaSloAKKKKACikpaACiiigAoopKAFooooAKKSigBaKKKACi
ikoAWiikoAWiiigAooooAKKSloAKKKKACiikoAWikpaACiiigAooooAKKKKACiiigAopKWgB
KWiigAooooASloooAKKKKACikpaACiikoAWiiigAopKWgAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAoopKAPIP2cf+SeX/8A2FZP/RUVewV4/wDs4/8AJPL/AP7Csn/o
qKvYKQBRRRQAUUUlMBaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKSloAKKKKAEpaKKACiiig
ApKWkoAWiiigAoopKAFooooAKKKSgBaKKKACiikoAWiikoAWiiigAooooAKKKSgBaSlooAKK
KSgApaKKACiiigApKWkoAWiiigAooooAKKKKACiiigApKWigAooooAKKKKAEpaSloAKKKSgB
aKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopKAPIP2cf8A
knl//wBhWT/0VFXsFeP/ALOP/JPNQ/7Csn/oqKvYKQBRRRQAUUUlMBaKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKSloAKKKKACiiigAooooAKKSigBaKKSgBaKKKACiiigAooooAKKKKACii
koAWkpaKACiiigAooooAKKSloAKKKKACiiigAooooAKKKKACiikoAWiikoAWiiigAooooAKK
KKACiikoAWiiigAooooAKKKKACiiigAooooAKKKKACkpaKACiiigAoopKAFooooAKKKKACii
igAooooAKKKKACiiigAoopKAPIP2cf8Aknl//wBhWT/0VFXsFeP/ALOP/JPL/wD7Csn/AKKi
r2CkAUUUUAFFFJTAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikpaACiiigBKWiigAooooAK
KSloAKSlpKAFooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEpaKKACiiigAooooAK
KKKACikpaACiikoAWiikoAWiiigAooooASloooAKKKSgApaKKACiiigAopKWgAooooAKKKKA
CiiigAooooAKKKKACkpaKACiiigAooooAKKKKACiiigAooooAKKKKACkpaSgDx/9nEj/AIV9
frnn+1ZDj/tlFXsNeNfs4/8AIj3/AP2E5P8A0VFXsg6UALRRRSAKKKSmAtFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAJS0lLQAUUUUAJS0lLQAUUUUAJRRS0AFFFFABRRSUALRRRQAUUlLQAlL
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUlAC0UUUAJS0UUAFJS0UAFFFFABRRRQAUU
lLQAlLRRQAUlLRQAlLRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABSUtJQB43+zj/wAiPf8A/YTk/wDRUVeyDpXjf7OP/IjX/wD2
E5P/AEVFXsg6UALRRRSAKKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRSUtABRRRQAlLR
RQAUUUUAFJS0lAC0UUUAFFFFABRRRQAUUUlAC0UUUAFFFFABRRRQAUUUUAFFFFABRRSUALSU
tFABRRSUAFLRRQAUUUUAFJS0UAFFFFABRRRQAUUUUAFFFFABSUtFABRRRQAUUUUAJS0lLQAU
UUlAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSUAeN/
s4/8iPf/APYTk/8ARUVeyDpXjn7OK/8AFCX7f9ROQf8AkKKvZKACiiikAUlLSUwFooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAopKWgAooooAKKSloAKKKKACiikoAWkpaSgBaKKKACiiigAoo
ooAKKKKACiikoAWkpaKACiiigAooooAKKSloAKKKKACiiigAopKWgAopKWgAoopKAFpKWkoA
WiiigAooooAKKKKACkpaSgBaKKKACiiigAooooAKKKKACiiigAooooAKSlpKAFooooAKKKSg
BaKKKACiiigAooooAKKKKACiiigAooooAKKKSgDyD9nH/knuoH/qKyf+ioq9e715D+zj/wAk
81D/ALCsn/oqKvX8UmAUtJS0AFFFJTAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oASloooAKKKKACiiigApKWigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEpaKK
ACiiigAooooAKKKKACiiigAoopKAFoopKAFooooAKKKKAEpaKKACiikoAKWiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpaSgD
yD9nH/knl/8A9hWT/wBFRV7BXj/7OP8AyTy//wCwrJ/6Kir2CkAUUUUAFFFJTAWiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKAEpaSloAKKKKAEpaSloAKKKKACikpaACiiigAoopKAFooooAKKS
loAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiikoAWiiigAooooAKKKKACiiigAoooo
AKKSloASloooAKKKKAEpaKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKSgDyD9nH/knl//ANhWT/0VFXsFeP8A7OP/ACTy/wD+
wrJ/6Kir2CkAUUUUAFFFJTAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikpaACiiigBKWiig
AooooAKSlpKAFooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKKACiiigAoopKAFooo
oAKKKSgApaKKACiiigApKWigAooooAKKKKACiiigAooooAKSlooAKKKKACiiigBKWkpaACii
koAWiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKSgDyD9n
H/knl/8A9hWT/wBFRV7BXj/7OP8AyTy//wCwrJ/6Kir2CkAUUUUAFFFJTQC0UUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUlAC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFJS0AFFJS0AJS0UlAC0UUlAC0lLRQAUUUUAFFFFAB
RRRQAUUUlAC0lLRQAUUUUAFFFFABRSUtACUtFFABRRRQAUUlLQAUUlLQAUlLSUALRRSUALRR
RQAUUUUAFFFFABRRSUAFLRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJQAtFFFABRRSUALRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSUAeQfs4/wDJPNQ/7Csn/oqKvYK8f/Zx/wCSeX//
AGFZP/RUVewUgCiiigAoopKYC0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUtFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRSUtABRRSUALRRSUALRRRQAUUUUAJS0UUAFFFFACUtFFABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0lAHkH7OP8A
yTy//wCwrJ/6Kir2CvH/ANnH/knl/wD9hWT/ANFRV7BSAKKKKACiikpgLRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFJS0AFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAJS0lLQAUUUUAJS0lLQAUUUUAFFJS0AFFFFABRRSUALRRRQAUUlFAC0U
UUAFFFFABRSUUALRRRQAUUlLQAUUUlAC0UUlAC0UUlAC0UUUAFFFFABRRSUALRRRQAUUUUAF
FJS0AJS0lLQAUUUUAJS0lLQAUUUUAFFJS0AFFFJQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUlAHkH7OP/ACTy/wD+wrJ/6Kir2CvH/wBnH/knl/8A
9hWT/wBFRV7BSAKKKKACkpaSmAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAlLRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUlLQAUUUUAJS
0UUAJS0lLQAlFLSUALRRRQAUUUlAC0UUUAFFFJQAtFFFABRRSUAFLRRQAUUUUAJS0UUAFFFJ
QAtJS0UAFFFJQAUtFFABRSUtABSUtFABRRRQAUUUUAFFJS0AJS0lLQAUlLRQAlLRRQAUUUUA
JS0lLQAUUUlAC0UUUAFFFFABRRSUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA
FFFJQB5B+zj/AMk8v/8AsKyf+ioq9grx/wDZx/5J5qH/AGFZP/RUVewUgCiiigAoopKaAWii
igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikpaACiiig
AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopKWgAooooASlopKAFpKWigApKWigAo
oooAKKKKACiiigAoopKAFooooAKKKKACiiigAooooASloooAKKKKACikpaACikpaACiiigAo
opKAFooooAKKKKACiiigAoopKACloooAKKKKAEpaKKACkpaKACiiigAooooAKSlpKAFooooA
KKKSgBaKKKACiiigAooooAKKKKACiiigAooooAKKKSgDyD9nH/knmof9hWT/ANFRV7BXj/7O
P/JPL/8A7Csn/oqKvYKQBRRRQAUUUlMBaKKKACiiigAooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooASloooAKKKKAEpaKKACiiigAooooAKKKKACiiigAooooAKKKK
ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEpaKKAC
iiigBKWiigAooooAKKKKACkpaSgBaKKKACiiigAooooAKKKKACiiigApKWkoAWiiigAooooA
SloooAKSlooAKKKSgBaKSloAKKSloAKKKSgBaSlpKAFooooAKKKKAEpaKKACiikoAKWiigAo
oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK
ACkpaSgDyD9nH/knl/8A9hWT/wBFRV7BXj/7OP8AyTy//wCwrJ/6Kir2CkAUUUUAFFFJTAWi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEpaKKACiii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooASlpKWgAooooASlpKWgAooooAKKSloAKKKKACiikoA
WiiigAopKWgAooooAKKKKACiiigAooooAKKKKACkpaKACiiigAoopKAFpKWigAooooAKKKKA
CiiigAooooAKKSloASloooAKKKKAEpaKKACiiigBKWiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopKAPIP2cf+SeX/8A2FZP/RUVewV4/wDs
4/8AJPL/AP7Csn/oqKvYKQBRRRQAUlLSUwFooooAKKKKACiiigAooooAKKKKACiiigAooooA
KKKKACiiigAooooAKKKKACiiigBKWkpaACiiigBKWiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBKWk
paACiiigBKWiigBKWiigBKKWkoAWkpaKACiikoAWiiigBKWikoAKWiigApKWkoAKWiigAooo
oASloooAKKKSgAopaKACiikoAKWiigBKWiigApKWigAooooASloooASloooASloooAKSlooA
SloooAKKKKAEpaSloAKKKSgBaKKKACiiigBKWiigAooooAKKKKACiiigAooooAKKKKACiiig
AooooAKKKKACiikoA8g/Zx/5J5f/APYVk/8ARUVewV4/+zj/AMk81D/sKyf+ioq9gpAFFFFA
BRRRTQBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
SUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUlLQAUUUUAFFFJQAtFFFA
BRRRQAUUUUAFFFFABRRRQAUUUlAC0lLRQAUUUUAFFFFABRRRQAUUUUAFFFFABRSUtABRSUtA
BRRRQAUUUlAC0UUUAFFJS0AFFFFABRRSUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJQ
AtFFFABRRSUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSUAeQfs4/8k81D/sKyf8AoqKv
YK8f/Zx4+Hl//wBhWT/0VFXq4vrVrk24uIzOvWPdyPwo3egFmikzQTjvSAWimlgOppc0wFop
KM0ALRSZGcZpaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBKWii
gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKSlooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigBKWiigAooooAKKKKACiiigAopKWgAoopK
AFoopKAFooooAKKKKAEpaKKACiiigBKWiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkpaSgDxL4CzXlv8MNSksYFnnGqybUY4B/
dRVbtdR8Q/8ACZ3Fymlwm/PDRZ4FO/Zy5+Ht/wD9hWT/ANFRVuxyJb/E+dWbBcd+O1a0Pjfp
/SHdJaq50vh7UNcvTJ/bGnxWuPu7GzmsrVvF98urtpmi2K3dyn39xwBXXsysGCMCcdj0rz/w
bIlt4r1iG6IW4aQlWbuKm13zdjWEU1KT6dDY8P8AiyXUL+TTdVtBa6gnRB0P0qbxN4qOizRW
ltB9ovpvuR1gzSi8+JcBt8MYf9ZtpdVK2vxRtprn/VvFhGboDS/iO6Vi1RtNp9rl2y8Yanb6
nDZ+IdPSzE/+rdDkV2n3gCOh5rgfiFOlxLp1rEwadpAV28nrXdxZWCIHrsA/ShzUnorGMoct
pdzC03XNRvNdu7GfTjFbQnCT/wB+uiHSqsV9aTzvBHMjSp95QeRVupJlq+wUUUUCCiiigAoo
ooAKKKKACiiigApKWigAooooAKKKKACiiigAooooASloooAKKKKAEpaKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooAKKKKAEpaSloAKKKKAEpaSloAKKKKAEoopaACiiigAooooAKKKKACikpaACiiigApKWi
gApKWigAooooAKKKKACkpaKACiiigAoopKACloooAKKKKACkpaKACiiigAooooAKSlooASlo
ooAKKKKAEpaKKACiiigBKWiigAooooAKKKKACiiigApKWigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiikoA8f8A2cf+SfX/AP2FZP8A0VFXoOv+FbHxBJG8zSQzR/dlhOG/
OvP/ANnL/knmof8AYVk/9FRV66TjmqXkCk46mHoPhe38PvI8F1czvIMHznzUet+D9P1ucTSv
JBKP44TtJroRRgZzSvqNSad11MTQ/DNjoJdrffJI33pJDlj+NTazoNlrtt5d2pDD7si8MPxr
WNBxQ5XdwTad7nMaT4I03SrpbpZJ7iVfumdt236V0x6UvtRRKTe4N33MHTfDlnYatc6kjyGe
c5YE8Ct1elBUdaUUrhJ8z5mLRRRQIKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA
ooooASlpKWgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikpaACiiigBKWiigAooooAKSl
pKAFooooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKKACiiigAoopKACgUGsbXvFOj+G
IoJNXuxbrM22MkE5P4UluBtUVxZ+Kvg0f8xdf++G/wAKP+Fq+Df+guv/AHw3+FMDtKSuM/4W
r4N/6C6/98N/hR/wtbwb/wBBdf8Avhv8KAOzorjP+Fq+Df8AoLr/AN8N/hR/wtXwb/0F1/74
b/CgR2dFcZ/wtXwb/wBBdf8Avhv8K1dB8Y6F4luJ4NJvhcSwruddpGB+NAzfopqkfjTqACii
igAooooAKKKKACkpaKACiiigAooooASlpKWgAoopKAFooooAKKKKACiiigAooooAKKKKACii
igAooooAKKKKACiiigAooooAKKKKACiikoA8f/Zz5+HmoD/qKyf+ioq9M1jXLLQ7bzbyQD+6
g+830ry39nu6htPhzqEkzhFGqyZJ6f6qKtfWtX03UvHWmtNKj2cIOSTxmrhFzdkVT5W7S2Os
0XxZFrd2YIrC4hAGd8i4BFbd5e2+n273FzIscSDlmNVbLUNNut/2KSJvLHzFMcCuI+Iet2l5
ZW1pDcKy+cplUHqKUI80uWO4QtzWlsbtn46tL+/jtoLG6KOcCYr8tdUG+UE1haXqOiOlvaWb
wltowq9RUPiTxOdHkisrK3+06hL9yLtj3pO0XYLXk0tjpetNJ5ri7bxbrNlexQ+IdMjtYpjh
JIzn861PFGr6xpViLrSrGG6jUbpC7YwtW4STSJtd2OhzkGlHSuP8MeLr7xJcoUsBHZhP3shP
If0FdhUO9wt1FooopAFFFFABRRRQAUUUUAFFFFABSUtJQAtFFFABRRRQAUUUUAFFFFABRSUt
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUtFFABSUtFABSU
tFABRRRQAUUUUAFFFFABRRRQAUlLRQAUUUUAFFFFABRRRQA01478e1D6fog4P75uo9hXsR64
ry34y2+mXNrpUWoTPDiUmMr3PFXSpSqzUF1Lp03UlyxPFLzRWs7JLtwpV+nFX9O0Ow1C1UCe
KK6boGHWtXxTbi30S2RWDJn5T6iuQUurAq2GBGCK2q06VGq6LencTTpSs9Se/wBNbTrhoJUX
I74qxpGn2N4rC6kSJs4UkVr+IALrQbK9cDzD8pPrXLfxH07e1YQlFStLb9DSvD2Ml5q5p6to
L6W4J2SI/Kuo4NVtNtrW4u9lyVSLH3sV0Nlm+8J3MUx3G3GVY9a5M8Yx070KUYTstV0FVpez
jGf8xual4bW2thd20kc8B6FR0ru/gOFGvaxhQD5K9B71x/hGRp2uLGT5opUJAPau0+ByCPxP
rqDoEA/8eokoqVoaocqX7pVu+h7iOBS0gpRUmItFFFABRRRQAUUUUAFJS0lABS0UUAFFFFAB
RRRQAUlLRQAUUUUAFFFFABSUtJQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU
UUlAHi/7Ptnb3/w21G3uYxJGdVkyp/65RVqah4d0tPH9jZJb/wCjOpLR5rO/ZytwfBN/cb2z
/aUibc8f6qLn9a9Om8OWU+uw6u+/7TEMLg8VtSlGLd30/EqMnHYfYaBpelxypaWwjWThwCea
4Tx74d0yyFnJb2/lvJMFbB6ivTtvOaydc8P2eurCt3vxE4ddpxyKmjNKd5AnZ3RHpnhjSNPe
O5trQJNtHzZNcV4qhu/+E8tmS9Fjujws7LkZ9K9OVNqKoPCjArN1jQ7PW7XybuPOOjDqPpQp
tN36l06nK3fqcjdeEdb1WSIX/iSOeNGDKFQDNdNr5EXha9TePltyvJ9qyLH4e2FneLci+vmK
nIUycVpa74Ts9f2fabi4jCjG2N8BvrUSpr4UyZJN2bKPw98tfDUKKV3HkgHmuvFctoXgXTfD
+ofbbS4ui4XbseTKY+ldSOlVUs5cyMox5fdvcWiiioKCiiigAooooAKKKKACiiigApKWkoAW
iiigAooooAKKKKACiiigBKWkpaACiiigBKWkpaACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAEpaSloAKK
KKAEpaSloASloooASlpKWgApKWigAooooAKKKKACiiigAooooAKKKKAEopaKACiiigBKWiig
ApKWkoAafvf1ryH47wySWWihFLfvm6fhXrzYFeWfGfV59LsdMMMcbiaQg7xnGMdK0oxUqivK
xdKPNPlbsebeJklXw/Zh1IxxXJKu5wA2DkZrS1DXb3U4Bb3G3YpyuKtaXPodnbiW5ilkuhzj
+HNb4lRrYi6encqouaVky1rzC38PWds33wd2K5ckAgE8nmr+qanJqt6ZpOF6BR2FTaYukoxk
1JZWI+6Erm5eaVrmuLnGrOPLtaxr2BFp4Vunf/lsML71ynGwMeM1r61rQv1jtrZPLtYvuLVK
xWyadftwcwDsnWiUfe5U72DE1IzhCC6G34QHlTTXLHCRoQT6V2/wRIbxRrrjoUB/8ergr/Wr
WOyay0uJkhf75bqa7j4Ef8jBrHP/ACxX+YpzjyS5E7oKtSPsI0luj3TtSiminCoOUWiiigAo
oooASloooAKKKKAEpaSloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigApKWkoA8g/Zx/wCSe6h/2FZP/RUVevivH/2cf+Sfah/2FZP/
AEVFXr4xQAtJwaKqalfxaZYS3kwJjjGSB1o63DXoXMUVnaPrEGtadHewBhG/QN1rR60XEmmJ
SEAil6UySWOGJpJGCooyxPYUJIGK3TApy9Kr215bXkXmW0ySp/eU5FWR0pctpAu4UtFFMYUU
UUAFFFFABRRRQAUUUUAFFFJQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFACUtJS0AFFFFACUtJS0AFFFFABRSUtABRRRQAUUUlAC0UUUAFFJS0AFFFFA
BRRRQAUUUUAFFFFABRRRQAUlLSUAIwJPFea/FzwnrXiiz0tNGt45mgkYyBmAwDj1r0skikyc
Ukle4HzQPhN413E/2dD/AN/V/wAaQ/Cnxx0/s6HH/XVf8a+mB16mlPTvVAlY+Zx8JvGuedOh
/wC/q/40rfCnxuPu6dD/AN/V/wAa+lufU0H60bCaPmf/AIVN42PXTof+/q/40H4UeNx93Tof
+/q/419L5PrSn60loDVz5oHwo8bHrp0P/f1f8a9A+E3gzX/DGsalcavaxwxTRhYyrg5OfavV
6Fz3oGIBThQKWgAooooAKKSloASloooAKKKKAEpaKKACiiigAooooAKKKKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKSgDxz9neVYfhxqUjkBU1SVi
fbyoq6WTxjruozzNoWmxT2sJwzyHrj0rifgbFJP8KtbjjyCb6bGP+uMVd18P7y3j8MyxM6xy
xFt6twa0S5VzPUumlKLfnY2/DHiSPxBaPuTyrqI7ZYz2NZXiLWPEdk0zQabbXFmgOfMPLCqP
gbNz4h1W8iP7g8AgcE5rpPEkkQ0O63SKDsPesZTuudL5GsYclT2b18xPCuonVNCt7trWO2L5
zFH90Vk+JPF9/pHiCLS7SzWYSx7lbvu9KseApI/+EVtF8xSxZuM+9Zerf8lPs8gf6nvWsV1M
8LFXlzdCa18W65Yanb23iCxihiuThHjPSr3jC+1qHT5l06zhmtXiPmO55ArP+IXN1pnT/WD+
ddVqal9AuFxkG3P8qJVE5J2HNKKUmtzi/hvcayU8hrSJdL5PmZ+bd6V6PXG/Dy4jfSJIlkBK
OQV7iuyq8QrVGjFSUldKwtFFFYjCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
KKAEpaSloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopKWgAooooASloooAKKKKACkpaS
gBaSlooAKKKSgBaKKKACiikoAWiiigAoopKAFooooAKKKKACiiigApKWkoAKDRS0ANHWnUlF
MAoNLSUgEpaWigBKKWigAoopKAFooooAKKKKACiiigApKWigAooooAKKKKAEpaSloAKKKSgB
aKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopKAPHf2dOfh
7qAx11WTP/fqKu3v/AWkaheNcs08LOcssT7Qa4v9nH/knmof9hWT/wBFRV68FA5pJWlzIpSs
UdM0m10i0FtZoEQd+5+tYN/4A0vUrua4uLi7zKcsqyYX8q6080VfOwU5LZnIWHw90rTLyG5t
ri7VojlU8z5fyrXuPD9ld65Fqsgb7TEu0c8YrYIBoxzmjmb3Em1JyXUydW8P2esSwvdBiYTl
dprTCgRhAMgDGDT8UtSNzbST6GBZeFrCw16XVrcyJLICGjB+T64reHSjFAGKbbe4m7i0UUUh
BRRRQAUUUUAFFFJQAtFFFABSUtJQAtFFFABRRSUALRRRQAUUUUAFFJS0AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUlLQAUUUUAFFJS0AFFFFABRSUUALRRSUALRRRQAUUUUAFFFJQAt
FFFABRRSUALSUtFABRRRQAUUUUAFFFJQAtFFJQAtFFFABRSUtABRSUtABRRSUALRRSUALRRR
QAUUlLQAUUUUAFFFJQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJS0lAC0UUlAC0UUlAC0U
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUlAHkH7OP/JPNQ/7Csn/AKKir1+vIP2cf+Seah/2
FZP/AEVFXr9DAWiiikAUUUU0AUUUUwCiiikAUUUUAFFFJQAtFFFABRRRQAUUUUAFJS0lAC0U
UUAFFFFABRRRQAUUUUAJS0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACU
tFFABRRRQAUUlLQAUlLRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUtFJQAt
FFFABRRRQAUUUUAFFJS0AFFFJQAtFFJQAtFFFABRRRQAlLRRQAUUUlABS0UUAFFFFABRSUtA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSUtJQB5
B+zj/wAk8v8A/sKyf+ioq9grx/8AZx/5J5f/APYVk/8ARUVewUgCiiigAooopgFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRSUUALRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRSUtAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFACUtJS0AFFFFACUtJS0AFFFFABRSUtABRRRQAUUUlAC0UUUAFF
JRQAtFFFABRRRQAUUUlAC0UUUAFFFFABRRRQAUUUlAC0UUlAC0UUUAFFFFABRRRQAUUUUAFF
FFABRSUtACUtFFABRRRQAlLSUtABRRRQAUUUUAFFFJQAtFFFABRSUtABRRRQAUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRSUAeQfs4/8k8v/APsKyf8AoqKvYK8f/Zx/5J5f
/wDYVk/9FRV7BSAKKKKACiiimAUUUUAFFFFACUtFFABRRSUALRRRQAUUUUAFFFFABRRSUALR
RRQAUUUUAFFFFABRRRQAlLSUtABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFJS0AFFFFA
CUtFFABRRRQAUlLSUALRRRQAUUUlAC0UUUAFFFJQAtFFFABRRSUALRRSUALRRRQAUUUUAFFF
JQAtJS0lAC0UUlABS0lLQAUUlLQAUlLSUALRRSUALRRRQAUUlLQAUUUUAFJS0lAC0UUUAFFF
FACUtJS0AFFFJQAtFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUlAHkH7OP/JPL/8A7Csn/oqKvYK8f/Zx/wCSeah/2FZP/RUVewUgCiiigAooopoAoooo
AKKKKACiiigAooooAKKKKACiiigAooooAKSlpKAFooooAKKKKACiiigAooooAKKSloAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikpaACiiigAoopKAFooooAKKKKACiii
gAooooAKKKKACiikoAWkpaKACiiigAooooAKKKKACiiigAooooAKKSloAKKSloAKKKKACiik
oAWiiigAooooAKKKKACiikoAWiiigAooooAKKKKACiiigAooooAKKKKACkpaSgBaKKKACiik
oAWiiigAooooAKKKKACiiigAooooAKKKKACiikoA8g/Zx/5J5qH/AGFZP/RUVewV4/8As4/8
k8v/APsKyf8AoqKvYKQBRRRQAUUUUwCiiigAooooAKKKKACiikoAWiiigAooooAKKKKACkpa
SgBaKKKACiiigAooooAKKKKAEpaSloAKKKKAEpaKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACikpaA
CiiigBKWiigAooooAKSiloAKSlpKAFooooAKKKKACkpaKACiiigAooooASloooAKKKKAEpaK
KAEpaKKAEpaKKACiiigAooooAKKSloAKKKSgBaKKSgBaKKKACiiigBKWiigAoopKACloooAK
KKKACikpaACkpaKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
ooAKSlpKAPIP2cf+SeX/AP2FZP8A0VFXsFeP/s4/8k8v/wDsKyf+ioq9gpAFFFFABRRRTAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiikoAWiiigAooooAKKKKACiiigAooooAKKKK
ACikpaACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC
iiigAooooAKKKKACiiigAooooAKKKKAEpaSloAKKKKAEpaSloAKKKKACikpaACiiigAoopKA
FooooAKKSloAKKKKACiiigAopKKAFooooAKKKKACiikoAWiikoAWiikoAWiiigAooooAKKKS
gBaKKKACiiigAopKWgBKWiigAooooASloooAKKKKACikpaACiiigAooooAKKKKACiiigAooo
oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiikoA8g/Zx/5J5f/APYVk/8ARUVewV4/
+zj/AMk8v/8AsKyf+ioq9gpAFFFFABRRRTAKKKKACiiigBKWiigApKWigAooooAKKKKACiii
gAooooAKKKKACiiigAooooAKKKKAEpaSloAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAop
KWgAooooASloooAKKKKACkpaSgBaKKKACiikoAWiiigAoopKAFooooAKKKSgBaKKKACiiigA
ooooAKKKSgBaSlpKAFoopKACloooAKKKKACkpaKACiiigAooooAKKSloAKKKKACkpaKACikp
aACiiigBKWkpaACiikoAWiiigAooooAKSlooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
KACiiigAoopKAP/Z
--------------KZYqah6IIxD5kSZYsGQ88PNk--
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 24 Mar 2026 09:52:23 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Mar 24 05:52:23 2026 Received: from localhost ([127.0.0.1]:41621 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w4yQw-0004M7-M9 for submit <at> debbugs.gnu.org; Tue, 24 Mar 2026 05:52:22 -0400 Received: from mout.gmx.net ([212.227.17.21]:56667) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w4yQu-0004LS-IY for 80662 <at> debbugs.gnu.org; Tue, 24 Mar 2026 05:52:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1774345931; x=1774950731; i=rudalics@HIDDEN; bh=dOsg7jUDH2pptM7QI6+GzQBwEGcqWmAyKrSG5IrYx7o=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To: 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=qw0pvUNIG6J0TTVrEeC9cYAPYVe8b6Z6iplFSU4jSV9DV4aVffDbik7Ogq6Q9I5w xeoYTaNBFuCj7c5HtOOIt3s+mPsR0lc74YHyeJwUamwOtAvskMxWN/PJtQ+/RWWkV P0TLLuzN9JD11GV9sFsK5ESOFySQ9DmN/oHiK0JuAoyuoJoGrbj8R9/QFvKONp8q+ cyLg9AM/lyQkgBlgDy6lZTIDNl9A2CpzVn8AuivwSx1lRThqE+5O/vOwSRp/fKZMD y013PNr2dyoTKCqIcw8gWS7MiCfgOXnDeAOxV0hf0ahdynsQAbn94RdsFCI/xjIK4 q/+xE5id+fSrclzuig== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MSt8Q-1vysHV2suM-00LC0F; Tue, 24 Mar 2026 10:52:11 +0100 Message-ID: <b44bca53-1e0e-4bee-88f6-dc09c02a6790@HIDDEN> Date: Tue, 24 Mar 2026 10:52:10 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> <f44b2554-dfe3-47dc-93ff-c516499ddd2a@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <f44b2554-dfe3-47dc-93ff-c516499ddd2a@HIDDEN> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:W4zOHsYwbQu09Bk0EDTvNI1CXM87hw2Atlx1SgZ+CXSRlQ5MW1v T/QhSQWwhl9akEYL9L5b/A6RngQvAy8Pqqgw7CCV1vJ8kmKkYfx5p7IpTqG20qOjJ1XZmNM htCmxJnMEGmVfX7lp+ghkFrzRXRfSOyjh6GbIxUUCuMJKf4E1tomghV5p0Fni7Yd+XQEq0x t2R7v58pu1U+/M2StPUgQ== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:fDa1Wp4splE=;lkFjAaqnkPJVVTWmjcXDmf036v/ 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 X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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 (-) > Here's a working change: it does avoid showing the old buffer contents > with both Lucid and GTK3. Not sure it's the "correct" fix, but it > does improve the perceived behavior. Possibly by avoiding flushing the > X server output too early. I'll try running with it here and will tell you if I see any problems. Thanks, martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 24 Mar 2026 09:52:14 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Tue Mar 24 05:52:14 2026 Received: from localhost ([127.0.0.1]:41617 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w4yQo-0004LK-FO for submit <at> debbugs.gnu.org; Tue, 24 Mar 2026 05:52:14 -0400 Received: from mout.gmx.net ([212.227.17.22]:38963) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w4yQl-0004KJ-Nw for 80662 <at> debbugs.gnu.org; Tue, 24 Mar 2026 05:52:12 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1774345923; x=1774950723; i=rudalics@HIDDEN; bh=15gHeSnXGVAfGmCddu8b7X6eRPQwGCu7+9Dw4ebgc40=; h=X-UI-Sender-Class:Content-Type:Message-ID:Date:MIME-Version: Subject:To:References:From:In-Reply-To:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=l7O+BRGQCHT857lFPP6CMgGs9XKPo+ZJDZulbItLlQcbkGp7MQO0DgE7bsaqQoNp K9X68yLWl2WZZoTco3V/k821PwWuWxF6SerL4nX1LAJyvew4NNMUUakgxwJTTaQAl XQ2P1xeTcf5ufD2wZ6Pw18pq5qbRZFlCasHRyrZGjkg3ZPymti50NTQ4MRQyyG33j 3BG1v6VA9nH0D2/qXlRQF/fvsod00ukL81HCy7GiU3lSedMTK3xxmUQdbnuCvBHul FTzU0DyGD5Njli8ebdqH0WURGiC6OjDpPcq98LR5Vj839kUH5eDHReWSLEoqmJE06 oXMv23j9dfL2SOJ7iA== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from client.hidden.invalid by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N79u8-1vUkT01Upo-00zSMP; Tue, 24 Mar 2026 10:52:02 +0100 Content-Type: multipart/mixed; boundary="------------o8dOhUv9VBpqQTYduxoZdCEG" Message-ID: <abd9ec54-b192-4922-986b-a6d0df78a40f@HIDDEN> Date: Tue, 24 Mar 2026 10:52:01 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> Content-Language: en-US From: martin rudalics <rudalics@HIDDEN> In-Reply-To: <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> X-Provags-ID: V03:K1:/NICX7iHrHzPtEd+WQJU7/m3NfV3Ytyue/KlPeGOkNHMg2bkp9c Mm//w1PVUrgrpBzqoWEu+DT7LeenUST8PHGYOp86Q4FA3kvamVczqTOZm1TEupnApCb6xUz CR0CEIMMx5rzV6To886RDfUvzVxMueoM17XeUGRvk1mFkaglVK9babv2R+xoB1ogX9psJje Joby34ofnDrv9dKxgDaCw== X-Spam-Flag: NO UI-OutboundReport: notjunk:1;M01:P0:6MAsXtEs7NI=;lVFWpoAaLbFoBiZpTMotHk13yiK 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 X-Debbugs-Envelope-To: 80662 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. --------------o8dOhUv9VBpqQTYduxoZdCEG Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit > And it looks like out of these three, the x-wait-for-event-timeout > workaround only helps with Lucid. If it does not help with Motif and without toolkits, something should be fishy. > The PGTK port doesn't have this problem (on Wayland), apparently > syncing the window state correctly. But it resizes and moves frames > more slowly. All frames, child frames only or normal frames only? Is mouse-dragging a normal frame slower than on X? > Right, I'm at 2x scaling so the pixel counts would be twice as > large. We should halve all numbers when at 1x scaling. Attaching the > new version (I've had to change the default font's height as well, for > dimensions to be right). I can't shrink the font here because I then can't see the text any more. In either case, here on xfce nothing strange happens when loading that file. > The idea is not to have the boxes overlap - in this scenario the > transition happens between two boxes that have no intersection on the > screen, so I think what we see is the resize-and-move transition > happening in two steps: first the frame then the contents. Do you mean that XMoveResizeWindow does not get called in x_set_window_size_and_position_1? > I'm attaching the scenario version labeled as 1x, with half values. It > also includes a green border for better clarity. This one is strange. The green border is shown only for the very first initial child frame. Subsequent steps don't exhibit it here. > Having the sizes different is probably not necessary to reproduce this > bug - but it helps to notice the two-step transformation - how the > frame contents get painted in two steps, first at the previous size > (but new position) and then at the new size. Exactly what x_set_window_size_and_position is supposed to avoid. > Attached are two screencast made with the Lucid build. The first one > is where the binding (x-wait-for-event-timeout nil) stays commented > out. The video shows the "hourglass" transition pattern where the edge > of text moves from one diagonal direction (from one buffer content) to > the other diagonal direction (from the other buffer content), at both > popup positions, in the middle. That is observable at normal speed, > and looks pretty bad. The second vid is after I uncomment > (x-wait-for-event-timeout nil) in the definition of > my-child-move-a-or-b and re-evaluate it. The text contents are now > up-to-date during transitions, but the window areas are still lagging: > during normal playback this feels like shimmer (especially when the > frame has no border), but if you reduce the playback speed in the > video player to e.g. 1/4th and/or step through frames one by one, that > becomes easy to notice. Attached are also two screenshots from the > video #2 around 00:00:01 with transition states. The first one is > during transition from big (above) to smaller (below): with blank > white rectangle where the big had just been and a slightly incomplete > rectangle below (the border is partially missing). The second is > during the transition from below to above: there is a blank white area > below where the popup had been, and above its content are rendered > aligned with the top-left of the bigger rectangle while the rest is > blank white yet. The next frame in both cases will render the > consistent full state. Anyway, this second problem probably hurts > less, but it still contributes to the "flickery" effect. I cannot see much wrong with these. The only exception being a frame in Screencast from 2026-03-23 22-20-36.webm which I attach. It shows a yellow background and the green border and buffer contents clearly inside. > Here's what I was thinking: if setting x-wait-for-event-timeout to nil > helps at least with the first part of the problem (outdated contents, > the hourglass transition), then the problem happens during the > x_wait_for_event call inside > x_set_window_size_and_position_1. Because > x-wait-for-event-timeout=nil makes x_wait_for_event a no-op. We could > try skipping it for child frames because IIUC it is there to handle > window managers refusing the resize requests or altering the > dimensions, but for child frames that shouldn't happen (is that > right?). Don't ask me. It's all heuristics like any timeouts. martin --------------o8dOhUv9VBpqQTYduxoZdCEG Content-Type: image/jpeg; name="Screencast from 2026-03-23 22-20-36..jpg" Content-Disposition: attachment; filename="Screencast from 2026-03-23 22-20-36..jpg" Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQECAgICAgQDAgICAgUEBAMEBgUG BgYFBgYGBwkIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKCgr/2wBDAQICAgICAgUDAwUKBwYH CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgr/wAAR CALyAioDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl 5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREA AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYk NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk 5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD72+OOtft6fEf/AIKRfET9mH9nj/gom3g3 SrT4N6b4w8Kadf8Ag3QLuO01ua9vrSPT2layaaSwcWwmmVi9xlv3Usagqen/AGotd+Ifw9/4 KQfsx6r4x/aJ0690zxL4k1bTtW8C3/hrQZLTRZo/DN7M11ZXk1l/aVs0ssagkXI3I2wjaxWv pDT/ANij9jfSvjK/7Ruk/sn/AA0t/iBJdvdP45g8DaemrmZ0KPL9sEXnb2RmUtvyQxBODWd8 Tf8Agnt+wT8a/G978TfjL+xF8IfF/iTUih1HxD4o+Gul399dbEWNPMnnt2kfaiKoyThVAHAr lr04V8PSgpfvIVI1G972qSktHprBxprR8rpqrG02znoxqS+se0naNWnKEbPZzhGD7PRxc001 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 fGXxP4gvdVmv0tydWt7PUbQ2lmwktlb+z7dYo8HHnEIgU/Zw/wCCcH/BQ74W/tQeAv2h/G/i fwfqGpaD4U1nw34w8Tap8ZfE/iC91Wa/S3J1a3s9RtDaWbCS2Vv7Pt1ijwcecQiBft39nj9o HwL+0x8CvD37QXw3hv00bxNo0ep6db6rbiG5SF87RIiswUnB6EjjrR+zx+0D4F/aY+BXh79o L4bw36aN4m0aPU9Ot9VtxDcpC+dokRWYKTg9CRx1oxnidn1D23tMlw9P2MJ4V/uq8PY+2+tc 8P437tz9viP3L9xW9yEfYU/Zk6HNzcr5bppW+zfnu1e937+8ub4Y/wB7m+If2dP+Ccf/AAUH +Ff7UHgH9ofx74s8H3upaD4T1nw34v8AE2qfGPxP4hvdWmvktidXt7PUbT7JZsJLZW/s63WK LBwZiI0C2/2Wf+Cdv7ePwe/a1+G/7SfxZ1bwnrk/hrw9qugeOda1H43eKdbvdb+2rbGTVbe1 v7M2ti+63GLC2WKMB+ZmEaBftn9m/wCPPgX9qT4JeGvj38N47+HRvFOkxahp8GqwJFcpFJnb 5iI7hTwehI967jyP9v8ASufHeK+bYXE1MPWyjC0p06dXD8vs60JUlUeIVWMY+2vDmeJrKVL+ HFuKjCPsqXJnXp2vy6XTSt9m/Pdq97v395c3wx7y5o6KKK/GTM8t8J/8ntfEP/sl/g//ANOP iavUq8t8J/8AJ7XxD/7Jf4P/APTj4mr1KgAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigDpvh1/y+f9s/8A2aumrmfh1/y+f9s//Zq6av8AX36Lf/Jjsq/7j/8AqVXPHx38 cK/O3/gtv/yMvgT/ALin/oFhX6JV+dv/AAW3/wCRl8Cf9xT/ANAsK/fzzz6T+KP/AAUk/Zh+ EPxfk+Dvjq/8WW89prNhpGr+Jovh/q0vh/Sb+98n7Ja3WqpbG0hklM8IXMmAZUDFSwp/xC/4 KG/AvwF+0FffsznwV8TPEXibRksH1n/hCvhXrOtWemC8Utbm5ubO2kitwyqzZkZQArHopr5v /wCCjn7TPin4xfH+x/Yb8Q/ssfG62+FeieI9I1v4g+P/AA/8Fde1238T/ZZoL+DSdMk0+0mj EZnjiFzcyOhURvEiMWLpxX7fvg3xxpn7SPxW8Z/s9fCL9prw/wDHTxEPD6fC3xN4B1HWZ/B3 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 niW+blS1lZX1s1vJ/wA1+V2WnLdau2v0HpX7Z/gvxF+0xqH7NHgL4VeOvEk+gXcVl4s8ZaLp MB0Lw/eyWq3a2t1cyzxuZTC8TFYY5cedGGKluF0v9s3wZ4i/aZ1H9mXwJ8KfHXiOfQLuKy8W +MdG0mA6F4fvZLVbpbW6uZZ43MvkvExWGOXHnRhipbj57/4J7/sT/FD4afF/4/ax4u/aF+NU VrP8W9Sh0mLxDc2ccGvQTaHp8Sau2bBPtEqOzLHNEVh3WqjYdjhj/gnv+xP8UPhp8X/j9rHi 79oX41RWs/xb1KHSYvENzZxwa9BNoenxJq7ZsE+0So7Msc0RWHdaqNh2OGjMPD/hnA/2hbHq f1bA4bEqzqrnqV/q+ivhlyw/fe6pe8/aUeaUbV/ZbTqp83LHdpK+tmt5P+a9nZact1q7a/Ql h+2L4P8AFH7Td/8Asw+AvhX448R3egXkdj4t8X6PpMB0LQL2W1W6S1ubmWdHaUwvExWGOXb5 0YYqWOGaT+2b4N8UftMaj+zP8PfhV438SXOg3cVl4r8YaNpcB0LQb2W1W6S0ubmWdHaUwyRN thjlx50YYqW4+ff+Cd37EvxU+HHxq+P/AIh8XftF/Gu2tbn4u6hFpketT2Udt4gt5ND02FNW Ytp6/aZUdnWOaIrDutVBRtjAu/4J5/sQ/FH4f/Gj4/eIfGn7RnxugtZvi3qMOlQa/dWccGv2 8uh6dEmrNu09ftEqOzrHNEwh3Wqgo2xw2uYeHnC2C+v8uYKf1bA4bEqzqr2lSv8AV7pXwq5Y L23uqXvPno80o2r+ymeLvzcsd5WV3ezW8np71+V2WnLdau2v0Fpf7Z3gzxD+0zqP7M3gP4U+ OvEdxoF3FZeLfGOi6TAdC8P3slqt2trdXMs8bmXyXiYrDHLjzowxUtwul/tmeDfEf7TWofsy eAvhZ438R3Gg3kVj4s8Y6RpcH9haBeyWq3S2tzcyzo5lMLxMVhjlx50YYqW4+e/+Ce/7E/xQ +Gnxf+P2seLv2hfjVFaz/FvUodJi8Q3NnHBr0E2h6fEmrtmwT7RKjsyxzRFYd1qo2HY4Y/4J 7/sT/FD4afF/4/ax4u/aF+NUVrP8W9Sh0mLxDc2ccGvQTaHp8Sau2bBPtEqOzLHNEVh3WqjY djhlmHh/wzgfr/LmMZ/VsDhsSre1XtKlf6vor4VcsP33up2b9pR55RtX9lrOvF83LHdpK7vZ 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 KtNR1u9JNNNO/upbXT9mOY/WPYYatZyh8L2loqUHJ9GkoK60Sc5aarl4vGOD2opX++frSV/i QewFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAdJ8Nv+X3/ALZ/+zV1Fcv8Nv8Al9/7Z/8As1dRX+v30X/+TGZT/wBz H/qVXPDx38cK/O3/AILb/wDIy+BP+4p/6BYV+iVfnb/wW3/5GXwJ/wBxT/0Cwr9+PPPJf2q/ hT+0x8P/ANrn9ovxZ8MbP9oy1+LHjTxP4f1L4D6h8PdOvm8JX0EOm2VsserXEEZsvJhnS4We LUHCpG5eFd0jM360RCQR7pCpkxyV6VHPqVjbXlvp1xfQJcXIY20EkoDy7cFtqnlsAgnHTIrO 1Px94H0PVBouueMtHs7t8eXaXWpRRytnp8rMDWNKl7O7v8kkorVyulq+aTk+duTUnZpR1vvW n7aopWtZW63fuwjq77RUFyJW5byve6t8z/txfAg/E3x/8LP2cfhv8Gja+GvH/wAXIvGPxk1v RfD3l2d1a6LFFdomoTxIFM91dwabAplO+SOBwMiI4+n/ABaudBn5/u/+hrWizY7Vi+NNTsYb AabPf28c91/x7QSzhXl2MrNtU8tgdcdMivifFV1H4VcQc75v9jxNm0rpLDSio33cVy3in8Ll K2jsXSXNXppN2TWjbau3JuSXRyTSl35U97nHsMMQT3pKD16UV/h+fRBRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHS fDb/AJff+2f/ALNXUVy/w2/5ff8Atn/7NXUV/r99F/8A5MZlP/cx/wCpVc8PHfxwr87f+C2/ /Iy+BP8AuKf+gWFfolX52/8ABbf/AJGXwJ/3FP8A0Cwr9+PPOo/ag+Hv7Ovw8/4LFfs5fGuy s9BsPGfiFvFlr4o1ye/H2qWCHQdtvDJvc+WihvlUBQWbdjLEnwj9vTwv4K+GH7V3x+/4KCWG nfs1/Ez/AIV+PCi6/wDDr4p/Dma+8TWT29pHIsGmXszolnPcLcpJC0cNyskixqSrKwH6CfEn 9gT9hH4zeP7n4q/GH9iz4SeK/FN20TXniXxJ8ONLvtQnaONY4y9xNA0jFURFXLcKqgcAVseN f2S/2XfiR8UNK+N/xG/Zw8B+IPGmihBpHi3WvCNndalY7DuTybmWNpY9rZK4b5SeMV5U8s5q /PCfK1Uc4u11Tbp8jajdc+rcnG8E5Su5J7+5/aUI2XK5J04wnfRy5aiqWb1srL2d9bQS0s1F eg2s/wBogWcoV3qG2t1GR0NfCH7Xvwn+Bnhv/gr1+zr8XfDGg6PD468SnxXbeJtVW5L3s9vb 6Cgt4mDMdiKpLBAFGSWxksT94s20AAE5HWvLvFX7KP7LP/C05f2npP2bfATfElMBPiEfB9j/ AG4N0P2U4v8AyvPH7hjF9/8A1fyfd4r4bxiw/wBZ8LM7SdnHCYiSfVctKTaXbmScX5Se6unz 5PiPqc37Z814uL6KTasm15N86X80Y9bNWD1PXr3pKCMEjPSiv8UT2AooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDpP ht/y+/8AbP8A9mrqK5f4bf8AL7/2z/8AZq6iv9fvov8A/JjMp/7mP/UqueHjv44V+dv/AAW3 /wCRl8Cf9xT/ANAsK/RKvzt/4Lb/APIy+BP+4p/6BYV+/Hnnbf8ABRef9pH4AeItH+Onw2/b X8UnxD4k+JXhzQfhv8FrfQ9JGj6rHNdW0V9a3Aa1e8um+zi8uWuRPH9nRAQAEJbz/wDbB+MX 7R3wg/bV8ffEr40eNf2mfCXwJ8J23h2403xJ8KtM8Mv4es4miJ1CbU/7QhlvpYVkaPe1mrmN BKW24BHtvxd/4JS6H8Vv2u739tLTv22vjh4V8Vz6eljp1noOpaDPYaLaCNEkhsI9R0i6ezWU oHl8uQGRiSxIwBf+O3/BK34VfHzx/wCKvE2v/Hv4n6P4b+IMllJ8S/hzoOuWcWh+Knto44lN ystpJcQCSKKOOVbWeBZVTDg5JPHiKNebpKlNpxlKWrXK24SSU3Z1HC7u0ue3LFQgtb+lh61C nUftoX5or3o7pKUHaK5rc9lJKVldufPJrlZ6J8abODwF4n8PfGTwpe3tve6j4k07SdUt11CX 7NqFpcyJb/PCTsV03K6uqhhtbnBNeleLP+QDP/wH/wBDWuX8QfCrXfF3jvS9X8SeKLY+HdBu 473SdBtNNKyPdohVJJ52kPmKmSyoqJhtpJO0Z6jxZ/yAZ/ov/oa18j4rRpw8LM9jGLX+yYzf qvYTs/6667tnLh3NyhzJfZ2d1f3rq9le3fe1k9rLhn++frSUr/fP1pK/w9PpAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigDpPht/y+/wDbP/2auorl/ht/y+/9s/8A2auor/X76L//ACYzKf8AuY/9Sq54eO/jhX52 /wDBbf8A5GXwJ/3FP/QLCv0Sr87f+C2//Iy+BP8AuKf+gWFfvx55+iVFFFZnQFZ3in/kCT/R f/QxWjWd4p/5Ak/0X/0MV8N4sf8AJr88/wCwLFf+mKgsLuv8X+ZwrcMcetJSv98/Wkr/ABAP pQooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigDpPht/y+/8AbP8A9mrqK5f4bf8AL7/2z/8AZq6iv9fvov8A/JjMp/7m P/UqueHjv44V+dv/AAW3/wCRl8Cf9xT/ANAsK/RKvzt/4Lb/APIy+BP+4p/6BYV+/Hnn6JUU UVmdAVneKf8AkCT/AEX/ANDFaNZ3in/kCT/Rf/QxXw3ix/ya/PP+wLFf+mKgsLuv8X+Zwr/f P1pKV/vn60lf4gH0oUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB0nw2/5ff+2f/s1dRXL/AA2/5ff+2f8A7NXUV/r9 9F//AJMZlP8A3Mf+pVc8PHfxwr87f+C2/wDyMvgT/uKf+gWFfolX52/8Ft/+Rl8Cf9xT/wBA sK/fjzz9EgQehFUdS8TeHdH1Gy0fVdes7a71J3TTrW4ukSS6ZFLusakguVUFiBnABJ4r4I/a c/bs/af+Fnx18afCrwl44ihj0XWrzTbTzNJtJGik1PTIJdEPMXOy5W4ADZ3lwHLAAD3f403m ueEv2ufg5cat8VI7zT9X1fUbS50DVNH0l47No9HuXM8M5t/tUDuychZdpBK4CkrV4jD1MNUh GTXvKDT1taadtk9U7Ra6NrW12u6dHkg5XXwTnbr7i5kn2ck1JdOV3evun0Z5fvWd4wJHh64I GeU4/wCBivmT9pT4r/HD4ZfHO61/xn8U/E/h34YW95pkFjf+BbbQrlbWSRkSRdThv45LzDyS YBtlIEZU/eqyfjt8X/GP7bnin4Vy3/iK08M+Ep7a3XS9OtdE/s+5jm04zi5vGuJf7QbMzbY/ s0YjDRDexG8L8F4pwdXwszyWy+o4tvukqE90u7ata7Sd2kjWjgp05PlknopPXRJuL32b95J9 IvdrW3rROST6mko57jnvRX+Hp7IUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQB0nw2/5ff+2f8A7NXUVy/w2/5ff+2f /s1dRX+v30X/APkxmU/9zH/qVXPDx38cK/O3/gtv/wAjL4E/7in/AKBYV+iVfnb/AMFt/wDk ZfAn/cU/9AsK/fjzz7p1P4K/BzxFqV14i134TeGby/1G4s7m+vLvQbeSWeW1ObWR3ZNztCST GxJMeTtxWT4z/ZU/Zl+IviO48YfEH9nTwHr2r3YX7Vqut+ELO7uZtqhV3Syxs7YUBRk8AADg V4b8W/8AgqHp3wd8fa58ONV+DUlzdaFc61atKmv7Flls9Pt721Q/6OdhulmdR18vySfnzgeg fFH4lfEbTP2oPhf4M1fwfNZ6Drd/fxWmqaT45KCe4XSprh4ruwNpiaNfLYIwnGG2vj+GumTx dOapzk43UWkmtpq8d2t0vW+lruKffD29Km5ptJxlJ2drxpqz872UUrraz+BXXc6n+zR+ztrH xDT4t6x8C/CF14ojaNo/ENz4ctnvVeNAkbiZkL7lRVVTnIVQBwKsePfhh8NtV1a1+Jmr+ANF uvEejIU0nXptMia8slfKMsUxXegZXdSFIBDsO9eW/Ef9tPxD4Z/aXk/Zw8P+CPCdtcw/ZPJv PHPjz+xpNY85Fc/2bD9km+2bASrfOh3qy44zS67+2RoniD9prU/2W9EtfDAl0do4dWudS8ax W2pyzta/bNllpvlNJdoqBPMkLxhcsRv2EV+e+LFSdTwszvmbf+x4zfZfuKi3drXWmtrtpK7N aKx14Su1yxWl0ny+7y3WrSs4qMet1yq7sdqck5PXvRRkHkDg9KK/w8PYCiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA Ok+G3/L7/wBs/wD2auorl/ht/wAvv/bP/wBmrqK/1++i/wD8mMyn/uY/9Sq54eO/jhX52/8A Bbf/AJGXwJ/3FP8A0Cwr9Eq/O3/gtv8A8jL4E/7in/oFhX78eefSfxO/4Jx/Af4s/EnXvif4 l1nxHHqHiHV9H1K9itL6FYY5tORo41jVoWISVDsmBLFxwCvOdr4ufsdD4u/FDTfipdftJ/Eb RLrRLprjQtO0KXSVtdOle2NtI0Yn0+V23xs+fMd+XYjHGKfxK/4KI/su/Cv4zT/ADWNd8Uat 4ss5LNdY0zwf8Otc11dIN0AYPts2nWc8VnvXDDznQ7SGxt5p/wAWv+Ci37H3wN+L6/Az4nfF WbT/ABCr2Kah5PhrUbmx0prxwlot/fQW72unmYkbBcyxFgQRkEV0rEfWaigmpO7ilZN817OK vd3TVuW+jTstzsjWr0qc5tq1tW0mlFRjC7veycYpPy3vd3t/GP8AY9tvjrrszeP/AI8+NpvD dzd21xc+C4TpyWDvAY2UCQWf2lAWjVm2zAklsEA4Gh4h/Z30PSPivf8Ax48MeNtf0m51Tym8 R6BZTwnTtYkSH7PHNMkkTSJKqeX88LxFhEgfeMg+pM2OgryDxx+2N+z9Y/HSP9kceLr288fX Fkl1c6TpHh6+voNMjKSTIb67t4XtrAyRwu0a3MkTSfKEDFlB/PPFnFT/AOIXZ5GUkr4PFLZW b9hU0stG+19nqtUbYetX9pCClolb5e7d+bvFO7u27NttJmq3DHjHPQUlBOTnOfeiv8PT2goo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigDpPht/y+/8AbP8A9mrqK5f4bf8AL7/2z/8AZq6iv9fvov8A/JjMp/7mP/Uq ueHjv44V+dv/AAW3/wCRl8Cf9xT/ANAsK/RKvzt/4Lb/APIy+BP+4p/6BYV+/HnnR/tbfsM/ ti/Fz9qq4+MP7NPhbwN8M9Vub3SGm+MOifGLX7XU7m0t/J8+G+8PwWA0/VW2iWGP7TMR5Wz5 lxsHPftOf8ElPiZ8QP2tfiH8UdF8N6T4+8B/F3VNJv8AxP4c1z49+LvB/wDZc9rbW9pLmz0d ZLPVo2itY3UTpG6t8hZkClf0OjABbA70rIGxnt7Vz1KVOdNwSsm3dbppu9mnpa7eujf2nI76 WJr0dVLVKKvZX91JXvvd8q/uxtaEYrQFXYOua+XfDn7O37R3wJ/bN+JHxV8Ef8IZrvwv+MGr WOseKTrGp3Vvrvh7UbXSorBRaxpbyQ31vKbW1+V5YGh3SsDJgKfqOs/xSB/YM/H93/0MV8P4 r6eF2eS7YPFP/wAoVDPC1J4epyxfx2i/S6l+aRwZBBwe1FK/3z9aSv8AEM+hCiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKAOk+G3/L7/wBs/wD2auorl/ht/wAvv/bP/wBmrqK/1++i/wD8mMyn/uY/9Sq54eO/jhX5 2/8ABbf/AJGXwJ/3FP8A0Cwr9Eq/O3/gtv8A8jL4E/7in/oFhX78eefolRRRWZ0BWd4s/wCQ DP8ARf8A0Na0azvFn/IBn+i/+hrXw/it/wAmqz//ALAsV/6YqBD+PT9ThX++frSUr/fP1pK/ w/PpAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigDpPht/y+/wDbP/2auorl/ht/y+/9s/8A2auor/X76L//ACYzKf8A uY/9Sq54eO/jhX52/wDBbf8A5GXwJ/3FP/QLCv0Sr87f+C2//Iy+BP8AuKf+gWFfvx55+iVF FFZnQFZ3iz/kAz/Rf/Q1rRrO8Wf8gGf6L/6GtfD+K3/Jqs//AOwLFf8ApioEP49P1OFf75+t JSv98/Wkr/D8+kCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKAOk+G3/AC+/9s//AGauorl/ht/y+/8AbP8A9mrqK/1+ +i//AMmMyn/uY/8AUqueHjv44V+dv/Bbf/kZfAn/AHFP/QLCv0Sr87f+C2//ACMvgT/uKf8A oFhX78eefolRRRWZ0BWd4s/5AM/0X/0Na0azvFn/ACAZ/ov/AKGtfD+K3/Jqs/8A+wLFf+mK gQ/j0/U4V/vn60lK/wB8/Wkr/D8+kCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAOk+G3/L7/2z/wDZq6iuX+G3/L7/ ANs//Zq6iv8AX76L/wDyYzKf+5j/ANSq54eO/jhX52/8Ft/+Rl8Cf9xT/wBAsK/RKvzt/wCC 2/8AyMvgT/uKf+gWFfvx55+iVFFFZnQFZ3iz/kAz/Rf/AENa0ar6lbQXtq1ncJuR8bh9CDXy 3iBlmOzvw/zfLcFDnrV8NXpwjdK86lKcYq8mkrtpXbSXVpagtKkZdnc88bljj1pK6/8A4QSy PI1Gf/vlP/iaP+EEs/8AoIz/APfKf/E1/lf/AMSueO3/AEKP/LjC/wDy89v65Q7nIUV1v/CD 2f8A0Ep/++E/wo/4Qez/AOglP/3wn+FH/Ernjt/0KP8Ay4wv/wAvD65Q7nJUV1v/AAg9n/0E p/8AvhP8KP8AhB7P/oJT/wDfCf4Uf8SueO3/AEKP/LjC/wDy8PrlDuclRXW/8IPZ/wDQSn/7 4T/Cj/hB7P8A6CU//fCf4Uf8SueO3/Qo/wDLjC//AC8PrlDuclRXW/8ACD2f/QSn/wC+E/wo /wCEHs/+glP/AN8J/hR/xK547f8AQo/8uML/APLw+uUO5yVFdb/wg9n/ANBKf/vhP8KP+EHs /wDoJT/98J/hR/xK547f9Cj/AMuML/8ALw+uUO5yVFdb/wAIPZ/9BKf/AL4T/Cj/AIQez/6C U/8A3wn+FH/Ernjt/wBCj/y4wv8A8vD65Q7nJUV1v/CD2f8A0Ep/++E/wo/4Qez/AOglP/3w n+FH/Ernjt/0KP8Ay4wv/wAvD65Q7nJUV1v/AAg9n/0Ep/8AvhP8KP8AhB7P/oJT/wDfCf4U f8SueO3/AEKP/LjC/wDy8PrlDuclRXW/8IPZ/wDQSn/74T/Cj/hB7P8A6CU//fCf4Uf8SueO 3/Qo/wDLjC//AC8PrlDuclRXW/8ACD2f/QSn/wC+E/wo/wCEHs/+glP/AN8J/hR/xK547f8A Qo/8uML/APLw+uUO5yVFdb/wg9n/ANBKf/vhP8KP+EHs/wDoJT/98J/hR/xK547f9Cj/AMuM L/8ALw+uUO5yVFdb/wAIPZ/9BKf/AL4T/Cj/AIQez/6CU/8A3wn+FH/Ernjt/wBCj/y4wv8A 8vD65Q7nJUV1v/CD2f8A0Ep/++E/wo/4Qez/AOglP/3wn+FH/Ernjt/0KP8Ay4wv/wAvD65Q 7nJUV1v/AAg9n/0Ep/8AvhP8KP8AhB7P/oJT/wDfCf4Uf8SueO3/AEKP/LjC/wDy8PrlDucl RXW/8IPZ/wDQSn/74T/Cj/hB7P8A6CU//fCf4Uf8SueO3/Qo/wDLjC//AC8PrlDuclRXW/8A CD2f/QSn/wC+E/wo/wCEHs/+glP/AN8J/hR/xK547f8AQo/8uML/APLw+uUO5yVFdb/wg9n/ ANBKf/vhP8KP+EHs/wDoJT/98J/hR/xK547f9Cj/AMuML/8ALw+uUO5yVFdb/wAIPZ/9BKf/ AL4T/Cj/AIQez/6CU/8A3wn+FH/Ernjt/wBCj/y4wv8A8vD65Q7nJUV1v/CD2f8A0Ep/++E/ wo/4Qez/AOglP/3wn+FH/Ernjt/0KP8Ay4wv/wAvD65Q7nJUV1v/AAg9n/0Ep/8AvhP8KP8A hB7P/oJT/wDfCf4Uf8SueO3/AEKP/LjC/wDy8PrlDuclRXW/8IPZ/wDQSn/74T/Cj/hB7P8A 6CU//fCf4Uf8SueO3/Qo/wDLjC//AC8PrlDuclRXW/8ACD2f/QSn/wC+E/wo/wCEHs/+glP/ AN8J/hR/xK547f8AQo/8uML/APLw+uUO5yVFdb/wg9n/ANBKf/vhP8KP+EHs/wDoJT/98J/h R/xK547f9Cj/AMuML/8ALw+uUO5yVFdb/wAIPZ/9BKf/AL4T/Cj/AIQez/6CU/8A3wn+FH/E rnjt/wBCj/y4wv8A8vD65Q7nJUV1v/CD2f8A0Ep/++E/wo/4Qez/AOglP/3wn+FH/Ernjt/0 KP8Ay4wv/wAvD65Q7nJUV1v/AAg9n/0Ep/8AvhP8KP8AhB7P/oJT/wDfCf4Uf8SueO3/AEKP /LjC/wDy8PrlDuclRXW/8IPZ/wDQSn/74T/Cj/hB7P8A6CU//fCf4Uf8SueO3/Qo/wDLjC// AC8PrlDuclRXW/8ACD2f/QSn/wC+E/wo/wCEHs/+glP/AN8J/hR/xK547f8AQo/8uML/APLw +uUO5yVFdb/wg9n/ANBKf/vhP8KP+EHs/wDoJT/98J/hR/xK547f9Cj/AMuML/8ALw+uUO5y VFdb/wAIPZ/9BKf/AL4T/Cj/AIQey/6CM/8A3wn+FH/Ernjt/wBCj/y4wv8A8vD65Q7jPAIA +14AH+r/APZq6Kqek6LBo4kEMzv5mM7wOMZ9APWrlf6PeA3DGecG+FOXZPnFH2WIpe25o80Z W5sRVnH3oOUXeMk9JPezszycXUhUrvlYV+dv/Bbf/kZfAn/cU/8AQLCv0Sr87f8Agtv/AMjL 4E/7in/oFhX6+cR+iVFFFZnQFFFFaGYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABX52/8ABbf/AJGX wJ/3FP8A0Cwr9Eq/O3/gtv8A8jL4E/7in/oFhQB+iVFFFZmgUUUVoZhRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFfnb/wW3/5GXwJ/3FP/AECwr9Eq/O3/AILb/wDIy+BP+4p/6BYUAfolRRRWZoFF FFaGYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABX52/8Ft/+Rl8Cf8AcU/9AsK/RKvzt/4Lb/8AIy+B P+4p/wCgWFAH6JUVV0P/AJA9r/17R/8AoAq1WZoFFFFaGYUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BX52/wDBbf8A5GXwJ/3FP/QLCv0Sr87f+C2//Iy+BP8AuKf+gWFAH6EaH/yB7X/r2j/9AFWq iiC26rbxj5UQKo+lS1maBRRRWhmFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV+dv8AwW3/AORl8Cf9 xT/0Cwr9Eq/O3/gtv/yMvgT/ALin/oFhQB+iWB1xRRRWZoFFFFaGYUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABX52/8Ft/+Rl8Cf8AcU/9AsK/RKvzt/4Lb/8AIy+BP+4p/wCgWFAH6JUUUVmaBRRR WhmFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAV+dv8AwW3/AORl8Cf9xT/0Cwr9Eq/O3/gtv/yMvgT/ ALin/oFhQB+iVFFFZmgUUUVoZhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFfnb/wAFt/8AkZfAn/cU /wDQLCv0Sr87f+C2/wDyMvgT/uKf+gWFAH6JUUUVmaBRRRWhmFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAV+dv/Bbf/kZfAn/cU/8AQLCv0Sr87f8Agtv/AMjL4E/7in/oFhQB+iVFFFZmgUUUVoZh RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFfnb/wW3/5GXwJ/wBxT/0Cwr9Eq/O3/gtv/wAjL4E/7in/ AKBYUAfol060ZHXNfJPir4e/ECT/AIKTXwi/ao8Q6AL34YQ3tksGl6M222TVJA1ivn2bkxAn dvOZcuf3mMAUPj9+0p8dPDHjz4m+K/Dnxci0e3+Geu6Hp+j/AA9l0ezlXxKl3HbSO80ki+eP NM7xxGB02tEdwY5FdE8HyUKdVy0km27O0UpOPS7eqWyvduycVzPtwuDr4yfJRs3ptfq4pdLN tySVrrq2kfYoIPINGR618cfHz9pv45eGfHXxL8X+Hfi1baHD8M9c0Ky0b4eSaZauPEkd3HbS O08kimfMpneOLyGQKYju3HIH094invn+IvhYwfFGHSoGgvWuPCz20DPrhKRhXV3/AHieRksf L+95gDcYrKcOTR79tbpdG9LarWyba2dmTUwtelTjOaspK63f2VO2i7SjrtdpNqzt1NFHSioO QKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACvzt/4Lb/8jL4E/wC4p/6BYV+iVfnb/wAFt/8AkZfAn/cU/wDQ LCgD7p+I3wW+D/xeaxb4sfCrw34n/suRn0z/AISHQ7e8+yO23c0fnI2wnaucYztHoKdrvwX+ EvinxpY/EXxP8L/Duo69pQA0vXL3RoZby0AOQI5nUvGMkn5SK+bf2jfj7N4w/av0L9nm8sfj Do+hWfh/UL/Ul8CaHe29zql2tzawwuJ7dPMazQSTFpEYRl2QMSAKi/aG+PN/4l/ao8O/s3SW nxi03w7pvhm+vdQ/4QbRtQgu9VvEubW3gf7TEokezRXlLSIwUu6byRiu+nQxbqU50tG05RfW yvr5bbbu6stVfrhTqT5U5u0oydmm7LW62u1Jq90raxTae30xrnwa+EvijxlYfETxR8MfD+p+ INLXGma9qGjQTXtpySPKmZC8eCTjaRWrqPhPw1q2u6f4o1Pw9YXGpaUkyaZqE9ojz2ayhRKI pCN0e8KobaRuCjOcCvm342f8FMPAvwM+LGtfDG50nQrq08IS2Nv4hn1Xx5b2WrTvcRpJmw09 o2e+8tJI2cmSLksF3Feei+Jf7Wnx58KfG7xJ8GfBH7LNr4mk0LwpF4ltbu28ceRJe6e7zRFB C1kSt0ZIXWOEM6uOTJGeKwkpwpxg3or2Witpd+62mlZXvazinJaJ2K3t8Pb7N11stJJLl3s9 JK6T2kujTPoGiodPvPt9lDe/Z5YfOiV/KnXa6ZAO1h2Izgj1rwXxHoC/Hr9sfV/hn401jUl8 N/D7wnpOp2Oh2Opz20F7qF7cXeLi4ELoZRElqqpExZMyMxBOMc6lT9ooydr3/BOT+dk7dL6N o5PN7K132u1Ffe5Jfjtdr6Aor5K/aJ+OV74v/am0L9n69X4waRoVjoWoXuoJ4F0e9t7nVrpL i2hgk+0QJ5ptEDzFnRlQtJHuOAAet+I37WPx18F/GbxF8FPBP7MVv4pk8PeEYPEdrfReOWjl 1DT2eaIr5RsWK3ZkgZUh3MrjkyJwD0ywtSNOE20lJNq7S0V7vXslzNbqN5Oy1duFqcZXWqvr p15etr621Wlmtb3S+iKK+efi5+3zofwc+M2ifDTxJo/hdrTWbvTrYwr49hTX7WS8dERn0l4A xRWkBYiYkKGYKcYrk/jF/wAFL/Fnwq8ceMtAtv2ebHUdJ8H32pQT6o/jcwTXC2FnY3lw4g+x MF/dXybR5hyyEEoDuELD13dtJKN7ttK1mo63tbVq17XTutDajgsXiOT2cb8yTXbZO19rq+q3 XVK6PrKivl342f8ABTj4f/B74ra54CutK8PSWPhW4sYNfk1PxzBY6tK9zHHKRYaa8TPeiNJY yxMkYJ3BdxU16d4w/az8GeCfEt34YuvhZ8UNRktJArXmh/C7V760l4BzHPDbtHIOcZUkZBo9 hN/Cm/lr929n0e0lqroiOHrypxlGLfMk1bVNNJ7+jT72adrNX9Uor57+If7auvaD+0if2d/D XgnwnbXCJaNBeePPHLaJLq3noHP9nQGzl+1+WCVYb0O8Fcd6wvjn/wAFOPAvwS+L+u/DjUdE 8PPaeFJ7GDxBJqXjqCy1SaS4RJCNP054me+EaSIWO+IElgu4qaPYVF8St62WzafNdrlV1a7s r2W7QfV66+zfRPRp6StZ6dHdcvWV1ZXdj6horwOyg13wp/wUJsdH07x74kudJ8S/DPVNVvtC 1DW5p7G3uYr7T4o3ghZtkWFkcfKB99vWuY+OX/BTXwH8E/i5r3w6v9I8PS2nhO6srfxBLqPj q3sNUmkuESQ/2fp0kZe9EaSxlj5kYJLBdxGDpVoVKNOnKVvfXMrNWSu4+83ZLWL3021u0ghh alT4U3onou7svx0XVtpJNn1HRXiOv/tJ/FjUvif4j8C/BL9nqPxdY+Dbu0tfEmpT+LY9Ol8+ eFLgxWsMkLLOyQyRs3mSQjL7QSQTXN618cf2u7b9tnUvhJ4Z+F3hfUfDcHgy31C1srvxwbZn Vr6SL7buGnSOspVdv2fcUAUN5mWOFTwtStPli1s3ro9E5bb2aTs9Lr3vhvJROnUp25rK6T1a Wjem9ls097tNNJp3PpKivl348/8ABTbwJ8EPi7rnw51DRvD0lp4UnsofEEmpeOoLHVJZLhEk I0/TniZ74RpJGWO+IElgu4qayP2w/wBrT4yXHgD4i2PwW8AyW2jeC9c07RdW8aQ+Kfs15Hfy TWckq29ssJLxIk6I8hlQku+FYLk4yp1F8MW7Jt7XSXVq+iba5W7KV1y3udOGwNfE4hUUrN99 N7erfxLRK9mnazR9c0V5X42/a08JeA/E114V1P4TfFC+ns5Akl1oXwv1e/tJOAcxzw2zRyDn GVJGQa8o+K3/AAU9sfhV4z1/wXqHwZknn0S71q2R/wC3/L8+Sz0+3vbVWX7OTGbpZnUA52eU T8+cC3h66hOfK0opyd9LJbvz9N+yMY0JuooNNN7Xsr/e1/w9lu0fVdFeF/FP4mfELTP2ofhf 4O1rwjcWWhazf38dnqWjeOGX7RcJpk1w8V5YG0xNGvlYQicfMQ2P4TkfEn9ufxl4B+IPjnS7 T4Cwaj4U+HWs6TZeJfEg8XCK4Md/DayLLBaG2IlKfafmVpUBCZDEnaIhDnvqlZ21aSuvO9l8 91Zq6abKWHr17ezje8FP5SbjH5tq1lrdpfEml9F0V8jftj/tbfGR/h/8RLL4L+AJLbRvBmua dour+NIfFX2W8iv5JrOSVbe2WEl4kSdEeQyoSXcBSFye4+K/7cOr/DrxZ4qbR/gu+seEPAN/ p9n428RjXxBc2kl0sTk29n5LfaViSeJnJljI3EAMRRCnUduZWuk1taz2bbtyprW7stVbdX2l ga6oKrFc172S125eu13zxsldt6Wva/0DRXyn8Y/+Cn9l8HvHXiHwJqPwYe6uNDu9at1lXxBs WeSz0+3vbVT/AKOdhulmdQPm8vyifnzgfU2nXM15ZRXFxbeTI8atJDv3bGIBK5wM4z1oq06l GooVFZtRl8pK8X8103XU45RqR5NPjvbzta/5r5WezRNRXz94k0Ffj1+2Rq/wy8a6xqS+G/h9 4T0nU7HQ7HU57aC91C9uLvFxcCF0MoiS1VUiYsmZGYgnGOK/aK+Od74v/an0L9n29X4waRoV joWoXmoJ4F0i9t7nVbtbi2hgl+0QJ5ptEDzFnRlQtJHuOAAbw1L63ZUndtSduyi2n87x2V73 ja7di6cOepyN2aV3o3b3VNbLqmuyTaTa1t9bUV88/Eb9qz47+BfjN4g+CPgr9mK38VS+HvCE HiO2vYfHJjl1DT2eaIr5X2Jit2ZYGVIcsr9TInQu+Lv7e3h/4N/GXQfhv4k03wq9prl1p1v9 nXx7EniG1e8eOONn0hoNxjV5F3MJidoZgpxinGlUnbls7uy1VvtWu9ldxcdftJx1asVGNSpU 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 /ZJ+I/jnSvjbpWma5oUUnxL1vQ73RftF1MPs6WcFnHIJ8REqWNrIV27gQRnHOPo6is6k/aQk nu1Zvq+1+mi00S7vU6KGaV8NUUqcUtIrbpFxcfL7KW2zfWzXx/8AtJ/se/tTfFb4kaz4g0Lx Fomr2jeK9K1jw1PrXxA1myhsLe0ktZf7POmWsLWjFpIZH+1SeYw8wHZkDHoGl/Bn4/ap+15q Xxj8b+B/h/J4T1zwTB4bv7JfEl3PeLbxSXE5byXsEjlV3uBG0bSAbU3ZOdo+gKK6VjZqnFOK bV9dVpKMoPRSSbcZWbd9r7uTfNVxPtKEaSikop7X3fL72r3TinZ3V27p6WisrK3sLdLW1gjj SOMIiRptVVHQAdh7Vwnib9k79lrxtr914r8a/s1/D/WNVvZN95qWqeDbK4nnboC8kkRZjjHJ NegUVzQqTp/C2vQxhUnT+Fteh8+/G34b/tX+Kf2iPCHxF+Gfg74cNoXgmS/exTXfFd/bXd4L u0W3k3xQ6fLHHsIbbiRty7c7ScDY+PHh34h/HD4n+FvhXZfD270/wv4b8V6f4j13xbfXtuIL w2h+0QWlrEkjTMxuBHvkkSNFETAFywFe1UUUalSjXjWi/ei731bbund3fkXUre0pwgopKEeV Wvpre+reqbbXS71TSseK/Hjw58Q/jj8T/CvwtsPh7d2HhTw54r0/xHrfi++vbYQXrWZ8+C0t YkkaZmNwIt8kiRoojYAuSAT48eHPiH8cfif4V+Fth8Pbuw8KeHPFen+I9b8X317bCC9azPnw WlrEkjTMxuBFvkkSNFEbAFyQD7VRV0cRXoez5ZfA+Zer5df/ACUx/wArfP8Am9e3TRXT15ii iisQCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvzt /wCC2/8AyMvgT/uKf+gWFfolX52/8Ft/+Rl8Cf8AcU/9AsKAP0SooorM0CiiitACiiigzCii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAr87f+C2//ACMvgT/uKf8AoFhX6JV+dv8AwW3/AORl8Cf9xT/0CwoA /RKiiiszQKKKK0AKKKKDMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvzt/4Lb/8jL4E/wC4p/6BYV+iVfnb /wAFt/8AkZfAn/cU/wDQLCgD9EqKKKzNAooorQAooooMwooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK/O3/g tv8A8jL4E/7in/oFhX6JV+dv/Bbf/kZfAn/cU/8AQLCgD8FP+Io7/guv/wBHzf8AmMvDH/ys o/4ijv8Aguv/ANHzf+Yy8Mf/ACsoor/EL/iK/il/0Psb/wCFVf8A+TP8P/8AiLPip/0Psb/4 VV//AJYH/EUd/wAF1/8Ao+b/AMxl4Y/+VlH/ABFHf8F1/wDo+b/zGXhj/wCVlFFH/EWPFP8A 6H2N/wDCqv8A/LA/4iz4qf8AQ+xv/hVX/wDlgf8AEUd/wXX/AOj5v/MZeGP/AJWUf8RR3/Bd f/o+b/zGXhj/AOVlFFH/ABFjxT/6H2N/8Kq//wAsD/iLPip/0Psb/wCFVf8A+WB/xFHf8F1/ +j5v/MZeGP8A5WUf8RR3/Bdf/o+b/wAxl4Y/+VlFFH/EWPFP/ofY3/wqr/8AywP+Is+Kn/Q+ xv8A4VV//lgf8RR3/Bdf/o+b/wAxl4Y/+VlH/EUd/wAF1/8Ao+b/AMxl4Y/+VlFFH/EWPFP/ AKH2N/8ACqv/APLA/wCIs+Kn/Q+xv/hVX/8Algf8RR3/AAXX/wCj5v8AzGXhj/5WUf8AEUd/ wXX/AOj5v/MZeGP/AJWUUUf8RY8U/wDofY3/AMKq/wD8sD/iLPip/wBD7G/+FVf/AOWB/wAR R3/Bdf8A6Pm/8xl4Y/8AlZR/xFHf8F1/+j5v/MZeGP8A5WUUUf8AEWPFP/ofY3/wqr//ACwP +Is+Kn/Q+xv/AIVV/wD5YH/EUd/wXX/6Pm/8xl4Y/wDlZR/xFHf8F1/+j5v/ADGXhj/5WUUU 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 --------------o8dOhUv9VBpqQTYduxoZdCEG--
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.Received: (at 80662) by debbugs.gnu.org; 24 Mar 2026 00:21:44 +0000 From debbugs-submit-bounces <at> debbugs.gnu.org Mon Mar 23 20:21:44 2026 Received: from localhost ([127.0.0.1]:55626 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>) id 1w4pWf-0008JR-V9 for submit <at> debbugs.gnu.org; Mon, 23 Mar 2026 20:21:43 -0400 Received: from fout-b8-smtp.messagingengine.com ([202.12.124.151]:43123) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w4pWc-0008Hq-59 for 80662 <at> debbugs.gnu.org; Mon, 23 Mar 2026 20:21:40 -0400 Received: from phl-compute-11.internal (phl-compute-11.internal [10.202.2.51]) by mailfout.stl.internal (Postfix) with ESMTP id 8E2C71D0000C; Mon, 23 Mar 2026 20:21:31 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-11.internal (MEProxy); Mon, 23 Mar 2026 20:21:31 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1774311691; x=1774398091; bh=SxDz81h+Nk QDSUQsMr2bZDWsBtW51HHEqmG2WJYcPKU=; b=fGNlD/OwjXoA/x+nph0oRDv39Z dytGg7D92doEIu9PZErthE+WzA+HlaOyiqza+MCYJ6N8RXfZoo7WQNwLNfl9aT5S F2qCtWI7xIzF2NlHwHMsB07guO8jQtECOd1Zxozd9cFqTeWIZNPO4RH38okJmB7b H8i5BFkQVoF6bhfErSoyhpE5kuz36G8FvrW8xa38/RN7+ftYAhJmklsBtVOpZfS7 zErN1bJ8hN4PCgM0Bv81xw8zj97ckw+qbMGLbuul5orZtU824eROpL+B5V1jYOPf 0L5oXps+R0TCeXNmz939jOK8joBWzPp2GzZRNh3nHnKXjtevhfVoaiyj7aKg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1774311691; x=1774398091; bh=SxDz81h+NkQDSUQsMr2bZDWsBtW51HHEqmG 2WJYcPKU=; b=e1cVgG022zgEpl0vAJsh6f3JsRLaq8Ox+91W4cvL4chf6onXOKq LfcumcjRWhP5FMvYqCYZQdlk6uzGgvYaXCXylKSW/IqQ5adjEq0LifEfkJIvcH9l lcyGbqAbth0R+NrN7SW8r16ItBLGnf1eQ4j+r06APHM+c5Z5/lYlhAmsypicJ0K9 IYcOqqdhVXOdzFBBgtVVLBmREJBZLAtE6iKLbg+/xJJoW4yqfwn4wRcJwumhjdcM JXpqv3QTV9pWwrW+uLaoqx1cQzjwQqvVwGvgV6nELotKdAtqRpnjKuGQ/1jHpo61 sHYUqC0q1VwDr12r0OwOQkdFeIU7UqVu0jw== X-ME-Sender: <xms:C9nBaU14giwo6_sT1CHXkLOzhK6zJBc5Ue2LW5bB5PlWsLu59hYKPQ> <xme:C9nBaVEGMrEq6AMc0Z_YgezFHUTtLr0sjriKdH-nLBfaX3iOilzoq9PKDTdqTe0kC 2YrQs_ymkJT3R0GciYQC4e5bFYvimazgD3OjdeowrhwJ3aVikEXbSA> X-ME-Received: <xmr:C9nBaahs7qjZ6v4yzmPt2_xpNaPrQVIgjmmbRYj72YCYX-gCDgAQuXkmdBP8zLYu9DfWLw> X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefvddtudegucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu rghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmnecujf gurheptgfkffggfgfuhffvfhgjsehmtderredtvdejnecuhfhrohhmpeffmhhithhrhicu ifhuthhovhcuoegumhhithhrhiesghhuthhovhdruggvvheqnecuggftrfgrthhtvghrnh eptdehfeekledugfettdefudeuueettddvvddvgfdvueeigeegudevleefvdevudegnecu vehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepughmihhtrh ihsehguhhtohhvrdguvghvpdhnsggprhgtphhtthhopedvpdhmohguvgepshhmthhpohhu thdprhgtphhtthhopehruhgurghlihgtshesghhmgidrrghtpdhrtghpthhtohepkedtie eivdesuggvsggsuhhgshdrghhnuhdrohhrgh X-ME-Proxy: <xmx:C9nBaY983SXvcNSM_19HwEZHYoVzdZZS5NxRqahVLb89btWUz7yirQ> <xmx:C9nBaZoA0dzjNlKcPONWrZQGQCZfMS0WigqEKm8SVF87cSAasulF3w> <xmx:C9nBaf-IF4Oh7RgM-nL4-UM7bIvaHF7DbAEdjdQ6F5PIlOb6835fcA> <xmx:C9nBaVUhwz4kk8ZP07h7l1jHN93WlfxZMyy7uP6Zu2aY8t_x5NalaQ> <xmx:C9nBaVdKUbTrknDKMjcrs_Aw80MG055VRXy73_OeqfgYvuaEGlCXppB4> Feedback-ID: i07de48aa:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Mon, 23 Mar 2026 20:21:30 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------G14F37LD8p0vajKKZFpllHS2" Message-ID: <f44b2554-dfe3-47dc-93ff-c516499ddd2a@HIDDEN> Date: Tue, 24 Mar 2026 02:21:28 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step From: Dmitry Gutov <dmitry@HIDDEN> To: martin rudalics <rudalics@HIDDEN>, 80662 <at> debbugs.gnu.org References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN> <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN> <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> Content-Language: en-US In-Reply-To: <73051a46-3473-4165-8e8c-694d2b05e6b0@HIDDEN> X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 80662 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. --------------G14F37LD8p0vajKKZFpllHS2 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 23/03/2026 22:44, Dmitry Gutov wrote: > Anyway, I must be missing something because the result of this change > differs from the effect of binding x-wait-for-event-timeout to nil, > adding some rendering artefacts in a more complex scenario that I'm also > testing. Here's a working change: it does avoid showing the old buffer contents with both Lucid and GTK3. Not sure it's the "correct" fix, but it does improve the perceived behavior. Possibly by avoiding flushing the X server output too early. --------------G14F37LD8p0vajKKZFpllHS2 Content-Type: text/x-patch; charset=UTF-8; name="set_window_size_and_position_skip_wait_for_event.diff" Content-Disposition: attachment; filename="set_window_size_and_position_skip_wait_for_event.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL3NyYy9ndGt1dGlsLmMgYi9zcmMvZ3RrdXRpbC5jCmluZGV4IGIwMWJi NjgwNGVkLi4yODlmYmMwZWM5MyAxMDA2NDQKLS0tIGEvc3JjL2d0a3V0aWwuYworKysgYi9z cmMvZ3RrdXRpbC5jCkBAIC0xNDMyLDcgKzE0MzIsNyBAQCB4Z19mcmFtZV9zZXRfc2l6ZV9h bmRfcG9zaXRpb24gKHN0cnVjdCBmcmFtZSAqZiwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQog ICBTRVRfRlJBTUVfR0FSQkFHRUQgKGYpOwogICBjYW5jZWxfbW91c2VfZmFjZSAoZik7CiAK LSAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAoZikpCisgIGlmIChGUkFNRV9WSVNJQkxFX1AgKGYp ICYmICFGUkFNRV9QQVJFTlRfRlJBTUUgKGYpKQogICAgIHsKICAgICAgIC8qIE11c3QgY2Fs bCB0aGlzIHRvIGZsdXNoIG91dCBldmVudHMgKi8KICAgICAgICh2b2lkKWd0a19ldmVudHNf cGVuZGluZyAoKTsKZGlmZiAtLWdpdCBhL3NyYy94dGVybS5jIGIvc3JjL3h0ZXJtLmMKaW5k ZXggZGZjMGFlODA0ZTIuLjE2MDQ5YjIyNWEzIDEwMDY0NAotLS0gYS9zcmMveHRlcm0uYwor KysgYi9zcmMveHRlcm0uYwpAQCAtMjg1NzYsMTQgKzI4NTc2LDE2IEBAIHhfc2V0X3dpbmRv d19zaXplX2FuZF9wb3NpdGlvbl8xIChzdHJ1Y3QgZnJhbWUgKmYsIGludCB3aWR0aCwgaW50 IGhlaWdodCkKIAogICBTRVRfRlJBTUVfR0FSQkFHRUQgKGYpOwogCi0gIGlmIChGUkFNRV9W SVNJQkxFX1AgKGYpKQotICAgIHhfd2FpdF9mb3JfZXZlbnQgKGYsIENvbmZpZ3VyZU5vdGlm eSk7Ci0gIGVsc2UKKyAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAoZikpIHsKKyAgICBpZiAoIUZS QU1FX1BBUkVOVF9GUkFNRSAoZikpCisgICAgICB4X3dhaXRfZm9yX2V2ZW50IChmLCBDb25m aWd1cmVOb3RpZnkpOworICB9IGVsc2UgewogICAgIC8qIENhbGwgYWRqdXN0X2ZyYW1lX3Np emUgcmlnaHQgYXdheSBhcyB3aXRoIEdUSy4gIEl0IG1pZ2h0IGJlCiAgICAgICAgdGVtcHRp bmcgdG8gY2xlYXIgb3V0IGYtPm5ld193aWR0aCBhbmQgZi0+bmV3X2hlaWdodCBoZXJlLiAg Ki8KICAgICBhZGp1c3RfZnJhbWVfc2l6ZSAoZiwgRlJBTUVfUElYRUxfVE9fVEVYVF9XSURU SCAoZiwgd2lkdGgpLAogCQkgICAgICAgRlJBTUVfUElYRUxfVE9fVEVYVF9IRUlHSFQgKGYs IGhlaWdodCksCiAJCSAgICAgICA1LCAwLCBReF9zZXRfd2luZG93X3NpemVfMSk7CisgIH0K IH0KIAogdm9pZAo= --------------G14F37LD8p0vajKKZFpllHS2--
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at 80662) by debbugs.gnu.org; 23 Mar 2026 10:33:50 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Mar 23 06:33:50 2026
Received: from localhost ([127.0.0.1]:46340 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1w4cbU-0007aC-C5
for submit <at> debbugs.gnu.org; Mon, 23 Mar 2026 06:33:50 -0400
Received: from mout.gmx.net ([212.227.15.18]:53485)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <rudalics@HIDDEN>) id 1w4cbP-0007YZ-OL
for 80662 <at> debbugs.gnu.org; Mon, 23 Mar 2026 06:33:45 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at;
s=s31663417; t=1774262017; x=1774866817; i=rudalics@HIDDEN;
bh=VnJhUQGeca/Lholzkg/qbikqd7yLmvnhEF5oQYbtkC0=;
h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To:
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=Op5bFGF0UI3qLTOrUaYSOut5kkBh66o1HhEmTmssI0eGYmXxsI9mFBDz6/OF/fT/
tSntZUCBOD2evj0Jmm3DHENNjSMxEmOCxFBIQlb9EfcJlLsJM+XnJLokDOIcbSAn6
iLPtUT5X8Uq4686DOsMdsgMiKMCTQSxy4lPq5NGmsZ+AmV7h8KMEpfZBFdrt2uKv6
RKtPBdg65GrjUAt+f2pCdOgZtkiU+Wr54mXiQuZ+luiE4WNrSbquZAZrQ6I1hWGPF
LZqAxg2gMFZXZLfIuJ6UVUZQBJTaLyXiDfTijMHT8V/7s6VaD1vsIogIuDfRLY+65
gVd9tV392pm9t94CoA==
X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a
Received: from client.hidden.invalid by mail.gmx.net (mrgmx005
[212.227.17.190]) with ESMTPSA (Nemesis) id 1McH9i-1vYrkr0KkO-00lJRU; Mon, 23
Mar 2026 11:33:37 +0100
Message-ID: <a5403d76-43c3-4208-b382-eddf5d0c784a@HIDDEN>
Date: Mon, 23 Mar 2026 11:33:35 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: bug#80662: 31.0.50; set-frame-size-and-position-pixelwise
performs in two-step
To: Dmitry Gutov <dmitry@HIDDEN>, 80662 <at> debbugs.gnu.org
References: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
Content-Language: en-US
From: martin rudalics <rudalics@HIDDEN>
In-Reply-To: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K1:Q7uSTi1Nlphjdb2rtdSWS4kKP7WOtrgFUeDAcdUZXkIDbUkZWLk
e71W79unxTPP1zGVvYUGwq68SPZqWKgCnS7BimimlLy6y6cOEfTAYQOqKhwScx8VcgBG/TI
pkkl7sz2mEZz/3oQQEqn8xlt6zU8IBW31qlkocuxUZLoXHWqq/qs6xXNOwcs1i5wnUUJ/HJ
XPhTG5X4a3DwlKfeG/U4A==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:E2qTa18PVnA=;UoldQJzjgM+4a+fu61LVOCxqazJ
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
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 80662
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 (-)
> Long story short, evaluate the attached stript.
>
> The childrame will start moving up and down, between two different
> dimensions and two different buffer contents (which are formed before
> each move).
>
> Something that we can see is that when a "smaller" size turns into a
> "bigger" one, the previous contents that were displayed in the "smaller"
> size, creating a criss-cross effect. They shouldn't even be retained,
> though, given that only one buffer is used for the whole process.
I can vaguely observe it on GNOME Lucid. The behavior with GTK seems
better at least but maybe for other reasons. I had to tweak the
dimensions a bit to better fit them into my parent frame and used
(set-frame-size-and-position-pixelwise child 400 300 300 400)
in 'my-child-move-a' and
(set-frame-size-and-position-pixelwise child 800 600 200 300)
in 'my-child-move-b'. So maybe my settings won't be able to reproduce
the behavior you see although the child frames overlap here.
Once the behavior got weird when I did not change the size - in that
case moving the frame to the right also showed some contents of the
parent frame on its left in the same yellow background, for example, via
(set-frame-size-and-position-pixelwise child 400 300 600 400)
and
(set-frame-size-and-position-pixelwise child 400 300 300 400)
but I cannot reproduce such behavior any more.
> diff --git a/src/xterm.c b/src/xterm.c
> index dfc0ae804e2..15d9e880413 100644
> --- a/src/xterm.c
> +++ b/src/xterm.c
> @@ -28503,7 +28503,8 @@ x_set_window_size_1 (struct frame *f, bool change_gravity,
> for the ConfigureNotify. */
> if (FRAME_VISIBLE_P (f))
> {
> - x_wait_for_event (f, ConfigureNotify);
> + if (!FRAME_PARENT_FRAME (f))
> + x_wait_for_event (f, ConfigureNotify);
> if (CONSP (frame_size_history))
> frame_size_history_extra
> @@ -28577,7 +28578,9 @@ x_set_window_size_and_position_1 (struct frame *f, int width, int height)
> SET_FRAME_GARBAGED (f);
> if (FRAME_VISIBLE_P (f))
> - x_wait_for_event (f, ConfigureNotify);
> + if (!FRAME_PARENT_FRAME (f)) {
> + x_wait_for_event (f, ConfigureNotify);
> + }
> else
> /* Call adjust_frame_size right away as with GTK. It might be
> tempting to clear out f->new_width and f->new_height here. */
>
>
Was I supposed to apply that diff?
martin
bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
Received: (at submit) by debbugs.gnu.org; 23 Mar 2026 03:33:50 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 22 23:33:50 2026
Received: from localhost ([127.0.0.1]:35830 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1w4W33-0007QV-9q
for submit <at> debbugs.gnu.org; Sun, 22 Mar 2026 23:33:50 -0400
Received: from lists.gnu.org ([2001:470:142::17]:51236)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <dmitry@HIDDEN>) id 1w4W2x-0007PO-8q
for submit <at> debbugs.gnu.org; Sun, 22 Mar 2026 23:33:48 -0400
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 <dmitry@HIDDEN>) id 1w4W2r-00032Y-JR
for bug-gnu-emacs@HIDDEN; Sun, 22 Mar 2026 23:33:37 -0400
Received: from fhigh-b8-smtp.messagingengine.com ([202.12.124.159])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <dmitry@HIDDEN>) id 1w4W2o-0008EG-FT
for bug-gnu-emacs@HIDDEN; Sun, 22 Mar 2026 23:33:37 -0400
Received: from phl-compute-02.internal (phl-compute-02.internal [10.202.2.42])
by mailfhigh.stl.internal (Postfix) with ESMTP id 10CB17A01B1
for <bug-gnu-emacs@HIDDEN>; Sun, 22 Mar 2026 23:33:31 -0400 (EDT)
Received: from phl-frontend-03 ([10.202.2.162])
by phl-compute-02.internal (MEProxy); Sun, 22 Mar 2026 23:33:32 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gutov.dev; h=cc
:content-type:content-type:date:date:from:from:in-reply-to
:message-id:mime-version:reply-to:subject:subject:to:to; s=fm3;
t=1774236811; x=1774323211; bh=QpuoAFpPaJkRDNoq+kak3Oz0dIaOSCFL
Qos8GU/P1ME=; b=oq2IM8rqkQ0Mtq/WILqYhLreILK5XM98zonSHpnUrXnMp8m9
esHAXWvc5F15/roVq7QUvId09+EL94GH8l9Q4x9r0PycDZqjg2t9nt9fGVKOLPMI
qjyFj0sV9edIDdbg+rS9YukTriBVoMRdFYvu7GSE7M4RgQeD2tZ7X1ODbyIPAWaY
TQpvpKnKpNyTUxzrtcsTCZ/QwFRLUxU15m6O8Y//EQCCvqaebP6My6NIsFUrAOvA
HtAoWtPvfYChpOFgT8KQk9vql9o9x0RbMu5VfR5LPWeGAld93A3PgIdymfOqj8yM
KeSt0uIvp67cIa3Jp5gXj9kVH5huo5OyEvXIRQ==
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
messagingengine.com; h=cc:content-type:content-type:date:date
:feedback-id:feedback-id:from:from:in-reply-to:message-id
:mime-version:reply-to:subject:subject:to:to:x-me-proxy
:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t=1774236811; x=
1774323211; bh=QpuoAFpPaJkRDNoq+kak3Oz0dIaOSCFLQos8GU/P1ME=; b=x
pAUt+WFprJUBbwblTZSyMq3r6fBWdVrvNgAmYFpXj3Kp80FvqnMRmlCI2w6Si4yN
kGJSZM09UELmynBCREmNnVcCbVhV+lQ0qVMtW4D0/n6eSgT1qs4iOzgr50JHS9B7
YaP9gqCIAHoL8eyeNRTcbWIPt8XWznniC5YgjxR266MWeJFZnN+TVUMX535JgcT6
yOA/1rqj9QP6IAz97mlH0EKDLq7xEcS2BenGZrf1z3g3CKDEKMNFJYM5K7Be6lKJ
624uFvyb4HmtG1m5rwVb6Vao+2JuiPFRMoHx8AVEAuSgKVG99FpGSQ9z2euliFcH
gSeh2T5m6M3d8gYUuQvFA==
X-ME-Sender: <xms:i7TAaZryfDITEGzF_rGrWRWgSyrg3HGsbM13C_GSlTvOlcm51iDcpA>
<xme:i7TAaRg5v2UWzSBCA-70ebSC0jl_b6tI0LGkWhTHMoqJ0hZOBl2-R98lcmmHQuv8b
DQTBJkjZuX3mUETgel60SmL013jO4PZlsDgl50cA_Scv9c9r1TyZQs>
X-ME-Received: <xmr:i7TAaRSsh5rDLmDzGDLgngxno-HtisQIHkLmn_bbnjhyPSWuOutZiLN-Oo6BFxJRwsqwCQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgdefudejieefucetufdoteggodetrf
dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfurfetoffkrfgpnffqhgenuceu
rghilhhouhhtmecufedttdenucenucfjughrpegtkfffgggfvffuhfesmhdtreertddvje
enucfhrhhomhepffhmihhtrhihucfiuhhtohhvuceoughmihhtrhihsehguhhtohhvrdgu
vghvqeenucggtffrrghtthgvrhhnpeegudejtedtheejgeevgeehiedtudejvedttefftd
ejhfefieettddvhfeuieejjeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhep
mhgrihhlfhhrohhmpegumhhithhrhiesghhuthhovhdruggvvhdpnhgspghrtghpthhtoh
epuddpmhhouggvpehsmhhtphhouhhtpdhrtghpthhtohepsghughdqghhnuhdqvghmrggt
shesghhnuhdrohhrgh
X-ME-Proxy: <xmx:i7TAaRtRblFjGep-rKAYWwTPyNy4jVCRAYvZ30ny_Hu2wW3dZnFr-g>
<xmx:i7TAacc13XNVbyPFPhk8Mb6jthr0xLLAyYd-BDcanHjuj0gHF7BToA>
<xmx:i7TAaeIwaqECKETy_V9PZZ6vPoHVskhUa3cMHJo8PTb-T6pcHL5CIQ>
<xmx:i7TAaabRns-8kOrjJko0o6p6lK9qjY9y-ctfthODVjQSPa3fKX9Wdg>
<xmx:i7TAaXavi9kyVcOGtkIBQVd91fE4HnGup3fgD6Nf2GG29s8f1kR6-0FC>
Feedback-ID: i07de48aa:Fastmail
Received: by mail.messagingengine.com (Postfix) with ESMTPA for
<bug-gnu-emacs@HIDDEN>; Sun, 22 Mar 2026 23:33:30 -0400 (EDT)
Content-Type: multipart/mixed; boundary="------------U60xbWer3yG7r4TTQqw8rC54"
Message-ID: <117c48b9-31fa-4c2a-a654-62bd5fdc0fd8@HIDDEN>
Date: Mon, 23 Mar 2026 05:33:28 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: bug-gnu-emacs@HIDDEN
Subject: 31.0.50; set-frame-size-and-position-pixelwise performs in two-step
Content-Language: en-US
From: Dmitry Gutov <dmitry@HIDDEN>
Received-SPF: pass client-ip=202.12.124.159; envelope-from=dmitry@HIDDEN;
helo=fhigh-b8-smtp.messagingengine.com
X-Spam_score_int: -27
X-Spam_score: -2.8
X-Spam_bar: --
X-Spam_report: (-2.8 / 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,
RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001,
RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001,
SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.7 (/)
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: -0.3 (/)
This is a multi-part message in MIME format.
--------------U60xbWer3yG7r4TTQqw8rC54
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
X-Debbugs-Cc: martin rudalics <rudalics@HIDDEN>
Date: Mon, 23 Mar 2026 05:28:25 +0200
Message-ID: <87mrzzmdgm.fsf@HIDDEN>
--text follows this line--
Hi Martin,
This is a follow-up to bug#80369. Not in the exact spot, but in related
area of responsibility, and because how a similar workaround also
applied.
Long story short, evaluate the attached stript.
The childrame will start moving up and down, between two different
dimensions and two different buffer contents (which are formed before
each move).
Something that we can see is that when a "smaller" size turns into a
"bigger" one, the previous contents that were displayed in the "smaller"
size, creating a criss-cross effect. They shouldn't even be retained,
though, given that only one buffer is used for the whole process.
I have a workaround that makes things better (uncomment
(x-wait-for-event-timeout 0) inside my-child-a-or-b), at least avoiding
the flashes of the old text.
<#part type="application/emacs-lisp"
filename="/home/dgutov/my-child-set-size-and-position.el"
disposition=attachment description="reproduction scenario">
<#/part>
I haven't managed to translate that into a comparable patch yet -
those attempts result in inconsistent rendering e.g. the border gets missed,
diff --git a/src/xterm.c b/src/xterm.c
index dfc0ae804e2..15d9e880413 100644
--- a/src/xterm.c
+++ b/src/xterm.c
@@ -28503,7 +28503,8 @@ x_set_window_size_1 (struct frame *f, bool
change_gravity,
for the ConfigureNotify. */
if (FRAME_VISIBLE_P (f))
{
- x_wait_for_event (f, ConfigureNotify);
+ if (!FRAME_PARENT_FRAME (f))
+ x_wait_for_event (f, ConfigureNotify);
if (CONSP (frame_size_history))
frame_size_history_extra
@@ -28577,7 +28578,9 @@ x_set_window_size_and_position_1 (struct frame
*f, int width, int height)
SET_FRAME_GARBAGED (f);
if (FRAME_VISIBLE_P (f))
- x_wait_for_event (f, ConfigureNotify);
+ if (!FRAME_PARENT_FRAME (f)) {
+ x_wait_for_event (f, ConfigureNotify);
+ }
else
/* Call adjust_frame_size right away as with GTK. It might be
tempting to clear out f->new_width and f->new_height here. */
In GNU Emacs 31.0.50 (build 126, x86_64-pc-linux-gnu, X toolkit, cairo
version 1.18.0, Xaw scroll bars) of 2026-03-22 built on potemkin
Repository revision: f8696367bcf9cdb91f3dcf1d6b8707b29d2b208a
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12302006
System Description: Ubuntu 24.04.4 LTS
Configured using:
'configure --with-x-toolkit=lucid --with-native-compilation=no'
Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG LIBOTF
LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3
THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINERAMA
XINPUT2 XPM XRANDR LUCID ZLIB
--------------U60xbWer3yG7r4TTQqw8rC54
Content-Type: text/x-emacs-lisp; charset=UTF-8;
name="my-child-set-size-and-position.el"
Content-Disposition: attachment; filename="my-child-set-size-and-position.el"
Content-Transfer-Encoding: base64
KGRlZnZhciBjaGlsZCBuaWwpCihkZWZ2YXIgYnVmZmVyICIqbXktbm90ZXMqIikKCihkZWZ1
biBteS1jaGlsZCAoKQogIChpbnRlcmFjdGl2ZSkKICAoc2V0cSBjaGlsZAogICAgKG1ha2Ut
ZnJhbWUKICAgICBgKChwYXJlbnQtZnJhbWUgLiAsKHNlbGVjdGVkLWZyYW1lKSkKICAgICAg
IChuby1mb2N1cy1vbi1tYXAgLiB0KQogICAgICAgKHVuZGVjb3JhdGVkIC4gdCkKICAgICAg
IChpbnZpc2libGUgLiB0KQogICAgICAgOzsgKGxlZnQgLiAxLjApCiAgICAgICA7OyAodG9w
IC4gMC41KQogICAgICAgOzsgKHdpZHRoIC4gMC4zKQogICAgICAgOzsgKGhlaWdodCAuIDAu
OCkKICAgICAgIChib3JkZXItd2lkdGggLiAwKQogICAgICAgKGludGVybmFsLWJvcmRlci13
aWR0aCAuIDIpCiAgICAgICAoYmFja2dyb3VuZC1jb2xvciAuICJ5ZWxsb3ciKQogICAgICAg
KHRvb2wtYmFyLWxpbmVzIC4gMCkKICAgICAgIChtZW51LWJhci1saW5lcyAuIDApCiAgICAg
ICAobWluaWJ1ZmZlciAuIG5pbCkKICAgICAgICh2ZXJ0aWNhbC1zY3JvbGwtYmFycyAuIG5p
bCkKICAgICAgIChob3Jpem9udGFsLXNjcm9sbC1iYXJzIC4gbmlsKQogICAgICAgKGxlZnQt
ZnJpbmdlIC4gMCkKICAgICAgIChyaWdodC1mcmluZ2UgLiAwKQogICAgICAgKGRyYWctaW50
ZXJuYWwtYm9yZGVyIC4gdCkKICAgICAgIChkcmFnLXdpdGgtbW9kZS1saW5lIC4gdCkKICAg
ICAgIChkcmFnLXdpdGgtaGVhZGVyLWxpbmUgLiB0KQogICAgICAgKGRyYWctd2l0aC10YWIt
bGluZSAuIHQpCiAgICAgICAobWluLWhlaWdodCAuIDEpCiAgICAgICAobWluLXdpZHRoIC4g
MSkKICAgICAgIChzbmFwLXdpZHRoIC4gMjUpCiAgICAgICAodG9wLXZpc2libGUgLiA1MCkK
ICAgICAgIChuby1zcGVjaWFsLWdseXBocyAuIHQpCiAgICAgICAodW5zcGxpdHRhYmxlIC4g
dCkKICAgICAgIChjdXJzb3ItdHlwZSAuIG5pbCkKICAgICAgIChpbmhpYml0LWRvdWJsZS1i
dWZmZXJpbmcgLiB0KQogICAgICAgKSkpCiAgKHNldHEgbXktY2hpbGQtd2luZG93IChmcmFt
ZS1yb290LXdpbmRvdyBjaGlsZCkpCiAgKHdoZW4gKGdldC1idWZmZXIgYnVmZmVyKSAoa2ls
bC1idWZmZXIgYnVmZmVyKSkKICAoc2V0LXdpbmRvdy1idWZmZXIgbXktY2hpbGQtd2luZG93
CiAgICAgICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQtYnVmZmVy
LWNyZWF0ZSBidWZmZXIpCiAgICAgICAgICAgICAgICAgICAgICAgKHNldHEtbG9jYWwgbW9k
ZS1saW5lLWZvcm1hdCBuaWwpCiAgICAgICAgICAgICAgICAgICAgICAgKHNldHEtbG9jYWwg
bGVmdC1mcmluZ2Utd2lkdGggMCkKICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1i
dWZmZXIpKSkpCgooZGVmdW4gbXktY2hpbGQtbW92ZS1hICgpCiAgKHdpdGgtY3VycmVudC1i
dWZmZXIgYnVmZmVyCiAgICAoZXJhc2UtYnVmZmVyKQogICAgKGluc2VydCAobWFwY29uY2F0
IChsYW1iZGEgKG4pIChtYWtlLXN0cmluZyAoKyAzMCBuKSAoKyA/YSBuKSkpCiAgICAgICAg
ICAgICAgICAgICAgICAgJyggMCAxIDIgMyA0IDUgNiA3IDggOSAxMAogICAgICAgICAgICAg
ICAgICAgICAgICAgIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4IDE5IDIwCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgMjEgMjIgMjMgMjQgMjUpCiAgICAgICAgICAgICAgICAgICAgICAg
IlxuIikpCiAgICAoZ290by1jaGFyIChwb2ludC1taW4pKSkKICAoc2V0LWZyYW1lLXNpemUt
YW5kLXBvc2l0aW9uLXBpeGVsd2lzZSBjaGlsZCA2ODAgNDAwIDcwMCAxMjAwKQogICkKCihk
ZWZ1biBteS1jaGlsZC1tb3ZlLWIgKCkKICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIK
ICAgIChlcmFzZS1idWZmZXIpCiAgICAoaW5zZXJ0IChtYXBjb25jYXQgKGxhbWJkYSAobikg
KG1ha2Utc3RyaW5nICgtIDQwIG4pICgrID9hIG4pKSkKICAgICAgICAgICAgICAgICAgICAg
ICAnKCAwIDEgMiAzIDQgNSA2IDcgOCA5IDEwCiAgICAgICAgICAgICAgICAgICAgICAgICAg
MTEgMTIgMTMgMTQgMTUgMTYgMTcgMTggMTkgMjAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAyMSAyMiAyMyAyNCAyNSkKICAgICAgICAgICAgICAgICAgICAgICAiXG4iKSkKICAgIChn
b3RvLWNoYXIgKHBvaW50LW1pbikpKQogIChzZXQtZnJhbWUtc2l6ZS1hbmQtcG9zaXRpb24t
cGl4ZWx3aXNlIGNoaWxkIDEwMDAgOTAwIDcwMCAyMDApCiAgKQoKKGRlZnZhciBjb3VudGVy
IDApCgooZGVmdW4gbXktY2hpbGQtbW92ZS1hLW9yLWIgKCkKICAobGV0ICg7OyhpbmhpYml0
LXJlZGlzcGxheSB0KQogICAgICAgIDs7KHgtd2FpdC1mb3ItZXZlbnQtdGltZW91dCAwKQog
ICAgICAgIDs7KHgtZmFzdC1wcm90b2NvbC1yZXF1ZXN0cyB0KQogICAgICAgICkKICAgIChj
bC1pbmNmIGNvdW50ZXIpCiAgICAodW5sZXNzIChmcmFtZS12aXNpYmxlLXAgY2hpbGQpCiAg
ICAgIChtYWtlLWZyYW1lLXZpc2libGUgY2hpbGQpKQogICAgOzsgRm9yY2UgcGFyZW50IHRv
IG5lZWQgcmVkaXNwbGF5IHRvbzoKICAgIDs7ICh3aXRoLWN1cnJlbnQtYnVmZmVyICh3aW5k
b3ctYnVmZmVyIChmcmFtZS1zZWxlY3RlZC13aW5kb3cgKGZyYW1lLXBhcmVudCBjaGlsZCkp
KQogICAgOzsgICAoc2F2ZS1leGN1cnNpb24gKGdvdG8tY2hhciAocG9pbnQtbWF4KSkgKGlu
c2VydCAiICIpIChkZWxldGUtY2hhciAtMSkpKQogICAgKGlmICg9ICglIGNvdW50ZXIgMikg
MCkKICAgICAgICAobXktY2hpbGQtbW92ZS1hKQogICAgICAobXktY2hpbGQtbW92ZS1iKSkp
KQoKKG15LWNoaWxkKQoKOzsgKHNldHEgZnJhbWUtc2l6ZS1oaXN0b3J5IChjb25zIDIwIG5p
bCkpCgooc2V0cSB0dHQKICAgICAgKHJ1bi13aXRoLXRpbWVyIDAuMiAwLjUgIydteS1jaGls
ZC1tb3ZlLWEtb3ItYikpCgo7OyAoY2FuY2VsLXRpbWVyIHR0dCkKOzsgKGRlbGV0ZS1mcmFt
ZSBjaGlsZCkK
--------------U60xbWer3yG7r4TTQqw8rC54--
Dmitry Gutov <dmitry@HIDDEN>:rudalics@HIDDEN, bug-gnu-emacs@HIDDEN.
Full text available.rudalics@HIDDEN, bug-gnu-emacs@HIDDEN:bug#80662; Package emacs.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.