• Zebediah Figura's avatar
    user32: Do not delay-load setupapi. · 50aeb5e7
    Zebediah Figura authored
    This fixes a deadlock in the Steel Series Engine installer, between the
    "user_section" lock and the loader lock.
    
    Currently user32 takes the "user_section" lock during THREAD_DETACH, i.e. while
    the loader lock is held. However, it is also possible for a thread to take the
    locks in the reverse order. The observed path is:
     - register_builtin()
     - LoadCursorA()
     - get_display_bpp()
     - get_display_dc()
     - CreateDCW()
     - GetDeviceCaps(DESKTOPHORZRES)
     - GetSystemMetrics(SM_CXVIRTUALSCREEN)
     - EnumDisplayMonitors()
     - update_monitor_cache()
    
    Since we now rely on setupapi for fundamental tasks such as determining screen
    size, it doesn't make much sense to delay-load it.
    Signed-off-by: 's avatarZebediah Figura <z.figura12@gmail.com>
    Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
    50aeb5e7
Makefile.in 1.39 KB