|
|
1.1 root 1: .NH
2: Opening and Closing the Display
3: .XS
4: Initializing the Window System
5: .XE
6: .PP
7: The window system is a network service.
8: You must connect to the X server before you can perform any operations.
9: There is one X server for each hardware display.
10: This library interface presumes you are working with a single display at
11: one time, and
12: therefore has an idea of the current display you are using.
13: .FD
14: .IN "Definitions" "XOpenDisplay"
15: .IN "XOpenDisplay"
16: Display *XOpenDisplay (name)
17: char *name;
18: .FN
19: This function takes the \fIname\fP of the server, and opens a connection to the
20: server for the display hardware.
21: .IN "DISPLAY Environment Variable"
22: .IN "Environment" "DISPLAY"
23: If the display name string is NULL, it uses the environment variable DISPLAY
24: to determine which display and which communications domain to use.
25: The
26: display string or DISPLAY environment variable should be in the format
27: ``hostname:number'', where ``hostname'' is the name of a machine, and
28: ``number'' is the number of the display on that machine.
29: For example, ``mit-athena:3'' would be display 3 on the machine
30: ``mit-athena''.
31: .IN "Protocol" "TCP"
32: .IN "Protocol" "DECnet"
33: XOpenDisplay connects through TCP, Unix or DECnet streams to the server.
34: If the ``hostname'' is ``unix'', Unix domain IPC is used.
35: If there is only a single ``:'' between hostname and display number,
36: TCP streams are used.
37: If hostname and display number are seperated by a ``::'', DECnet streams
38: will be used.
39: Note that you must build all software for DECnet if you want to use DECnet.
40: A single X server will accept both TCP and DECnet connections if it has been
41: built for DECnet.
42: .PP
43: .IN "Definitions" "Display"
44: .IN "Data Structures" "Display"
45: If the call is successful, it returns a pointer to a Display structure,
46: .IN "File" "<X/Xlib.h>"
47: which is defined in \fI<X/Xlib.h>\fP.
48: .PP
49: The procedure returns NULL on failure.
50: .PP
51: There are a number of useful macros and functions
52: which return information out of the
53: Display structure.
54: .IN "Unix System Call" "select"
55: Some programs may find it useful to perform select(2) on the file descriptor
56: .IN "Macro" "dpyno()"
57: returned using the \fIdpyno()\fP macro,
58: which returns the file descriptor of the connection.
59: This comes up most often in applications which drive more than one
60: display at a time.
61: The length of the input queue on the display connection is
62: .IN "Macro" "QLength()"
63: returned using the \fIQLength()\fP macro.
64: This may be useful to make sure you have processed all events
65: already read in before performing a select again.
66: .IN "Macro" "DisplayType()"
67: .IN "Macro" "DisplayPlanes()"
68: .IN "Macro" "DisplayCells()"
69: The \fIDisplayType()\fP, \fIDisplayPlanes()\fP, \fIDisplayCells()\fP and
70: .IN "Macro" "ProtocolVersion()"
71: \fIProtocolVersion()\fP macros
72: return the appropriate information out of the current display structure.
73: .IN "Window" "RootWindow"
74: .IN "RootWindow"
75: .IN "Macro" "RootWindow"
76: .PP
77: The \fIRootWindow\fP variable (actually a reference to the current display
78: structure) is often useful in other calls, as many subroutines take a
79: parent window as an argument.
80: .PP
81: .IN "Macro" "DisplayType()"
82: There may be different performance tradeoffs a client program
83: may wish to make depending on the display type.
84: The \fIDisplayType()\fP macro returns the type of the device, as
85: .IN "File" "<X/X.h>"
86: defined in <X/X.h>.
87: Its use is discouraged; programs should be prepared to work on different
88: displays of various sizes and characteristics.
89: .PP
90: .IN "Macro" "DisplayName()"
91: The \fIDisplayName()\fP macro returns the string that was passed to
92: \fIXOpenDisplay\fP
93: when the current display was opened (or, if that was NULL, the value of
94: the DISPLAY environment variable when the current display was opened).
95: .IN "Unix System Call" "fork"
96: This is especially useful to applications which \fIfork()\fP, and want to open
97: a new connection to the same display from the child process.
98: .PP
99: .IN "BlackPixmap"
100: .IN "WhitePixmap"
101: .IN "Pixmap"
102: .IN "Macro" "BlackPixmap"
103: .IN "Macro" "WhitePixmap"
104: \fIXOpenDisplay\fP
105: automatically creates a solid black and a solid white pixmap,
106: suitable for use as a background or border tile.
107: You can refer to these
108: by using the \fIBlackPixmap\fP and \fIWhitePixmap\fP macros,
109: which refer to the
110: current display structure.
111: .PP
112: .IN "DisplayWidth"
113: .IN "DisplayHeight"
114: .IN "Definitions" "DisplayWidth"
115: .IN "Definitions" "DisplayHeight"
116: The size of the current display's root window can be determined with the
117: \fIDisplayWidth()\fP and \fIDisplayHeight()\fP functions,
118: which return integers describing the size of the screen in pixels.
119: .PP
120: .IN "Data Structures" "Display"
121: Other elements of the \fIDisplay\fP structure are private to
122: the X library and must not be used.
123: .FD
124: .IN "XSetDisplay"
125: .IN "Definitions" "XSetDisplay"
126: XSetDisplay(display)
127: Display *display;
128: .FN
129: .PP
130: This procedure sets the current \fIdisplay\fP
131: connection which you are talking to.
132: It is used to switch between displays.
133: .FD
134: .IN "XCloseDisplay"
135: .IN "Definitions" "XCloseDisplay"
136: XCloseDisplay (display)
137: Display *display;
138: .FN
139: .LP
140: \fIXCloseDisplay\fP closes the connection associated with the specified
141: \fIdisplay\fP.
142: All windows or other resources that the caller has created on this display
143: server are destroyed; they should never be referenced again.
144: Any output events
145: that have been buffered but not yet sent are discarded.
146: .PP
147: The effect of \fIXCloseDisplay\fP is automatically achieved if a process exits.
148: For this reason, most clients
149: will not need to call \fIXCloseDisplay\fP.
150: .PP
151: .IN "Resource ID"
152: If a client has created Window, Font, Bitmap, Pixmap, or Cursor
153: resource ID's with this display server, they must not be used after calling
154: .IN "XCloseDisplay"
155: XCloseDisplay.
156: .PP
157: .IN "Unix System Call" "fork"
158: A special note on \fIfork()\fP: if a program has a connection to a display
159: server open and then
160: calls \fIfork()\fP you must take typical
161: UNIX care when dealing with the
162: connection to the window system.
163: Do not forget to flush the output buffer before waiting on the child
164: process, and do not forget to make sure that you have processed all input
165: events before forking or exiting in the child, or your programs
166: may perform the operations twice.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.