[PATCH v3 resend 1/4] winex11.drv: Store monitor information in the wineserver for EnumDisplayMonitors().
Rémi Bernon
rbernon at codeweavers.com
Wed Apr 21 07:15:05 CDT 2021
On 4/21/21 5:09 AM, Zebediah Figura (she/her) wrote:
> On 4/20/21 8:44 PM, Zhiyi Zhang wrote:
>> Fix a regression that Office 2016/365 has a 640x480 main window.
>>
>> Office 2016/365 hooks NtOpenKeyEx() and prevents access to SetupAPI
>> device properties.
>> After querying monitor information from SetupAPI failed,
>> EnumDisplayMonitors() reports
>> a fallback monitor of size 640x480.
>
> IIRC when this was last brought up, the proposed solution was to do it
> remotely, via RPC to plugplay.exe. Arguably that's more work, but it
> strikes me as potentially better than getting the wineserver involved...?
>
>>
>> As to why store the monitor information in the wineserver, it seems
>> that EnumDisplayMonitors()
>> reports monitors connected to current user logon session. For
>> instance, EnumDisplayMonitors()
>> always report one monitor when called by services.
>
> And this could just be handled in user32, perhaps by querying the
> session ID or something.
>
> Are there other reasons why it makes more sense to use the server?
>
If services have different results, wouldn't it instead be something
that is winstation / desktop dependent?
Could it then be implemented by creating a device in explorer.exe and
communicate through ioctls? I believe wineandroid.drv does that already
(well, not for monitor modes).
I think that using the desktop to factor some graphics driver
functionality is something that would make sense more generally,
especially if we want to loosen user32 dependency on the host.
I don't know at all what's planned regarding graphics driver PE split
but I think moving some things to only live in explorer.exe could help.
--
Rémi Bernon <rbernon at codeweavers.com>
More information about the wine-devel
mailing list