CVS Update: cr (branch: trunk)
Robert Ellison <[email protected]>
| Newsgroups | gmane.comp.graphics.chromium.cvs |
|---|---|
| Message-ID | <[email protected]> |
CVSROOT: /cvsroot/chromium Module name: cr Repository: cr/spu/replicate/ Changes by: [email protected].(none) 06/01/24 17:05:13 Log message: Fixed a race condition between the X server and a 3D application during replicate. To replicate properly, the replicate SPU must receive an XVncConnected event, followed by an XVncChromiumConnected event. Both are checked for in a loop in replicatespuCheckForVncEvents() that exits when no more X events are pending. If the XVncChromiumConnected event isn't quite pending yet (perhaps because the X server hasn't had a chance to run), the application loop can be exited before the XVncChromiumConnected event arrives, which means that the application will *not* replicate until the *next* time it has a chance to check for VNC events. In the case of a static application (i.e. one that is not rendering continuously, but rather just waits for an Expose), that can be never. (In the case of a dynamic application, VNC events are also checked for at glClear() and at buffer flushes, so the problem isn't noticeable.) The fix is to wait in the replicatespuCheckForVncEvents() loop for the XVncChromiumConnected event to appear, once we see an XVncConnected event. The loop is designed to wait for at most 1000 milliseconds, just in case something unexpected happens and the second event never comes; in this case, when it leaves the loop, it prints a warning. Modified files: cr/spu/replicate/: replicatespu_redirect.c Revision Changes Path 1.32 +60 -1 cr/spu/replicate/replicatespu_redirect.c ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642