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 Page</span></a></li> 13 <li><a href="annotated.html"><span>Data 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 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> | 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 "<a class="el" href="dmx_8h_source.html">dmx.h</a>"</code><br/> 46<code>#include "<a class="el" href="dmxsync_8h_source.html">dmxsync.h</a>"</code><br/> 47<code>#include "<a class="el" href="dmxstat_8h_source.html">dmxstat.h</a>"</code><br/> 48<code>#include "<a class="el" href="dmxlog_8h_source.html">dmxlog.h</a>"</code><br/> 49<code>#include <sys/time.h></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 </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 </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 </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 </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 </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 </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 </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 </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 </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 </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> * </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> * </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 </td> 105 <td class="paramname"><em>now</em> </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 * </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 </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 </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 </td> 168 <td class="paramname"><em>pReadMask</em> </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 </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 </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 </td> 205 <td class="paramname"><em>arg</em> </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 </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 </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 </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 </td> 264 <td class="paramname"><em>pReadMask</em> </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