Hi,

I am investigating a problem where APM resumes on laptops running RedHat
7.3's version of 4.2.0 result in X event problems. It boils down to
XFree's internal timer (in usecs, as reported e.g. by xev for each
event) being frozen after resume. The problem is initiated by the
timer's jump after resume when hw and sw clock are being synched. As a
workaround, if you omit this sync, the timer does not freeze, but then
you've got a wrong system time. The problem can only be cured by
restarting the X server.

A detailed description can be found at 
http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=63509

I've tried to locate the problem by digging through 4.2.0's code. Here's
what I found: The internal timer's value is usually being defined by
GetTimeInMillis(), which is based on gettimeofday(). After a problematic
resume, calls to gettimeofday() are still fine, so the problem is within
the X server. For some reason at event creation, a stale time value is
used instead of a current value from GetTimeInMillis() (which should
still be OK), resulting in all subsequent X events having the same time
value. As I'm not familiar with the internals of XFree86's event system,
I couldn't easily find the reason for this. Maybe the wire_to_event
functions for keyboard and mouse events might be the place to look at.

Another point to start might be a
.../programs/Xserver/hw/xfree86/CHANGELOG 
message by Brendan Eich as of Oct 01,2001:

 338. Modified GetTimeInMillis() to handle non monotonous system clocks
      (Egbert Eich).

Can someone please tell me where to look specifically for a possible
source of this problem? Any help is appreciated! I'll provide more info
if requested.

Cheers,
Nils

_______________________________________________
Xpert mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/xpert

Reply via email to