This is the mail archive of the cygwin-xfree@cygwin.com mailing list for the Cygwin XFree86 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Changes to multiwindow mode and always-on-top (ping Takuma)


Howdy,

At 02:05 AM 3/19/2004 -0500, Harold wrote:
Yup, Takuma knew there were bugs, but the new code is so much more efficient (the old code was performing lots of operations during our block and wakeup handlers, which get called hundreds of times per second) that I told him to leave it there for a few weeks until we could figure out if we could fix it and keep the performance improvement.

Yes, it's way faster than before with his changes, but sometimes it seems to have optimized too many screen updates. These only seem to be occasional glitches, and forcing a redraw of the window always clears things up (except for the stacking order stuff).

I fixed things up the straightforward way:  When a WM_RAISE or
WM_MAP event filters to us, I start with the mapped window, xvert it
to the HWND, and work a way through Win32 space up to the top of the
Z order.  Any window that's still above the HWND we just XRaise()ed, I
XRaise the XWindow of that HWND.  AFAICT this will only occur with AOT
windows, and should result in 0 work at all if there aren't any AOTs...

Hmm... if you have it mostly fixed, then check it in... Takuma is currently burning cycles trying to fix this also but I don't think he has gotten far. I think he will appreciate having a little help :)

All I've really fixed, AFAIK, is the case where the X and W32 stack order aren't the same...I doubt this is what he's having trouble with, it's too simple.

If I put this flag and behavior back I can get things working
100% AFAICT:  a-o-t windows minimized from the taskbar, the
system menu, or the button disappear.
That sounds good. Takuma was talking about re-adding the fRestacking flag... is that the flag you are talking about?

No, unfortunately this is just a bit for the HWND_TOPMOST state of the window when it's minimized. Without clearing the TOPMOST state in W32, the window technically "stay on top" of other windows since a SIZE_MINIMIZE is handled by an ignored MOVE (-32000,-32000) IIRC. Regular apps don't care since they always have a consistent view of a window's position, but in this case we have X which thinks the window is still at (x,y) and Windoze which has it as (-32k,-32k)...

[5 minutes later...]
> This just in: Takuma said go ahead and commit both fixes so he can
> review them.  He says he will be able to respond sometime after four
> hours.  (He is in #cygwinx on irc.freenode.net now.)

OK, it is checked in (sorry if no xorg-commit mail, I think my
pdx.freedesktop.org CVS account has a real name that's not valid...)

-Earle F. Philhower, III
 earle@ziplabel.com
 cdrlabel - ZipLabel - FlpLabel
 http://www.cdrlabel.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]