[Bug 52508] EnumDisplayDevices() fails in obscure ways on 32-bit arch when 64-bit Vulkan is present but 32-bit is missing

WineHQ Bugzilla wine-bugs at winehq.org
Fri Apr 22 22:17:47 CDT 2022


https://bugs.winehq.org/show_bug.cgi?id=52508

--- Comment #6 from Zhiyi Zhang <zzhang at codeweavers.com> ---
(In reply to Zeb Figura from comment #5)
> (In reply to Zhiyi Zhang from comment #4)
> > Actually, there is a mechanism to let only
> > the first process initialize monitors. That's what the force parameter in
> > X11DRV_DisplayDevices_Init() is for. Maybe recent win32u work changed its
> > behavior or the first process to create windows isn't always 64-bit.
> 
> As far as I can tell that function ends up getting called with force == TRUE
> once for each process that calls GetDesktopWindow() (plus once for
> explorer.exe itself). The call chain goes:
> 
> GetDesktopWindow()
> -> retrieve top_window from server, call user_driver->pCreateDesktopWindow()
> -> X11DRV_CreateDesktopWindow()
> -> root_window is not yet initialized; call X11DRV_init_desktop()

I don't think this trace is correct. root_window is initialized in winex11.drv
process_attach().
X11DRV_init_desktop should only be called when using virtual desktop. Are you
using virtual desktop?
I tried running explorer and then notepad and traced
X11DRV_DisplayDevices_Init(). No  X11DRV_DisplayDevices_Init(TRUE)
calls are made for new processes.

> -> set virtual desktop handler, call X11DRV_DisplayDevices_Init( TRUE )
> 
> The code organization here is too unclear for me to tell where the fault
> lies.

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list