In some Win10 testbot images (notably jp and cn), we can get a spurious
layout change after creating the test window. Detect this and skip the
tests since the test expectations (e.g., wchar mappings) are now
invalid.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5652
The `-Wstringop-overread` fix feels a bit questionable (so I'll add Eric as a
reviewer to clarify the MSC structs details)
--
v3: winedump: Fail on NULL funcs in dump_dir_exceptions().
winedump: Use offsetof() for string position calculations.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5625
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=56661
Diablo II (at least with Project Diablo 2 mod) regressed with commit 8b3944e1341baaf693927c8b758851d2dbba725a ("ntdll: Only allocate debug info in critical sections with RTL_CRITICAL_SECTION_FLAG_FORCE_DEBUG_INFO."). I debugged that and found that a mod's DLL checks for the debug info presence specifically, and that works on modern Windows only because the game has compat shim enabled through Windows Compatibility Database ("AllocDebugInfoForCritSections").
I know that depending the behaviour on the Win version set in winecfg is not much favoured, but we have a couple of examples of that (e. g., kernelbase/file.c: CreateFileA()). So since this is a core part which changed behaviour on Windows but received a compatibility shim we may do so in this case.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5635
This MR improves the handling of numpad keys for drivers using KBDTABLES (only the Wayland driver at this point). It achieves this by:
1. Allowing drivers to send only the scancode in keyboard events, with win32u performing the scan->vkey mapping internally. A nice side effect of this change is that it fixes a few user32 input test TODOs.
2. Enhancing wineserver to read extended KBD vkey attributes and perform numpad key mapping depending on modifier state.
3. Providing default VK_NUMPAD* -> WCHAR mappings in win32u.
--
v3: winewayland.drv: Populate vkey to wchar entry for VK_DECIMAL.
server: Send numpad virtual keys if NumLock is active.
win32u: Store the full KBD vkey information in kbd_tables_init_vsc2vk.
win32u: Allow drivers to send only the scan code for keyboard events.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5601
This is the third serie related to rewriting cmd's command engine.
Currently, cmd stores block of commands as a linked list of CMD_LIST.
Even for nested commands (like 'if' command inside a 'for' command), it's
parsed as a single list of commands, using a 'depth' attribute and marker
for end of block to describe the structure.
This leads to several issues:
- parsing for nested commands is not 100% robust,
- chaining of commands (and its precedence) is not handled,
- no separation between parsing and execution (esp. for 'IF' and 'FOR'
commands, which behave slightly differently than regular commands
when dealing with variables with delayed expansion),
- data model doesn't 100% fit native behavior (eg redirections can
apply to a block of commands, whereas redirections are attached
to individual commands)
- ...
The final goal is to replace this with:
- a tree of commands:
+ binary nodes for command chaining,
+ 'IF' and 'FOR' commands being parsed and stored as such
+ leaf being a command
It will require a couple more series to reach that goal, so
this series puts in place the basic building bits:
- introducing a new structure CMD_NODE to hold that each node
of such a tree,
- moving the chaining operator into that CMD_NODE (meaning
that we move from a linked list to a binary tree degenerated
into a list: left is command, right is next node).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5609
strmbase is built against msvcrt (and needs to remain as such to be used in tests). Hence modules that link to it also need to be built against msvcrt.
In practice, this happens to work, but it causes some subtle strangeness. In particular, since ucrtbase does not export the simple printf functions, we end up instead linking to ntdll, whose implementation is notably incomplete, missing any float specifiers. While it's possible that ntdll should add those, we shouldn't be linking against ntdll's CRT anyway.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5607
The most important thing here is a workaround for an OS bug: rapidly hiding and showing the dock icon can result in multiple icons for the same app, and those icons will ignore NSApp.applicationIconImage. Making sure transitions happen no less than 0.5 seconds apart from one another seems to fix it.
Also, hiding a dock icon will deactivate an app. That's not desirable if it still has visible windows, so attempt to force a reactivation. That's often not successful on Sonoma due to the cooperative app activation heuristics, but it's the best we can do, and it should be a rare case.
Also, there is some logic in -transformProcessToForeground: that we often want to happen regardless of whether the app is getting a dock icon (e.g. App Nap and activation). So I've renamed that function to more accurately communicate what it does, and consolidate it with -tryToActivateIgnoringOtherApps:.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5604
The most important thing here is a workaround for an OS bug: rapidly hiding and showing the dock icon can result in multiple icons for the same app, and those icons will ignore NSApp.applicationIconImage. Making sure transitions happen no less than 1 second apart from one another seems to fix it. *Edit:* v2 update: 0.5 seconds is not always long enough. A good test case is the Notepad++ installer: after you select a language, it rapidly hides and shows some windows, and without a longer delay the icon will wind up with the default system terminal-looking icon. One second is probably overkill, but this ought to be a somewhat uncommon case.
Also, hiding a dock icon will deactivate an app. That's not desirable if it still has visible windows, so attempt to force a reactivation. That's often not successful on Sonoma due to the cooperative app activation heuristics, but it's the best we can do, and it should be a rare case.
Also, there is some logic in -transformProcessToForeground: that we often want to happen regardless of whether the app is getting a dock icon (e.g. App Nap and activation). So I've renamed that function to more accurately communicate what it does, and consolidate it with -tryToActivateIgnoringOtherApps:.
--
v2: winemac.drv: Consolidate foregrounding and dock icon behavior.
winemac.drv: Remove incorrect documentation for orderBelow: and rename a parameter.
winemac.drv: Reactivate the app if needed after hiding its dock icon.
winemac.drv: Enforce a delay between dock icon hides and shows.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5604
This is the first part of a longer series of commits that can be found here: https://gitlab.winehq.org/madewokherd/wine/-/tree/getdc-wip?ref_type=heads
The eventual goal is to no longer store gdi32 handles, which are a limited resource, on gdiplus objects, except when absolutely necessary. In particular, Graphics objects created from an HWND do not need to store an HDC (GetDC/ReleaseDC theoretically caches those and works just fine), and Bitmap objects with a gdi32-compatible format shouldn't store an HBITMAP or HDC. These changes revealed some other bugs in bitmap and linecap code, which I've also fixed in order to keep the tests working.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5593
This is the first serie of a major rewrite of cmd.exe's command engine
(lexer, parser, command handling).
The goal is to implement correctly:
- command chaining (&&, ||) operators,
- fix a number of issues (eg. 32679, 55401, 44063...)
- remove some spaghetti code from engine,
- allow to move forward on some pending MR (5246 5242 5194 4504...)
This first part mainly extends the tests with the issues
listed in above bug tickets & MR.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5592
This fixes crashes on Windows 7-10.
--
v2: rpcrt4/tests: Allocate stub buffers with NdrOleAllocate.
rpcrt4/tests: Test whether Ndr(Get|Free)Buffer calls StubMsg.pfn(Allocate|Free).
rpcrt4/tests: Correct a comment in test_pointer_marshal.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5117
Killsquad sends a MESessionClose at various times depending on user input. It always expects a MESessionClosed event and will wait indefinitely if not received. There are currently a number of scenarios where we don't report the MESessionClose event. This MR attempts to fix that.
--
v2: mf: Handle Source/Sink shutdown whilst waiting for an event.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5584
Same bug class as https://gitlab.winehq.org/wine/wine/-/merge_requests/5550.
None of them are referenced by anything (not counting mfplat/main.c's debugstr_attr(), which names the two in mfapi.h - better debug output, yay I guess).
--
v4: include: Fix typoed value of CLSID_WICXMPMetadataReader
include: Fix typoed value of MEDIASUBTYPE_P408
include: Fix typoed values of IID_IPropertyEnumType2 and CLSID_PropertySystem
include: Fix typoed values of IID_IMimeWebDocument and IID_IMimeMessageCallback
include: Fix typoed values of MF_MT_VIDEO_3D and MF_MT_AUDIO_FOLDDOWN_MATRIX
include: Fix typoed value of DXGI_DEBUG_APP
include: Fix typoed value of IID_IDWriteStringList
include: Fix typoed value of IID_IAudioLoudness
include: Fix typoed value of GUID_DEVCLASS_1394DEBUG
include: Fix typoed value of IID_IRemoteDebugApplication
https://gitlab.winehq.org/wine/wine/-/merge_requests/5559
dlls/shell32/resources/ietoolbar.bmp is very similar to
dlls/ieframe/ietoolbar.bmp. In Windows XP, the IE toolbar icons were
only in shell32.dll, and there were 16 of them. Internet Explorer 7
added ieframe.dll that had the same 16 icons plus 7 more icons for a
total of 23. The 7 new icons were never added to shell32.dll, and in
Windows Vista and later, shell32.dll does not include the IE toolbar
bitmap resource at all.
dlls/shell32/resources/ietoolbar*.bmp was created with ImageMagick from
the public domain Tango icon theme using the following shell script:
ICONS='
actions/go-previous.png
actions/go-next.png
actions/process-stop.png
actions/view-refresh.png
actions/go-home.png
actions/system-search.png
emblems/emblem-favorite.png
actions/document-print.png
actions/format-text-bold.png
apps/accessories-text-editor.png
categories/preferences-system.png
mimetypes/audio-x-generic.png
apps/office-calendar.png
apps/internet-mail.png
actions/view-fullscreen.png
actions/document-new.png
'
pushd 32x32
convert +append $ICONS ietoolbar.bmp
popd
pushd 16x16
convert +append $ICONS ietoolbar_small.bmp
popd
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=40236
--
v5: shell32: Add Internet Explorer toolbar icons.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4174
Killsquad sends a MESessionClose at various times depending on user input. It always expects a MESessionClosed event and will wait indefinitely if not received. There are currently a number of scenarios where we don't report the MESessionClose event. This MR attempts to fix that.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/5584
--
v7: mfreadwrite/reader: Pass the device manager to the stream transforms.
winegstreamer/video_processor: Implement D3D awareness.
mf/tests: Test video processor D3D11 awareness.
mfreadwrite/tests: Add some source reader D3D11 awareness tests.
https://gitlab.winehq.org/wine/wine/-/merge_requests/5459