1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN">
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">
9 <!-- Generated by Doxygen 1.3.4 -->
10 <div class=
"qindex"><a class=
"qindex" href=
"main.html">Main
Page
</a> |
<a class=
"qindex" href=
"classes.html">Alphabetical
List
</a> |
<a class=
"qindex" href=
"annotated.html">Data
Structures
</a> |
<a class=
"qindex" href=
"files.html">File
List
</a> |
<a class=
"qindex" href=
"functions.html">Data
Fields
</a> |
<a class=
"qindex" href=
"globals.html">Globals
</a></div>
11 <h1>dmxsync.c File Reference
</h1><code>#include
"<a class="el
" href="dmx_8h-source.html
">dmx.h</a>"</code><br>
12 <code>#include
"<a class="el
" href="dmxsync_8h-source.html
">dmxsync.h</a>"</code><br>
13 <code>#include
"<a class="el
" href="dmxstat_8h-source.html
">dmxstat.h</a>"</code><br>
14 <code>#include
"<a class="el
" href="dmxlog_8h-source.html
">dmxlog.h</a>"</code><br>
15 <code>#include
<sys/time.h
></code><br>
16 <table border=
0 cellpadding=
0 cellspacing=
0>
18 <tr><td colspan=
2><br><h2>Functions
</h2></td></tr>
19 <tr><td class=
"memItemLeft" nowrap align=right valign=top
>void
</td><td class=
"memItemRight" valign=bottom
><a class=
"el" href=
"dmxsync_8c.html#a7">dmxSyncActivate
</a> (const char *interval)
</td></tr>
21 <tr><td class=
"memItemLeft" nowrap align=right valign=top
>void
</td><td class=
"memItemRight" valign=bottom
><a class=
"el" href=
"dmxsync_8c.html#a8">dmxSyncInit
</a> (void)
</td></tr>
23 <tr><td class=
"memItemLeft" nowrap align=right valign=top
>void
</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>
26 <hr><a name=
"_details"></a><h2>Detailed Description
</h2>
27 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>
28 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>
29 <a class=
"anchor" name=
"a9" doxytag=
"dmxsync.c::dmxSync" ></a><p>
30 <table class=
"mdTable" width=
"100%" cellpadding=
"2" cellspacing=
"0">
33 <table cellpadding=
"0" cellspacing=
"0" border=
"0">
35 <td class=
"md" nowrap
valign=
"top"> void dmxSync
</td>
36 <td class=
"md" valign=
"top">(
</td>
37 <td class=
"md" nowrap
valign=
"top"><a class=
"el" href=
"struct__DMXScreenInfo.html">DMXScreenInfo
</a> *
</td>
38 <td class=
"mdname" nowrap
> <em>dmxScreen
</em>,
</td>
43 <td class=
"md" nowrap
>Bool
</td>
44 <td class=
"mdname" nowrap
> <em>now
</em></td>
48 <td class=
"md">)
</td>
49 <td class=
"md" colspan=
"2"></td>
56 <table cellspacing=
5 cellpadding=
0 border=
0>
64 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>
65 (Note that this function uses TimerSet but works correctly in the face of a server generation. See the source for details.)
<p>
66 If
<em>dmxScreen
</em> is
<em>NULL
</em>, then all pending syncs will be flushed immediately.
</td>
69 <a class=
"anchor" name=
"a7" doxytag=
"dmxsync.c::dmxSyncActivate" ></a><p>
70 <table class=
"mdTable" width=
"100%" cellpadding=
"2" cellspacing=
"0">
73 <table cellpadding=
"0" cellspacing=
"0" border=
"0">
75 <td class=
"md" nowrap
valign=
"top"> void dmxSyncActivate
</td>
76 <td class=
"md" valign=
"top">(
</td>
77 <td class=
"md" nowrap
valign=
"top">const char *
</td>
78 <td class=
"mdname1" valign=
"top" nowrap
> <em>interval
</em> </td>
79 <td class=
"md" valign=
"top"> )
</td>
80 <td class=
"md" nowrap
></td>
87 <table cellspacing=
5 cellpadding=
0 border=
0>
95 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>
96 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>
99 <a class=
"anchor" name=
"a8" doxytag=
"dmxsync.c::dmxSyncInit" ></a><p>
100 <table class=
"mdTable" width=
"100%" cellpadding=
"2" cellspacing=
"0">
103 <table cellpadding=
"0" cellspacing=
"0" border=
"0">
105 <td class=
"md" nowrap
valign=
"top"> void dmxSyncInit
</td>
106 <td class=
"md" valign=
"top">(
</td>
107 <td class=
"md" nowrap
valign=
"top">void
</td>
108 <td class=
"mdname1" valign=
"top" nowrap
> </td>
109 <td class=
"md" valign=
"top"> )
</td>
110 <td class=
"md" nowrap
></td>
117 <table cellspacing=
5 cellpadding=
0 border=
0>
125 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>
131 Generated June
29,
2004 for
<a
132 href=
"http://dmx.sourceforge.net">Distributed Multihead X
</a> by
133 <a href=
"http://www.doxygen.org/index.html">doxygen
</a>