Why X is not our ideal window system
- 格式:pdf
- 大小:94.19 KB
- 文档页数:37
Why X Is Not Our Ideal Window System
Hania GajewskaMark S. Manasse
DEC Systems Research Center
130 Lytton Ave. Palo Alto, CA 94301
Joel McCormack
DEC Western Research Laboratory100 Hamilton Ave. Palo Alto, CA 94301
Abstract
Extensive experience with X11 has convinced us that it represents a true advance in windowsystems, but that there are areas in which the X protocol is seriously deficient. The problems wedescribe fall into seven categories: coordinate system pitfalls, unavoidable race conditions,incomplete support for window managers, insufficient window viewability information, difficultieswith interactive mouse-tracking, pop-up and redisplay inefficiencies, and exceptional conditionhandling. We propose solutions for most of these problems. Some solutions could be easilyincorporated into the X11 protocol. Other proposals are too incompatible to be adopted, but arenonetheless included for the benefit of future window system designers.
1. Introduction
We come to praise X, not to bury it. Our combined experience with X11 encompasses the
design and implementation of several window managers, the design and implementation of the
Xtk toolkit intrinsics, ports of the X server, and protocol converters between X and other
windowing systems.
This experience has convinced us that X represents an advance in window systems: it is
network-transparent, it runs on a wide variety of graphics hardware, and it provides an efficient
connection to the capabilities of the underlying hardware. The same experience has also
convinced us that X is not a perfect window system. In this paper we limit ourselves to specific
problems with the X11 protocol [7]; we do not complain about the philosophy or imaging model
underlying X, nor do we bemoan the fact that X is not NeWS [3], NeXTstep [9], PostScript [1], or
PHIGS [6].
The problems we have encountered fall into seven categories:
1.The mixing of signed and unsigned coordinates causes problems both in theprotocol, where 3/4 of the coordinate space is often unrepresentable, and in the Clanguage bindings.
2.The X protocol is asynchronous for efficiency: in general, neither the server norclients wait for replies. But the protocol’s synchronization mechanisms areinsufficient, and leave many unavoidable race conditions.
3.The X protocol attempts to be policy-free and tries not to dictate any particular styleof window management. However, some desirable window manager featurescannot be implemented correctly, because there are window attributes which thewindow manager can neither fetch nor monitor.4.The X protocol provides visibility notification events so that clients can avoidcomputation of obscured window contents. However, this notification doesn’t workwell for nested windows or for windows with backing store.
5.None of the several ways that an application can implement interactive mousetracking of crosshairs, bounding boxes, etc., allow both efficiency and correctness.
6.Popping up menus and dialog boxes is slow because it requires too many roundtrips and generates too many events. Repainting when portions of a windowbecome visible is often slow.
7.Exceptional conditions are poorly handled. Faulty programs can freeze the server,and clients cannot kill queued requests if the user doesn’t want to wait for theserver to finish servicing them.
Although we define some X-specific vocabulary, we recommend keeping handy a glossary of X
terms, such as the one in Reference [7], while reading this paper.
2. Coordinate Representation
There are three problems in X11’s definition of coordinates: positions and sizes have different
physical representations, window borders introduce inconsistent views of a window’s coordinate
system, and the restriction that window sizes must be positive leads to unnecessary special
cases.
2.1. Signed positions vs. unsigned dimensions
The X11 protocol defines x and y coordinates as 16-bitsignedintegers, and width and height
dimensions as 16-bitunsignedintegers. A window, or any other rectangle, is defined by the
signed position of its north-west corner and the unsigned dimensions of its width and height. This
makes sense intuitively: the coordinates of the north-west corner of a window may be beyond the
boundaries of its parent window and thus negative, while width and height are generally thought
of as nonnegative values.
However, using all 16 bits to create a very tall window is pointless, because many positions in
the window cannot be addressed using signed 16-bit values. For example:
•All text strings must begin in the top half of the window.
•All rectangles and subwindows must have their upper left corner in the top half of thewindow.