emacs-devel
[Top][All Lists]
Advanced

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

Re: GTK frame changes


From: Jan Djärv
Subject: Re: GTK frame changes
Date: Fri, 03 Jul 2009 14:43:08 +0200
User-agent: Thunderbird 2.0.0.22 (X11/20090608)

Stephen J. Turnbull skrev:
grischka writes:
 > Jan Djärv wrote:

> > The XProtocol specification (the oldest I have is R6.8, the newest is > > 7.4, they say the same thing) says this: > > > > "Whether or not a server is implemented with internal
 > > concurrency, the overall effect must be as if individual requests
 > > are executed to completion in some serial order, and requests
 > > from a given connection must be executed in delivery order (that
 > > is, the total execution order is a shuffle of the individual
 > > streams).

Jan is missing a number of issues, I think.  First, there are (at
least) two clients and *two* connections involved here.  One is
Emacs's, the other is the WM's.  This leaves a lot of room for
nondeterminism ("shuffling") in the order in which configuration
events arrive on Emacs's connection.


Not missing, just ignoring ...


Second, the process that generates the ConfigureNotify event is *not*,
and cannot be, atomic.  When the WM has set the SubstructureRedirect
flag on the root window, a request by Emacs to configure one of its
(X) windows will propagate up the toolkit hierarchy to a shell window,
which will then execute X protocol.  However the reaction of the
server to that protocol request is *not* to configure the window and
send a ConfigureNotify event.  It is to *do nothing* except send a
ConfigureRequest event to the window, which will be processed by the
WM (because of the substructure redirection), not Emacs.  The WM *then
issues the configuration request again*, which will succeed this time
because the WM "owns" the substructure redirection.

And also the WM may choose to alter or drop that request.  Which is why
Lisp code that sets a frame size and immediately after expect that frame
to have that size is no good. The sync-thingy is just an optimization so that lisp code will see its expected size as fast as we can make it happen, in the cases the WM does honor the size request.


"metacity"?  As a developer of an X client, that's not my favorite
WM....  metacity's idea of "well-behaved" is a bit more restrictive
than fdo's standards specify.

Agreed.

        Jan D.




reply via email to

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