Re: Changiung focus in the past ;-)

Sasha_Vasko@osca.state.mo.us
Thu, 9 Nov 2000 10:38:43 -0600




> On Wed, Nov 08, 2000 at 01:52:44PM -0600, Sasha_Vasko@osca.state.mo.us
wrote:
> >
> > >Hi,
> >
> > >I have a hardware problem with my home PC, causing the clock to
> > >run about 1.5hours ahead per day. Whenever I connect to the internet,
> > >I have the time/date corrected by netdate. If I do that, I can't
> > >change the focus from the current window, instead, I have to restart
> > >afterstep or wait for, e.g. 1.5 hours. The same can be observed when
> > >changing the time with date. It may be relevant that this happens
> > >with linux...
> >
> > >This is the case with the oldish 1.5.whatever I have at home as well
as
> > >with the shiny new fully patched AfterStep version 1.8.4 on my
notebook.
> >
> >
> > Unfortunately there is no way to avoid this problem due to the fact
that
> > Window Manager has to compare time of new request for window focusing
to
> > the
> > time when previous window has been focused. This is needed due to the
fact
> > that requests can come in any order at all, So if for example you move
> > mouse
> > over the window and right into another window - request from the first
> > window
> > can come AFTER request from the second window. You get the picture.
>
> The solution to this is useing timestamps instead of CurrentTime. This is
> successfully implementad e.g. by WindowMaker. Also note that focus
changes
> work perfectly with the XServer alone without any window manager.

What do you think we use ? Apples ?
Of course we use timestamps, but we get those timestamps from the X server,
and
when you change your time you break timestamp sequence on the Server.
Besides I'd like to disappoint you and tell you taht, No, WindowMaker does
not use
timestamps in direct violation of ICCCM - they use CurrentTime. (read more
below)

XServer does not care about the time of the request - it receives raw
requests
that all bear basic CurrentTime in the time field. It is responcibility of
the
Window Manager to substitute it to the last timestamp. XServer does not
really
care about anything at all.

>
> > So when you change local time while running X - all of a sudden window
> > manager
> > starts getting new requests as if they came from the past, naturaly it
> > discards
> > those.
> >
> > This problem also happen if you run X windows for more then 50 days in
a
> > row, since
> > timer rolls over at approximately 49.7 days.
> >
> > I've implemented an algorithm to detect such a rollover, and it will be
out
> > when next stable AfterStep comes out. But as to fixing your problem -
> > sorry,
> > no can do. You will have to restart your AfterStep each time you change
> > time.
>
> This is a bug. Windowmaker, sawmill and blackbox have no problem at all
> with changes in local time. X11 itsself has no problems.

If I say that it is not a bug - it is not a bug, trust me.

WindowMaker is not compliant to ICCCM in that reagrds and they don't use
valid timestamp - they use CurrentTime.
Check out :

wSetFocusTo(WScreen *scr, WWindow  *wwin)

function in src/actions.c ( lines 134 - 260 )

I have a feeling that blackbox and sawmill are like that as well.

Note that all 3 are claiming to be fully ICCCM compliant at the same time.
Typical.

On the bright side - there is a way to check for local time change in cases
where AfterStep runs on the same machine as XServer. I've implemented it in
AS devel. Due to hackish nature of it - it will not go into stable yet.


>
> > Cheers
> > Sasha
> >
>
> Rainer


--------------------------------------------------------------------
To unsubscribe from this mailing list, simply type the following at #
echo "unsubscribe as-users <your_email>" | mail majordomo@afterstep.org