aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/dmx/doc/html/dmxcursor_8c.html
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/hw/dmx/doc/html/dmxcursor_8c.html')
-rw-r--r--xorg-server/hw/dmx/doc/html/dmxcursor_8c.html1693
1 files changed, 1340 insertions, 353 deletions
diff --git a/xorg-server/hw/dmx/doc/html/dmxcursor_8c.html b/xorg-server/hw/dmx/doc/html/dmxcursor_8c.html
index 744bc3547..f6abb7f83 100644
--- a/xorg-server/hw/dmx/doc/html/dmxcursor_8c.html
+++ b/xorg-server/hw/dmx/doc/html/dmxcursor_8c.html
@@ -6,457 +6,1444 @@
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head>
<body>
-<!-- Generated by Doxygen 1.3.4 -->
-<div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
-<h1>dmxcursor.c File Reference</h1><code>#include "<a class="el" href="dmx_8h-source.html">dmx.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxsync_8h-source.html">dmxsync.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxcursor_8h-source.html">dmxcursor.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxprop_8h-source.html">dmxprop.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxinput_8h-source.html">dmxinput.h</a>"</code><br>
-<code>#include "mipointer.h"</code><br>
-<code>#include "windowstr.h"</code><br>
-<code>#include "globals.h"</code><br>
-<code>#include "cursorstr.h"</code><br>
-<code>#include "dixevents.h"</code><br>
-<table border=0 cellpadding=0 cellspacing=0>
-<tr><td></td></tr>
-<tr><td colspan=2><br><h2>Functions</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a12">dmxCursorNoMulti</a> (void)</td></tr>
+<!-- Generated by Doxygen 1.6.1 -->
+<div class="navigation" id="top">
+ <div class="tabs">
+ <ul>
+ <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+ <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
+ <li class="current"><a href="files.html"><span>Files</span></a></li>
+ </ul>
+ </div>
+ <div class="tabs">
+ <ul>
+ <li><a href="files.html"><span>File&nbsp;List</span></a></li>
+ <li><a href="globals.html"><span>Globals</span></a></li>
+ </ul>
+ </div>
+</div>
+<div class="contents">
+<h1>dmxcursor.c File Reference</h1><code>#include &quot;<a class="el" href="dmx_8h_source.html">dmx.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="dmxsync_8h_source.html">dmxsync.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="dmxcursor_8h_source.html">dmxcursor.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="dmxlog_8h_source.html">dmxlog.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="dmxprop_8h_source.html">dmxprop.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="dmxinput_8h_source.html">dmxinput.h</a>&quot;</code><br/>
+<code>#include &quot;mipointer.h&quot;</code><br/>
+<code>#include &quot;windowstr.h&quot;</code><br/>
+<code>#include &quot;globals.h&quot;</code><br/>
+<code>#include &quot;cursorstr.h&quot;</code><br/>
+<code>#include &quot;dixevents.h&quot;</code><br/>
+<code>#include &quot;inputstr.h&quot;</code><br/>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Defines</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a757d7359cf12591268a62c0974178079">DMX_CURSOR_DEBUG</a>&nbsp;&nbsp;&nbsp;0</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#adf6865b0bc7ad370c94e3b8682262c13">DMXDBG0</a>(f)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a302a2c9f84249eee79404eb601d085ab">DMXDBG1</a>(f, a)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a1056d63499cee76ebe297c19637f2b79">DMXDBG2</a>(f, a, b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a6c6714b899194081b94edb722ca1c4bc">DMXDBG3</a>(f, a, b, c)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a8ffd07ee80777c394a6ff32d1021347d">DMXDBG4</a>(f, a, b, c, d)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a753eef37715b6379d7d65e34a23d2e03">DMXDBG5</a>(f, a, b, c, d, e)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#af703e1a00a515e2507f7d2a354429a24">DMXDBG6</a>(f, a, b, c, d, e, g)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">#define&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#ab45c7f6cc47b2c786215ca0276d37d91">DMXDBG7</a>(f, a, b, c, d, e, g, h)</td></tr>
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a709e3d4a4e44e17fed3de1fcb0d42b20">dmxCursorNoMulti</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static Bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a1c7f5d94ee32f85ec027c53b881fc697">dmxCursorOffScreen</a> (ScreenPtr *ppScreen, int *x, int *y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a2d0757fa7119492da7fe26901dab8571">dmxCrossScreen</a> (ScreenPtr pScreen, Bool entering)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#af80076061e55521b62a7cfd8e66bf3e6">dmxWarpCursor</a> (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#aaf8a9878f12b6653247fc27d960beccf">dmxSLCreate</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a565fbb8c3754a14c1aed13b741705b91">dmxSLFree</a> (int *list)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#ab4dcb11cad339e72d843356841ffd203">dmxSLFindNext</a> (int *list)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a97efbe7e0a872da9de0be49da214c210">dmxTryComputeScreenOrigins</a> (int *screensLeft)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#aa5a4c58dbde29584153fbc43a1ac6e26">dmxComputeScreenOrigins</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a9bdb6eff5f7f86fd071091c5a55cee7c">dmxReInitOrigins</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#af3fb4b2c2d3cc318c88fbc6658893360">dmxInitOrigins</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#adaf3455cdd3f54d22285e5a0fa99fddb">dmxOnScreen</a> (int x, int y, <a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a5612d5f5b97d54fa9eb73540eaeba4f3">dmxDoesOverlap</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *a, <a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *b)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a52398858fc93988512050543967652fe">dmxPrintOverlap</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, void *closure)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a28c6651bdff6f7fc01292548659a6eb4">dmxIterateOverlap</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>
+<tr><td class="memItemLeft" align="right" valign="top">static void *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a3beed7bb0f6999879936b2f47751d125">dmxTestSameDisplay</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *a, void *closure)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a77c74a33de88fae6cf0de8b755a5c411">dmxInitOverlap</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a84c92b801c5802879047e74401f62e94">dmxBECreateCursor</a> (ScreenPtr pScreen, CursorPtr pCursor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static Bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#ac722828c4781d1a44d8b04955472a134">_dmxRealizeCursor</a> (ScreenPtr pScreen, CursorPtr pCursor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">Bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#ae0e94924bf5a69c2b26e9d0442befadd">dmxBEFreeCursor</a> (ScreenPtr pScreen, CursorPtr pCursor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static Bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#aa2ac82b5666d162e873c7f0c88ec96f6">_dmxUnrealizeCursor</a> (ScreenPtr pScreen, CursorPtr pCursor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#aa208a04334d595e3507287bacffdae80">_dmxMoveCursor</a> (ScreenPtr pScreen, int x, int y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a6fd26c7c7811ff77fc3c6e84b82d57d5">_dmxSetCursor</a> (ScreenPtr pScreen, CursorPtr pCursor, int x, int y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static Bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#ad51761f218c643ebe7f010538e9c745f">dmxRealizeCursor</a> (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static Bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a81c0223355350e6d897d4d7306381130">dmxUnrealizeCursor</a> (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static CursorPtr&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#ac7dc34eb6db6964e4330acc4d0e2badc">dmxFindCursor</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *start)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a21820e2001f763e3cfc924a1d602bb62">dmxMoveCursor</a> (DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a4cbf6be156525a669ae883465f6458c2">dmxSetCursor</a> (DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, int x, int y)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#ad67e1086ef62ecfa33549d74cd89a379">dmxHideCursor</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a6a381bffb099457e7c26a2312cf968a6">dmxCheckCursor</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static Bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a214b710621ed0279d6321375f3512a87">dmxDeviceCursorInitialize</a> (DeviceIntPtr pDev, ScreenPtr pScr)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#af291298e4f52875e45d7097a223a8c0b">dmxDeviceCursorCleanup</a> (DeviceIntPtr pDev, ScreenPtr pScr)</td></tr>
+<tr><td colspan="2"><h2>Variables</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a4d792c0cb9ce0c21787d3cd88d774fa6">dmxCursorDoMultiCursors</a> = 1</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">miPointerScreenFuncRec&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#aacf8d4857dd965073f62f10a53edcaa3">dmxPointerCursorFuncs</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">miPointerSpriteFuncRec&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxcursor_8c.html#a7bf2f59a6c5d381aea975cd78dd1f9dc">dmxPointerSpriteFuncs</a></td></tr>
+</table>
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<p>This file contains code than supports cursor movement, including the code that initializes and reinitializes the screen positions and computes screen overlap.</p>
+<p>"This code is based very closely on the XFree86 equivalent
+ (xfree86/common/xf86Cursor.c)." --David Dawes.</p>
+<p>"This code was then extensively re-written, as explained here." --Rik Faith</p>
+<p>The code in xf86Cursor.c used edge lists to implement the CursorOffScreen function. The edge list computation was complex (especially in the face of arbitrarily overlapping screens) compared with the speed savings in the CursorOffScreen function. The new implementation has erred on the side of correctness, readability, and maintainability over efficiency. For the common (non-edge) case, the dmxCursorOffScreen function does avoid a loop over all the screens. When the cursor has left the screen, all the screens are searched, and the first screen (in dmxScreens order) containing the cursor will be returned. If run-time profiling shows that this routing is a performance bottle-neck, then an edge list may have to be reimplemented. An edge list algorithm is O(edges) whereas the new algorithm is O(dmxNumScreens). Since edges is usually 1-3 and dmxNumScreens may be 30-60 for large backend walls, this trade off may be compelling.</p>
+<p>The xf86InitOrigins routine uses bit masks during the computation and is therefore limited to the length of a word (e.g., 32 or 64 bits) screens. Because Xdmx is expected to be used with a large number of backend displays, this limitation was removed. The new implementation has erred on the side of readability over efficiency, using the dmxSL* routines to manage a screen list instead of a bitmap, and a function call to decrease the length of the main routine. Both algorithms are of the same order, and both are called only at server generation time, so trading clarity and long-term maintainability for efficiency does not seem justified in this case. </p>
+<hr/><h2>Define Documentation</h2>
+<a class="anchor" id="a757d7359cf12591268a62c0974178079"></a><!-- doxytag: member="dmxcursor.c::DMX_CURSOR_DEBUG" ref="a757d7359cf12591268a62c0974178079" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define DMX_CURSOR_DEBUG&nbsp;&nbsp;&nbsp;0</td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a21">dmxReInitOrigins</a> (void)</td></tr>
+</div>
+</div>
+<a class="anchor" id="adf6865b0bc7ad370c94e3b8682262c13"></a><!-- doxytag: member="dmxcursor.c::DMXDBG0" ref="adf6865b0bc7ad370c94e3b8682262c13" args="(f)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define DMXDBG0</td>
+ <td>(</td>
+ <td class="paramtype">f&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a22">dmxInitOrigins</a> (void)</td></tr>
+<p>Referenced by <a class="el" href="dmxbackend_8c_source.html#l00240">dmxBackendUpdatePosition()</a>, <a class="el" href="dmxcommon_8c_source.html#l00621">dmxCommonRestoreState()</a>, <a class="el" href="dmxcommon_8c_source.html#l00567">dmxCommonSaveState()</a>, <a class="el" href="dmxconsole_8c_source.html#l00986">dmxConsoleCapture()</a>, and <a class="el" href="dmxconsole_8c_source.html#l01015">dmxConsoleUncapture()</a>.</p>
-<tr><td class="memItemLeft" nowrap align=right valign=top>int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a23">dmxOnScreen</a> (int x, int y, <a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
+</div>
+</div>
+<a class="anchor" id="a302a2c9f84249eee79404eb601d085ab"></a><!-- doxytag: member="dmxcursor.c::DMXDBG1" ref="a302a2c9f84249eee79404eb601d085ab" args="(f, a)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define DMXDBG1</td>
+ <td>(</td>
+ <td class="paramtype">f, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">a&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a28">dmxInitOverlap</a> (void)</td></tr>
+<p>Referenced by <a class="el" href="dmxbackend_8c_source.html#l00535">dmxBackendLateReInit()</a>.</p>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a29">dmxBECreateCursor</a> (ScreenPtr pScreen, CursorPtr pCursor)</td></tr>
+</div>
+</div>
+<a class="anchor" id="a1056d63499cee76ebe297c19637f2b79"></a><!-- doxytag: member="dmxcursor.c::DMXDBG2" ref="a1056d63499cee76ebe297c19637f2b79" args="(f, a, b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define DMXDBG2</td>
+ <td>(</td>
+ <td class="paramtype">f, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">a, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">b&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
-<tr><td class="memItemLeft" nowrap align=right valign=top>Bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a31">dmxBEFreeCursor</a> (ScreenPtr pScreen, CursorPtr pCursor)</td></tr>
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00659">_dmxRealizeCursor()</a>, <a class="el" href="dmxcursor_8c_source.html#l00695">_dmxUnrealizeCursor()</a>, <a class="el" href="dmxbackend_8c_source.html#l00335">dmxBackendCollectEvents()</a>, <a class="el" href="dmxbackend_8c_source.html#l00240">dmxBackendUpdatePosition()</a>, <a class="el" href="dmxcursor_8c_source.html#l00931">dmxCheckCursor()</a>, <a class="el" href="dmxevents_8c_source.html#l00743">dmxCheckSpecialKeys()</a>, <a class="el" href="dmxconsole_8c_source.html#l00458">dmxConsoleCollectEvents()</a>, <a class="el" href="dmxconsole_8c_source.html#l00306">dmxConsoleUpdateFineCursor()</a>, <a class="el" href="dmxconsole_8c_source.html#l00418">dmxConsoleUpdatePosition()</a>, <a class="el" href="dmxevents_8c_source.html#l00659">dmxEnqueue()</a>, and <a class="el" href="dmxevents_8c_source.html#l00580">dmxKeyCodeToKeySym()</a>.</p>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a38">dmxMoveCursor</a> (ScreenPtr pScreen, int x, int y)</td></tr>
+</div>
+</div>
+<a class="anchor" id="a6c6714b899194081b94edb722ca1c4bc"></a><!-- doxytag: member="dmxcursor.c::DMXDBG3" ref="a6c6714b899194081b94edb722ca1c4bc" args="(f, a, b, c)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define DMXDBG3</td>
+ <td>(</td>
+ <td class="paramtype">f, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">a, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">b, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">c&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a40">dmxHideCursor</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
+<p>Referenced by <a class="el" href="dmxevents_8c_source.html#l00098">dmxCheckFunctionKeys()</a>, <a class="el" href="dmxconsole_8c_source.html#l00986">dmxConsoleCapture()</a>, <a class="el" href="dmxevents_8c_source.html#l00604">dmxKeySymToKeyCode()</a>, <a class="el" href="dmxcursor_8c_source.html#l00817">dmxMoveCursor()</a>, and <a class="el" href="dmxcursor_8c_source.html#l00182">dmxWarpCursor()</a>.</p>
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a41">dmxCheckCursor</a> (void)</td></tr>
+</div>
+</div>
+<a class="anchor" id="a8ffd07ee80777c394a6ff32d1021347d"></a><!-- doxytag: member="dmxcursor.c::DMXDBG4" ref="a8ffd07ee80777c394a6ff32d1021347d" args="(f, a, b, c, d)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define DMXDBG4</td>
+ <td>(</td>
+ <td class="paramtype">f, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">a, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">b, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">c, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">d&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
-<tr><td colspan=2><br><h2>Variables</h2></td></tr>
-<tr><td class="memItemLeft" nowrap align=right valign=top>miPointerScreenFuncRec&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a10">dmxPointerCursorFuncs</a></td></tr>
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00729">_dmxSetCursor()</a>, <a class="el" href="dmxbackend_8c_source.html#l00335">dmxBackendCollectEvents()</a>, <a class="el" href="dmxbackend_8c_source.html#l00468">dmxBackendProcessInput()</a>, <a class="el" href="dmxconsole_8c_source.html#l00458">dmxConsoleCollectEvents()</a>, <a class="el" href="dmxconsole_8c_source.html#l00306">dmxConsoleUpdateFineCursor()</a>, <a class="el" href="dmxevents_8c_source.html#l00194">dmxCoreMotion()</a>, and <a class="el" href="dmxconsole_8c_source.html#l00963">dmxDump()</a>.</p>
-<tr><td class="memItemLeft" nowrap align=right valign=top>miPointerSpriteFuncRec&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxcursor_8c.html#a11">dmxPointerSpriteFuncs</a></td></tr>
+</div>
+</div>
+<a class="anchor" id="a753eef37715b6379d7d65e34a23d2e03"></a><!-- doxytag: member="dmxcursor.c::DMXDBG5" ref="a753eef37715b6379d7d65e34a23d2e03" args="(f, a, b, c, d, e)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define DMXDBG5</td>
+ <td>(</td>
+ <td class="paramtype">f, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">a, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">b, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">c, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">d, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">e&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
-</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-This file contains code than supports cursor movement, including the code that initializes and reinitializes the screen positions and computes screen overlap.<p>
-"This code is based very closely on the XFree86 equivalent (xfree86/common/xf86Cursor.c)." --David Dawes.<p>
-"This code was then extensively re-written, as explained here." --Rik Faith<p>
-The code in xf86Cursor.c used edge lists to implement the CursorOffScreen function. The edge list computation was complex (especially in the face of arbitrarily overlapping screens) compared with the speed savings in the CursorOffScreen function. The new implementation has erred on the side of correctness, readability, and maintainability over efficiency. For the common (non-edge) case, the dmxCursorOffScreen function does avoid a loop over all the screens. When the cursor has left the screen, all the screens are searched, and the first screen (in dmxScreens order) containing the cursor will be returned. If run-time profiling shows that this routing is a performance bottle-neck, then an edge list may have to be reimplemented. An edge list algorithm is O(edges) whereas the new algorithm is O(dmxNumScreens). Since edges is usually 1-3 and dmxNumScreens may be 30-60 for large backend walls, this trade off may be compelling.<p>
-The xf86InitOrigins routine uses bit masks during the computation and is therefore limited to the length of a word (e.g., 32 or 64 bits) screens. Because Xdmx is expected to be used with a large number of backend displays, this limitation was removed. The new implementation has erred on the side of readability over efficiency, using the dmxSL* routines to manage a screen list instead of a bitmap, and a function call to decrease the length of the main routine. Both algorithms are of the same order, and both are called only at server generation time, so trading clarity and long-term maintainability for efficiency does not seem justified in this case.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a29" doxytag="dmxcursor.c::dmxBECreateCursor" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00711">_dmxMoveCursor()</a>, <a class="el" href="dmxbackend_8c_source.html#l00335">dmxBackendCollectEvents()</a>, <a class="el" href="dmxbackend_8c_source.html#l00240">dmxBackendUpdatePosition()</a>, <a class="el" href="dmxconsole_8c_source.html#l00458">dmxConsoleCollectEvents()</a>, <a class="el" href="dmxevents_8c_source.html#l00194">dmxCoreMotion()</a>, and <a class="el" href="dmxcursor_8c_source.html#l00864">dmxSetCursor()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af703e1a00a515e2507f7d2a354429a24"></a><!-- doxytag: member="dmxcursor.c::DMXDBG6" ref="af703e1a00a515e2507f7d2a354429a24" args="(f, a, b, c, d, e, g)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define DMXDBG6</td>
+ <td>(</td>
+ <td class="paramtype">f, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">a, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">b, </td>
+ </tr>
<tr>
- <td class="md" nowrap valign="top"> void dmxBECreateCursor </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">c, </td>
</tr>
<tr>
+ <td class="paramkey"></td>
<td></td>
+ <td class="paramtype">d, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
<td></td>
- <td class="md" nowrap>CursorPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pCursor</em></td>
+ <td class="paramtype">e, </td>
</tr>
<tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">g&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
<td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
</tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Referenced by <a class="el" href="dmxbackend_8c_source.html#l00468">dmxBackendProcessInput()</a>, <a class="el" href="dmxconsole_8c_source.html#l00458">dmxConsoleCollectEvents()</a>, <a class="el" href="dmxconsole_8c_source.html#l00385">dmxConsoleMoveAbsolute()</a>, <a class="el" href="dmxconsole_8c_source.html#l00306">dmxConsoleUpdateFineCursor()</a>, <a class="el" href="dmxconsole_8c_source.html#l00418">dmxConsoleUpdatePosition()</a>, <a class="el" href="dmxevents_8c_source.html#l00194">dmxCoreMotion()</a>, and <a class="el" href="dmxcursor_8c_source.html#l00515">dmxInitOverlap()</a>.</p>
+</div>
+</div>
+<a class="anchor" id="ab45c7f6cc47b2c786215ca0276d37d91"></a><!-- doxytag: member="dmxcursor.c::DMXDBG7" ref="ab45c7f6cc47b2c786215ca0276d37d91" args="(f, a, b, c, d, e, g, h)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">#define DMXDBG7</td>
+ <td>(</td>
+ <td class="paramtype">f, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">a, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">b, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">c, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">d, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">e, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">g, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">h&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
</table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Create <em>pCursor</em> on the back-end associated with <em>pScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a31" doxytag="dmxcursor.c::dmxBEFreeCursor" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
+</div>
+<div class="memdoc">
+
+<p>Referenced by <a class="el" href="dmxbackend_8c_source.html#l00335">dmxBackendCollectEvents()</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="aa208a04334d595e3507287bacffdae80"></a><!-- doxytag: member="dmxcursor.c::_dmxMoveCursor" ref="aa208a04334d595e3507287bacffdae80" args="(ScreenPtr pScreen, int x, int y)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
<tr>
- <td class="md" nowrap valign="top"> Bool dmxBEFreeCursor </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
+ <td class="memname">static void _dmxMoveCursor </td>
+ <td>(</td>
+ <td class="paramtype">ScreenPtr&nbsp;</td>
+ <td class="paramname"> <em>pScreen</em>, </td>
</tr>
<tr>
+ <td class="paramkey"></td>
<td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
<td></td>
- <td class="md" nowrap>CursorPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pCursor</em></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>y</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
</tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>References <a class="el" href="dmx_8h_source.html#l00099">_DMXScreenInfo::beDisplay</a>, <a class="el" href="dmxcursor_8c_source.html#l00110">DMXDBG5</a>, <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>, <a class="el" href="dmxsync_8c_source.html#l00150">dmxSync()</a>, <a class="el" href="dmx_8h_source.html#l00142">_DMXScreenInfo::rootX</a>, <a class="el" href="dmx_8h_source.html#l00143">_DMXScreenInfo::rootY</a>, and <a class="el" href="dmx_8h_source.html#l00125">_DMXScreenInfo::scrnWin</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00729">_dmxSetCursor()</a>, and <a class="el" href="dmxcursor_8c_source.html#l00817">dmxMoveCursor()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac722828c4781d1a44d8b04955472a134"></a><!-- doxytag: member="dmxcursor.c::_dmxRealizeCursor" ref="ac722828c4781d1a44d8b04955472a134" args="(ScreenPtr pScreen, CursorPtr pCursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static Bool _dmxRealizeCursor </td>
+ <td>(</td>
+ <td class="paramtype">ScreenPtr&nbsp;</td>
+ <td class="paramname"> <em>pScreen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">CursorPtr&nbsp;</td>
+ <td class="paramname"> <em>pCursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
</table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Free <em>pCursor</em> on the back-end associated with <em>pScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a41" doxytag="dmxcursor.c::dmxCheckCursor" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
+</div>
+<div class="memdoc">
+
+<p>References <a class="el" href="dmx_8h_source.html#l00099">_DMXScreenInfo::beDisplay</a>, <a class="el" href="dmxcursor_8h_source.html#l00046">_dmxCursorPriv::cursor</a>, <a class="el" href="dmxcursor_8h_source.html#l00066">DMX_GET_CURSOR_PRIV</a>, <a class="el" href="dmxcursor_8h_source.html#l00069">DMX_SET_CURSOR_PRIV</a>, <a class="el" href="dmxcursor_8c_source.html#l00578">dmxBECreateCursor()</a>, <a class="el" href="dmxcursor_8c_source.html#l00107">DMXDBG2</a>, and <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00931">dmxCheckCursor()</a>, <a class="el" href="dmxcursor_8c_source.html#l00817">dmxMoveCursor()</a>, and <a class="el" href="dmxcursor_8c_source.html#l00757">dmxRealizeCursor()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6fd26c7c7811ff77fc3c6e84b82d57d5"></a><!-- doxytag: member="dmxcursor.c::_dmxSetCursor" ref="a6fd26c7c7811ff77fc3c6e84b82d57d5" args="(ScreenPtr pScreen, CursorPtr pCursor, int x, int y)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void _dmxSetCursor </td>
+ <td>(</td>
+ <td class="paramtype">ScreenPtr&nbsp;</td>
+ <td class="paramname"> <em>pScreen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">CursorPtr&nbsp;</td>
+ <td class="paramname"> <em>pCursor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>x</em>, </td>
+ </tr>
<tr>
- <td class="md" nowrap valign="top"> void dmxCheckCursor </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>y</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
</tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>References <a class="el" href="dmxcursor_8c_source.html#l00711">_dmxMoveCursor()</a>, <a class="el" href="dmx_8h_source.html#l00099">_DMXScreenInfo::beDisplay</a>, <a class="el" href="dmx_8h_source.html#l00163">_DMXScreenInfo::curCursor</a>, <a class="el" href="dmx_8h_source.html#l00166">_DMXScreenInfo::cursor</a>, <a class="el" href="dmxcursor_8h_source.html#l00046">_dmxCursorPriv::cursor</a>, <a class="el" href="dmx_8h_source.html#l00167">_DMXScreenInfo::cursorVisible</a>, <a class="el" href="dmxcursor_8h_source.html#l00066">DMX_GET_CURSOR_PRIV</a>, <a class="el" href="dmxcursor_8c_source.html#l00109">DMXDBG4</a>, <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>, <a class="el" href="dmxsync_8c_source.html#l00150">dmxSync()</a>, <a class="el" href="dmx_8h_source.html#l00162">_DMXScreenInfo::noCursor</a>, and <a class="el" href="dmx_8h_source.html#l00125">_DMXScreenInfo::scrnWin</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00931">dmxCheckCursor()</a>, <a class="el" href="dmxcursor_8c_source.html#l00920">dmxHideCursor()</a>, <a class="el" href="dmxcursor_8c_source.html#l00817">dmxMoveCursor()</a>, and <a class="el" href="dmxcursor_8c_source.html#l00864">dmxSetCursor()</a>.</p>
+</div>
+</div>
+<a class="anchor" id="aa2ac82b5666d162e873c7f0c88ec96f6"></a><!-- doxytag: member="dmxcursor.c::_dmxUnrealizeCursor" ref="aa2ac82b5666d162e873c7f0c88ec96f6" args="(ScreenPtr pScreen, CursorPtr pCursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static Bool _dmxUnrealizeCursor </td>
+ <td>(</td>
+ <td class="paramtype">ScreenPtr&nbsp;</td>
+ <td class="paramname"> <em>pScreen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">CursorPtr&nbsp;</td>
+ <td class="paramname"> <em>pCursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
</table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine is called during reconfiguration to make sure the cursor is visible. </td>
- </tr>
-</table>
-<a class="anchor" name="a12" doxytag="dmxcursor.c::dmxCursorNoMulti" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
+</div>
+<div class="memdoc">
+
+<p>References <a class="el" href="dmx_8h_source.html#l00099">_DMXScreenInfo::beDisplay</a>, <a class="el" href="dmxcursor_8h_source.html#l00066">DMX_GET_CURSOR_PRIV</a>, <a class="el" href="dmxcursor_8h_source.html#l00069">DMX_SET_CURSOR_PRIV</a>, <a class="el" href="dmxcursor_8c_source.html#l00681">dmxBEFreeCursor()</a>, <a class="el" href="dmxcursor_8c_source.html#l00107">DMXDBG2</a>, and <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00775">dmxUnrealizeCursor()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a84c92b801c5802879047e74401f62e94"></a><!-- doxytag: member="dmxcursor.c::dmxBECreateCursor" ref="a84c92b801c5802879047e74401f62e94" args="(ScreenPtr pScreen, CursorPtr pCursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
<tr>
- <td class="md" nowrap valign="top"> void dmxCursorNoMulti </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
+ <td class="memname">void dmxBECreateCursor </td>
+ <td>(</td>
+ <td class="paramtype">ScreenPtr&nbsp;</td>
+ <td class="paramname"> <em>pScreen</em>, </td>
</tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">CursorPtr&nbsp;</td>
+ <td class="paramname"> <em>pCursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Create <em>pCursor</em> on the back-end associated with <em>pScreen</em>. </p>
+<p>References <a class="el" href="dmx_8h_source.html#l00115">_DMXScreenInfo::beDefVisualIndex</a>, <a class="el" href="dmx_8h_source.html#l00099">_DMXScreenInfo::beDisplay</a>, <a class="el" href="dmx_8h_source.html#l00110">_DMXScreenInfo::beNumPixmapFormats</a>, <a class="el" href="dmx_8h_source.html#l00111">_DMXScreenInfo::bePixmapFormats</a>, <a class="el" href="dmx_8h_source.html#l00114">_DMXScreenInfo::beVisuals</a>, <a class="el" href="dmxcursor_8h_source.html#l00046">_dmxCursorPriv::cursor</a>, <a class="el" href="dmxcursor_8h_source.html#l00066">DMX_GET_CURSOR_PRIV</a>, <a class="el" href="dmxlog_8h_source.html#l00051">dmxFatal</a>, <a class="el" href="dmxlog_8c_source.html#l00159">dmxLog()</a>, <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>, <a class="el" href="dmxsync_8c_source.html#l00150">dmxSync()</a>, <a class="el" href="dmxconsole_8c_source.html#l00108">_myPrivate::gc</a>, <a class="el" href="dmx_8h_source.html#l00134">_DMXScreenInfo::scrnDefDrawables</a>, and <a class="el" href="dmx_8h_source.html#l00125">_DMXScreenInfo::scrnWin</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00659">_dmxRealizeCursor()</a>, and <a class="el" href="dmxextension_8c_source.html#l00856">dmxBECreateResources()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae0e94924bf5a69c2b26e9d0442befadd"></a><!-- doxytag: member="dmxcursor.c::dmxBEFreeCursor" ref="ae0e94924bf5a69c2b26e9d0442befadd" args="(ScreenPtr pScreen, CursorPtr pCursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">Bool dmxBEFreeCursor </td>
+ <td>(</td>
+ <td class="paramtype">ScreenPtr&nbsp;</td>
+ <td class="paramname"> <em>pScreen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">CursorPtr&nbsp;</td>
+ <td class="paramname"> <em>pCursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
</table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Turn off support for displaying multiple cursors on overlapped back-end displays. See #dmxCursorDoMultiCursors. </td>
- </tr>
-</table>
-<a class="anchor" name="a40" doxytag="dmxcursor.c::dmxHideCursor" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
+</div>
+<div class="memdoc">
+<p>Free <em>pCursor</em> on the back-end associated with <em>pScreen</em>. </p>
+
+<p>References <a class="el" href="dmx_8h_source.html#l00099">_DMXScreenInfo::beDisplay</a>, <a class="el" href="dmxcursor_8h_source.html#l00046">_dmxCursorPriv::cursor</a>, <a class="el" href="dmxcursor_8h_source.html#l00066">DMX_GET_CURSOR_PRIV</a>, and <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00695">_dmxUnrealizeCursor()</a>, and <a class="el" href="dmxextension_8c_source.html#l01459">dmxBEDestroyResources()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6a381bffb099457e7c26a2312cf968a6"></a><!-- doxytag: member="dmxcursor.c::dmxCheckCursor" ref="a6a381bffb099457e7c26a2312cf968a6" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
<tr>
- <td class="md" nowrap valign="top"> void dmxHideCursor </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>dmxScreen</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
+ <td class="memname">void dmxCheckCursor </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
</tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This routine is called during reconfiguration to make sure the cursor is visible. </p>
+<p>References <a class="el" href="dmxcursor_8c_source.html#l00659">_dmxRealizeCursor()</a>, <a class="el" href="dmxcursor_8c_source.html#l00729">_dmxSetCursor()</a>, <a class="el" href="dmx_8h_source.html#l00166">_DMXScreenInfo::cursor</a>, <a class="el" href="dmxcursor_8c_source.html#l00107">DMXDBG2</a>, <a class="el" href="dmxcursor_8c_source.html#l00793">dmxFindCursor()</a>, <a class="el" href="dmxevents_8c_source.html#l00158">dmxFindFirstScreen()</a>, <a class="el" href="dmxevents_8c_source.html#l00534">dmxGetGlobalPosition()</a>, <a class="el" href="dmxinit_8c_source.html#l00083">dmxNumScreens</a>, <a class="el" href="dmxcursor_8c_source.html#l00410">dmxOnScreen()</a>, <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>, <a class="el" href="dmx_8h_source.html#l00095">_DMXScreenInfo::index</a>, <a class="el" href="dmx_8h_source.html#l00147">_DMXScreenInfo::rootXOrigin</a>, and <a class="el" href="dmx_8h_source.html#l00148">_DMXScreenInfo::rootYOrigin</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxextension_8c_source.html#l00225">dmxAdjustCursorBoundaries()</a>, and <a class="el" href="dmxbackend_8c_source.html#l00240">dmxBackendUpdatePosition()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa5a4c58dbde29584153fbc43a1ac6e26"></a><!-- doxytag: member="dmxcursor.c::dmxComputeScreenOrigins" ref="aa5a4c58dbde29584153fbc43a1ac6e26" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void dmxComputeScreenOrigins </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
</table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-This routine is used by the backend input routines to hide the cursor on a screen that is being used for relative input. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxbackend_8c.html">dmxbackend.c</a> </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a22" doxytag="dmxcursor.c::dmxInitOrigins" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
+</div>
+<div class="memdoc">
+
+<p>References <a class="el" href="dmxinit_8c_source.html#l00083">dmxNumScreens</a>, <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>, <a class="el" href="dmxcursor_8c_source.html#l00204">dmxSLCreate()</a>, <a class="el" href="dmxcursor_8c_source.html#l00221">dmxSLFindNext()</a>, <a class="el" href="dmxcursor_8c_source.html#l00215">dmxSLFree()</a>, <a class="el" href="dmxcursor_8c_source.html#l00231">dmxTryComputeScreenOrigins()</a>, and <a class="el" href="dmx_8h_source.html#l00173">_DMXScreenInfo::whereRefScreen</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00371">dmxInitOrigins()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a2d0757fa7119492da7fe26901dab8571"></a><!-- doxytag: member="dmxcursor.c::dmxCrossScreen" ref="a2d0757fa7119492da7fe26901dab8571" args="(ScreenPtr pScreen, Bool entering)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void dmxCrossScreen </td>
+ <td>(</td>
+ <td class="paramtype">ScreenPtr&nbsp;</td>
+ <td class="paramname"> <em>pScreen</em>, </td>
+ </tr>
<tr>
- <td class="md" nowrap valign="top"> void dmxInitOrigins </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">Bool&nbsp;</td>
+ <td class="paramname"> <em>entering</em></td><td>&nbsp;</td>
</tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+</div>
+</div>
+<a class="anchor" id="a709e3d4a4e44e17fed3de1fcb0d42b20"></a><!-- doxytag: member="dmxcursor.c::dmxCursorNoMulti" ref="a709e3d4a4e44e17fed3de1fcb0d42b20" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void dmxCursorNoMulti </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
</table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize screen origins (and relative position). This is called for each server generation. For dynamic reconfiguration, use <a class="el" href="dmxcursor_8c.html#a21">dmxReInitOrigins()</a> instead. </td>
- </tr>
-</table>
-<a class="anchor" name="a28" doxytag="dmxcursor.c::dmxInitOverlap" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
+</div>
+<div class="memdoc">
+<p>Turn off support for displaying multiple cursors on overlapped back-end displays. See <a class="el" href="dmxcursor_8c.html#a4d792c0cb9ce0c21787d3cd88d774fa6">dmxCursorDoMultiCursors</a>. </p>
+
+<p>References <a class="el" href="dmxcursor_8c_source.html#l00115">dmxCursorDoMultiCursors</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxinit_8c_source.html#l00878">ddxProcessArgument()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a1c7f5d94ee32f85ec027c53b881fc697"></a><!-- doxytag: member="dmxcursor.c::dmxCursorOffScreen" ref="a1c7f5d94ee32f85ec027c53b881fc697" args="(ScreenPtr *ppScreen, int *x, int *y)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static Bool dmxCursorOffScreen </td>
+ <td>(</td>
+ <td class="paramtype">ScreenPtr *&nbsp;</td>
+ <td class="paramname"> <em>ppScreen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>y</em></td><td>&nbsp;</td>
+ </tr>
<tr>
- <td class="md" nowrap valign="top"> void dmxInitOverlap </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
</tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>References <a class="el" href="dmxinit_8c_source.html#l00083">dmxNumScreens</a>, <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>, <a class="el" href="dmxconsole_8c_source.html#l00098">_myPrivate::globalX</a>, <a class="el" href="dmxconsole_8c_source.html#l00099">_myPrivate::globalY</a>, <a class="el" href="dmx_8h_source.html#l00095">_DMXScreenInfo::index</a>, <a class="el" href="dmx_8h_source.html#l00145">_DMXScreenInfo::rootHeight</a>, <a class="el" href="dmx_8h_source.html#l00144">_DMXScreenInfo::rootWidth</a>, <a class="el" href="dmx_8h_source.html#l00147">_DMXScreenInfo::rootXOrigin</a>, and <a class="el" href="dmx_8h_source.html#l00148">_DMXScreenInfo::rootYOrigin</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af291298e4f52875e45d7097a223a8c0b"></a><!-- doxytag: member="dmxcursor.c::dmxDeviceCursorCleanup" ref="af291298e4f52875e45d7097a223a8c0b" args="(DeviceIntPtr pDev, ScreenPtr pScr)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void dmxDeviceCursorCleanup </td>
+ <td>(</td>
+ <td class="paramtype">DeviceIntPtr&nbsp;</td>
+ <td class="paramname"> <em>pDev</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ScreenPtr&nbsp;</td>
+ <td class="paramname"> <em>pScr</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
</table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Detects overlapping dmxScreens and creates circular lists. This uses an O(dmxNumScreens^2) algorithm, but dmxNumScreens is &lt; 100 and the computation only needs to be performed for every server generation or dynamic reconfiguration . </td>
- </tr>
-</table>
-<a class="anchor" name="a38" doxytag="dmxcursor.c::dmxMoveCursor" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a214b710621ed0279d6321375f3512a87"></a><!-- doxytag: member="dmxcursor.c::dmxDeviceCursorInitialize" ref="a214b710621ed0279d6321375f3512a87" args="(DeviceIntPtr pDev, ScreenPtr pScr)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
<tr>
- <td class="md" nowrap valign="top"> void dmxMoveCursor </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">ScreenPtr&nbsp;</td>
- <td class="mdname" nowrap> <em>pScreen</em>, </td>
+ <td class="memname">static Bool dmxDeviceCursorInitialize </td>
+ <td>(</td>
+ <td class="paramtype">DeviceIntPtr&nbsp;</td>
+ <td class="paramname"> <em>pDev</em>, </td>
</tr>
<tr>
+ <td class="paramkey"></td>
<td></td>
+ <td class="paramtype">ScreenPtr&nbsp;</td>
+ <td class="paramname"> <em>pScr</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
<td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+</div>
+</div>
+<a class="anchor" id="a5612d5f5b97d54fa9eb73540eaeba4f3"></a><!-- doxytag: member="dmxcursor.c::dmxDoesOverlap" ref="a5612d5f5b97d54fa9eb73540eaeba4f3" args="(DMXScreenInfo *a, DMXScreenInfo *b)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static int dmxDoesOverlap </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
+ <td class="paramname"> <em>a</em>, </td>
</tr>
<tr>
+ <td class="paramkey"></td>
<td></td>
+ <td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
+ <td class="paramname"> <em>b</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
<td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
</tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Returns non-zero if <em>a</em> overlaps <em>b</em>. </p>
+
+<p>References <a class="el" href="dmxcursor_8c_source.html#l00410">dmxOnScreen()</a>, <a class="el" href="dmx_8h_source.html#l00147">_DMXScreenInfo::rootXOrigin</a>, <a class="el" href="dmx_8h_source.html#l00148">_DMXScreenInfo::rootYOrigin</a>, <a class="el" href="dmx_8h_source.html#l00129">_DMXScreenInfo::scrnHeight</a>, and <a class="el" href="dmx_8h_source.html#l00128">_DMXScreenInfo::scrnWidth</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00515">dmxInitOverlap()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ac7dc34eb6db6964e4330acc4d0e2badc"></a><!-- doxytag: member="dmxcursor.c::dmxFindCursor" ref="ac7dc34eb6db6964e4330acc4d0e2badc" args="(DMXScreenInfo *start)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
<tr>
+ <td class="memname">static CursorPtr dmxFindCursor </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
+ <td class="paramname"> <em>start</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>References <a class="el" href="dmx_8h_source.html#l00166">_DMXScreenInfo::cursor</a>, and <a class="el" href="dmx_8h_source.html#l00137">_DMXScreenInfo::over</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00931">dmxCheckCursor()</a>, and <a class="el" href="dmxcursor_8c_source.html#l00817">dmxMoveCursor()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad67e1086ef62ecfa33549d74cd89a379"></a><!-- doxytag: member="dmxcursor.c::dmxHideCursor" ref="ad67e1086ef62ecfa33549d74cd89a379" args="(DMXScreenInfo *dmxScreen)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void dmxHideCursor </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
+ <td class="paramname"> <em>dmxScreen</em></td>
+ <td>&nbsp;)&nbsp;</td>
<td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
</tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>This routine is used by the backend input routines to hide the cursor on a screen that is being used for relative input. </p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="dmxbackend_8c.html">dmxbackend.c</a> </dd></dl>
+<p>References <a class="el" href="dmxcursor_8c_source.html#l00729">_dmxSetCursor()</a>, <a class="el" href="dmxevents_8c_source.html#l00534">dmxGetGlobalPosition()</a>, and <a class="el" href="dmx_8h_source.html#l00095">_DMXScreenInfo::index</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxbackend_8c_source.html#l00240">dmxBackendUpdatePosition()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af3fb4b2c2d3cc318c88fbc6658893360"></a><!-- doxytag: member="dmxcursor.c::dmxInitOrigins" ref="af3fb4b2c2d3cc318c88fbc6658893360" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void dmxInitOrigins </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
</table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Move the cursor to coordinates (<em>x</em>, <em>y</em>)on <em>pScreen</em>. This function is usually called via <a class="el" href="dmxcursor_8h.html#a4">dmxPointerSpriteFuncs</a>, except during reconfiguration when the cursor is repositioned to force an update on newley overlapping screens and on screens that no longer overlap. </td>
- </tr>
-</table>
-<a class="anchor" name="a23" doxytag="dmxcursor.c::dmxOnScreen" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
+</div>
+<div class="memdoc">
+<p>Initialize screen origins (and relative position). This is called for each server generation. For dynamic reconfiguration, use <a class="el" href="dmxcursor_8c.html#a9bdb6eff5f7f86fd071091c5a55cee7c">dmxReInitOrigins()</a> instead. </p>
+
+<p>References <a class="el" href="dmx_8h_source.html#l00103">_DMXScreenInfo::beBPP</a>, <a class="el" href="dmx_8h_source.html#l00102">_DMXScreenInfo::beDepth</a>, <a class="el" href="dmx_8h_source.html#l00101">_DMXScreenInfo::beHeight</a>, <a class="el" href="dmx_8h_source.html#l00100">_DMXScreenInfo::beWidth</a>, <a class="el" href="dmxcursor_8c_source.html#l00299">dmxComputeScreenOrigins()</a>, <a class="el" href="dmxlog_8h_source.html#l00051">dmxFatal</a>, <a class="el" href="dmxlog_8c_source.html#l00159">dmxLog()</a>, <a class="el" href="dmxlog_8c_source.html#l00183">dmxLogOutput()</a>, <a class="el" href="dmxinit_8c_source.html#l00083">dmxNumScreens</a>, <a class="el" href="dmxcursor_8c_source.html#l00343">dmxReInitOrigins()</a>, <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>, <a class="el" href="dmx_8h_source.html#l00145">_DMXScreenInfo::rootHeight</a>, <a class="el" href="dmx_8h_source.html#l00144">_DMXScreenInfo::rootWidth</a>, <a class="el" href="dmx_8h_source.html#l00142">_DMXScreenInfo::rootX</a>, <a class="el" href="dmx_8h_source.html#l00147">_DMXScreenInfo::rootXOrigin</a>, <a class="el" href="dmx_8h_source.html#l00143">_DMXScreenInfo::rootY</a>, <a class="el" href="dmx_8h_source.html#l00148">_DMXScreenInfo::rootYOrigin</a>, <a class="el" href="dmx_8h_source.html#l00129">_DMXScreenInfo::scrnHeight</a>, <a class="el" href="dmx_8h_source.html#l00128">_DMXScreenInfo::scrnWidth</a>, <a class="el" href="dmx_8h_source.html#l00126">_DMXScreenInfo::scrnX</a>, <a class="el" href="dmx_8h_source.html#l00127">_DMXScreenInfo::scrnY</a>, <a class="el" href="dmx_8h_source.html#l00170">_DMXScreenInfo::where</a>, <a class="el" href="dmx_8h_source.html#l00171">_DMXScreenInfo::whereX</a>, and <a class="el" href="dmx_8h_source.html#l00172">_DMXScreenInfo::whereY</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxinit_8c_source.html#l00561">InitOutput()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a77c74a33de88fae6cf0de8b755a5c411"></a><!-- doxytag: member="dmxcursor.c::dmxInitOverlap" ref="a77c74a33de88fae6cf0de8b755a5c411" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
<tr>
- <td class="md" nowrap valign="top"> int dmxOnScreen </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">int&nbsp;</td>
- <td class="mdname" nowrap> <em>x</em>, </td>
+ <td class="memname">void dmxInitOverlap </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Detects overlapping dmxScreens and creates circular lists. This uses an O(dmxNumScreens^2) algorithm, but dmxNumScreens is &lt; 100 and the computation only needs to be performed for every server generation or dynamic reconfiguration . </p>
+
+<p>References <a class="el" href="dmx_8h_source.html#l00168">_DMXScreenInfo::cursorNotShared</a>, <a class="el" href="dmxcursor_8c_source.html#l00111">DMXDBG6</a>, <a class="el" href="dmxcursor_8c_source.html#l00430">dmxDoesOverlap()</a>, <a class="el" href="dmxlog_8h_source.html#l00044">dmxInfo</a>, <a class="el" href="dmxcursor_8c_source.html#l00484">dmxIterateOverlap()</a>, <a class="el" href="dmxlog_8c_source.html#l00159">dmxLog()</a>, <a class="el" href="dmxlog_8c_source.html#l00183">dmxLogOutput()</a>, <a class="el" href="dmxlog_8c_source.html#l00195">dmxLogOutputCont()</a>, <a class="el" href="dmxinit_8c_source.html#l00083">dmxNumScreens</a>, <a class="el" href="dmxcursor_8c_source.html#l00469">dmxPrintOverlap()</a>, <a class="el" href="dmxprop_8c_source.html#l00098">dmxPropertyIterate()</a>, <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>, <a class="el" href="dmxcursor_8c_source.html#l00502">dmxTestSameDisplay()</a>, <a class="el" href="dmx_8h_source.html#l00095">_DMXScreenInfo::index</a>, <a class="el" href="dmx_8h_source.html#l00094">_DMXScreenInfo::name</a>, and <a class="el" href="dmx_8h_source.html#l00137">_DMXScreenInfo::over</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxextension_8c_source.html#l00225">dmxAdjustCursorBoundaries()</a>, and <a class="el" href="dmxinit_8c_source.html#l00561">InitOutput()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a28c6651bdff6f7fc01292548659a6eb4"></a><!-- doxytag: member="dmxcursor.c::dmxIterateOverlap" ref="a28c6651bdff6f7fc01292548659a6eb4" args="(DMXScreenInfo *start, void *(*f)(DMXScreenInfo *dmxScreen, void *), void *closure)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void* dmxIterateOverlap </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
+ <td class="paramname"> <em>start</em>, </td>
</tr>
<tr>
+ <td class="paramkey"></td>
<td></td>
+ <td class="paramtype">void *(*)(<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, void *)&nbsp;</td>
+ <td class="paramname"> <em>f</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
<td></td>
- <td class="md" nowrap>int&nbsp;</td>
- <td class="mdname" nowrap> <em>y</em>, </td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>closure</em></td><td>&nbsp;</td>
</tr>
<tr>
<td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Iterate over the screens which overlap with the <em>start</em> screen, calling <em>f</em> with the <em>closure</em> for each argument. Often used with <a class="el" href="dmxcursor_8c.html#a52398858fc93988512050543967652fe">dmxPrintOverlap</a>. </p>
+
+<p>References <a class="el" href="dmx_8h_source.html#l00137">_DMXScreenInfo::over</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00515">dmxInitOverlap()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a21820e2001f763e3cfc924a1d602bb62"></a><!-- doxytag: member="dmxcursor.c::dmxMoveCursor" ref="a21820e2001f763e3cfc924a1d602bb62" args="(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void dmxMoveCursor </td>
+ <td>(</td>
+ <td class="paramtype">DeviceIntPtr&nbsp;</td>
+ <td class="paramname"> <em>pDev</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
<td></td>
- <td class="md" nowrap><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
- <td class="mdname" nowrap> <em>dmxScreen</em></td>
+ <td class="paramtype">ScreenPtr&nbsp;</td>
+ <td class="paramname"> <em>pScreen</em>, </td>
</tr>
<tr>
+ <td class="paramkey"></td>
<td></td>
- <td class="md">)&nbsp;</td>
- <td class="md" colspan="2"></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>x</em>, </td>
</tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>y</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Move the cursor to coordinates (<em>x</em>, <em>y</em>)on <em>pScreen</em>. This function is usually called via <a class="el" href="dmxcursor_8h.html#a7bf2f59a6c5d381aea975cd78dd1f9dc">dmxPointerSpriteFuncs</a>, except during reconfiguration when the cursor is repositioned to force an update on newley overlapping screens and on screens that no longer overlap.</p>
+<p>The coords (x,y) are in global coord space. We'll loop over the back-end screens and see if they contain the global coord. If so, call <a class="el" href="dmxcursor_8c.html#aa208a04334d595e3507287bacffdae80">_dmxMoveCursor()</a> (XWarpPointer) to position the pointer on that screen. </p>
+<p>References <a class="el" href="dmxcursor_8c_source.html#l00711">_dmxMoveCursor()</a>, <a class="el" href="dmxcursor_8c_source.html#l00659">_dmxRealizeCursor()</a>, <a class="el" href="dmxcursor_8c_source.html#l00729">_dmxSetCursor()</a>, <a class="el" href="dmx_8h_source.html#l00166">_DMXScreenInfo::cursor</a>, <a class="el" href="dmx_8h_source.html#l00168">_DMXScreenInfo::cursorNotShared</a>, <a class="el" href="dmx_8h_source.html#l00167">_DMXScreenInfo::cursorVisible</a>, <a class="el" href="dmxcursor_8c_source.html#l00115">dmxCursorDoMultiCursors</a>, <a class="el" href="dmxcursor_8c_source.html#l00108">DMXDBG3</a>, <a class="el" href="dmxcursor_8c_source.html#l00793">dmxFindCursor()</a>, <a class="el" href="dmxcursor_8c_source.html#l00410">dmxOnScreen()</a>, <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>, <a class="el" href="dmx_8h_source.html#l00095">_DMXScreenInfo::index</a>, <a class="el" href="dmx_8h_source.html#l00137">_DMXScreenInfo::over</a>, <a class="el" href="dmx_8h_source.html#l00147">_DMXScreenInfo::rootXOrigin</a>, and <a class="el" href="dmx_8h_source.html#l00148">_DMXScreenInfo::rootYOrigin</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="adaf3455cdd3f54d22285e5a0fa99fddb"></a><!-- doxytag: member="dmxcursor.c::dmxOnScreen" ref="adaf3455cdd3f54d22285e5a0fa99fddb" args="(int x, int y, DMXScreenInfo *dmxScreen)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int dmxOnScreen </td>
+ <td>(</td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>y</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
+ <td class="paramname"> <em>dmxScreen</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
+ </tr>
</table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Returns non-zero if the global <em>x</em>, <em>y</em> coordinate is on the screen window of the <em>dmxScreen</em>. </td>
- </tr>
-</table>
-<a class="anchor" name="a21" doxytag="dmxcursor.c::dmxReInitOrigins" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
+</div>
+<div class="memdoc">
+<p>Returns non-zero if the global <em>x</em>, <em>y</em> coordinate is on the screen window of the <em>dmxScreen</em>. </p>
+
+<p>References <a class="el" href="dmxlog_8h_source.html#l00043">dmxDebug</a>, <a class="el" href="dmxlog_8c_source.html#l00159">dmxLog()</a>, <a class="el" href="dmx_8h_source.html#l00095">_DMXScreenInfo::index</a>, <a class="el" href="dmx_8h_source.html#l00145">_DMXScreenInfo::rootHeight</a>, <a class="el" href="dmx_8h_source.html#l00144">_DMXScreenInfo::rootWidth</a>, <a class="el" href="dmx_8h_source.html#l00142">_DMXScreenInfo::rootX</a>, <a class="el" href="dmx_8h_source.html#l00147">_DMXScreenInfo::rootXOrigin</a>, <a class="el" href="dmx_8h_source.html#l00143">_DMXScreenInfo::rootY</a>, <a class="el" href="dmx_8h_source.html#l00148">_DMXScreenInfo::rootYOrigin</a>, <a class="el" href="dmx_8h_source.html#l00129">_DMXScreenInfo::scrnHeight</a>, <a class="el" href="dmx_8h_source.html#l00128">_DMXScreenInfo::scrnWidth</a>, <a class="el" href="dmx_8h_source.html#l00126">_DMXScreenInfo::scrnX</a>, and <a class="el" href="dmx_8h_source.html#l00127">_DMXScreenInfo::scrnY</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxbackend_8c_source.html#l00215">dmxBackendFindOverlapping()</a>, <a class="el" href="dmxbackend_8c_source.html#l00231">dmxBackendOffscreen()</a>, <a class="el" href="dmxcursor_8c_source.html#l00931">dmxCheckCursor()</a>, <a class="el" href="dmxcursor_8c_source.html#l00430">dmxDoesOverlap()</a>, <a class="el" href="dmxevents_8c_source.html#l00158">dmxFindFirstScreen()</a>, <a class="el" href="dmxcursor_8c_source.html#l00817">dmxMoveCursor()</a>, and <a class="el" href="dmxcursor_8c_source.html#l00864">dmxSetCursor()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a52398858fc93988512050543967652fe"></a><!-- doxytag: member="dmxcursor.c::dmxPrintOverlap" ref="a52398858fc93988512050543967652fe" args="(DMXScreenInfo *dmxScreen, void *closure)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void* dmxPrintOverlap </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
+ <td class="paramname"> <em>dmxScreen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>closure</em></td><td>&nbsp;</td>
+ </tr>
<tr>
- <td class="md" nowrap valign="top"> void dmxReInitOrigins </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">void&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
</tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Used with <em>dmxInterateOverlap</em> to print out a list of screens which overlap each other. </p>
+<p>References <a class="el" href="dmx_8h_source.html#l00168">_DMXScreenInfo::cursorNotShared</a>, <a class="el" href="dmxlog_8c_source.html#l00195">dmxLogOutputCont()</a>, <a class="el" href="dmx_8h_source.html#l00095">_DMXScreenInfo::index</a>, and <a class="el" href="dmx_8h_source.html#l00094">_DMXScreenInfo::name</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00515">dmxInitOverlap()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ad51761f218c643ebe7f010538e9c745f"></a><!-- doxytag: member="dmxcursor.c::dmxRealizeCursor" ref="ad51761f218c643ebe7f010538e9c745f" args="(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static Bool dmxRealizeCursor </td>
+ <td>(</td>
+ <td class="paramtype">DeviceIntPtr&nbsp;</td>
+ <td class="paramname"> <em>pDev</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ScreenPtr&nbsp;</td>
+ <td class="paramname"> <em>pScreen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">CursorPtr&nbsp;</td>
+ <td class="paramname"> <em>pCursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
</table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Recompute origin information in the <a class="el" href="dmxinit_8c.html#a2">dmxScreens</a> list. This is either called from <a class="el" href="dmxcursor_8c.html#a22">dmxInitOrigins()</a> or from #dmxReconfig(). </td>
- </tr>
-</table>
-<hr><h2>Variable Documentation</h2>
-<a class="anchor" name="a10" doxytag="dmxcursor.c::dmxPointerCursorFuncs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
+</div>
+<div class="memdoc">
+
+<p>References <a class="el" href="dmxcursor_8c_source.html#l00659">_dmxRealizeCursor()</a>, <a class="el" href="dmx_8h_source.html#l00168">_DMXScreenInfo::cursorNotShared</a>, <a class="el" href="dmxcursor_8c_source.html#l00115">dmxCursorDoMultiCursors</a>, <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>, <a class="el" href="dmx_8h_source.html#l00095">_DMXScreenInfo::index</a>, and <a class="el" href="dmx_8h_source.html#l00137">_DMXScreenInfo::over</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9bdb6eff5f7f86fd071091c5a55cee7c"></a><!-- doxytag: member="dmxcursor.c::dmxReInitOrigins" ref="a9bdb6eff5f7f86fd071091c5a55cee7c" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
<tr>
- <td class="md" nowrap valign="top"> miPointerScreenFuncRec <a class="el" href="dmxcursor_8h.html#a3">dmxPointerCursorFuncs</a>
+ <td class="memname">void dmxReInitOrigins </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td></td>
+ </tr>
</table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-<b>Initial value:</b><div class="fragment"><pre>
+</div>
+<div class="memdoc">
+<p>Recompute origin information in the <a class="el" href="dmxinit_8c.html#a3e242a6818df05e547a4776919e3827f">dmxScreens</a> list. This is called from <a class="el" href="dmxcursor_8h.html#af3fb4b2c2d3cc318c88fbc6658893360">dmxInitOrigins</a>. </p>
+
+<p>References <a class="el" href="dmx_8h_source.html#l00103">_DMXScreenInfo::beBPP</a>, <a class="el" href="dmx_8h_source.html#l00102">_DMXScreenInfo::beDepth</a>, <a class="el" href="dmx_8h_source.html#l00101">_DMXScreenInfo::beHeight</a>, <a class="el" href="dmx_8h_source.html#l00100">_DMXScreenInfo::beWidth</a>, <a class="el" href="dmxlog_8h_source.html#l00051">dmxFatal</a>, <a class="el" href="dmxlog_8c_source.html#l00159">dmxLog()</a>, <a class="el" href="dmxlog_8c_source.html#l00183">dmxLogOutput()</a>, <a class="el" href="dmxinit_8c_source.html#l00083">dmxNumScreens</a>, <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>, <a class="el" href="dmx_8h_source.html#l00145">_DMXScreenInfo::rootHeight</a>, <a class="el" href="dmx_8h_source.html#l00144">_DMXScreenInfo::rootWidth</a>, <a class="el" href="dmx_8h_source.html#l00142">_DMXScreenInfo::rootX</a>, <a class="el" href="dmx_8h_source.html#l00147">_DMXScreenInfo::rootXOrigin</a>, <a class="el" href="dmx_8h_source.html#l00143">_DMXScreenInfo::rootY</a>, <a class="el" href="dmx_8h_source.html#l00148">_DMXScreenInfo::rootYOrigin</a>, <a class="el" href="dmx_8h_source.html#l00129">_DMXScreenInfo::scrnHeight</a>, <a class="el" href="dmx_8h_source.html#l00128">_DMXScreenInfo::scrnWidth</a>, <a class="el" href="dmx_8h_source.html#l00126">_DMXScreenInfo::scrnX</a>, and <a class="el" href="dmx_8h_source.html#l00127">_DMXScreenInfo::scrnY</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxextension_8c_source.html#l00225">dmxAdjustCursorBoundaries()</a>, and <a class="el" href="dmxcursor_8c_source.html#l00371">dmxInitOrigins()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a4cbf6be156525a669ae883465f6458c2"></a><!-- doxytag: member="dmxcursor.c::dmxSetCursor" ref="a4cbf6be156525a669ae883465f6458c2" args="(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor, int x, int y)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void dmxSetCursor </td>
+ <td>(</td>
+ <td class="paramtype">DeviceIntPtr&nbsp;</td>
+ <td class="paramname"> <em>pDev</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ScreenPtr&nbsp;</td>
+ <td class="paramname"> <em>pScreen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">CursorPtr&nbsp;</td>
+ <td class="paramname"> <em>pCursor</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>y</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>References <a class="el" href="dmxcursor_8c_source.html#l00729">_dmxSetCursor()</a>, <a class="el" href="dmx_8h_source.html#l00168">_DMXScreenInfo::cursorNotShared</a>, <a class="el" href="dmxinput_8h_source.html#l00148">DMX_NO_BLOCK</a>, <a class="el" href="dmxevents_8c_source.html#l00194">dmxCoreMotion()</a>, <a class="el" href="dmxcursor_8c_source.html#l00115">dmxCursorDoMultiCursors</a>, <a class="el" href="dmxcursor_8c_source.html#l00110">DMXDBG5</a>, <a class="el" href="dmxevents_8c_source.html#l00534">dmxGetGlobalPosition()</a>, <a class="el" href="dmxcursor_8c_source.html#l00410">dmxOnScreen()</a>, <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>, <a class="el" href="dmx_8h_source.html#l00095">_DMXScreenInfo::index</a>, <a class="el" href="dmx_8h_source.html#l00137">_DMXScreenInfo::over</a>, <a class="el" href="dmx_8h_source.html#l00147">_DMXScreenInfo::rootXOrigin</a>, and <a class="el" href="dmx_8h_source.html#l00148">_DMXScreenInfo::rootYOrigin</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aaf8a9878f12b6653247fc27d960beccf"></a><!-- doxytag: member="dmxcursor.c::dmxSLCreate" ref="aaf8a9878f12b6653247fc27d960beccf" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static int* dmxSLCreate </td>
+ <td>(</td>
+ <td class="paramtype">void&nbsp;</td>
+ <td class="paramname"></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Create a list of screens that we'll manipulate. </p>
+
+<p>References <a class="el" href="dmxinit_8c_source.html#l00083">dmxNumScreens</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00299">dmxComputeScreenOrigins()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab4dcb11cad339e72d843356841ffd203"></a><!-- doxytag: member="dmxcursor.c::dmxSLFindNext" ref="ab4dcb11cad339e72d843356841ffd203" args="(int *list)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static int dmxSLFindNext </td>
+ <td>(</td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>list</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Find next uninitialized entry in list. </p>
+
+<p>References <a class="el" href="dmxinit_8c_source.html#l00083">dmxNumScreens</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00299">dmxComputeScreenOrigins()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a565fbb8c3754a14c1aed13b741705b91"></a><!-- doxytag: member="dmxcursor.c::dmxSLFree" ref="a565fbb8c3754a14c1aed13b741705b91" args="(int *list)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void dmxSLFree </td>
+ <td>(</td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>list</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Free list. </p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00299">dmxComputeScreenOrigins()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a3beed7bb0f6999879936b2f47751d125"></a><!-- doxytag: member="dmxcursor.c::dmxTestSameDisplay" ref="a3beed7bb0f6999879936b2f47751d125" args="(DMXScreenInfo *a, void *closure)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void* dmxTestSameDisplay </td>
+ <td>(</td>
+ <td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&nbsp;</td>
+ <td class="paramname"> <em>a</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">void *&nbsp;</td>
+ <td class="paramname"> <em>closure</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Used with <a class="el" href="dmxprop_8h.html#a4c53640b27c787d65539555cc3bf3c57">dmxPropertyIterate</a> to determine if screen <em>a</em> is the same as the screen <em>closure</em>. </p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00515">dmxInitOverlap()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a97efbe7e0a872da9de0be49da214c210"></a><!-- doxytag: member="dmxcursor.c::dmxTryComputeScreenOrigins" ref="a97efbe7e0a872da9de0be49da214c210" args="(int *screensLeft)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static int dmxTryComputeScreenOrigins </td>
+ <td>(</td>
+ <td class="paramtype">int *&nbsp;</td>
+ <td class="paramname"> <em>screensLeft</em></td>
+ <td>&nbsp;)&nbsp;</td>
+ <td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<p>Make one pass over all the screens and return the number updated. </p>
+
+<p>References <a class="el" href="dmxlog_8h_source.html#l00051">dmxFatal</a>, <a class="el" href="dmxlog_8c_source.html#l00159">dmxLog()</a>, <a class="el" href="dmxinit_8c_source.html#l00083">dmxNumScreens</a>, <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>, <a class="el" href="dmx_8h_source.html#l00079">PosAbove</a>, <a class="el" href="dmx_8h_source.html#l00076">PosAbsolute</a>, <a class="el" href="dmx_8h_source.html#l00080">PosBelow</a>, <a class="el" href="dmx_8h_source.html#l00078">PosLeftOf</a>, <a class="el" href="dmx_8h_source.html#l00075">PosNone</a>, <a class="el" href="dmx_8h_source.html#l00081">PosRelative</a>, <a class="el" href="dmx_8h_source.html#l00077">PosRightOf</a>, <a class="el" href="dmx_8h_source.html#l00170">_DMXScreenInfo::where</a>, <a class="el" href="dmx_8h_source.html#l00173">_DMXScreenInfo::whereRefScreen</a>, <a class="el" href="dmx_8h_source.html#l00171">_DMXScreenInfo::whereX</a>, and <a class="el" href="dmx_8h_source.html#l00172">_DMXScreenInfo::whereY</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00299">dmxComputeScreenOrigins()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a81c0223355350e6d897d4d7306381130"></a><!-- doxytag: member="dmxcursor.c::dmxUnrealizeCursor" ref="a81c0223355350e6d897d4d7306381130" args="(DeviceIntPtr pDev, ScreenPtr pScreen, CursorPtr pCursor)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static Bool dmxUnrealizeCursor </td>
+ <td>(</td>
+ <td class="paramtype">DeviceIntPtr&nbsp;</td>
+ <td class="paramname"> <em>pDev</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ScreenPtr&nbsp;</td>
+ <td class="paramname"> <em>pScreen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">CursorPtr&nbsp;</td>
+ <td class="paramname"> <em>pCursor</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>References <a class="el" href="dmxcursor_8c_source.html#l00695">_dmxUnrealizeCursor()</a>, <a class="el" href="dmx_8h_source.html#l00168">_DMXScreenInfo::cursorNotShared</a>, <a class="el" href="dmxcursor_8c_source.html#l00115">dmxCursorDoMultiCursors</a>, <a class="el" href="dmxinit_8c_source.html#l00084">dmxScreens</a>, <a class="el" href="dmx_8h_source.html#l00095">_DMXScreenInfo::index</a>, and <a class="el" href="dmx_8h_source.html#l00137">_DMXScreenInfo::over</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="af80076061e55521b62a7cfd8e66bf3e6"></a><!-- doxytag: member="dmxcursor.c::dmxWarpCursor" ref="af80076061e55521b62a7cfd8e66bf3e6" args="(DeviceIntPtr pDev, ScreenPtr pScreen, int x, int y)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void dmxWarpCursor </td>
+ <td>(</td>
+ <td class="paramtype">DeviceIntPtr&nbsp;</td>
+ <td class="paramname"> <em>pDev</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">ScreenPtr&nbsp;</td>
+ <td class="paramname"> <em>pScreen</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>x</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>y</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td>)</td>
+ <td></td><td></td><td><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>References <a class="el" href="dmxcursor_8c_source.html#l00108">DMXDBG3</a>.</p>
+
+</div>
+</div>
+<hr/><h2>Variable Documentation</h2>
+<a class="anchor" id="a4d792c0cb9ce0c21787d3cd88d774fa6"></a><!-- doxytag: member="dmxcursor.c::dmxCursorDoMultiCursors" ref="a4d792c0cb9ce0c21787d3cd88d774fa6" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="dmxcursor_8c.html#a4d792c0cb9ce0c21787d3cd88d774fa6">dmxCursorDoMultiCursors</a> = 1<code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00119">dmxCursorNoMulti()</a>, <a class="el" href="dmxcursor_8c_source.html#l00817">dmxMoveCursor()</a>, <a class="el" href="dmxcursor_8c_source.html#l00757">dmxRealizeCursor()</a>, <a class="el" href="dmxcursor_8c_source.html#l00864">dmxSetCursor()</a>, and <a class="el" href="dmxcursor_8c_source.html#l00775">dmxUnrealizeCursor()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aacf8d4857dd965073f62f10a53edcaa3"></a><!-- doxytag: member="dmxcursor.c::dmxPointerCursorFuncs" ref="aacf8d4857dd965073f62f10a53edcaa3" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">miPointerScreenFuncRec <a class="el" href="dmxcursor_8h.html#aacf8d4857dd965073f62f10a53edcaa3">dmxPointerCursorFuncs</a></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+<b>Initial value:</b><div class="fragment"><pre class="fragment">
{
- dmxCursorOffScreen,
- dmxCrossScreen,
- dmxWarpCursor,
- <a class="code" href="dmxeq_8c.html#a13">dmxeqEnqueue</a>,
- <a class="code" href="dmxeq_8c.html#a14">dmxeqSwitchScreen</a>
+ <a class="code" href="dmxcursor_8c.html#a1c7f5d94ee32f85ec027c53b881fc697">dmxCursorOffScreen</a>,
+ <a class="code" href="dmxcursor_8c.html#a2d0757fa7119492da7fe26901dab8571">dmxCrossScreen</a>,
+ <a class="code" href="dmxcursor_8c.html#af80076061e55521b62a7cfd8e66bf3e6">dmxWarpCursor</a>,
+ NULL,
+ NULL,
}
-</pre></div>Cursor functions for mi layer. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxcursor_8c.html">dmxcursor.c</a> <p>
+</pre></div><p>Cursor functions for mi layer. </p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="dmxcursor_8c.html">dmxcursor.c</a> </dd>
+<dd>
<a class="el" href="dmxscrinit_8c.html">dmxscrinit.c</a> </dd></dl>
- </td>
- </tr>
-</table>
-<a class="anchor" name="a11" doxytag="dmxcursor.c::dmxPointerSpriteFuncs" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
+
+<p>Referenced by <a class="el" href="dmxscrinit_8c_source.html#l00212">dmxScreenInit()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a7bf2f59a6c5d381aea975cd78dd1f9dc"></a><!-- doxytag: member="dmxcursor.c::dmxPointerSpriteFuncs" ref="a7bf2f59a6c5d381aea975cd78dd1f9dc" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
<tr>
- <td class="md" nowrap valign="top"> miPointerSpriteFuncRec <a class="el" href="dmxcursor_8h.html#a4">dmxPointerSpriteFuncs</a>
+ <td class="memname">miPointerSpriteFuncRec <a class="el" href="dmxcursor_8h.html#a7bf2f59a6c5d381aea975cd78dd1f9dc">dmxPointerSpriteFuncs</a></td>
+ </tr>
</table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-<b>Initial value:</b><div class="fragment"><pre>
+</div>
+<div class="memdoc">
+<b>Initial value:</b><div class="fragment"><pre class="fragment">
{
- dmxRealizeCursor,
- dmxUnrealizeCursor,
- dmxSetCursor,
- <a class="code" href="dmxcursor_8c.html#a38">dmxMoveCursor</a>,
+ <a class="code" href="dmxcursor_8c.html#ad51761f218c643ebe7f010538e9c745f">dmxRealizeCursor</a>,
+ <a class="code" href="dmxcursor_8c.html#a81c0223355350e6d897d4d7306381130">dmxUnrealizeCursor</a>,
+ <a class="code" href="dmxcursor_8c.html#a4cbf6be156525a669ae883465f6458c2">dmxSetCursor</a>,
+ <a class="code" href="dmxcursor_8c.html#a21820e2001f763e3cfc924a1d602bb62">dmxMoveCursor</a>,
+ <a class="code" href="dmxcursor_8c.html#a214b710621ed0279d6321375f3512a87">dmxDeviceCursorInitialize</a>,
+ <a class="code" href="dmxcursor_8c.html#af291298e4f52875e45d7097a223a8c0b">dmxDeviceCursorCleanup</a>
}
-</pre></div>Sprite functions for mi layer. <dl compact><dt><b>See also:</b></dt><dd><a class="el" href="dmxcursor_8c.html">dmxcursor.c</a> <p>
+</pre></div><p>Sprite functions for mi layer. </p>
+<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="dmxcursor_8c.html">dmxcursor.c</a> </dd>
+<dd>
<a class="el" href="dmxscrinit_8c.html">dmxscrinit.c</a> </dd></dl>
- </td>
- </tr>
-</table>
+
+<p>Referenced by <a class="el" href="dmxscrinit_8c_source.html#l00212">dmxScreenInit()</a>.</p>
+
+</div>
+</div>
+</div>
<hr>
<address>
<small>