--
v3: winewayland: Use win32u for EGL display and pixel formats.
wineandroid: Use win32u for EGL display and pixel formats.
win32u: Implement OpenGL pixel formats over EGL configs.
win32u: Introduce an EGL opengl_driver_function table.
winewayland: Use the EGL display opened from win32u.
wineandroid: Use the EGL display opened from win32u.
win32u: Open and initialize an EGL platform display.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8115
On Fri May 23 00:45:26 2025 +0000, Zhiyi Zhang wrote:
> The reason why something like this didn't exist before is that after the
> monitor changes, the old Xinerama monitor index might be different than
> the new ones. For example, changing the secondary monitor from right to
> left and then making the secondary monitor primary using the host
> system's utilities. We can probably invalidate the old monitor Xinerama
> indices after a device change.
Oh I see. The reason for this is to reduce the number of requests sent as much as possible, in case they would somehow trigger things like window reconfigure from the window manager side. I'll look into invalidating the data on device change.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8123#note_104297
Ralf Habacker (@rhabacker) commented about dlls/ws2_32/socket.c:
> return -1;
> }
> params->unknown = 0;
> - memcpy( ¶ms->addr, addr, len );
> + if (addr->sa_family == AF_UNIX)
> + memset( ¶ms->addr, 0, len );
> + memcpy( ¶ms->addr, addr, bind_len );
> + if (unix_path)
Here a comment should be added, that in case of AF_UNIX sockets the unix path is appended as second string to `params->addr`.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7650#note_104293
On Fri May 23 04:23:45 2025 +0000, Alexandre Julliard wrote:
> > There is probably some tiny DVD somewhere in the world that will still
> be misdetected, but I'm not sure that issuing SCSI commands to the drive
> to try to determine the disc type would be any more reliable.
> To support an app that is most likely going to issue DVD ioctls,
> checking by using a DVD ioctl seems preferable.
Linux has only three [DVD ioctls](https://docs.kernel.org/userspace-api/ioctl/cdrom.html): DVD_READ_STRUCT, DVD_WRITE_STRUCT, and DVD_AUTH. It has no blu-ray ioctls. Of the three DVD ioctls, only DVD_READ_STRUCT would be suitable for disc type detection.
DVD_READ_STRUCT can read five kinds of information: DVD_STRUCT_PHYSICAL, DVD_STRUCT_COPYRIGHT, DVD_STRUCT_DISCKEY, DVD_STRUCT_BCA, and DVD_STRUCT_MANUFACT. Of those five, only DVD_STRUCT_PHYSICAL would be suitable for disc type detection.
At least on my LG WH16NS40 drive, DVD_STRUCT_PHYSICAL succeeds when there is a DVD in the drive, but it fails when there is a CD or a blu-ray in the drive. That means that we could use DVD_STRUCT_PHYSICAL to accurately detect whether there is a DVD in the drive, but we would still need another way to detect blu-rays.
Is there another ioctl that you had in mind, or something else that I missed? Do you want to try DVD_STRUCT_PHYSICAL first and fall back to guessing based on the data size if it fails? Please let me know how to proceed.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7747#note_104292
Zhiyi Zhang (@zhiyi) commented about dlls/winex11.drv/window.c:
> return;
>
> xinerama_get_fullscreen_monitors( &data->rects.visible, monitors );
> + memcpy( data->desired_state.monitors, monitors, sizeof(monitors) );
> + if (!memcmp( old_monitors, monitors, sizeof(monitors) )) return; /* states are the same, nothing to update */
The reason why something like this didn't exist before is that after the monitor changes, the old Xinerama monitor index might be different than the new ones. For example, changing the secondary monitor from right to left and then making the secondary monitor primary using the host system's utilities. We can probably invalidate the old monitor Xinerama indices after a device change.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8123#note_104289
This consolidates the two separate `CGImage`s (`colorImage` and `shapeImage`) previously used in `WineContentView` into a single `IOSurface` that also holds the window mask information in its alpha channel now.
The alpha channel is now being updated in `macdrv_surface_flush`, whenever the shape changes (and stores that change for the next update, to also keep the front buffer in sync).
This reduces the delay from setting a `CGImage` to a layer from 50ms to about 1.5ms in the `IOSurface` case (also accounting for `vImageSelectChannels_ARGB8888` operation).
Based on a patch by @bshanks.
I am already putting it out for feedback, but I will so some more testing to see how the performance impact of this is and do more exhaustive testing with shaped windows.
Ideally the double buffer solution can be avoided as well... Also the `HBITMAP` for the windows is currently backed by a `CGDataProviderRef` and could also become an `IOSurface` I believe.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/7938