[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 23:03:56 CDT 2022


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

--- Comment #7 from Zeb Figura <z.figura12 at gmail.com> ---
(In reply to Zhiyi Zhang from comment #6)
> (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.

I'm sorry, I neglected to mention that I am using the virtual desktop.

In that case root_window is indeed initialized, but it's the wrong window, i.e.
I guess it points to the X root window instead of the virtual desktop window.

-- 
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