Allow messages after SetForegroundWindow returns. Kwin likes to resize
our window some more after d3d9 resized it.
Patch 2 makes the test stricter on Windows to give it some meaning.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8132
--
v4: winex11: Reconfigure window even if the new rectangle equals to the old one.
winex11: Serialize window config requests with some other requests.
winex11: Serialize managed window config change requests.
winex11: Track window pending config position / size independently.
winex11: Serialize individual _NET_WM_STATE bit changes.
winex11: Continue requesting desired window state on no-op event.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8079
CW* masks in window_set_config() are from comparing against the old rect from data->pending_state.rect,
not the actual X11 window rectangle. So it's still possible that after removing __NET_WM_STATE_FULLSCREEN,
WM moves the window behind Wine's back. Then window_set_config() calculates CW* masks and calls
XReconfigureWMWindow(), assuming the old rect is still the actual X11 window rect. As the result,
some rectangle updates might be missed.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/8128
Windows uses a smaller alignment than gstreamer for some formats, for
example NV12. This means we cannot use MFCalculateImageSize() to get the
output sample size. Commit 7b79e3a87b1e switched to calling it instead of
GetOutputStreamInfo() to fix some game bugs.
--
v4: winegstreamer: Call wg_format_get_max_size() to get the video decoder output sample size.
winegstreamer: Do not pass a sample size to wg_transform_read_mf().
mf/tests: Add a video processor NV12 test with a width alignment of 2.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8034
Hi @yurih, from what I understand the reason alt(-tab) is problematic is because the alt menu mode is enabled when the key is released. However, avoiding the release just for this behavior doesn't seem like a viable way forward, since other applications may treat alt differently or may also require treating other keys the same way.
I was experimenting a bit and sending WM_CANCELMODE (which winex11 does already) seems to help with the alt(-tab) menu situation in my tests. Could you try the following and let me know if it helps with your use case:
```patch
--- a/dlls/winewayland.drv/wayland_keyboard.c
+++ b/dlls/winewayland.drv/wayland_keyboard.c
@@ -800,6 +800,11 @@ static void keyboard_handle_leave(void *data, struct wl_keyboard *wl_keyboard,
* and for any key repetition to stop. */
release_all_keys(hwnd);
+ if (hwnd == NtUserGetForegroundWindow())
+ {
+ if (!(NtUserGetWindowLongW(hwnd, GWL_STYLE) & WS_MINIMIZE))
+ send_message(hwnd, WM_CANCELMODE, 0, 0);
+ }
/* FIXME: update foreground window as well */
}
```
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6199#note_104335
This MR fixes seek in VRChat by copying the sequence of flushes/stop/starts that Windows does.
The order on Windows is:
1. Stop sources;
2. Flush MFTs;
3. Start sources;
4. Request output down the chain of sink inputs;
6. Flush sinks; and
7. Start the clock
This takes place whether we pause before we seek or seek without pause.
Changes in version 2:
1. Add test to see when SAR requests new samples;
2. Add test to examine when step 4 from above takes place;
3. Adjust the seek implementation in `mf/session.c` to match findings from the new tests;
4. Adjust `mfmediaengine` to reflect findings from the new tests;
5. Refactored `if` statement in `session_start` to be a `switch` again
--
v3: mfmediaengine: Request sample if we are seeking.
mfmediaengine: Don't perform implicit flush on state change.
mf: Don't send MFT_MESSAGE_NOTIFY_START_OF_STREAM when seeking.
mf: Restart transforms and sinks on seek.
mf/tests: Test sequence of calls during a Pause and Seek.
mf/tests: Test when SAR requests a new sample.
https://gitlab.winehq.org/wine/wine/-/merge_requests/7932
Windows uses a smaller alignment than gstreamer for some formats, for
example NV12. This means we cannot use MFCalculateImageSize() to get the
output sample size. Commit 7b79e3a87b1e switched to calling it instead of
GetOutputStreamInfo() to fix some game bugs.
--
v3: winegstreamer: Call wg_format_get_max_size() to get the video decoder output sample size.
winegstreamer: Do not pass a sample size to wg_transform_read_mf().
mf/tests: Add a video processor NV12 test with a width alignment of 2.
mfplat/tests: Add NV12 650 x 850 to image_size_tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8034
--
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