<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jul 28, 2011, at 10:19 PM, xue wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="line-height: 1.7; font-size: 14px; "><div><div style="color: rgb(0, 0, 0); font-family: arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span class="Apple-style-span" style="color: rgb(255, 0, 0); font-family: Calibri; ">/* Here should process the queue data before get new frame from source, this very important for IP net work camera, the video latency will 50ms shorter than before. Zack */</span></div><div style="color: rgb(0, 0, 0); font-family: arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="COLOR: red" lang="EN-US"><font face="Calibri">if (tv_timeToDelay.tv_sec == 0 && tv_timeToDelay.tv_usec == 0){<o:p></o:p></font></span></div><div style="color: rgb(0, 0, 0); font-family: arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="COLOR: red" lang="EN-US"><font face="Calibri">         fDelayQueue.handleAlarm();<o:p></o:p></font></span></div><div style="color: rgb(0, 0, 0); font-family: arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="COLOR: red" lang="EN-US"><font face="Calibri">         return ;<o:p></o:p></font></span></div><div style="color: rgb(0, 0, 0); font-family: arial; margin-top: 0cm; margin-right: 0cm; margin-bottom: 0pt; margin-left: 0cm; "><span style="COLOR: red" lang="EN-US"><font face="Calibri">}</font></span></div></div></div></blockquote><div><br></div></div>I don't understand how this could make any difference, because - within the event loop - "SingleStep()" is called over and over again.  Therefore, in the current code, the event loop consists of<div><span class="Apple-tab-span" style="white-space:pre">  </span>select()</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>socket handler (if any)</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>delay queue handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">      </span>select()</div><div><span class="Apple-tab-span" style="white-space: pre; ">  </span>socket handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">   </span>delay queue handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">      </span>select()</div><div><span class="Apple-tab-span" style="white-space: pre; ">  </span>socket handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">   </span>delay queue handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">      </span>select()</div><div><span class="Apple-tab-span" style="white-space: pre; ">  </span>socket handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">   </span>delay queue handler (if any)</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>…</div><div><br></div><div>Your proposed change merely changes this to:</div><div><span class="Apple-tab-span" style="white-space: pre; ">     </span>delay queue handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">      </span>select()</div><div><span class="Apple-tab-span" style="white-space: pre; ">  </span>socket handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">   </span>delay queue handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">      </span>delay queue handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">      </span>select()</div><div><span class="Apple-tab-span" style="white-space: pre; ">  </span>socket handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">   </span>delay queue handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">      </span>delay queue handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">      </span>select()</div><div><span class="Apple-tab-span" style="white-space: pre; ">  </span>socket handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">   </span>delay queue handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">      </span>delay queue handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">      </span>select()</div><div><span class="Apple-tab-span" style="white-space: pre; ">  </span>socket handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">   </span>delay queue handler (if any)</div><div><span class="Apple-tab-span" style="white-space: pre; ">      </span>…</div><div><br></div><div>Calling up to two delay queue handlers for each call to "select()" shouldn't make a difference (except perhaps in weird circumstances).</div><div><br></div><div>In any case:</div><div>1/ Your proposed code change is wrong, because of the possibility that your new delay queue handler will cause "fReadSet" to be modified.  (Note the comment at the end of the "SingleStep()" code.</div><div>2/ As I noted in my previous message, you are welcome (of course) to make this change in your own code, but if you do, you should change the name of the class, so that it doesn't clash with the name "BasicTaskScheduler" used by the released code.</div><div><br><div><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; ">Ross Finlayson<br>Live Networks, Inc.<br><a href="http://www.live555.com/">http://www.live555.com/</a></span>
</div>
<br></div></div></body></html>