GNU bug report logs - #80662
31.0.50; set-frame-size-and-position-pixelwise performs in two-step

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

Package: emacs; Reported by: Dmitry Gutov <dmitry@HIDDEN>; dated Mon, 23 Mar 2026 03:34:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

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


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




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

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


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.




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

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


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




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

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


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




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

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


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.




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

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


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

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




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

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


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.




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

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


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




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

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


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




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

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


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




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

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


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.




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

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


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




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

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


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




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

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


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




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

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


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.




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

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


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




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

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


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.




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

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


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.




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

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


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





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

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


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.




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

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


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.




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

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


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




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

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


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




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

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


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.




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

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


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.




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

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


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




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

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


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




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

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


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);






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

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


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.




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

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


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
 4WdEYtKXepZPP1kaod9Yd54/CKJZVDWPriMGmu6h866vLNsSsuhqyrlcsF9kl6eDXNeUt59BR
 XiNrDR+q7+INMc8IBGDaDDkjblGfBsaeB3J2M7dgy5VptosfKSalkFaboI6itWYX5VnCjxrtF
 1Tx1ys85p+yXOIHJkbHxnA+cE+zJUMS0JemG2EHYYgc6qdyJdWceGdeRslT1rQpJrglb8o4fj
 5nJa8Jw4aUBiTKfgcCtTjiinkqjK1PEKO0NinMN6x8PZfweqQ8JsinkWgR7CA+azRBcVTe8CU
 80/8OgX5V4/tkA0bObfGET3iTDxjZtJSTlGaR2pMmoN9z2qIEs/6+STJAXAvBDhNxoUN9Utqh
 T96ImqdPeswu/hWqlFQcF92hkKe5zkX7utyzeY/n41aUGwcn5hPHcAkkcVw92GZD+Yq8ydpW+
 pIi0Kx5Ro00hITPYzAJ5o+Dkp7rLVT9Yl0uOtAWbR3+PfoeTe5tPWLxxLw4uCL/MVpTqUIm51
 4AhvIDgjcqAZvbFNNcrSescQK54By9oyieZEvPLRaFMk7VMkj03CYRSpvLlFKno65Cw+ywjkQ
 fKK5K0kn7AGTVHCxxjP6eas0nb3Rv74FV9uItG1yB9Z1LCO4Nka9uGS/6sHLIIFoK6VyPQRQb
 7gkgRXzPIf6qDi6iTOMwYXYKjcwUNszu1/OLHq9ZGbY7MioX543qGYGoO5ewI2+H8nzI8DVxr
 urvlYaWTnhvYdq2+GiSsvWdmYk7ZKS2VBO/w9xk5xZsAXVqkKk8a8DNfGs+P0bILkzKLsIfL2
 5humWCm85i/gvq6iwMYU9m30njgKoDUzqbzGKxahYWsa/50viuZiha0UtQMUGRuaHdjgcf1p6
 oP19u4RJ2fXrlitTimW0iEpyFt1X/Pqttv3M3JJd5cy/uRo7BNIImDd9mgkPfIxXg8haPT08g
 etwL/nSmHhV+Me1mHrT3ZHz3mrPDzbHjUBMBtR4RuYYVwAkcwdS36Mu0cACqJ9jXcBd92/V8h
 RtYElXNxFKtqpLFpK0VZWme/aZa5kPJVe8ib4qWwB5/qHrKYEYSLywi6IrGU2vnGLW358KiXH
 9avO+G1gOL7/KEYzKAjoek8bJPcAUe/orZgmyNy5jfzcQ3Pm2qtsdYiYNr+dIasR2Cd1znOiT
 0koj85OG2Bk6Cm7kFmBqw33+Eo6hd7D5gpzoTAxKhx8sm4AFXRUznZJ+ggzOhQta3rDYVRnNm
 8MJe68f8UUVlHXb7u4agUBjXEpMlT64HJyKIc+WtxLdBaETDQ1VToXwJqWUPcRY1bpT7EWmmn
 J00s1nSo/1+EnZbZAZWKIv/rUHbl5QMW43d6aQr7Dw3s8FuNofpRb4+lCtasypuLRwworuXsU
 aCEtM/BupXtmvP+JeMp3Be4g2B4LfEG5mYmxZApVN2TPuCp8dbROX4xMev9nh5XcQI1ToVQGB
 RrsmJ3whoOf/DqEyRkTaIuv5q8YMVvn2cMb1FDSrG2hOOyvebAldzL5DxHQAOh+Y6i+fZEA62
 yuSYbRG+npSc5wd3r/T/qpM0lIKNhcFhoJvLlknhq9p7TuUqGTDYb2cpBhoH9HuIpZhlVcyw4
 KEbdNKJnF+Ze3Lb4CHv8sKHdru7kSTQU3AKs+vgKs5hpSt3ibLpRU9YA11t3pjWFiiOPYI1cK
 6q4FElZWECzj+hdmpQXiEd6/2/4037yVyNYkeHCTXwDPOyLrVmDKShYfIjzvpSTbExPNTpRW4
 oiqF+8U7+u0jGEFsvSiq6Ia6cw8mcSjAudf9i5iyLjJCybGui2NpBfnGQ1KDOCZD542rGB/V5
 6HqpEWI868t1SwpHpnmgUBnXZtvZAyiKVK9NA0NcIG/JCI3YHeasgibb8AEkSJjtj/yVuS631
 fz00OJ4ntr9/Ya9lGTMyXzgyK3374N2rhkWft04Z5w9Cc9j6U1G7CPlDQymA623sph1fLfLde
 5VQBsLpHFZCJKOVV8XR/UDcN1mz+b0p9aQ3sBj1GwYeAJpW/Sy7oz0qIC2paw6jomGVgKwXPR
 U7ZV5klr65/2FK0b7URNuBD6Dlke/QSF7GsxzRIqV+M9hV8ECLleQqUqUXKxHiOHLp4DIkTof
 AjvRqDLTNnfSJuz+mIC+hhCqkmbdXtOWsDWav5we+qOQp5OSX94H2xFRnUDldOIpTcJPutXiD
 0qG333edxDIwzUiW9OJruf8mQpEWQQcTfGVD9bTOdz4hImjTz6Pod41wd7DdmwOpZRmM6dNNw
 3GwV4kogGijQpAZf9g2qUxDJ+WC9yThIJnKkXKzG8A0Tc4wen3sgI3ExfFkuTOZV+BX146tt9
 jo5BIQ5RbBbJIYu6kw+pH6yVHv7/VccXr8xlNGkk8YcQZNTWxUADG6/x+XOgMbYVeVOu0s4Uh
 2xbtVOZYEwRude46LIhfgDOjIRV6LYlF4JJdMvdtHqcTSKsxddbdZ/ivWIK28l/PF5N8wOEiY
 Yznqk8yV/IFhmjELifH60622SAPr1sTIp3H2s4tDhxKZXwGTbWFtMOfng1nIeGPo7YWNggAp5
 MQpNB+p6jiUBi7dh47XTMpo/StA2OamFSVA1MYvx5NNQiRYCQPdnEyEqEWGTYaKYA+087mcTD
 xqzd7I8rl5XvimssfO4vAJLrFRu9cXZ9t1qHl3bM94pTvf2mhJbWH7H4SGLijt0u8IopKMsEF
 NomXKUNc+exLQ00S6zU6QQOM2C36HbHaFdHP+OzkC1f2qE4f5CHIHvoQ1S48lxRfHHMe9geot
 CUO1AgRIijztIki1k6bhC9Vjv3SKn+/iiKZvb0+NAf9pRs7ZGRMwTbtRh3VJTfGU0OL2t9rnh
 90IMUUgwv32Noc6g6ROrbFBkOVH+nstK3Hi5r0u2jfVioektfAK8dFnp40ciX2mi4HaJ6B/OR
 RJfitYYLgLG48FpwwF43IXPrFkSN/mWEhgu1o+Mngz7/OJTqjZQRRhMBte8swSKQ9fsJ55mmJ
 8ekcIJiKcuR5NK+hq0fuWtLjgCdUa9Sm20X//ghjTkA8n9kXYGYozxaF+L3T+y89XyRESyB2Y
 4l5qkLV8klRI5GJQdW9ifw9pssov28Vx4eHRDzXyRIA1nR43s37NKwXT4R3T8gQWqz99Gd2S/
 vkF8qbNhc61gIYglEa5fmiq4Pk8dr4W+9zu5UETNUJU5rA2GtxWUkF0kmzLDIDDMCcMoEm9JC
 MZl+/+gxSvSMlQLTu2qHjIu/TKDVFq3w6dzY06QnJCSMT8rEiLyyvnZ/ivk8D17yhTYVGBfZn
 F3RiHNsIHzpKIe9+Rh+Zo9a97iZbd98Nk/QynlXmOsT5RVDQt6MUAbJ1mUfK+c2b/gkdnpy52
 lXy1zi3DsBdLhSWdS9wiEIGplQI6/4RqneNEert4hqRKcDRSMwMlTVSWi+Qn9SYj4nhKg3hUj
 c0ohjzEZ5ZEfGAmCOyToxfG95zCoV1m47vXZXsCu4elMeTK72MNj32LFQhI5DKnpviOnc/hHR
 nFABc6Z344SgICfA73bY+oKEP+DQ3FH4hp+GaIwtLo8vB8y1He8IRKaJAX8wloxrivGrmaz/B
 1IJudsTkFEqbUFoI2aWcGe/SVkBCIDY6Kg38CACmcaycMmhVqQf9QWrhgeJJndovNEvsWmOMO
 CDm5T1/fPbnTuf6LO2itdwRh9yWYih28q88//QNd+PvbTv28sMdALB3hTWfM4q2EQOxDgICmx
 JMusD9B6DcXQ7IhxkEcGmBsNwlxzP4I4m1BPyHpDg6wsBa9FzUajjdeqNxO0feUld4CAInv1u
 Bij5s54QWtEPqRR+ny1DvDBv/DLhKEitzQlsneN5m6cxg7lJKs6QT9jMEwD08u3AOW+WOjKVa
 ofmJVCJEYNEzn/qGEBEikcC5Aj8lDDb4IWzwu8BKps61mEtkwif3HHa+bhRffqB+qe0a1xRi9
 jjcot/hBOaNLoLyyHyg5e0fT/wCUnkJko/Ke0FoMeQl/FKYqoNp38VAMqgzln1rtj1Aw5iowj
 JBMRr0/XOw/VyFjz4OBmjpGA48k3C9e+Twg19fsm66/6eJDtFxxDxd6aUdGtcuo/DiQo4oAvc
 ncWeqyQF6B3bPZ81UnmYKFzKfpYE3DB4uFHsu3s1WNAuj5zqTUGm8/4xxPMNPUnJTXzJsnCT2
 fVYNiuIG7Y9CY2nnEUb92a6zWnoFEUf/i3tlonD8XmO18Ht9h2Th9pin+4ehCWO4CHJFeIhPg
 fenXnoBtwybW00AZiJJBF9yeSCd08nz5Wbl9l2oT0UcIOg30ZeitFQyy36JN3dUh1oaDdFdw+
 akWvXEcnE1EZ+hrUPP8B64rtRQiUL1TGWnpo3++lFq0jWIN69uUs+am5u2zr1OlSIatlSOJUI
 Lr65+T6HcMV0Msp3ZB2kUlPHX74T1TBa7i4h0x500zxX/1rcT0dN6RtBbQ9CrllcUHiozTCRU
 x15KtOebBydTLPZloG1V4KRJxKquCQnLCPQeXi3Ha3pviTlfTYWZ0Vw9u/7nZl/3P7VJ2XFgj
 /UK68waG2C7MXfBts8IQJOEDs7T1iuUMvoyD3qVMsxxt37FsJzUwN0FCaoguWReY1M7osRi1O
 rD4a2ZElj9JyBfSXTGuywZL1b38EPS+EiAsoKop3agk9ARoto1/rkQ5rr78mLrsPXCSZey1oe
 Vry+QMumA7heGIDTctIBZg8h0kOudRWuIQiI+0SyJ8liCNArrk7dX3ka+IeF3FOmftnIPja68
 yDSnu1Et1YE5d6+GuNiOoWXB8MGJaBDB8D8Y8fH8qbKFvtJy5lQkrhK7ct9gwCGHKYUz6rNdP
 feSO/+X/wjuom557bRiuhLeZGBMCCIEn0uXFZp70t4NZZfXmqfSREJtqyzy0JOdwunlmdX06v
 GC29stskkf+7gXNL1vUyHdF6eynZFd6s1RkeBGhYpUqdmQu3g607CumIeHWep7ZVAvGt/FmsV
 zumSQuSw/47heJvdtjn8zdS/ZPWZuWX9yPtrH0G6RXExEx3rq1xWXQxXn4iQT3wbovgAVt9s1
 1LEMjLJNTpu7NlSdyvjwE/+tE8DXSo18m2uuPMuc8mGYibZnCyY5tJrNz7nKJo28cxB1qX6yn
 AlILLBmd/BB7JBHF5tuF29RTfxV1iSGCZEpX7nUvRBWW/HbH/D5i6UEOygo7qwFqVc70EBgiq
 6wnO1rixyoBgnwCwvgDydFBQbFbUsjJRrxtB0/M4gxDt1ERrWnhIuDP0tpE7yv/raGiSeRHRT
 WO5Z+Xo5TR71lbusRUt57KxHyvorwed6dBUqDfmEAvh1gWJbqtew5+r91svbSiIOQrU+e9EFM
 1ETnfYuA5JFSa3LiQgX/U6+hmnoSIiUi9h1u/pSoRBi8ubRACH1tO+WMdCCd1jtEHiqf1H+Rj
 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




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

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


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




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

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


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




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

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


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




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

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


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




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

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


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.




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

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


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=




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

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


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




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

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


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




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

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


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?




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

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


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




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

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


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




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

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


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




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

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


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.





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

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


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




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

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


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
v7qC8SKGR0QRMrlgx+85dsj8BiqdNolTT2OtAAJIHWlrDsL3VU10afqD2cqtaG4D28TIQdwG
3lmyOevf2q7rmqLomg6hqjxmVbO3ecoDgttUnH6VElyq7Kj7zsi/gDoKQAAkgDJ61weqzeJ5
PAuu3OryaS9tNo80sf2JZEeJzGTtO4kMMfxfLz2qfwzq+u/bY9D1FtPaV9JjvbaWCJwI+dm1
wWO/BwcjbnngUW1a/rr/AJBdWT/rp/mdtgZzjmiuL8JQHUoPE9hq9tZSv/aTxXJt0kSOf93G
dxV3YjrjAOOOlUvDWqL4a+FF7qMcPmLYSXrRxZwDtnkCrnsOg+lLpfyuO2tvO39fceg0140d
GRlBVxhgR1FcHoj60ficV1qaxllOhh1NmjogBmHBDM3I9c8+grvqLaX/AK3aFfX+u1yOGCG2
iWKCJIo16Ki4A/CpKKKBhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR
QAUUUUAFFFFABRRWbe69Y2F6bOUXbziNZWS3spp9qsWAJKKQMlW6+lJtLcTaW5pUVj/8JNYf
8++rf+Ci6/8AjdH/AAk1h/z76t/4KLr/AON0uePcXPHubFFY/wDwk1h/z76t/wCCi6/+N0f8
JNYf8++rf+Ci6/8AjdHPHuHPHubFFY//AAk1h/z76t/4KLr/AON0f8JNYf8APvq3/gouv/jd
HPHuHPHubFFY/wDwk1h/z76t/wCCi6/+N0f8JNYf8++rf+Ci6/8AjdHPHuHPHubFFY//AAk1
h/z76t/4KLr/AON0f8JNYf8APvq3/gouv/jdHPHuHPHubFFY/wDwk1h/z76t/wCCi6/+N0f8
JNYf8++rf+Ci6/8AjdHPHuHPHubFFY//AAk1h/z76t/4KLr/AON0f8JNYf8APvq3/gouv/jd
HPHuHPHubFFY/wDwk1h/z76t/wCCi6/+N0f8JNYf8++rf+Ci6/8AjdHPHuHPHubFFY//AAk1
h/z76t/4KLr/AON0f8JNYf8APvq3/gouv/jdHPHuHPHubFFY/wDwk1h/z76t/wCCi6/+N0f8
JNYf8++rf+Ci6/8AjdHPHuHPHubFFY//AAk1h/z76t/4KLr/AON0f8JNYf8APvq3/gouv/jd
HPHuHPHubFFY/wDwk1h/z76t/wCCi6/+N0f8JNYf8++rf+Ci6/8AjdHPHuHPHubFFY//AAk1
h/z76t/4KLr/AON0f8JNYf8APvq3/gouv/jdHPHuHPHubFFY/wDwk1h/z76t/wCCi6/+N0f8
JNYf8++rf+Ci6/8AjdHPHuHPHubFFY//AAk1h/z76t/4KLr/AON0f8JNYf8APvq3/gouv/jd
HPHuHPHubFFY/wDwk1h/z76t/wCCi6/+N0f8JNYf8++rf+Ci6/8AjdHPHuHPHubFFY//AAk1
h/z76t/4KLr/AON0f8JNYf8APvq3/gouv/jdHPHuHPHubFFY/wDwk1h/z76t/wCCi6/+N0f8
JNYf8++rf+Ci6/8AjdHPHuHPHubFFY//AAk1h/z76t/4KLr/AON0f8JNYf8APvq3/gouv/jd
HPHuHPHubFFY/wDwk1h/z76t/wCCi6/+N0f8JNYf8++rf+Ci6/8AjdHPHuHPHubFFY//AAk1
h/z76t/4KLr/AON0f8JNYf8APvq3/gouv/jdHPHuHPHubFFMhlWeGOVA4V1DAOhRgCM8qQCD
7EZFPqigooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAowaZHbpNCk8
32aUECENgR567WGGH58dqjtNCsLN5XVJpnlj8p3ubiSclP7uXJwPYVpU12CIznooJNPmaQWu
ynp+kWumFvspuApAUJJcySIo9FVmIX8Kjh0LT4GuNkUnl3AZZIGmdoiGOWxGTtGfYdzVB9X/
ALJ8NXPiTUpLiaJIDcNBEF+ROoCg4ycepqrovjy01rUZtPj0vUre5jilkCTrF85jYK6gq55B
ZeuBz1o5ne19RWSVzQsfD0ena6L22aTyPspgKy3EkrA7gRjeThQB0B/CtiWKOeF4ZkWSKRSr
owyGB4II9K4++8a+f4c8QvbWt3purabYvceReIhZflba42sysMqe/bmtGPxbYQu9tdO/m22m
LqF3MFHlxIexwchjgkDHQUSlzb/1u/0YJWen9bL9ULZ+CdCsbW7tYYLr7LdQNbSQPezPGI24
KqrOQn/AcY7Vefw/pjzGbyHWU2f2HekzqwhznaCCMHP8Q596zNP8caddGf7bbXek+VbC7zqC
ogeHON4KswABIyDgjI4qW38d+FLtZmttfsJhBGZZfLmDbUBAycdskfnSf9fj/wAH8R/1+X/A
/Ak0Xwfo3h+8mu9Oiu0mmz5plvp5g5OOSruQTwOcZ4pYPCOiW019JHaPtvldbiBriRoW3nL4
jLbASepAFc14S8XyeIJNQ1NdYN75fnmPRbSGMMsauVRt7YJYgA8sB81a2hePLTxAYDbaTqsU
dzbvcW0k8SKs+zAZVw5wwJxzgHsSOaN/u/AOvz/Ev6P4Q0XQb1r2wtpVuWh8gyy3MszeXnIX
52PAI49K3K5QePbCPTtWubvT9Rs5tLgFxcWkyJ5pjOcMu1ypyVI+925xUWnfEXS764u4biyv
9P8AssE08j3Sx7cQsFkHyO3I3D654ouFjsKKwND8WW+t3rWZsL+wuDALmOO8RVMsRON67Wbv
jIOCMjit+iwXCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK
KKKACuZvdQk0zxLqtzHp91fEWFmDDa7N+PMuefnZRgfWumrhfEnhhvE3iqeNbi3T7NbWk3lX
dt9ogm+a6XDx7l3Yzkc8EVMuliXuv66M3IvFMN34dXWNP0++vV8wxvbRKizRsrFWDB2UDBBz
z9M0ReKYbvw6usafp99er5hje2iVFmjZWKsGDsoGCDnn6ZrmIvhlcRaFFpX9qWE0EF+95FBN
pYNuQ4bKPEJAGALZXGAMDg0RfDK4i0KLSv7UsJoIL97yKCbSwbchw2UeISAMAWyuMAYHBqv6
/L/glf1+f/AOni8Uw3fh1dY0/T769XzDG9tEqLNGysVYMHZQMEHPP0zRF4phu/Dq6xp+n316
vmGN7aJUWaNlYqwYOygYIOefpmuYi+GVxFoUWlf2pYTQQX73kUE2lg25Dhso8QkAYAtlcYAw
ODRF8MriLQotK/tSwmggv3vIoJtLBtyHDZR4hIAwBbK4wBgcGj+vy/4If1+f/AOni8Uw3fh1
dY0/T769XzDG9tEqLNGysVYMHZQMEHPP0zRF4phu/Dq6xp+n316vmGN7aJUWaNlYqwYOygYI
OefpmuYi+GVxFoUWlf2pYTQQX73kUE2lg25Dhso8QkAYAtlcYAwODRF8MriLQotK/tSwmggv
3vIoJtLBtyHDZR4hIAwBbK4wBgcGj+vy/wCCH9fn/wAA6eLxTDd+HV1jT9Pvr1fMMb20Sos0
bKxVgwdlAwQc8/TNEXimG78OrrGn6ffXq+YY3tolRZo2VirBg7KBgg55+ma5iL4ZXEWhRaV/
alhNBBfveRQTaWDbkOGyjxCQBgC2VxgDA4NEXwyuItCi0r+1LCaCC/e8igm0sG3IcNlHiEgD
AFsrjAGBwaP6/L/gh/X5/wDAOni8Uw3fh1dY0/T769XzDG9tEqLNGysVYMHZQMEHPP0zRF4p
hu/Dq6xp+n316vmGN7aJUWaNlYqwYOygYIOefpmuYi+GVxFoUWlf2pYTQQX73kUE2lg25Dhs
o8QkAYAtlcYAwODRF8MriLQotK/tSwmggv3vIoJtLBtyHDZR4hIAwBbK4wBgcGj+vy/4If1+
f/AOni8Uw3fh1dY0/T769XzDG9tEqLNGysVYMHZQMEHPP0zRF4phu/Dq6xp+n316vmGN7aJU
WaNlYqwYOygYIOefpmuYi+GVxFoUWlf2pYTQQX73kUE2lg25Dhso8QkAYAtlcYAwODRF8Mri
LQotK/tSwmggv3vIoJtLBtyHDZR4hIAwBbK4wBgcGj+vy/4If1+f/AOni8Uw3fh1dY0/T769
XzDG9tEqLNGysVYMHZQMEHPP0zRF4phu/Dq6xp+n316vmGN7aJUWaNlYqwYOygYIOefpmuYi
+GVxFoUWlf2pYTQQX73kUE2lg25Dhso8QkAYAtlcYAwODRF8MriLQotK/tSwmggv3vIoJtLB
tyHDZR4hIAwBbK4wBgcGj+vy/wCCH9fn/wAA6eLxTDd+HV1jT9Pvr1fMMb20Sos0bKxVgwdl
AwQc8/TNEXimG78OrrGn6ffXq+YY3tolRZo2VirBg7KBgg55+ma5iL4ZXEWhRaV/alhNBBfv
eRQTaWDbkOGyjxCQBgC2VxgDA4NEXwyuItCi0r+1LCaCC/e8igm0sG3IcNlHiEgDAFsrjAGB
waP6/L/gh/X5/wDAOni8Uw3fh1dY0/T769XzDG9tEqLNGysVYMHZQMEHPP0zRF4phu/Dq6xp
+n316vmGN7aJUWaNlYqwYOygYIOefpmuYi+GVxFoUWlf2pYTQQX73kUE2lg25Dhso8QkAYAt
lcYAwODRF8MriLQotK/tSwmggv3vIoJtLBtyHDZR4hIAwBbK4wBgcGj+vy/4If1+f/AOni8U
w3fh1dY0/T769XzDG9tEqLNGysVYMHZQMEHPP0zRF4phu/Dq6xp+n316vmGN7aJUWaNlYqwY
OygYIOefpmuYi+GVxFoUWlf2pYTQQX73kUE2lg25Dhso8QkAYAtlcYAwODRF8MriLQotK/tS
wmggv3vIoJtLBtyHDZR4hIAwBbK4wBgcGj+vy/4If1+f/AOni8Uw3fh1dY0/T769XzDG9tEq
LNGysVYMHZQMEHPP0zRF4phu/Dq6xp+n316vmGN7aJUWaNlYqwYOygYIOefpmuYi+GVxFoUW
lf2pYTQQX73kUE2lg25Dhso8QkAYAtlcYAwODRF8MriLQotK/tSwmggv3vIoJtLBtyHDZR4h
IAwBbK4wBgcGj+vy/wCCH9fn/wAA6eLxTDd+HV1jT9Pvr1fMMb20Sos0bKxVgwdlAwQc8/TN
EXimG78OrrGn6ffXq+YY3tolRZo2VirBg7KBgg55+ma5iL4ZXEWhRaV/alhNBBfveRQTaWDb
kOGyjxCQBgC2VxgDA4NEXwyuItCi0r+1LCaCC/e8igm0sG3IcNlHiEgDAFsrjAGBwaP6/L/g
h/X5/wDAOni8Uw3fh1dY0/T769XzDG9tEqLNGysVYMHZQMEHPP0zRF4phu/Dq6xp+n316vmG
N7aJUWaNlYqwYOygYIOefpmuYi+GVxFoUWlf2pYTQQX73kUE2lg25Dhso8QkAYAtlcYAwODR
F8MriLQotK/tSwmggv3vIoJtLBtyHDZR4hIAwBbK4wBgcGj+vy/4If1+f/AOni8Uw3fh1dY0
/T769XzDG9tEqLNGysVYMHZQMEHPP0zRF4phu/Dq6xp+n316vmGN7aJUWaNlYqwYOygYIOef
pmuYi+GVxFoUWlf2pYTQQX73kUE2lg25Dhso8QkAYAtlcYAwODRF8MriLQotK/tSwmggv3vI
oJtLBtyHDZR4hIAwBbK4wBgcGj+vy/4If1+f/AOni8Uw3fh1dY0/T769XzDG9tEqLNGysVYM
HZQMEHPP0zRF4phu/Dq6xp+n316vmGN7aJUWaNlYqwYOygYIOefpmuYi+GVxFoUWlf2pYTQQ
X73kUE2lg25Dhso8QkAYAtlcYAwODRF8MriLQotK/tSwmggv3vIoJtLBtyHDZR4hIAwBbK4w
BgcGj+vy/wCCH9fn/wAA6eLxTDd+HV1jT9Pvr1fMMb20Sos0bKxVgwdlAwQc8/TNEXimG78O
rrGn6ffXq+YY3tolRZo2VirBg7KBgg55+ma5iL4ZXEWhRaV/alhNBBfveRQTaWDbkOGyjxCQ
BgC2VxgDA4NEXwyuItCi0r+1LCaCC/e8igm0sG3IcNlHiEgDAFsrjAGBwaP6/L/gh/X5/wDA
Oni8Uw3fh1dY0/T769XzDG9tEqLNGysVYMHZQMEHPP0zRF4phu/Dq6xp+n316vmGN7aJUWaN
lYqwYOygYIOefpmuYi+GVxFoUWlf2pYTQQX73kUE2lg25Dhso8QkAYAtlcYAwODRF8MriLQo
tK/tSwmggv3vIoJtLBtyHDZR4hIAwBbK4wBgcGj+vy/4If1+f/AOni8Uw3fh1dY0/T769XzD
G9tEqLNGysVYMHZQMEHPP0zRF4phu/Dq6xp+n316vmGN7aJUWaNlYqwYOygYIOefpmuYi+GV
xFoUWlf2pYTQQX73kUE2lg25Dhso8QkAYAtlcYAwODRF8MriLQotK/tSwmggv3vIoJtLBtyH
DZR4hIAwBbK4wBgcGj+vy/4If1+f/AOni8Uw3fh1dY0/T769XzDG9tEqLNGysVYMHZQMEHPP
0zRF4phu/Dq6xp+n316vmGN7aJUWaNlYqwYOygYIOefpmuYi+GVxFoUWlf2pYTQQX73kUE2l
g25Dhso8QkAYAtlcYAwODRF8MriLQotK/tSwmggv3vIoJtLBtyHDZR4hIAwBbK4wBgcGj+vy
/wCCH9fn/wAA6eLxTDd+HV1jT9Pvr1fMMb20Sos0bKxVgwdlAwQc8/TNXtE1m11/TEv7MSLG
zMjJKu143UlWVh2IIIriovhlcRaFFpX9qWE0EF+95FBNpYNuQ4bKPEJAGALZXGAMDg10Xg3w
xN4T0ufT2vYLmBrh5ohFaiAR7zkrgMRjJ4wBgcU11/rt/wAET6f13/4B0dFFFIYUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABSMAylTyCMGlooA5zUPD91q
fhbUPDss8cUE9u0EN0oLMqnpuTjoPfmsh/hyWnv5BrMkZu4LyHMcO1k890bIO7+HZj3z2ruq
oaXcahLbz/2napbzRTOilGBSSMH5XHJIyMZB5BBpdb+Q+i9TibP4Yz2n9qqmo6ZbxanpzWM0
VlpIgReG2uAJDk/NznOfUVpWfw403Txf21m62+majYfZL2zjiwJHAIEqtn5WwSCMHPHpXS6f
ez3sZuWiSO0YZiJYl2HqR0ANR2uptLay6hc+TbaeqF1kkkwQg6u2eFGOetN+f9b/AOb/AKQl
5f1t/kjD8IeCh4XuJHxo7/uhEktppS20zDP8bqxDdB0A55rrqz7PXtH1BbhrLVbG5FtzOYbh
H8r/AHsHjoetJb+INGvNOm1C21ewmsoQTLcx3KNHHjruYHA/Gm33El2KelaDc6L4ak0uzv4/
tBkmkjuJLcsqmSRn5QMM43Y+8M1n6X4PvbPwFN4XudaEoMDW8N1b2xhaNSO43tk5z3H9a3LH
xBo2pztBYavYXUqRiVkguUdgh6MQD05HPvSWviDRb63ubi01ewnhtQTcSRXKMsIHJ3EHC9D1
qbaNFJ63Rw8Pwsnii1WOPU9MtY9TsPsU0dlpIhRcElXAEnJ55znPqK1I/h1Ab29lur9poLuC
8gkiWLadtw6McNuPK7MdOc9q6GLxNoM9tdXMOt6dJBaf8fEqXSFYf945wv41X8NeMND8V2iT
aXfwSSlC723nIZoxnGWVWOP/AK4p7/d+DEZ3hDwUPC9xI+NHf90IkltNKW2mYZ/jdWIboOgH
PNddRXNaX4qk1F7y8eyitNBtmlT+0bi7Vdxjbax2Y+VchuS3bpQ3fcLWOlorMtfEeh3zyJZ6
zp9w8UXnSLDco5WPGdxweFx36U638QaLeafLqFtq9hNZQ5MtzHco0ceOu5gcD8aANGis3T/E
OiatK0WnavYXkiJ5jLb3KSELnGSAeme9SadrOl6v5v8AZmpWd75LbZPs06ybD6HaTigC9RRR
QAUUUEgAk8AUAFFULC9mvImunjjitGGYiW+Yj+8ewHeo9O8RaJq800Om6vYXksIzKlvcJIUH
qcHigDTorLi12z1KzupNCurHVZ4ODFBdqRu/uswzt/EVH4Z1w+INCTUpLX7I5kljeLzN4Uxu
yH5sDPK56UAbFFUdP1rStWEp03UrO8EJ2y/Z51k2H0O0nFV4vFPh+eG6lh13TZI7QZuHW7jI
hHT5jn5efWgDWorB8N+MdD8VWaz6ZqFu8hQu9t5yGWJQcZdVY4/+uKv2GuaTqiTPp+qWV2sB
xMbedZBGf9rB4/GgC/RXP6d4v0zV/EjaTptxbXsa2huWuba4WRQQ+zYdueec9a6CjpcOtgor
mtL8VSai95ePZRWmg2zSp/aNxdqu4xttY7MfKuQ3Jbt0rStfEeh3zyJZ6zp9w8UXnSLDco5W
PGdxweFx36UAadFZ1v4g0W80+XULbV7CayhyZbmO5Ro48ddzA4H40mn+IdE1aVotO1ewvJET
zGW3uUkIXOMkA9M96ANKiqFjrOm6vHP/AGTqVlevCdr+ROsgRuwbaTiltLye4+0QSxJHdwYB
UMShyMqQeuD/AEoAvVxuseI7Xw54zZ7zy0gu4bO3eaSURrCM3bbiTxj5MdutdLY3klw88FxE
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--




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

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


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




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

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


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.




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

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


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.




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

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


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




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

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


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




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

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


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.




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

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


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
 y4bbczZs3SOF8HcnZwvp4mRtPr2D/pgIYyrD0RNlOAu8ciGg2Ft/Yvgc4/bJVICosRp+dPy1K
 +sdOVV9UqVx2MjZq59j8zwUEc+NnN1pFAGWfbgON9G9e4Ku+BqvnqxSn9H5HWd8dpoDmglaoJ
 pQZfRgCrU3SLFC4zx+DJ95MK1lSLx0kUmFgy3kp6/fUe0Ifeq++g4vjCFLPyodMqXwBJq+1Hu
 IQIMFXLP42EZptW+YKaOYTxk8zQb0bMAj9yTlJZ5m4x4EoSDhoIJysUPZtY7x/iM5/FCm4erx
 8THMIiViqXC5/yXM4DfC+FCQVrA9ffKXlA/0ZQm+Ns/TJhSwICigeb6h2tNv5nXjySeTVRz/+
 yopM1CCSKrN4C6YDxrk3kazNeT7FyobrYC93q9ww4qxzW9mTyOL3N62Ah/Y0gREP6WHbauh4k
 2TFypekFMyy4KMYgoCMLeR28Q3075i76hMzT/Zn0zETDuZ+TSeJqMb6hoak2Pz/vNY6b90o3k
 YH3nORwdBEd/6RlHPerOv2T7qM7wVtXtG/WGV59FK7uI4P03u7JcWCnzUm5YdphIfvwm/3bqP
 lU7o/REMLRQJ9iuOtWBCCCYQC8PQiP6cJgD57Tg2RUnxdbUsfhu6RacKF9T5VQnEx5i+c9Pue
 9siUNaI3gbprqihZhapB4WnouHQCv6RafA1yBeQMyRo25HNCEIgVdaQ+0fPN7fpcG8RL3SPRW
 NxRfWK4SuRZwc78m3IFc9c/GfbDZyeAo4SYj2a1mDn+0avtniUNdGsT3TtcpEUZJZqhTeZY3N
 xRLCmU72nHOAl2VQAXY+/6ZMudIV/J3PBA7Sv20DEVBOYHhgfPAkq4XKElNyetpEbU394ubId
 R7EJQkeJOSRjok7nnYoPbj/TAxQehnlCiV121wcuOQ47yeVhjMQHaxdbZwSJpMyMDIaL19uM9
 bLV8Z9GFLIPyA6sDtPJJoKKLDlzcJSVHjDQZqLBp4QaUy+O9w9mqt5ffi2cM+Sqt66W5SVWUg
 NZuPV8gNyfqwFEEul/+rB3Zh/b4lbLU0c4d+Ms6t4ePWCFyicRarlyYjnDHfuTCbyKTXKlOML
 SfU3YIuPxkGdFwnjeHoB4ZAvEiYjGj/uAPXOpX9A/OH3GbPTePCPgsSCoIMm9+jVkGQayEweB
 XpcS22R21BVVMoIXl1jWjkVvBC09ne0uCMf2SoxtTjTfCFWvR6qjSHSK8QfbCPIlaR/tniquC
 b5gtl/8sIa8qcDoJ+2CVCEmYjLEoImyvvSFYOnMWRpbgLgNuRuFT70zedT8CtelDp2NHQL7OE
 CMOKZCxMKeec2DNlKTISZl0ERi+BIHvsmldw+pbeVLBGReN6mTcc5IrL0jr3wmAt5bg9s0O6X
 ULC8R9UMkRxW8QtbQx+l8ucFjgYREpA1bvxi8uVaZW4G009ggEphVJNngdKlAyB5MCrYCi2b3
 dg8meTNxGBGSEq6hEn+dW+gugecbaaWBDg03vAx6EQOWRfA13tq3ziElx73cIbaW34z7ivUgW
 wId/iw6GZ3JspKKwTc2PQ1/sFULSYvSr3OWZkhRWzu2eUtWvGQ0Vo8NmV1M/TLXAQTOg7/Gwj
 /s4aukvmKUz566yFtkoKDZDsHd2s9m5ak4awDmmX4kcDKkxs9bQi4vCNIFpwgllxZS7GyoH3Q
 VvoXTZYmlf4KmPBedpwPx93ApaMFwvD+Qv4uxLF39+TvJzgYFyvALqCCV3EDNyADervReoJpL
 P5N6lgAPgYpELUs86kgzOxg9ysf05D5Vhqpm7gLXYwUFHAtB5ps+KreI+1xz6GHM+9hNxquUh
 QTo74vvTHAAVoS4bWH/cSLwMZjZnmgfELVgAiURUWWU9QkDE4wBpwu4WlcgMONYjOithvr5N0
 JaCKj/tOMSwyhR5nCf2YnK9Kw1cUnqdR1XUXjzWHgNPRYR7tI/o6I0K7IKJ+zAukk4a1yR3AB
 bRZI82OEQQ94k8Wz0jVQrQOWiDyd+/YdgErCy35Hl9HLCWEy6TgrO3B+26wQB0UCpOgE+Fa4o
 4E3SsyDx+i1SW43rEd0JAiXzCxW487qeTQypxqhhXi/aJ7V06Jf0JE0MMGRlnchS0v4BNvq1G
 DB7sGLfzIbOw1rE2C7yqNSHCZ8+e/vH8aDhcIz0KNREJh7IanfMSpmEFfeR6MKqKrHbvT7J4v
 SpxUtzgIgMRVFGIX6kyUhelWz3/MQfyiFt4qsbsyUmP2+40w6GABcHcQIoZ0f6iOZJYFUZoRR
 qRGCj06m5tZ2q5+MVplGUDZ8kCX0duW55K+x/U3MpSaAuMPuMZQRqTIwj/90qXfjXM6uZRh9O
 cD90aFyG2GkS9KPvcNkHF1uXzQZQ1GOz7V0RIhMRmGhDv15cIaMVQ/PnGRGecUkYCeVuhyvj5
 vQsyqwUuvofpr6WhcBsYgRtIvReAzJSn7UyCviXViIGAsoQ5n8SWMWYV1JlMFxYbJnsIfFyNi
 TJWU7ggYft9u93BwulFv1qY3Rulc53hceYhqPphX7BhdpZIM9U5PAYAAbm9bMGtt8y+zkyMQq
 NQOS/aYqibiJQb9esvawmLwsPsn4trB12/filzGgzAkPWTN03DcJ9cUgzEFEyRj/z3yMZg3yE
 PKRjWFxKFuwrk1cs4Qf/16zaNXgCgFCXOmx7c41+lywU/zE9fpkBRw6Ut/o048T6B8Z2K7arY
 rBFaObv+t5poNiEuejfnL/yquTum+wmvEnUwhq5yGZBFx0Z5S6ehOeF9rDCEcU8EnxBG0apX3
 aBsoyiO40SVVShFqIrHQOB0GtJFclx1GmxIvkc6Uy25fSTMFGiVW9eqNCVh96RanTMr1fSars
 AN3fOKp/xHpWvCEkQygbZYhiElStWwDtOvH1gE3tXLhQ8u6hm1PVZCQX71DtZAeRqDZENmQXp
 tNRcwxqXUwCIU+HY3g8q51F+LRBaPBqyQzLSVWdkvIDk4wExccRjPaHorQe5nkpmuYqo3pSBU
 tBOSdTK739w7inn5xiD96cZeJU8sF865Ry+Kiuu9+GDT2+OQ2vKrDdjS6NvYFI38Q0XaaTpRQ
 gRYtdlaccS9iO1URe6y5xuKjNFnajBjibm3DHVtsIeqilrg1V94fZRfC/tUnGaM83HHwHl9yh
 GPOh+C21rni2km7d/M2m9C6bsZKYsP3941e0xwz3zBEn1limABsy0c9DyrK7YAUj6Hig9MNeG
 9ILCRVDXaJss2O9fVzxixniDifHn+NWZSHR4bNY1eTcmegb0Tv2gne4YyrbaKMv1gQzFoTGV1
 awKJYAFmjK8gZ87puxaWnDW8bk4tsIT03G7IzJ1fC5IHifS1Tmv/RpDBBdfAioyownn4ElUkp
 hVaB+PeEzoLjVvHWIc5HpWyqUvhJSoivp+bgiVJZyjReofM3jC9G688uLIRIXDIQkbE/WHTnX
 6q+xrhvm1JsFwu88+UsK6uC8+/J17xzWaGbv2yvIYY5yeJ5yuncJFPlHzqmNYr61lNfmAM5Gc
 4tkvMOdJSsdyo7zzHPQ1VDzn3XdibWMIFRMEFN9pyLh5nD0yiMzypnXsK8HS0QKda+SUXKS7Y
 mqycEQzqjoOGAYPYxhiL8bzeTcLDmdvz0rejh+yJ8JWkUy7TZOJbpzxA+KXE9SUTO9R/YT34h
 cHexlkiAt3bDOfHwdMnt8FJGrJflX88CHOJ4qHnQ4lCbdMrNXgBevcmnewJdvlG4xi6oNzTrU
 pWG1YHQgYGXy532kgeSHqKNqIQ4RhMjg+Bf2F6kgaU4G/U+9bAE/SB4YKbQybS9EQhbt0XGCW
 +OGE+4vvdlO4ZHhGO5PnTsm8HYim/h+hxrTypIoEIvIuu5rfizvZZcRebqnuLQ/mhNSyJyy1j
 ra3FNXPAZ14DSH1LUHniXFTcpDqYL/M6Qu2ZSgMF+xADIyVy6Z1K8RUp9zAJ19RarIo+gg1AJ
 kNVkqQ/9gENjJzOC2GtuCNPRBIhnwVQJpLbflRps1E2qzCJnC4D9QvMVAIlDfo+ZTrECDoewJ
 mZ+zwtQBn01EI3n1jIE+u9LZqg7g4WrfFd3CC2l3jQ5NxR9y2CscKepxrmsLT/Gc6ol5PddVj
 yNRKN4Z2ripPC06Z+xKGjvSUDyaINwdBiCKZ0nzfUCVIUqS3ocGcQsmyQiCCjfASL5aGl44zU
 re4P+rw3ejUV+UvZhSz9aVyh9UWDCHEPnzI4RQ2M9fi30+Vqdm6laycvbqLw9lz2xMLixuzeP
 LJm5q0d3FRH2TcHfNJq+LCFcx9deRO4VjWOf0HiIbknggcmJxkHVA6ukxX20/VaTkD9YAHsoC
 lvHvCsztjq2z8HwDQpyhgBfnPolu3Lm2u1THoW9Obd/2YnZpVph8kCVE6zSjT+FtzgRJrNekX
 ff4wODVL26GJGMDXrQdBAFPSQfeFCQWTytY/bMXc50aI12AP+z3QCnf1zRibyqxNBKdHV00UB
 QZ4BQ4vKab+0iHgAgj/npzPuDO7fbGp3aIb+SSRxV2Z3lY6Z6FEszN0cW9VqZj1YPgB7CnKPb
 NYvzhLM33CGn317fRfYAteQu0LrWX6oc/Z58nAhxisJ2SsSCopeD3oGHgmDIhBjc00OrEcVxH
 Xe6BTFpS+5xW8FpyEXnLzO301EJT4JPGYkp3oLsvqYMgFwzy9JfgHNlxh6EtRctEH6mhnVCa/
 eUXb6NH9Y/L+T01gt+B4qjZuBLK+GTQPZre8Du4aMzX84ZOKvewQc66Re/r7SB8WEsVyVSHma
 nuC/2KMwcHMSO+ejU8D+KH98I40CmRbCMEa++h39A20bd1bfvl0XE5+wAspXeWdKE+sAWSIjH
 yTERYCIOp5NMDS5aBof1o45kz/SbFdl/t7UWpGkho0Uoh8agt+l0MmO7YBYM3RRl4dDNwf1Yx
 9Giz7wXGMswkJNvmUUtxuUEsMhDZ0I3K1f2daobJYlBBv+J6JG+jM568s6Rlsy/mALiNJvRdR
 p7UYiyxzMbtjXO23hVxyi55eqUe+Q641HY2Q0GvFRmG/LSh5yT9PGxmNNZNZtp9JUk9blR4Wy
 0MXiycy7umMgSXsIY0Dt+FGMhqRU8gB/SBgeYt108m4qTUYGA1IuKAoQbC+qZ6T8uKpc8WxM2
 FlU0IYedjAsszVKKcMijdsGYx88lpaM8wDMCU4KNRu+RM7N3qeCLYnzBxAWxNE+MTIBT+inqY
 qr7e3WN9HCxL6xyKSdzwAcogbug8K/N9VEelpV71ydHA2p7vbmN2pOBb1k/8h8XssB1PfuvIF
 AcKIAwRInWbIg04JNzS9KTtbG19nBnfbor3zlXn1OTk19kCryFjPUOrE9KXqsPAq2BUTHFOEU
 IisZt58ITOeN5x9qvDGr2aUrZK9sdaDTTnsNuyVPC/31xyYaSsp+OG+sfWR2H2yoP0wkd0WYw
 KEFQN1LUjRkVnrgJutJUUOucy97AZ82xlX2HWQziwSFzmrXSkI7MGtIaeSRloJSlPSF/3AW+T
 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




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

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


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




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

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


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




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

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


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




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

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


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.




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

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


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




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

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


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




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

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


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




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

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


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




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

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


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




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

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


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




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

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


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




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

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


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




Acknowledgement sent to Dmitry Gutov <dmitry@HIDDEN>:
New bug report received and forwarded. Copy sent to rudalics@HIDDEN, bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to rudalics@HIDDEN, bug-gnu-emacs@HIDDEN:
bug#80662; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Thu, 16 Apr 2026 11:30:08 UTC

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