6
6
<link href="doxygen.css" rel="stylesheet" type="text/css">
9
<!-- Generated by Doxygen 1.7.1 -->
10
<div class="navigation" id="top">
9
<!-- Generated by Doxygen 1.7.3 -->
10
<div id="navrow1" class="tabs">
12
11
<ul class="tablist">
13
<li><a href="main.html"><span>Main Page</span></a></li>
14
<li><a href="annotated.html"><span>Data Structures</span></a></li>
12
<li><a href="index.html"><span>Main Page</span></a></li>
13
<li><a href="annotated.html"><span>Data Structures</span></a></li>
15
14
<li class="current"><a href="files.html"><span>Files</span></a></li>
17
<div id="navrow2" class="tabs2">
19
18
<ul class="tablist">
20
<li><a href="files.html"><span>File List</span></a></li>
19
<li><a href="files.html"><span>File List</span></a></li>
21
20
<li><a href="globals.html"><span>Globals</span></a></li>
24
<div id="side-nav" class="ui-resizable side-nav-resizable">
26
<div id="nav-tree-contents">
29
<div id="splitbar" style="-moz-user-select:none;"
30
class="ui-resizable-handle">
33
<script type="text/javascript">
34
initNavTree('dmxprop_8c.html','');
36
<div id="doc-content">
25
37
<div class="header">
26
38
<div class="summary">
27
39
<a href="#define-members">Defines</a> |
31
43
<h1>dmxprop.c File Reference</h1> </div>
33
45
<div class="contents">
34
<code>#include "<a class="el" href="dmx_8h_source.html">dmx.h</a>"</code><br/>
46
<div class="textblock"><code>#include "<a class="el" href="dmx_8h_source.html">dmx.h</a>"</code><br/>
35
47
<code>#include "<a class="el" href="dmxprop_8h_source.html">dmxprop.h</a>"</code><br/>
36
48
<code>#include "<a class="el" href="dmxlog_8h_source.html">dmxlog.h</a>"</code><br/>
37
<table class="memberdecls">
49
</div><table class="memberdecls">
38
50
<tr><td colspan="2"><h2><a name="define-members"></a>
39
51
Defines</h2></td></tr>
40
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#aa5cb343dc33f4f7e12652ca1298a2ed8">DMX_ATOMNAME</a> "DMX_NAME"</td></tr>
41
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#a15bb16a878f80c6c8a7aec68aadf3444">DMX_IDENT</a> "Xdmx"</td></tr>
52
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#aa5cb343dc33f4f7e12652ca1298a2ed8">DMX_ATOMNAME</a>   "DMX_NAME"</td></tr>
53
<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#a15bb16a878f80c6c8a7aec68aadf3444">DMX_IDENT</a>   "Xdmx"</td></tr>
42
54
<tr><td colspan="2"><h2><a name="func-members"></a>
43
55
Functions</h2></td></tr>
44
<tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#a45eb0051c6d317735f2bf3b64ddc43e1">dmxPropertyErrorHandler</a> (Display *dpy, XErrorEvent *ev)</td></tr>
45
<tr><td class="memItemLeft" align="right" valign="top">static const unsigned char * </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#a5393154b62783c7ff9cb657acbf73cca">dmxPropertyIdentifier</a> (void)</td></tr>
46
<tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#a1353800f90c3a1f46d453caa71a41ab6">dmxPropertyIterate</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *start, void *(*f)(<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, void *), void *closure)</td></tr>
47
<tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#ab3eb5317487025c8ba44312f16d675f7">dmxPropertyCheckOtherServers</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, Atom atom)</td></tr>
48
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#a5e976d40a4af5d6cd99b69ead01d0dfb">dmxPropertyCheckOtherWindows</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, Atom atom)</td></tr>
49
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#a97a10defd6ace86dae6cf8c8765bf0de">dmxPropertyDisplay</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
50
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#ad0a551002589f00b2bac2b081283bc83">dmxPropertySameDisplay</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, const char *name)</td></tr>
51
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#aa97527eeaaf0744a67a5c5d188daf8c2">dmxPropertyWindow</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
56
<tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#a45eb0051c6d317735f2bf3b64ddc43e1">dmxPropertyErrorHandler</a> (Display *dpy, XErrorEvent *ev)</td></tr>
57
<tr><td class="memItemLeft" align="right" valign="top">static const unsigned char * </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#a5393154b62783c7ff9cb657acbf73cca">dmxPropertyIdentifier</a> (void)</td></tr>
58
<tr><td class="memItemLeft" align="right" valign="top">void * </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#a1353800f90c3a1f46d453caa71a41ab6">dmxPropertyIterate</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *start, void *(*f)(<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, void *), void *closure)</td></tr>
59
<tr><td class="memItemLeft" align="right" valign="top">static int </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#ab3eb5317487025c8ba44312f16d675f7">dmxPropertyCheckOtherServers</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, Atom atom)</td></tr>
60
<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#a5e976d40a4af5d6cd99b69ead01d0dfb">dmxPropertyCheckOtherWindows</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, Atom atom)</td></tr>
61
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#a97a10defd6ace86dae6cf8c8765bf0de">dmxPropertyDisplay</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
62
<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#ad0a551002589f00b2bac2b081283bc83">dmxPropertySameDisplay</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, const char *name)</td></tr>
63
<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#aa97527eeaaf0744a67a5c5d188daf8c2">dmxPropertyWindow</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
52
64
<tr><td colspan="2"><h2><a name="var-members"></a>
53
65
Variables</h2></td></tr>
54
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#ac49dfab9200d48f835ce64819c4fc878">display</a></td></tr>
66
<tr><td class="memItemLeft" align="right" valign="top">char * </td><td class="memItemRight" valign="bottom"><a class="el" href="dmxprop_8c.html#ac49dfab9200d48f835ce64819c4fc878">display</a></td></tr>
56
68
<hr/><a name="_details"></a><h2>Detailed Description</h2>
57
<p>It is possible for one of the DMX "backend displays" to actually be smaller than the dimensions of the backend X server. Therefore, it is possible for more than one of the DMX "backend displays" to be physically located on the same backend X server. This situation must be detected so that cursor motion can be handled in an expected fashion.</p>
69
<div class="textblock"><p>It is possible for one of the DMX "backend displays" to actually be smaller than the dimensions of the backend X server. Therefore, it is possible for more than one of the DMX "backend displays" to be physically located on the same backend X server. This situation must be detected so that cursor motion can be handled in an expected fashion.</p>
58
70
<p>We could analyze the names used for the DMX "backend displays" (e.g., the names passed to the -display command-line parameter), but there are many possible names for a single X display, and failing to detect sameness leads to very unexpected results. Therefore, whenever the DMX server opens a window on a backend X server, a property value is queried and set on that backend to detect when another window is already open on that server.</p>
59
71
<p>Further, it is possible that two different DMX server instantiations both have windows on the same physical backend X server. This case is also detected so that pointer input is not taken from that particular backend X server.</p>
60
72
<p>The routines in this file handle the property management. </p>
61
<hr/><h2>Define Documentation</h2>
73
</div><hr/><h2>Define Documentation</h2>
62
74
<a class="anchor" id="aa5cb343dc33f4f7e12652ca1298a2ed8"></a><!-- doxytag: member="dmxprop.c::DMX_ATOMNAME" ref="aa5cb343dc33f4f7e12652ca1298a2ed8" args="" -->
63
75
<div class="memitem">
64
76
<div class="memproto">
65
77
<table class="memname">
67
<td class="memname">#define DMX_ATOMNAME "DMX_NAME"</td>
79
<td class="memname">#define DMX_ATOMNAME   "DMX_NAME"</td>
100
112
<td class="memname">static int dmxPropertyCheckOtherServers </td>
102
<td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> * </td>
103
<td class="paramname"> <em>dmxScreen</em>, </td>
114
<td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> * </td>
115
<td class="paramname"><em>dmxScreen</em>, </td>
106
118
<td class="paramkey"></td>
108
<td class="paramtype">Atom </td>
109
<td class="paramname"> <em>atom</em></td><td> </td>
120
<td class="paramtype">Atom </td>
121
<td class="paramname"><em>atom</em> </td>
114
<td></td><td></td><td><code> [static]</code></td>
126
<td></td><td><code> [static]</code></td>
132
144
<td class="memname">static <a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a>* dmxPropertyCheckOtherWindows </td>
134
<td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> * </td>
135
<td class="paramname"> <em>dmxScreen</em>, </td>
146
<td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> * </td>
147
<td class="paramname"><em>dmxScreen</em>, </td>
138
150
<td class="paramkey"></td>
140
<td class="paramtype">Atom </td>
141
<td class="paramname"> <em>atom</em></td><td> </td>
152
<td class="paramtype">Atom </td>
153
<td class="paramname"><em>atom</em> </td>
146
<td></td><td></td><td><code> [static]</code></td>
158
<td></td><td><code> [static]</code></td>
187
198
<td class="memname">static int dmxPropertyErrorHandler </td>
189
<td class="paramtype">Display * </td>
190
<td class="paramname"> <em>dpy</em>, </td>
200
<td class="paramtype">Display * </td>
201
<td class="paramname"><em>dpy</em>, </td>
193
204
<td class="paramkey"></td>
195
<td class="paramtype">XErrorEvent * </td>
196
<td class="paramname"> <em>ev</em></td><td> </td>
206
<td class="paramtype">XErrorEvent * </td>
207
<td class="paramname"><em>ev</em> </td>
201
<td></td><td></td><td><code> [static]</code></td>
212
<td></td><td><code> [static]</code></td>
238
248
<td class="memname">void* dmxPropertyIterate </td>
240
<td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> * </td>
241
<td class="paramname"> <em>start</em>, </td>
244
<td class="paramkey"></td>
246
<td class="paramtype">void *(*)(<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, void *) </td>
247
<td class="paramname"> <em>f</em>, </td>
250
<td class="paramkey"></td>
252
<td class="paramtype">void * </td>
253
<td class="paramname"> <em>closure</em></td><td> </td>
250
<td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> * </td>
251
<td class="paramname"><em>start</em>, </td>
254
<td class="paramkey"></td>
256
<td class="paramtype">void *(*)(<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, void *) </td>
257
<td class="paramname"><em>f</em>, </td>
260
<td class="paramkey"></td>
262
<td class="paramtype">void * </td>
263
<td class="paramname"><em>closure</em> </td>
258
<td></td><td></td><td></td>