1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<html>
3  <head>
4    <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
5    <title>File Index</title>
6    <link href="doxygen.css" rel="stylesheet" type="text/css">
7  </head>
8  <body>
9<!-- Generated by Doxygen 1.7.4 -->
10  <div id="navrow1" class="tabs">
11    <ul class="tablist">
12      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
13      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
14      <li class="current"><a href="files.html"><span>Files</span></a></li>
15    </ul>
16  </div>
17  <div id="navrow2" class="tabs2">
18    <ul class="tablist">
19      <li><a href="files.html"><span>File&#160;List</span></a></li>
20      <li><a href="globals.html"><span>Globals</span></a></li>
21    </ul>
22  </div>
23</div>
24<div id="side-nav" class="ui-resizable side-nav-resizable">
25  <div id="nav-tree">
26    <div id="nav-tree-contents">
27    </div>
28  </div>
29  <div id="splitbar" style="-moz-user-select:none;" 
30       class="ui-resizable-handle">
31  </div>
32</div>
33<script type="text/javascript">
34  initNavTree('dmxsync_8c.html','');
35</script>
36<div id="doc-content">
37<div class="header">
38  <div class="summary">
39<a href="#func-members">Functions</a> &#124;
40<a href="#var-members">Variables</a>  </div>
41  <div class="headertitle">
42<div class="title">dmxsync.c File Reference</div>  </div>
43</div>
44<div class="contents">
45<div class="textblock"><code>#include &quot;<a class="el" href="dmx_8h_source.html">dmx.h</a>&quot;</code><br/>
46<code>#include &quot;<a class="el" href="dmxsync_8h_source.html">dmxsync.h</a>&quot;</code><br/>
47<code>#include &quot;<a class="el" href="dmxstat_8h_source.html">dmxstat.h</a>&quot;</code><br/>
48<code>#include &quot;<a class="el" href="dmxlog_8h_source.html">dmxlog.h</a>&quot;</code><br/>
49<code>#include &lt;sys/time.h&gt;</code><br/>
50</div><table class="memberdecls">
51<tr><td colspan="2"><h2><a name="func-members"></a>
52Functions</h2></td></tr>
53<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#a3f47aabdd830525720f7a01acbac91ef">dmxDoSync</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen)</td></tr>
54<tr><td class="memItemLeft" align="right" valign="top">static CARD32&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#a00478eb7de1c84d98b41ca4c6d4b50e4">dmxSyncCallback</a> (OsTimerPtr timer, CARD32 time, pointer arg)</td></tr>
55<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#aa5bb6eee83aba5bedf3c93fbb85af049">dmxSyncBlockHandler</a> (pointer blockData, OSTimePtr pTimeout, pointer pReadMask)</td></tr>
56<tr><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#a9329ae45fff6668caaca1fb93792b0b9">dmxSyncWakeupHandler</a> (pointer blockData, int result, pointer pReadMask)</td></tr>
57<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#ae0a769161d6f8d88067a9cac16f9cf6f">dmxSyncActivate</a> (const char *interval)</td></tr>
58<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#a0b349896e58d4291d712e31121fdc0ac">dmxSyncInit</a> (void)</td></tr>
59<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#ab848762f4d2e30d31b87d3e8e10c5967">dmxSync</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, Bool now)</td></tr>
60<tr><td colspan="2"><h2><a name="var-members"></a>
61Variables</h2></td></tr>
62<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#a01c45efcf0b2d9242b06e1e0fe42bd76">dmxSyncInterval</a> = 100</td></tr>
63<tr><td class="memItemLeft" align="right" valign="top">static OsTimerPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#a9466911712aef6631a5b88d1bcb1afad">dmxSyncTimer</a></td></tr>
64<tr><td class="memItemLeft" align="right" valign="top">static int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#a6fb7fbcbe509b8ffb8637691925d46f2">dmxSyncPending</a></td></tr>
65</table>
66<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
67<div class="textblock"><p>The DMX server code is written to call <a class="el" href="dmxsync_8c.html#ab848762f4d2e30d31b87d3e8e10c5967">dmxSync()</a> whenever an XSync() might be necessary. However, since XSync() requires a two way communication with the other X server, eliminating unnecessary XSync() calls is a key performance optimization. Support for this optimization is provided here. Statistics about XSync() calls and latency are gathered in <em><a class="el" href="dmxstat_8c.html">dmxstat.c</a></em>.</p>
68<p>During the initial conversion from calling XSync() immediately to the XSync() batching method implemented in this file, it was noted that, out of more than 300 <em>x11perf</em> tests, 8 tests became more than 100 times faster, with 68 more than 50X faster, 114 more than 10X faster, and 181 more than 2X faster. </p>
69</div><hr/><h2>Function Documentation</h2>
70<a class="anchor" id="a3f47aabdd830525720f7a01acbac91ef"></a><!-- doxytag: member="dmxsync.c::dmxDoSync" ref="a3f47aabdd830525720f7a01acbac91ef" args="(DMXScreenInfo *dmxScreen)" -->
71<div class="memitem">
72<div class="memproto">
73      <table class="memname">
74        <tr>
75          <td class="memname">static void dmxDoSync </td>
76          <td>(</td>
77          <td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&#160;</td>
78          <td class="paramname"><em>dmxScreen</em></td><td>)</td>
79          <td><code> [static]</code></td>
80        </tr>
81      </table>
82</div>
83<div class="memdoc">
84
85<p>References <a class="el" href="struct__DMXScreenInfo.html#a756ade62a55a52f163a42db6de54c244">_DMXScreenInfo::beDisplay</a>, <a class="el" href="dmxstat_8c.html#abe67369da5135f53f058261d3c173927">dmxStatInterval</a>, <a class="el" href="dmxstat_8c.html#a1098a195e40df685aaf2fbc238884027">dmxStatSync()</a>, <a class="el" href="dmxsync_8c.html#a6fb7fbcbe509b8ffb8637691925d46f2">dmxSyncPending</a>, and <a class="el" href="struct__DMXScreenInfo.html#a2c3aa46a8fafabc0a9af28948055fcb0">_DMXScreenInfo::needsSync</a>.</p>
86
87<p>Referenced by <a class="el" href="dmxsync_8h.html#ab848762f4d2e30d31b87d3e8e10c5967">dmxSync()</a>, and <a class="el" href="dmxsync_8c.html#a00478eb7de1c84d98b41ca4c6d4b50e4">dmxSyncCallback()</a>.</p>
88
89</div>
90</div>
91<a class="anchor" id="ab848762f4d2e30d31b87d3e8e10c5967"></a><!-- doxytag: member="dmxsync.c::dmxSync" ref="ab848762f4d2e30d31b87d3e8e10c5967" args="(DMXScreenInfo *dmxScreen, Bool now)" -->
92<div class="memitem">
93<div class="memproto">
94      <table class="memname">
95        <tr>
96          <td class="memname">void dmxSync </td>
97          <td>(</td>
98          <td class="paramtype"><a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *&#160;</td>
99          <td class="paramname"><em>dmxScreen</em>, </td>
100        </tr>
101        <tr>
102          <td class="paramkey"></td>
103          <td></td>
104          <td class="paramtype">Bool&#160;</td>
105          <td class="paramname"><em>now</em>&#160;</td>
106        </tr>
107        <tr>
108          <td></td>
109          <td>)</td>
110          <td></td><td></td>
111        </tr>
112      </table>
113</div>
114<div class="memdoc">
115<p>Request an XSync() to the display used by <em>dmxScreen</em>. If <em>now</em> is TRUE, call XSync() immediately instead of waiting for the next XSync() batching point. Note that if XSync() batching was deselected with <a class="el" href="dmxsync_8c.html#ae0a769161d6f8d88067a9cac16f9cf6f">dmxSyncActivate()</a> before <a class="el" href="dmxsync_8c.html#a0b349896e58d4291d712e31121fdc0ac">dmxSyncInit()</a> was called, then no XSync() batching is performed and this function always calles XSync() immediately.</p>
116<p>(Note that this function uses TimerSet but works correctly in the face of a server generation. See the source for details.)</p>
117<p>If <em>dmxScreen</em> is <em>NULL</em>, then all pending syncs will be flushed immediately. </p>
118
119<p>References <a class="el" href="dmxsync_8c.html#a3f47aabdd830525720f7a01acbac91ef">dmxDoSync()</a>, <a class="el" href="dmxlog_8h.html#aeed612a5c0be196e23bd6b71b76b917fa4d84ad320675a046536d76c0820abc70">dmxFatal</a>, <a class="el" href="dmxscrinit_8c.html#a4f7aaf448bb3a6c12bccf07600bb1d52">dmxGeneration</a>, <a class="el" href="dmxlog_8c.html#ab6259430a57c3cffdfc9f6259df0ad23">dmxLog()</a>, <a class="el" href="dmxsync_8c.html#a00478eb7de1c84d98b41ca4c6d4b50e4">dmxSyncCallback()</a>, <a class="el" href="dmxsync_8c.html#a01c45efcf0b2d9242b06e1e0fe42bd76">dmxSyncInterval</a>, <a class="el" href="dmxsync_8c.html#a6fb7fbcbe509b8ffb8637691925d46f2">dmxSyncPending</a>, <a class="el" href="dmxsync_8c.html#a9466911712aef6631a5b88d1bcb1afad">dmxSyncTimer</a>, <a class="el" href="struct__DMXScreenInfo.html#a5cfc14ffedaafcbe5b00302f972208cf">_DMXScreenInfo::name</a>, and <a class="el" href="struct__DMXScreenInfo.html#a2c3aa46a8fafabc0a9af28948055fcb0">_DMXScreenInfo::needsSync</a>.</p>
120
121<p>Referenced by <a class="el" href="dmxcursor_8c.html#aa208a04334d595e3507287bacffdae80">_dmxMoveCursor()</a>, <a class="el" href="dmxcursor_8c.html#a6fd26c7c7811ff77fc3c6e84b82d57d5">_dmxSetCursor()</a>, <a class="el" href="dmxextension_8h.html#af5d146634762aff17b8c45c4794d33e3">dmxAddInput()</a>, <a class="el" href="dmxextension_8h.html#a3962840388f9bcf96fb17294a413d8cb">dmxAttachScreen()</a>, <a class="el" href="dmxbackend_8h.html#a6e9b6f0743636b93aeb6ae71a3517abf">dmxBackendCollectEvents()</a>, <a class="el" href="dmxbackend_8h.html#a4ee65e2f1b86616b7898c273d78a5853">dmxBackendProcessInput()</a>, <a class="el" href="dmxbackend_8h.html#a486d684411f79c459a1195e5c02f404c">dmxBackendUpdatePosition()</a>, <a class="el" href="dmxcursor_8h.html#a84c92b801c5802879047e74401f62e94">dmxBECreateCursor()</a>, <a class="el" href="dmxpixmap_8h.html#ab785500b50aa10eb1d76274688413770">dmxBECreatePixmap()</a>, <a class="el" href="dmxfont_8h.html#ad24fe115ec27d050da7a4cb47d7ce52f">dmxBELoadFont()</a>, <a class="el" href="dmxpixmap_8h.html#af943d5ec32fe35ccc74ae190b8d8bb3e">dmxBitmapToRegion()</a>, <a class="el" href="dmxwindow_8h.html#a5d63a05eab33981615afdf523a44c697">dmxChangeBorderWidth()</a>, <a class="el" href="dmxgc_8h.html#af07df8b118bf78f1ce4b96fa1d0a2401">dmxChangeGC()</a>, <a class="el" href="dmxpict_8h.html#a80e126a5d7911fec43bad8a9428980d6">dmxChangePictureClip()</a>, <a class="el" href="dmxwindow_8h.html#ae6f0ba304627ea760df9e9c53f7bbae6">dmxChangeWindowAttributes()</a>, <a class="el" href="dmxfont_8c.html#a3d2eb9a1b065a02dbe58ee4e85ff6247">dmxCheckFontPath()</a>, <a class="el" href="dmxfont_8c.html#a177c3268bf91715dc536db6b6f8eed72">dmxCheckFontPathElement()</a>, <a class="el" href="dmxcommon_8h.html#a8ba0ee4f9f09bc9089d480d1f5467cd8">dmxCommonMouOn()</a>, <a class="el" href="dmxcommon_8h.html#a14295660e17d34955693cef6654d7bb6">dmxCommonSaveState()</a>, <a class="el" href="dmxpict_8h.html#a65851c1a4e9cd6946d67ff5aaf7bce88">dmxComposite()</a>, <a class="el" href="dmxpict_8h.html#ae828cd3db7af3c9e3a615267cd780ac4">dmxCompositeRects()</a>, <a class="el" href="dmxconsole_8h.html#ae70541f26e4a4ff6360090393d622b41">dmxConsoleCapture()</a>, <a class="el" href="dmxconsole_8h.html#aadf02f44bcb19eb2d0f8507a397a73fb">dmxConsoleUncapture()</a>, <a class="el" href="dmxgcops_8h.html#a9165fc8e2f98c6d4d82154a1b52b7c0f">dmxCopyArea()</a>, <a class="el" href="dmxgcops_8h.html#aa6b3b34e3b0e151d5b2d5f081f6d6e0f">dmxCopyPlane()</a>, <a class="el" href="dmxwindow_8h.html#ad78bdba42db62285cf174f072a63a81a">dmxCopyWindow()</a>, <a class="el" href="dmxwindow_8h.html#afefa2121a2898700d285e77730a52c4d">dmxCreateAndRealizeWindow()</a>, <a class="el" href="dmxwindow_8h.html#aebb0ce7ac51645832a20c7d6a7d21d9c">dmxCreateWindow()</a>, <a class="el" href="dmxpict_8h.html#aee92c240df08f4c8a62c291b3efa4d7e">dmxDestroyPicture()</a>, <a class="el" href="dmxpict_8h.html#aa977edb667e68606b2e08b25d99427de">dmxDestroyPictureClip()</a>, <a class="el" href="dmxpixmap_8h.html#a7c602d928744ec2e7be73ef197fc9b12">dmxDestroyPixmap()</a>, <a class="el" href="dmxwindow_8h.html#a25a0aafd36f68137e67a3e6d95b78f53">dmxDestroyWindow()</a>, <a class="el" href="dmxdpms_8h.html#a6c93ecabb9ee83027c79f878e143a472">dmxDPMSInit()</a>, <a class="el" href="dmxdpms_8h.html#a54288399c9ed5293b83d7d508ff2465c">dmxDPMSTerm()</a>, <a class="el" href="dmxgcops_8h.html#a4c24d2a2ddb121d2281084dd4f1361a6">dmxFillPolygon()</a>, <a class="el" href="dmxextension_8h.html#af7927d9de14425779c5de40312407203">dmxFlushPendingSyncs()</a>, <a class="el" href="dmxgcops_8h.html#ace88d57bbb8edfcdc3e7206e59c1e30f">dmxGetImage()</a>, <a class="el" href="dmxgcops_8h.html#acb19f9ef082c76f281679994057fafe1">dmxImageText16()</a>, <a class="el" href="dmxgcops_8h.html#a1fc863ca944469fc34d78db948f14053">dmxImageText8()</a>, <a class="el" href="dmxcmap_8h.html#a13a0bbf846ac7b3dcb41ae9bc4e64a3e">dmxInstallColormap()</a>, <a class="el" href="dmxgcops_8h.html#a7c4ff7ddf5b1a31d11e9124dc18f69f0">dmxPolyArc()</a>, <a class="el" href="dmxgcops_8h.html#a5488891f016532e40ba5e31466fb67fd">dmxPolyFillArc()</a>, <a class="el" href="dmxgcops_8h.html#a7d7eee30be7b445772f875b8cc1c8e0a">dmxPolyFillRect()</a>, <a class="el" href="dmxgcops_8h.html#abd3dea8c777a8e39ffbf2b9fa8e1405e">dmxPolylines()</a>, <a class="el" href="dmxgcops_8h.html#a03892f8e655a4bb743a264f121b096c6">dmxPolyPoint()</a>, <a class="el" href="dmxgcops_8h.html#a6bc862a4f475154ff9ff5f30a0ffcf89">dmxPolyRectangle()</a>, <a class="el" href="dmxgcops_8h.html#a9592aeb83549cbe036a47e9ac90dbf36">dmxPolySegment()</a>, <a class="el" href="dmxgcops_8h.html#a2fe37b5892867df4c29292c975c17e52">dmxPolyText16()</a>, <a class="el" href="dmxgcops_8h.html#a9b3a993a29bb01745ddbf7bd9ff97ef5">dmxPolyText8()</a>, <a class="el" href="dmxwindow_8h.html#adba873c51adf03b8af700c67fc6fba9b">dmxPositionWindow()</a>, <a class="el" href="dmxpict_8c.html#a3af8c0336c49625930470c6e2bce2a48">dmxProcRenderAddGlyphs()</a>, <a class="el" href="dmxpict_8c.html#a612db8702e6a380e12719576a57602e7">dmxProcRenderCompositeGlyphs()</a>, <a class="el" href="dmxpict_8c.html#a31fa7a567bceaf88984a3e862dc9a72e">dmxProcRenderFreeGlyphs()</a>, <a class="el" href="dmxpict_8c.html#a182c93f585ba30c52c680849edb51c7f">dmxProcRenderFreeGlyphSet()</a>, <a class="el" href="dmxpict_8c.html#a6cf50414d7688db973f42db898ba16a8">dmxProcRenderSetPictureFilter()</a>, <a class="el" href="dmxpict_8c.html#af7e087c44278e073b515a7adf3788a06">dmxProcRenderSetPictureTransform()</a>, <a class="el" href="dmxgcops_8h.html#ae1e930ec29cf8bd07acd6ccee4a548a3">dmxPutImage()</a>, <a class="el" href="dmxwindow_8h.html#ac75f5d6332a78eeac4e0e185cf326045">dmxRealizeWindow()</a>, <a class="el" href="dmxwindow_8h.html#ab07d7010858aa078f26396f420fdea8c">dmxReparentWindow()</a>, <a class="el" href="dmxwindow_8h.html#a817739d4921329f1cf71f2af6fcacfc2">dmxResizeRootWindow()</a>, <a class="el" href="dmxwindow_8h.html#af96b8583264e78a4c693c6f7ee887067">dmxResizeScreenWindow()</a>, <a class="el" href="dmxwindow_8h.html#ac3811e381fef200b5cd3207478df66e1">dmxResizeWindow()</a>, <a class="el" href="dmxwindow_8h.html#a21e147f295faee8e53eb162071dc66ad">dmxRestackWindow()</a>, <a class="el" href="dmxscrinit_8c.html#af59f4754af961e2be5f6ef2ce4f5bfcc">dmxSaveScreen()</a>, <a class="el" href="dmxfont_8c.html#ad20ddd111e4a45bf1bdfd45744946c72">dmxSetFontPath()</a>, <a class="el" href="dmxwindow_8h.html#aa14e289855150f41c4f574afea427bb0">dmxSetShape()</a>, <a class="el" href="dmxshadow_8h.html#af2e3c9fd493e63137db512ab54bf1327">dmxShadowUpdateProc()</a>, <a class="el" href="dmxcmap_8h.html#a38bddf73cfed2aec203c62fc5be4ae97">dmxStoreColors()</a>, <a class="el" href="dmxpict_8h.html#ae54f217c222944bb10731d73e05ed4b2">dmxTrapezoids()</a>, <a class="el" href="dmxpict_8h.html#a401f568feed789ffc0bb1cc52573f707">dmxTriangles()</a>, <a class="el" href="dmxpict_8h.html#a11d3beb5f92c982f9383bb7e606e3157">dmxTriFan()</a>, <a class="el" href="dmxpict_8h.html#a3e36166fd4db06d364e7cc1762ab5b8c">dmxTriStrip()</a>, <a class="el" href="dmxwindow_8h.html#aeab9f468cc2c9374658213ee90a234a0">dmxUnrealizeWindow()</a>, <a class="el" href="dmxpict_8h.html#a3a9285c518b050130e40b7e147309350">dmxValidatePicture()</a>, and <a class="el" href="dmxwindow_8h.html#a02a6991e5248012e287fe4be3a985926">dmxWindowExposures()</a>.</p>
122
123</div>
124</div>
125<a class="anchor" id="ae0a769161d6f8d88067a9cac16f9cf6f"></a><!-- doxytag: member="dmxsync.c::dmxSyncActivate" ref="ae0a769161d6f8d88067a9cac16f9cf6f" args="(const char *interval)" -->
126<div class="memitem">
127<div class="memproto">
128      <table class="memname">
129        <tr>
130          <td class="memname">void dmxSyncActivate </td>
131          <td>(</td>
132          <td class="paramtype">const char *&#160;</td>
133          <td class="paramname"><em>interval</em></td><td>)</td>
134          <td></td>
135        </tr>
136      </table>
137</div>
138<div class="memdoc">
139<p>Request the XSync() batching optimization with the specified <em>interval</em> (in mS). If the <em>interval</em> is 0, 100mS is used. If the <em>interval</em> is less than 0, then the XSync() batching optimization is not requested (e.g., so the -syncbatch -1 command line option can turn off the default 100mS XSync() batching).</p>
140<p>Note that the parameter to this routine is a string, since it will usually be called from <a class="el" href="dmxinit_8c.html#a6ed0a235a6d852bfe0cc0250159a5daf">ddxProcessArgument</a> in <em><a class="el" href="dmxinit_8c.html">dmxinit.c</a></em> </p>
141
142<p>References <a class="el" href="dmxsync_8c.html#a01c45efcf0b2d9242b06e1e0fe42bd76">dmxSyncInterval</a>.</p>
143
144<p>Referenced by <a class="el" href="dmxinit_8c.html#a6ed0a235a6d852bfe0cc0250159a5daf">ddxProcessArgument()</a>.</p>
145
146</div>
147</div>
148<a class="anchor" id="aa5bb6eee83aba5bedf3c93fbb85af049"></a><!-- doxytag: member="dmxsync.c::dmxSyncBlockHandler" ref="aa5bb6eee83aba5bedf3c93fbb85af049" args="(pointer blockData, OSTimePtr pTimeout, pointer pReadMask)" -->
149<div class="memitem">
150<div class="memproto">
151      <table class="memname">
152        <tr>
153          <td class="memname">static void dmxSyncBlockHandler </td>
154          <td>(</td>
155          <td class="paramtype">pointer&#160;</td>
156          <td class="paramname"><em>blockData</em>, </td>
157        </tr>
158        <tr>
159          <td class="paramkey"></td>
160          <td></td>
161          <td class="paramtype">OSTimePtr&#160;</td>
162          <td class="paramname"><em>pTimeout</em>, </td>
163        </tr>
164        <tr>
165          <td class="paramkey"></td>
166          <td></td>
167          <td class="paramtype">pointer&#160;</td>
168          <td class="paramname"><em>pReadMask</em>&#160;</td>
169        </tr>
170        <tr>
171          <td></td>
172          <td>)</td>
173          <td></td><td><code> [static]</code></td>
174        </tr>
175      </table>
176</div>
177<div class="memdoc">
178
179<p>References <a class="el" href="dmxsync_8c.html#a9466911712aef6631a5b88d1bcb1afad">dmxSyncTimer</a>.</p>
180
181<p>Referenced by <a class="el" href="dmxsync_8h.html#a0b349896e58d4291d712e31121fdc0ac">dmxSyncInit()</a>.</p>
182
183</div>
184</div>
185<a class="anchor" id="a00478eb7de1c84d98b41ca4c6d4b50e4"></a><!-- doxytag: member="dmxsync.c::dmxSyncCallback" ref="a00478eb7de1c84d98b41ca4c6d4b50e4" args="(OsTimerPtr timer, CARD32 time, pointer arg)" -->
186<div class="memitem">
187<div class="memproto">
188      <table class="memname">
189        <tr>
190          <td class="memname">static CARD32 dmxSyncCallback </td>
191          <td>(</td>
192          <td class="paramtype">OsTimerPtr&#160;</td>
193          <td class="paramname"><em>timer</em>, </td>
194        </tr>
195        <tr>
196          <td class="paramkey"></td>
197          <td></td>
198          <td class="paramtype">CARD32&#160;</td>
199          <td class="paramname"><em>time</em>, </td>
200        </tr>
201        <tr>
202          <td class="paramkey"></td>
203          <td></td>
204          <td class="paramtype">pointer&#160;</td>
205          <td class="paramname"><em>arg</em>&#160;</td>
206        </tr>
207        <tr>
208          <td></td>
209          <td>)</td>
210          <td></td><td><code> [static]</code></td>
211        </tr>
212      </table>
213</div>
214<div class="memdoc">
215
216<p>References <a class="el" href="dmxsync_8c.html#a3f47aabdd830525720f7a01acbac91ef">dmxDoSync()</a>, <a class="el" href="dmx_8h.html#a5a881109fe1e32c74cda4a280b09a7c4">dmxNumScreens</a>, <a class="el" href="dmx_8h.html#a3e242a6818df05e547a4776919e3827f">dmxScreens</a>, <a class="el" href="dmxsync_8c.html#a6fb7fbcbe509b8ffb8637691925d46f2">dmxSyncPending</a>, and <a class="el" href="struct__DMXScreenInfo.html#a2c3aa46a8fafabc0a9af28948055fcb0">_DMXScreenInfo::needsSync</a>.</p>
217
218<p>Referenced by <a class="el" href="dmxsync_8h.html#ab848762f4d2e30d31b87d3e8e10c5967">dmxSync()</a>.</p>
219
220</div>
221</div>
222<a class="anchor" id="a0b349896e58d4291d712e31121fdc0ac"></a><!-- doxytag: member="dmxsync.c::dmxSyncInit" ref="a0b349896e58d4291d712e31121fdc0ac" args="(void)" -->
223<div class="memitem">
224<div class="memproto">
225      <table class="memname">
226        <tr>
227          <td class="memname">void dmxSyncInit </td>
228          <td>(</td>
229          <td class="paramtype">void&#160;</td>
230          <td class="paramname"></td><td>)</td>
231          <td></td>
232        </tr>
233      </table>
234</div>
235<div class="memdoc">
236<p>Initialize the XSync() batching optimization, but only if <a class="el" href="dmxsync_8h.html#ae0a769161d6f8d88067a9cac16f9cf6f">dmxSyncActivate</a> was last called with a non-negative value. </p>
237
238<p>References <a class="el" href="dmxlog_8h.html#aeed612a5c0be196e23bd6b71b76b917faf73564300bdffb23b369b84c842aceea">dmxInfo</a>, <a class="el" href="dmxlog_8c.html#ab6259430a57c3cffdfc9f6259df0ad23">dmxLog()</a>, <a class="el" href="dmxsync_8c.html#aa5bb6eee83aba5bedf3c93fbb85af049">dmxSyncBlockHandler()</a>, <a class="el" href="dmxsync_8c.html#a01c45efcf0b2d9242b06e1e0fe42bd76">dmxSyncInterval</a>, and <a class="el" href="dmxsync_8c.html#a9329ae45fff6668caaca1fb93792b0b9">dmxSyncWakeupHandler()</a>.</p>
239
240<p>Referenced by <a class="el" href="dmxinit_8c.html#a51c195c51f4f09e981384a4215f82321">InitOutput()</a>.</p>
241
242</div>
243</div>
244<a class="anchor" id="a9329ae45fff6668caaca1fb93792b0b9"></a><!-- doxytag: member="dmxsync.c::dmxSyncWakeupHandler" ref="a9329ae45fff6668caaca1fb93792b0b9" args="(pointer blockData, int result, pointer pReadMask)" -->
245<div class="memitem">
246<div class="memproto">
247      <table class="memname">
248        <tr>
249          <td class="memname">static void dmxSyncWakeupHandler </td>
250          <td>(</td>
251          <td class="paramtype">pointer&#160;</td>
252          <td class="paramname"><em>blockData</em>, </td>
253        </tr>
254        <tr>
255          <td class="paramkey"></td>
256          <td></td>
257          <td class="paramtype">int&#160;</td>
258          <td class="paramname"><em>result</em>, </td>
259        </tr>
260        <tr>
261          <td class="paramkey"></td>
262          <td></td>
263          <td class="paramtype">pointer&#160;</td>
264          <td class="paramname"><em>pReadMask</em>&#160;</td>
265        </tr>
266        <tr>
267          <td></td>
268          <td>)</td>
269          <td></td><td><code> [static]</code></td>
270        </tr>
271      </table>
272</div>
273<div class="memdoc">
274
275<p>Referenced by <a class="el" href="dmxsync_8h.html#a0b349896e58d4291d712e31121fdc0ac">dmxSyncInit()</a>.</p>
276
277</div>
278</div>
279<hr/><h2>Variable Documentation</h2>
280<a class="anchor" id="a01c45efcf0b2d9242b06e1e0fe42bd76"></a><!-- doxytag: member="dmxsync.c::dmxSyncInterval" ref="a01c45efcf0b2d9242b06e1e0fe42bd76" args="" -->
281<div class="memitem">
282<div class="memproto">
283      <table class="memname">
284        <tr>
285          <td class="memname">int <a class="el" href="dmxsync_8c.html#a01c45efcf0b2d9242b06e1e0fe42bd76">dmxSyncInterval</a> = 100<code> [static]</code></td>
286        </tr>
287      </table>
288</div>
289<div class="memdoc">
290
291<p>Referenced by <a class="el" href="dmxsync_8h.html#ab848762f4d2e30d31b87d3e8e10c5967">dmxSync()</a>, <a class="el" href="dmxsync_8h.html#ae0a769161d6f8d88067a9cac16f9cf6f">dmxSyncActivate()</a>, and <a class="el" href="dmxsync_8h.html#a0b349896e58d4291d712e31121fdc0ac">dmxSyncInit()</a>.</p>
292
293</div>
294</div>
295<a class="anchor" id="a6fb7fbcbe509b8ffb8637691925d46f2"></a><!-- doxytag: member="dmxsync.c::dmxSyncPending" ref="a6fb7fbcbe509b8ffb8637691925d46f2" args="" -->
296<div class="memitem">
297<div class="memproto">
298      <table class="memname">
299        <tr>
300          <td class="memname">int <a class="el" href="dmxsync_8c.html#a6fb7fbcbe509b8ffb8637691925d46f2">dmxSyncPending</a><code> [static]</code></td>
301        </tr>
302      </table>
303</div>
304<div class="memdoc">
305
306<p>Referenced by <a class="el" href="dmxsync_8c.html#a3f47aabdd830525720f7a01acbac91ef">dmxDoSync()</a>, <a class="el" href="dmxsync_8h.html#ab848762f4d2e30d31b87d3e8e10c5967">dmxSync()</a>, and <a class="el" href="dmxsync_8c.html#a00478eb7de1c84d98b41ca4c6d4b50e4">dmxSyncCallback()</a>.</p>
307
308</div>
309</div>
310<a class="anchor" id="a9466911712aef6631a5b88d1bcb1afad"></a><!-- doxytag: member="dmxsync.c::dmxSyncTimer" ref="a9466911712aef6631a5b88d1bcb1afad" args="" -->
311<div class="memitem">
312<div class="memproto">
313      <table class="memname">
314        <tr>
315          <td class="memname">OsTimerPtr <a class="el" href="dmxsync_8c.html#a9466911712aef6631a5b88d1bcb1afad">dmxSyncTimer</a><code> [static]</code></td>
316        </tr>
317      </table>
318</div>
319<div class="memdoc">
320
321<p>Referenced by <a class="el" href="dmxsync_8h.html#ab848762f4d2e30d31b87d3e8e10c5967">dmxSync()</a>, and <a class="el" href="dmxsync_8c.html#aa5bb6eee83aba5bedf3c93fbb85af049">dmxSyncBlockHandler()</a>.</p>
322
323</div>
324</div>
325</div>
326</div>
327  <div id="nav-path" class="navpath">
328    <ul>
329      <li class="navelem"><a class="el" href="dmxsync_8c.html">dmxsync.c</a>      </li>
330    <hr>
331    <address>
332      <small>
333        Generated June 29, 2004 for <a
334        href="http://dmx.sourceforge.net">Distributed Multihead X</a> by
335        <a href="http://www.doxygen.org/index.html">doxygen</a>
336        1.3.4.
337      </small>
338    </addres>
339    </hr>
340  </body>
341</html>
342