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