If a session is shutdown when its command_state is already COMPLETE,
session_handle_source_shutdown calls session_set_stopped, which calls
session_command_complete which will submit the op at the head of commands again,
despite it having already been submitted.
Given that only the op at the head of commands can be in the submitted state,
tracking it as a command state makes more sense to me. And if the command state
is SUBMITTED we know not to submit the op again.
* * *
Superceded !8270
--
v3: mf: Add a SUBMITTED command state to avoid multiple submission of the same op.
https://gitlab.winehq.org/wine/wine/-/merge_requests/8722
Since 7b28c6d17c7da278307756cfcd0da830e5d39baf, we directly use `NtUserGetClientRect` to get the size of the GL target windows. But that returns an empty rect for minimized windows, and attempting to set a zero size on a CGL context in `-[WineOpenGLContext wine_updateBackingSize:]` causes a Metal assertion. You can see this by minimizing e.g. Geometry Dash or Garry's Mod.
We could just not call wine_updateBackingSize if we find a zero dimension for the window, but I think we want to attempt to keep the backing size correct. Perhaps there's a better way to get the client rect of a minimized window than the un-AdjustWindowRect approach I'm using here? If the window is minimized fullscreen, `get_win_data(hwnd)->rects.client` is (-32000, -32000) - (-32000, -32000).
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/9049
--
v2: win32u/tests: Test importing shared resources into Vulkan.
win32u/tests: Test creating shared resources with Vulkan.
win32u/tests: Test creating shared resources with D3D12.
win32u/tests: Test creating shared resources with D3D11.
win32u/tests: Test creating shared resources with D3D10.
win32u/tests: Test importing shared resources into OpenGL.
win32u/tests: Test importing shared resources into D3D9Ex.
win32u/tests: Test creating shared resources with D3D9Ex.
https://gitlab.winehq.org/wine/wine/-/merge_requests/9088
Implement the function `IXMLDOMElement_removeAttributeNode`. Essentially
pass the hard work to `IXMLDOMNamedNodeMap_removeNamedItem`.
Use the fact, that attribute names are unique in elements.
One case that isn't checked is wheter or not the value of the provided
attribute match with the one stored in the dom-element.
This MR implements according to the tests introduced in https://gitlab.winehq.org/wine/wine/-/merge_requests/8928
--
v4: msxml3/element: Implement removeAttributeNode function.
https://gitlab.winehq.org/wine/wine/-/merge_requests/9056