http://bugs.winehq.org/show_bug.cgi?id=22532
Summary: Lemmix (Lemmings Clones) can't be played because of black screen Product: Wine Version: 1.1.28 Platform: x86 URL: http://ericenzwaan.nl/eric/lemmings/LemmixPlayer_1_3.z ip OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: winex11.drv AssignedTo: wine-bugs@winehq.org ReportedBy: wylda@volny.cz
1. When trying to help with bug 22143, i found there is a regression which causes black screen instead of entering new game.
2. I did a regression test between 1.1.27 and 1.1.28:
commit e3720c2810dda3895d6734c55117b0a355223b1a Author: Alexandre Julliard julliard@winehq.org Date: Thu Aug 13 18:18:22 2009 +0200
winex11: Use the Globally Active focus model with take focus.
:040000 040000 d1fb1709094e60472024b78cf46f7e4c8a451b47 d7b2f829e9cd01101173cc4e65c4e6ff0bb7c6c0 M dlls
3. There is a lot of bug reports suffering from this commit, see bug 20939, bug 20744, bug 20301, bug 19947, bug 19818.
4. Revert of this patch on top of wine-1.1.43-408-g3317fc3 makes that problem go away.
5. Adding author of this patch to CC.
--private keyword: bisected
http://bugs.winehq.org/show_bug.cgi?id=22532
Wylda wylda@volny.cz changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |julliard@winehq.org
http://bugs.winehq.org/show_bug.cgi?id=22532
Wylda wylda@volny.cz changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, regression
http://bugs.winehq.org/show_bug.cgi?id=22532
--- Comment #1 from Vincent Povirk madewokherd@gmail.com 2010-05-01 16:17:58 --- Works for me. What window manager are you using?
http://bugs.winehq.org/show_bug.cgi?id=22532
--- Comment #2 from Wylda wylda@volny.cz 2010-05-01 20:28:20 --- (In reply to comment #1)
Works for me. What window manager are you using?
Debian's KDE v4.3.4
http://bugs.winehq.org/show_bug.cgi?id=22532
Vincent Povirk madewokherd@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1
--- Comment #3 from Vincent Povirk madewokherd@gmail.com 2010-05-03 14:00:30 --- Yep, I see the same thing with kwin. Confirming.
http://bugs.winehq.org/show_bug.cgi?id=22532
--- Comment #4 from Vincent Povirk madewokherd@gmail.com 2010-05-03 14:38:36 --- It works if I turn off "Focus Stealing Prevention". Apparently Kwin doesn't like something about the way Lemmix moves the focus among its windows.
http://bugs.winehq.org/show_bug.cgi?id=22532
--- Comment #5 from Vincent Povirk madewokherd@gmail.com 2010-05-03 15:14:42 --- I think I understand what's going on. Most of what follows is based on logs, but I can only guess at the motivations of Kwin.
In terms of window focus, the process looks like this: 1. Lemmix creates, shows, and focuses its "Parent Window" (my own made up name for it). This is a visible window, but it does not seem capable of any user interaction. 2. Lemmix _disables_ its Parent Window. 3. Lemmix creates, shows, and focuses a "Menu Window", which shows the menu. (Somehow during this process, we get a take focus message for the Parent Window, and we respond by focusing the the Menu Window.) 4. User presses F1. 5. Lemmix hides its "Menu Window". 6. Lemmix enables its "Parent Window". 7. Lemmix focuses the "Parent Window" and destroys the "Menu Window". 8. Lemmix disables the "Parent Window". 9. Lemmix creates, shows, and focuses the "Game Window".
Somehow, at step 9, the "Game Window" doesn't end up with the focus. The "Parent Window" is on top, but it isn't focused either. Instead, whatever was open originally now has the focus.
Now, the important difference between Locally Active (what Wine used before) and Globally Active (what it uses now) is in step 2. A disabled window cannot have the focus. With the Locally Active model, the window manager will insist on focusing it for us anyway. With the Globally Active model, however, the window manager only asks the window to "take focus", and the window will refuse in this case.
However, disabling the window doesn't mean we give up the focus. On Windows it would, but X doesn't really provide a way to do that. Instead, we simulate giving up the focus by ignoring keystrokes from then on, as I believe the ICCCM recommends.
So after step 2, the Parent Window still has the focus, and there's a smooth transition from Parent to Menu. They both belong to the same program, and thus Kwin is happy.
The problem comes when Lemmix hides the Menu Window (step 5). Naturally, a window loses focus when it is hidden, and the window manager has to focus something else. So Kwin tries to focus the "Parent Window". The Parent Window is disabled at this point, so it refuses to accept the focus (remember it can do that now, and it couldn't before). So instead, KWin focuses the next thing in the stacking order, which belongs to some other app.
Now, when we get to step 9 and we try to focus the Game Window, some other app's window has the focus. So we're asking for a transition from that other app to Lemmix. Kwin is not happy.
http://bugs.winehq.org/show_bug.cgi?id=22532
Wylda wylda@volny.cz changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #6 from Wylda wylda@volny.cz 2010-05-29 00:41:03 ---
Great analysis Vincent.
FIXED in wine-1.2-rc2.
Particular commit (wine-1.2-rc1-170-g61e50e1): http://source.winehq.org/git/wine.git/?a=commit;h=61e50e15ba45ad54655f98619f...
http://bugs.winehq.org/show_bug.cgi?id=22532
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #7 from Alexandre Julliard julliard@winehq.org 2010-06-11 12:52:57 --- Closing bugs fixed in 1.2-rc3.
http://bugs.winehq.org/show_bug.cgi?id=22532
Wylda wylda@volny.cz changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |61e50e15ba45ad54655f98619f5 | |ef33917033165 Regression SHA1| |e3720c2810dda3895d6734c5511 | |7b0a355223b1a