• Stefan Dösinger's avatar
    user32: Silently ignore temporary foreground loss. · ccf430eb
    Stefan Dösinger authored
    The basic problem is this: Thread A has a window W1 that is it's focus
    window and the system-global foreground window. At some point thread A
    stops processing messages. After that, thread B creates a window W2
    and makes it the foreground window. Thread B later on makes W1 (from
    Thread A) the foreground window again. After restoring W1 as the
    foreground window, Thread A processes window messages again. Two
    WM_WINE_SETACTIVEWINDOW messages are in the queue, one for losing the
    foreground thread propery and one for restoring it. The first one will
    generates a WM_ACTIVATEAPP(0) message, which causes D3D to minimize
    the game window.
    
    The included test shows that Windows doesn't deliver any
    WM_ACTIVATEAPP messages if the thread stopped being the foreground
    thread and re-gained that property between two message processing
    calls. It isn't implemented with a plain WM_ACTIVATEAPP filter, the
    manually injected message in the test still gets through.
    Signed-off-by: 's avatarStefan Dösinger <stefan@codeweavers.com>
    Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
    ccf430eb
Name
Last commit
Last update
dlls Loading commit data...
documentation Loading commit data...
fonts Loading commit data...
include Loading commit data...
libs Loading commit data...
loader Loading commit data...
po Loading commit data...
programs Loading commit data...
server Loading commit data...
tools Loading commit data...
.mailmap Loading commit data...
ANNOUNCE Loading commit data...
AUTHORS Loading commit data...
COPYING.LIB Loading commit data...
LICENSE Loading commit data...
LICENSE.OLD Loading commit data...
MAINTAINERS Loading commit data...
Makefile.in Loading commit data...
README Loading commit data...
VERSION Loading commit data...
aclocal.m4 Loading commit data...
configure Loading commit data...
configure.ac Loading commit data...