unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: martin rudalics <rudalics@gmx.at>
To: Gregory Heytings <gregory@heytings.org>
Cc: Ash <ext0l@catgirl.ai>, Eli Zaretskii <eliz@gnu.org>,
	65217@debbugs.gnu.org
Subject: bug#65217: 29.1; set-frame-size gets confused and drops calls
Date: Mon, 21 Aug 2023 19:31:12 +0200	[thread overview]
Message-ID: <9cab2bf6-853a-cce7-1837-9b85529bdfcc@gmx.at> (raw)
In-Reply-To: <77daee02cf5599caf276@heytings.org>

 > I'm not sure what you mean by "works correctly".  That exact recipe
 > (with emacs -Q -l file.el) produces either a 10x10 frame or a 20x20
 > frame, randomly but apparently equally distributed.  Adding a (sit-for
 > 0) after the first call to set-frame-size does not help.

Can you check whether input is pending before the 'sit-for' call?

 > But adding a
 > (redisplay t) after the first call to set-frame-size helps: the result
 > is then always a 20x20 frame.

Here it works with FORCE nil too.  'redisplay' with non-nil FORCE means
don't process pending input.  Maybe any such redisplay just takes long
enough so that in the meantime the 10x10 sizes get processed by GTK and
the second 'set-frame-size' is recognized by GTK as something that wants
to change the size.  (sleep-for 0.001) works here too.  I see problems
with (sleep-for 0.00000000000000000000000000000000000000000000000001).

 > One problem remains, however: the message is still either "10 10" or "20 20".

Always 10x10 wouldn't be that bad.  The "either" means that some race
condition persists.  Here I get always "20x20" with the redisplay call.

 > I just tried your "my-twiddle.diff" patch, and with your recipe above
 > it doesn't help: it still produces either a 10x10 frame or a 20x20
 > frame. I'm don't know you mean by "the problem above with normal
 > top-level frames".

My "recipe above" was for normal top-level frames. The patch was for
child frames exclusively.  To avoid confusions: The scenario for child
frames is

(setq my/frame
       (make-frame `((left . 500)
                     (top . 5)
                     (width . 20)
                     (height . 20)
                     (parent-frame . ,(selected-frame)))))

(defun my/twiddle (width height)
   (set-frame-size my/frame 10 10)
   (set-frame-size my/frame width height)
   (sit-for 0)
   (message (format "%s %s" (frame-width my/frame) (frame-height my/frame))))

(my/twiddle 20 20)

and my patch fixed that here.  The scenario for normal top-level frames
is

(setq my/frame
       (make-frame `((left . 500)
                     (top . 5)
                     (width . 20)
                     (height . 20))))

(defun my/twiddle (width height)
   (set-frame-size my/frame 10 10)
   (set-frame-size my/frame width height)
   (sit-for 0)
   (message (format "%s %s" (frame-width my/frame) (frame-height my/frame))))

(my/twiddle 20 20)

and my patch doesn't do anything about it.

martin






  reply	other threads:[~2023-08-21 17:31 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-10 23:07 bug#65217: 29.1; set-frame-size gets confused and drops calls Ash
     [not found] ` <handler.65217.B.169170885617684.ack@debbugs.gnu.org>
2023-08-10 23:16   ` Ash
2023-08-17  9:49     ` Eli Zaretskii
2023-08-17 16:44       ` martin rudalics
2023-08-18  1:13         ` Ash
2023-08-18  5:56           ` Eli Zaretskii
2023-08-18  6:04             ` Ash
2023-08-18  6:37               ` Eli Zaretskii
2023-08-18  7:23                 ` Ash
2023-08-18  8:25                 ` martin rudalics
2023-08-18 12:12                   ` Eli Zaretskii
2023-08-18  8:34                 ` Gregory Heytings
2023-08-18 12:14                   ` Eli Zaretskii
2023-08-18 12:26                     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-08-19  8:04                   ` martin rudalics
2023-08-19 10:18                     ` Gregory Heytings
2023-08-20  6:32                       ` martin rudalics
2023-08-20  7:55                         ` Gregory Heytings
2023-08-21  6:19                           ` martin rudalics
2023-08-21  8:30                             ` Gregory Heytings
2023-08-21 13:39                               ` martin rudalics
2023-08-21 14:12                                 ` Gregory Heytings
2023-08-21 17:31                                   ` martin rudalics [this message]
2023-08-21 18:26                                     ` Gregory Heytings
2023-08-22  8:53                                       ` martin rudalics
2023-08-18 13:26     ` Gregory Heytings

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9cab2bf6-853a-cce7-1837-9b85529bdfcc@gmx.at \
    --to=rudalics@gmx.at \
    --cc=65217@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=ext0l@catgirl.ai \
    --cc=gregory@heytings.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).