aboutsummaryrefslogtreecommitdiff
path: root/xorg-server/hw/dmx/doc/html/dmxsync_8c.html
diff options
context:
space:
mode:
Diffstat (limited to 'xorg-server/hw/dmx/doc/html/dmxsync_8c.html')
-rw-r--r--xorg-server/hw/dmx/doc/html/dmxsync_8c.html378
1 files changed, 279 insertions, 99 deletions
diff --git a/xorg-server/hw/dmx/doc/html/dmxsync_8c.html b/xorg-server/hw/dmx/doc/html/dmxsync_8c.html
index 76a940dd9..6db2aeb60 100644
--- a/xorg-server/hw/dmx/doc/html/dmxsync_8c.html
+++ b/xorg-server/hw/dmx/doc/html/dmxsync_8c.html
@@ -6,125 +6,305 @@
<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>dmxsync.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="dmxstat_8h-source.html">dmxstat.h</a>"</code><br>
-<code>#include "<a class="el" href="dmxlog_8h-source.html">dmxlog.h</a>"</code><br>
-<code>#include &lt;sys/time.h&gt;</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="dmxsync_8c.html#a7">dmxSyncActivate</a> (const char *interval)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsync_8c.html#a8">dmxSyncInit</a> (void)</td></tr>
-
-<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="dmxsync_8c.html#a9">dmxSync</a> (<a class="el" href="struct__DMXScreenInfo.html">DMXScreenInfo</a> *dmxScreen, Bool now)</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>dmxsync.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="dmxstat_8h_source.html">dmxstat.h</a>&quot;</code><br/>
+<code>#include &quot;<a class="el" href="dmxlog_8h_source.html">dmxlog.h</a>&quot;</code><br/>
+<code>#include &lt;sys/time.h&gt;</code><br/>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td colspan="2"><h2>Functions</h2></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</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>
+<tr><td class="memItemLeft" align="right" valign="top">static CARD32&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#a00478eb7de1c84d98b41ca4c6d4b50e4">dmxSyncCallback</a> (OsTimerPtr timer, CARD32 time, pointer arg)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#aa5bb6eee83aba5bedf3c93fbb85af049">dmxSyncBlockHandler</a> (pointer blockData, OSTimePtr pTimeout, pointer pReadMask)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#a9329ae45fff6668caaca1fb93792b0b9">dmxSyncWakeupHandler</a> (pointer blockData, int result, pointer pReadMask)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#ae0a769161d6f8d88067a9cac16f9cf6f">dmxSyncActivate</a> (const char *interval)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#a0b349896e58d4291d712e31121fdc0ac">dmxSyncInit</a> (void)</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</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>
+<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="dmxsync_8c.html#a01c45efcf0b2d9242b06e1e0fe42bd76">dmxSyncInterval</a> = 100</td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static OsTimerPtr&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#a9466911712aef6631a5b88d1bcb1afad">dmxSyncTimer</a></td></tr>
+<tr><td class="memItemLeft" align="right" valign="top">static int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="dmxsync_8c.html#a6fb7fbcbe509b8ffb8637691925d46f2">dmxSyncPending</a></td></tr>
</table>
-<hr><a name="_details"></a><h2>Detailed Description</h2>
-The DMX server code is written to call <a class="el" href="dmxsync_8c.html#a9">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 #dmxstat.c.<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.<hr><h2>Function Documentation</h2>
-<a class="anchor" name="a9" doxytag="dmxsync.c::dmxSync" ></a><p>
-<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
- <tr>
- <td class="mdRow">
- <table cellpadding="0" cellspacing="0" border="0">
+<hr/><a name="_details"></a><h2>Detailed Description</h2>
+<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>
+<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>
+<hr/><h2>Function Documentation</h2>
+<a class="anchor" id="a3f47aabdd830525720f7a01acbac91ef"></a><!-- doxytag: member="dmxsync.c::dmxDoSync" ref="a3f47aabdd830525720f7a01acbac91ef" args="(DMXScreenInfo *dmxScreen)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void dmxDoSync </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><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="dmxstat_8c_source.html#l00073">dmxStatInterval</a>, <a class="el" href="dmxstat_8c_source.html#l00139">dmxStatSync()</a>, <a class="el" href="dmxsync_8c_source.html#l00061">dmxSyncPending</a>, and <a class="el" href="dmx_8h_source.html#l00183">_DMXScreenInfo::needsSync</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxsync_8c_source.html#l00150">dmxSync()</a>, and <a class="el" href="dmxsync_8c_source.html#l00082">dmxSyncCallback()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ab848762f4d2e30d31b87d3e8e10c5967"></a><!-- doxytag: member="dmxsync.c::dmxSync" ref="ab848762f4d2e30d31b87d3e8e10c5967" args="(DMXScreenInfo *dmxScreen, Bool now)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
<tr>
- <td class="md" nowrap valign="top"> void dmxSync </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="mdname" nowrap> <em>dmxScreen</em>, </td>
+ <td class="memname">void dmxSync </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">Bool&nbsp;</td>
+ <td class="paramname"> <em>now</em></td><td>&nbsp;</td>
+ </tr>
+ <tr>
<td></td>
- <td class="md" nowrap>Bool&nbsp;</td>
- <td class="mdname" nowrap> <em>now</em></td>
+ <td>)</td>
+ <td></td><td></td><td></td>
</tr>
+ </table>
+</div>
+<div class="memdoc">
+<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>
+<p>(Note that this function uses TimerSet but works correctly in the face of a server generation. See the source for details.)</p>
+<p>If <em>dmxScreen</em> is <em>NULL</em>, then all pending syncs will be flushed immediately. </p>
+
+<p>References <a class="el" href="dmxsync_8c_source.html#l00063">dmxDoSync()</a>, <a class="el" href="dmxlog_8h_source.html#l00051">dmxFatal</a>, <a class="el" href="dmxscrinit_8c_source.html#l00067">dmxGeneration</a>, <a class="el" href="dmxlog_8c_source.html#l00159">dmxLog()</a>, <a class="el" href="dmxsync_8c_source.html#l00082">dmxSyncCallback()</a>, <a class="el" href="dmxsync_8c_source.html#l00059">dmxSyncInterval</a>, <a class="el" href="dmxsync_8c_source.html#l00061">dmxSyncPending</a>, <a class="el" href="dmxsync_8c_source.html#l00060">dmxSyncTimer</a>, <a class="el" href="dmx_8h_source.html#l00094">_DMXScreenInfo::name</a>, and <a class="el" href="dmx_8h_source.html#l00183">_DMXScreenInfo::needsSync</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxcursor_8c_source.html#l00711">_dmxMoveCursor()</a>, <a class="el" href="dmxcursor_8c_source.html#l00729">_dmxSetCursor()</a>, <a class="el" href="dmxextension_8c_source.html#l00248">dmxAddInput()</a>, <a class="el" href="dmxextension_8c_source.html#l01170">dmxAttachScreen()</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="dmxbackend_8c_source.html#l00240">dmxBackendUpdatePosition()</a>, <a class="el" href="dmxcursor_8c_source.html#l00578">dmxBECreateCursor()</a>, <a class="el" href="dmxpixmap_8c_source.html#l00059">dmxBECreatePixmap()</a>, <a class="el" href="dmxfont_8c_source.html#l00252">dmxBELoadFont()</a>, <a class="el" href="dmxpixmap_8c_source.html#l00191">dmxBitmapToRegion()</a>, <a class="el" href="dmxwindow_8c_source.html#l00910">dmxChangeBorderWidth()</a>, <a class="el" href="dmxgc_8c_source.html#l00190">dmxChangeGC()</a>, <a class="el" href="dmxpict_8c_source.html#l00851">dmxChangePictureClip()</a>, <a class="el" href="dmxwindow_8c_source.html#l00566">dmxChangeWindowAttributes()</a>, <a class="el" href="dmxfont_8c_source.html#l00147">dmxCheckFontPath()</a>, <a class="el" href="dmxfont_8c_source.html#l00098">dmxCheckFontPathElement()</a>, <a class="el" href="dmxcommon_8c_source.html#l00479">dmxCommonMouOn()</a>, <a class="el" href="dmxcommon_8c_source.html#l00567">dmxCommonSaveState()</a>, <a class="el" href="dmxpict_8c_source.html#l01041">dmxComposite()</a>, <a class="el" href="dmxpict_8c_source.html#l01100">dmxCompositeRects()</a>, <a class="el" href="dmxconsole_8c_source.html#l00986">dmxConsoleCapture()</a>, <a class="el" href="dmxconsole_8c_source.html#l01015">dmxConsoleUncapture()</a>, <a class="el" href="dmxgcops_8c_source.html#l00171">dmxCopyArea()</a>, <a class="el" href="dmxgcops_8c_source.html#l00197">dmxCopyPlane()</a>, <a class="el" href="dmxwindow_8c_source.html#l00794">dmxCopyWindow()</a>, <a class="el" href="dmxwindow_8c_source.html#l00280">dmxCreateAndRealizeWindow()</a>, <a class="el" href="dmxwindow_8c_source.html#l00303">dmxCreateWindow()</a>, <a class="el" href="dmxpict_8c_source.html#l00831">dmxDestroyPicture()</a>, <a class="el" href="dmxpict_8c_source.html#l00916">dmxDestroyPictureClip()</a>, <a class="el" href="dmxpixmap_8c_source.html#l00154">dmxDestroyPixmap()</a>, <a class="el" href="dmxwindow_8c_source.html#l00396">dmxDestroyWindow()</a>, <a class="el" href="dmxdpms_8c_source.html#l00130">dmxDPMSInit()</a>, <a class="el" href="dmxdpms_8c_source.html#l00151">dmxDPMSTerm()</a>, <a class="el" href="dmxgcops_8c_source.html#l00325">dmxFillPolygon()</a>, <a class="el" href="dmxextension_8c_source.html#l00292">dmxFlushPendingSyncs()</a>, <a class="el" href="dmxgcops_8c_source.html#l00554">dmxGetImage()</a>, <a class="el" href="dmxgcops_8c_source.html#l00470">dmxImageText16()</a>, <a class="el" href="dmxgcops_8c_source.html#l00450">dmxImageText8()</a>, <a class="el" href="dmxcmap_8c_source.html#l00147">dmxInstallColormap()</a>, <a class="el" href="dmxgcops_8c_source.html#l00305">dmxPolyArc()</a>, <a class="el" href="dmxgcops_8c_source.html#l00365">dmxPolyFillArc()</a>, <a class="el" href="dmxgcops_8c_source.html#l00345">dmxPolyFillRect()</a>, <a class="el" href="dmxgcops_8c_source.html#l00244">dmxPolylines()</a>, <a class="el" href="dmxgcops_8c_source.html#l00224">dmxPolyPoint()</a>, <a class="el" href="dmxgcops_8c_source.html#l00284">dmxPolyRectangle()</a>, <a class="el" href="dmxgcops_8c_source.html#l00264">dmxPolySegment()</a>, <a class="el" href="dmxgcops_8c_source.html#l00417">dmxPolyText16()</a>, <a class="el" href="dmxgcops_8c_source.html#l00385">dmxPolyText8()</a>, <a class="el" href="dmxwindow_8c_source.html#l00431">dmxPositionWindow()</a>, <a class="el" href="dmxpict_8c_source.html#l00342">dmxProcRenderAddGlyphs()</a>, <a class="el" href="dmxpict_8c_source.html#l00437">dmxProcRenderCompositeGlyphs()</a>, <a class="el" href="dmxpict_8c_source.html#l00397">dmxProcRenderFreeGlyphs()</a>, <a class="el" href="dmxpict_8c_source.html#l00311">dmxProcRenderFreeGlyphSet()</a>, <a class="el" href="dmxpict_8c_source.html#l00655">dmxProcRenderSetPictureFilter()</a>, <a class="el" href="dmxpict_8c_source.html#l00616">dmxProcRenderSetPictureTransform()</a>, <a class="el" href="dmxgcops_8c_source.html#l00097">dmxPutImage()</a>, <a class="el" href="dmxwindow_8c_source.html#l00601">dmxRealizeWindow()</a>, <a class="el" href="dmxwindow_8c_source.html#l00879">dmxReparentWindow()</a>, <a class="el" href="dmxwindow_8c_source.html#l00143">dmxResizeRootWindow()</a>, <a class="el" href="dmxwindow_8c_source.html#l00120">dmxResizeScreenWindow()</a>, <a class="el" href="dmxwindow_8c_source.html#l00835">dmxResizeWindow()</a>, <a class="el" href="dmxwindow_8c_source.html#l00723">dmxRestackWindow()</a>, <a class="el" href="dmxscrinit_8c_source.html#l00512">dmxSaveScreen()</a>, <a class="el" href="dmxfont_8c_source.html#l00114">dmxSetFontPath()</a>, <a class="el" href="dmxwindow_8c_source.html#l01002">dmxSetShape()</a>, <a class="el" href="dmxshadow_8c_source.html#l00047">dmxShadowUpdateProc()</a>, <a class="el" href="dmxcmap_8c_source.html#l00166">dmxStoreColors()</a>, <a class="el" href="dmxpict_8c_source.html#l01150">dmxTrapezoids()</a>, <a class="el" href="dmxpict_8c_source.html#l01193">dmxTriangles()</a>, <a class="el" href="dmxpict_8c_source.html#l01278">dmxTriFan()</a>, <a class="el" href="dmxpict_8c_source.html#l01236">dmxTriStrip()</a>, <a class="el" href="dmxwindow_8c_source.html#l00640">dmxUnrealizeWindow()</a>, <a class="el" href="dmxpict_8c_source.html#l00968">dmxValidatePicture()</a>, and <a class="el" href="dmxwindow_8c_source.html#l00758">dmxWindowExposures()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="ae0a769161d6f8d88067a9cac16f9cf6f"></a><!-- doxytag: member="dmxsync.c::dmxSyncActivate" ref="ae0a769161d6f8d88067a9cac16f9cf6f" args="(const char *interval)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
<tr>
+ <td class="memname">void dmxSyncActivate </td>
+ <td>(</td>
+ <td class="paramtype">const char *&nbsp;</td>
+ <td class="paramname"> <em>interval</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>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>
+<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>
+
+<p>References <a class="el" href="dmxsync_8c_source.html#l00059">dmxSyncInterval</a>.</p>
+<p>Referenced by <a class="el" href="dmxinit_8c_source.html#l00878">ddxProcessArgument()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="aa5bb6eee83aba5bedf3c93fbb85af049"></a><!-- doxytag: member="dmxsync.c::dmxSyncBlockHandler" ref="aa5bb6eee83aba5bedf3c93fbb85af049" args="(pointer blockData, OSTimePtr pTimeout, pointer pReadMask)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void dmxSyncBlockHandler </td>
+ <td>(</td>
+ <td class="paramtype">pointer&nbsp;</td>
+ <td class="paramname"> <em>blockData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">OSTimePtr&nbsp;</td>
+ <td class="paramname"> <em>pTimeout</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">pointer&nbsp;</td>
+ <td class="paramname"> <em>pReadMask</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>
-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#a7">dmxSyncActivate()</a> before <a class="el" href="dmxsync_8c.html#a8">dmxSyncInit()</a> was called, then no XSync() batching is performed and this function always calles XSync() immediately.<p>
-(Note that this function uses TimerSet but works correctly in the face of a server generation. See the source for details.)<p>
-If <em>dmxScreen</em> is <em>NULL</em>, then all pending syncs will be flushed immediately. </td>
- </tr>
-</table>
-<a class="anchor" name="a7" doxytag="dmxsync.c::dmxSyncActivate" ></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="dmxsync_8c_source.html#l00060">dmxSyncTimer</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxsync_8c_source.html#l00124">dmxSyncInit()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a00478eb7de1c84d98b41ca4c6d4b50e4"></a><!-- doxytag: member="dmxsync.c::dmxSyncCallback" ref="a00478eb7de1c84d98b41ca4c6d4b50e4" args="(OsTimerPtr timer, CARD32 time, pointer arg)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static CARD32 dmxSyncCallback </td>
+ <td>(</td>
+ <td class="paramtype">OsTimerPtr&nbsp;</td>
+ <td class="paramname"> <em>timer</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">CARD32&nbsp;</td>
+ <td class="paramname"> <em>time</em>, </td>
+ </tr>
<tr>
- <td class="md" nowrap valign="top"> void dmxSyncActivate </td>
- <td class="md" valign="top">(&nbsp;</td>
- <td class="md" nowrap valign="top">const char *&nbsp;</td>
- <td class="mdname1" valign="top" nowrap> <em>interval</em> </td>
- <td class="md" valign="top">&nbsp;)&nbsp;</td>
- <td class="md" nowrap></td>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">pointer&nbsp;</td>
+ <td class="paramname"> <em>arg</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="dmxsync_8c_source.html#l00063">dmxDoSync()</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="dmxsync_8c_source.html#l00061">dmxSyncPending</a>, and <a class="el" href="dmx_8h_source.html#l00183">_DMXScreenInfo::needsSync</a>.</p>
+<p>Referenced by <a class="el" href="dmxsync_8c_source.html#l00150">dmxSync()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a0b349896e58d4291d712e31121fdc0ac"></a><!-- doxytag: member="dmxsync.c::dmxSyncInit" ref="a0b349896e58d4291d712e31121fdc0ac" args="(void)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">void dmxSyncInit </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>
-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>
-Note that the parameter to this routine is a string, since it will usually be called from <a class="el" href="dmxinit_8c.html#a40">ddxProcessArgument</a> in #dmxinit.c </td>
- </tr>
-</table>
-<a class="anchor" name="a8" doxytag="dmxsync.c::dmxSyncInit" ></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 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>
+
+<p>References <a class="el" href="dmxlog_8h_source.html#l00044">dmxInfo</a>, <a class="el" href="dmxlog_8c_source.html#l00159">dmxLog()</a>, <a class="el" href="dmxsync_8c_source.html#l00096">dmxSyncBlockHandler()</a>, <a class="el" href="dmxsync_8c_source.html#l00059">dmxSyncInterval</a>, and <a class="el" href="dmxsync_8c_source.html#l00102">dmxSyncWakeupHandler()</a>.</p>
+
+<p>Referenced by <a class="el" href="dmxinit_8c_source.html#l00561">InitOutput()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9329ae45fff6668caaca1fb93792b0b9"></a><!-- doxytag: member="dmxsync.c::dmxSyncWakeupHandler" ref="a9329ae45fff6668caaca1fb93792b0b9" args="(pointer blockData, int result, pointer pReadMask)" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">static void dmxSyncWakeupHandler </td>
+ <td>(</td>
+ <td class="paramtype">pointer&nbsp;</td>
+ <td class="paramname"> <em>blockData</em>, </td>
+ </tr>
+ <tr>
+ <td class="paramkey"></td>
+ <td></td>
+ <td class="paramtype">int&nbsp;</td>
+ <td class="paramname"> <em>result</em>, </td>
+ </tr>
<tr>
- <td class="md" nowrap valign="top"> void dmxSyncInit </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">pointer&nbsp;</td>
+ <td class="paramname"> <em>pReadMask</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>Referenced by <a class="el" href="dmxsync_8c_source.html#l00124">dmxSyncInit()</a>.</p>
+</div>
+</div>
+<hr/><h2>Variable Documentation</h2>
+<a class="anchor" id="a01c45efcf0b2d9242b06e1e0fe42bd76"></a><!-- doxytag: member="dmxsync.c::dmxSyncInterval" ref="a01c45efcf0b2d9242b06e1e0fe42bd76" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="dmxsync_8c.html#a01c45efcf0b2d9242b06e1e0fe42bd76">dmxSyncInterval</a> = 100<code> [static]</code></td>
+ </tr>
</table>
- </td>
- </tr>
-</table>
-<table cellspacing=5 cellpadding=0 border=0>
- <tr>
- <td>
- &nbsp;
- </td>
- <td>
-
-<p>
-Initialize the XSync() batching optimization, but only if <a class="el" href="dmxsync_8h.html#a0">dmxSyncActivate</a> was last called with a non-negative value. </td>
- </tr>
-</table>
+</div>
+<div class="memdoc">
+
+<p>Referenced by <a class="el" href="dmxsync_8c_source.html#l00150">dmxSync()</a>, <a class="el" href="dmxsync_8c_source.html#l00115">dmxSyncActivate()</a>, and <a class="el" href="dmxsync_8c_source.html#l00124">dmxSyncInit()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a6fb7fbcbe509b8ffb8637691925d46f2"></a><!-- doxytag: member="dmxsync.c::dmxSyncPending" ref="a6fb7fbcbe509b8ffb8637691925d46f2" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">int <a class="el" href="dmxsync_8c.html#a6fb7fbcbe509b8ffb8637691925d46f2">dmxSyncPending</a><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Referenced by <a class="el" href="dmxsync_8c_source.html#l00063">dmxDoSync()</a>, <a class="el" href="dmxsync_8c_source.html#l00150">dmxSync()</a>, and <a class="el" href="dmxsync_8c_source.html#l00082">dmxSyncCallback()</a>.</p>
+
+</div>
+</div>
+<a class="anchor" id="a9466911712aef6631a5b88d1bcb1afad"></a><!-- doxytag: member="dmxsync.c::dmxSyncTimer" ref="a9466911712aef6631a5b88d1bcb1afad" args="" -->
+<div class="memitem">
+<div class="memproto">
+ <table class="memname">
+ <tr>
+ <td class="memname">OsTimerPtr <a class="el" href="dmxsync_8c.html#a9466911712aef6631a5b88d1bcb1afad">dmxSyncTimer</a><code> [static]</code></td>
+ </tr>
+ </table>
+</div>
+<div class="memdoc">
+
+<p>Referenced by <a class="el" href="dmxsync_8c_source.html#l00150">dmxSync()</a>, and <a class="el" href="dmxsync_8c_source.html#l00096">dmxSyncBlockHandler()</a>.</p>
+
+</div>
+</div>
+</div>
<hr>
<address>
<small>