The more I look at it the more I'm convinced that the change to keep outer window reference is not worth it. Storage events seem just outright broken on native, so that's not a good reason.
Looking at Gecko, I can see that it does what we currently do and resets outer window pointer from inner window and document when inner window changes. It means that whatever we do on Wine side, everything that depends on Gecko will still not "work".
The change is also quite invasive. It changes a meaning of pointers that are used module-wide, so there is some risk associated with it and the motivation seems questionable to me. Why do you need that in the first place? This is not something you've actually seen mattering for real-world use case, right?
Another thing about it is that it's likely to hide some problems in the future. Resetting outer pointer is nice to have a clear cut when inner window is no longer valid. It's not a strong argument, if we really have a reason to change it, we may, but I'd like to know the reason.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4380#note_53941
Jacek Caban (@jacek) commented about dlls/mshtml/tests/events.c:
> + ok(hres == S_OK, "get_documentMode failed: %08lx\n", hres);
> + ok(V_VT(&var) == VT_R4, "V_VT(documentMode) = %u\n", V_VT(&var));
> + document_mode = V_R4(&var);
> + }
> + IHTMLDocument6_Release(doc6);
> + }
> +
> + hres = IHTMLWindow2_QueryInterface(window, &IID_IHTMLWindow6, (void**)&window6);
> + ok(hres == S_OK, "Could not get IHTMLWindow6: %08lx\n", hres);
> + IHTMLWindow2_Release(window);
> + window = NULL;
> +
> + hres = IHTMLWindow6_get_sessionStorage(window6, &tmp_session_storage);
> + ok(hres == S_OK, "get_sessionStorage failed: %08lx\n", hres);
> + ok(tmp_session_storage != NULL, "session_storage == NULL\n");
> + ok(tmp_session_storage != session_storage[0], "session_storage after navigation same as old session_storage\n");
This should really use `!iface_cmp()` to make sure it's not one more instance of wrappers that native uses in similar places. However, trying to do that crashes on native, which is just one more reason to believe that detached documents are broken there and trying too hard to mimic it does not make sense. I think that you're misinterpreting some quirks that are not really interested in the first place. I suggest to drop those tests and just do the right thing: don't send any events on detached document, maybe even fail early on an attempt to use such storage.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4380#note_53940
I don't think there's any reason to use the conversion context to allocate this memory, it's briefly used to build the host extension list and released right away.
--
v4: winevulkan: Fix python linter warnings.
winevulkan: Drop the WINEVULKAN_QUIRK_IGNORE_EXPLICIT_LAYERS quirk.
winevulkan: Use a local instance variable instead of phys_dev->instance.
winevulkan: Restore utils messengers when vkCreateInstance needs more physical devices.
winevulkan: Restore debug callbacks when vkCreateInstance needs more physical devices.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4488
Conflicts with !450 but can probably go upstream before it since backend changes here are minimal.
--
v5: vkd3d-shader/dxil: Handle the DXIL SWITCH instruction.
vkd3d-shader: Rename shader_instruction_array_add_icb() to shader_instruction_array_add_opaque_param().
vkd3d-shader/dxil: Handle the DXIL PHI instruction.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/491
I don't think there's any reason to use the conversion context to allocate this memory, it's briefly used to build the host extension list and released right away.
--
v3: winevulkan: Fix python linter warnings.
winevulkan: Drop the WINEVULKAN_QUIRK_IGNORE_EXPLICIT_LAYERS quirk.
winevulkan: Use a local instance variable instead of phys_dev->instance.
winevulkan: Allocate memory for VkInstanceCreateInfo with malloc.
winevulkan: Allocate memory for VkDeviceCreateInfo with malloc.
winevulkan: Restore utils messengers when vkCreateInstance needs more physical devices.
winevulkan: Restore debug callbacks when vkCreateInstance needs more physical devices.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4488
The point here is to make the default implementation similar to winex11, supporting a standalone systray window. Later, we could refactor the interface to remove the duplicated systray code from the user drivers.
--
v4: explorer: Cache the balloon window position.
explorer: Support standalone systray window mode.
explorer: Use an explicit display constant for hidden icons.
explorer: Handle balloon timer in the icons window proc.
explorer: Position the balloons relative to the icon windows.
explorer: Use the icon windows for their tooltips.
explorer: Display the individual systray icon windows.
explorer: Create individual windows for the systray icons.
explorer: Split systray add/remove from show/hide_icon.
explorer: Remove unnecessary displayed icon array.
https://gitlab.winehq.org/wine/wine/-/merge_requests/3171
Signed-off-by: Eric Pouech <epouech(a)codeweavers.com>
--
v2: ntdll: Search for CtrlRoutine in kernelbase.
ntdll: RtlFindExportedRoutine returns NULL on forwarded function.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4523