emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: address@hidden: Re: redisplay]


From: Jan Djärv
Subject: Re: address@hidden: Re: redisplay]
Date: Mon, 23 Apr 2007 21:14:35 +0200
User-agent: Thunderbird 1.5.0.10 (X11/20070302)

Chong Yidong skrev:
Richard Stallman <address@hidden> writes:

Would someone please debug this, then ack?

From: Stephen Berman <address@hidden>
Subject: Re: redisplay
To: address@hidden

On Sat, 21 Apr 2007 20:47:19 -0400 Richard Stallman <address@hidden> wrote:

    (progn (new-frame)
           (redisplay t)
           (x-popup-dialog t '("Foo" ("Bar" . 1))))

I tried this but it didn't fail -- the new frame was not empty.
In my Emacs (GNU Emacs 22.0.98.2 (i686-pc-linux-gnu, GTK+ Version
2.10.6) of 2007-04-20 on escher) I see two behaviors:

1. Evalling the above sexp in *scratch* with C-j or in any buffer with
M-: results in what the OP reported: "produces a blank frame while the
popup dialog is active, i.e., (redisplay t) fails to wait for
redisplay to finish."

2. Evalling the sexp with C-x C-e in any buffer results in what RMS
reported.

I believe this is because x-popup-dialog is handled with a GTK dialog
when you build under GTK, instead of using the Emacs redisplay engine.

The redisplay engine don't handle any dialogs, Gtk+, Motif or otherwise.

So the behaviors are slightly different.  I don't think this
"problem"---if it's really a problem---is serious, and it certainly
shouldn't block the Emacs 22 release.

I can't reproduce it with or without Gtk+, *scratch* or not. I suspect it is a timing issue in X. I don't think redisplay guarantees that all redisplay related events has been received and handeled by Emacs before it returns. My guess is that it just makes the needed X calls and then returns. For some reason or another, the dialog blocks the handling of other X events. Can the OP try to move the dialog around a bit and see if the frame below it is redrawn at all?

        Jan D.






reply via email to

[Prev in Thread] Current Thread [Next in Thread]