Summary: | RECORD extension (in X.Org version: 1.6.0) does not work anymore | ||
---|---|---|---|
Product: | xorg | Reporter: | Henrik Sandklef <hesa> |
Component: | Lib/Xext | Assignee: | Xorg Project Team <xorg-team> |
Status: | RESOLVED DUPLICATE | QA Contact: | Xorg Project Team <xorg-team> |
Severity: | major | ||
Priority: | medium | CC: | adam, dragonfyre13, nanotube, peter.hutterer, rami.ylimaki |
Version: | unspecified | ||
Hardware: | x86 (IA32) | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: |
Description
Henrik Sandklef
2009-05-27 16:01:04 UTC
event delivery has changed a lot between 1.5 and 1.6 and then again to 1.7. currently there are big FIXMEs in the code (ProcessOtherEvent() and DeliverDeviceEvent() I think). I'm planning to restore this feature for 1.7, but I'd appreciate any help you can provide since 1.6 is quite different and I'm a bit overloaded. (In reply to comment #0) > Seems as if there something strange going on in > XRecordEnableContextAsync in the latest X.org release. Hi Henrik, I bumped into this problem a while ago and have identified two problems with recording. 1. The xserver doesn't have callbacks for the actual events so nothing is reported to cnee. This is a different problem and is discussed in bug 20500. 2. Cnee fails with XRecordBadContext error. It seems to be a problem with cnee but for some reason I'm only able to reproduce it with newer xlib 1.2 if it's compiled with xcb support. Older xlib 1.1.5 works and also 1.2 works without xcb. Cnee (3.02) starts recording by making XRecordCreateContext and XEnableContextAsync xlib calls. I was able to get rid of the XRecordBadContext error by forcing XFlush after XRecordCreateContext. I think that the flush could be needed because XRecordCreateContext and XRecordEnableContextAsync use different displays (cnee 3.02). Otherwise the following sequence is possible: - XRecordCreateContext is called and placed into xlib output buffer for display A. - Display A buffer isn't flushed because XRecordCreateContext requires no response from xserver. - XRecordEnableContextAsync is called and placed into xlib output buffer for display B. - XRecordEnableContextAsync reads a reply from xserver and therefore the xlib output buffer for display B is flushed. - Xserver cannot handle the request because display A buffer is not flushed yet and therefore the context hasn't been created in xserver side yet. I think that using a different display for the calls is OK but you have to make sure that xserver receives context creation request before it is enabled. Just commenting to ask about any progress those of you with a higher skillset may have done. My C skills are abysmal, and hopping in myself wouldn't be much help. Just wanted to let those of you who may be working on this know, we're watching from the sidelines, and rooting for you. |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.