This implements props access to the underlying items in the storage, which is supported on native (although quirky). Unlike most normal props, the underlying storage for the props is asynchronous, so it can disappear or appear at any point, so they have to be re-checked as needed. The props themselves just map a name to a DISPID, but other than that, DISP_E_MEMBERNOTFOUND can return even after a successful GetDispID for example, even if GetDispID already checked for the item (which it has to, for e.g. (x in y) check).
It also contains some fixes for enumerating props, which are needed now because these props also have to be enumerated. They are custom props, so it's needed to have GetMemberName work for them. And since they are asynchronous it makes it even more complicated when enumerating.
--
v2: mshtml: Implement props enumeration for Storage.
mshtml: Implement GetMemberName for custom props.
mshtml: Do not enumerate hidden builtin props.
mshtml: Implement deleting props for Storage.
mshtml: Implement props for Storage by forwarding to the underlying storage.
https://gitlab.winehq.org/wine/wine/-/merge_requests/731
Run C++ global/static destructors during DLL_PROCESS_DETACH while other
other dllimport functions they may want to call are still viable. While
windows imposes many restrictions on what may be done in such destructors
(given that the run inside the loader lock), there are lots of legal and
useful kernel32 functions like DestroyCriticalSection, DeleteAtom, TlsFree,
etc that are both useful and legal. Currently this does not work for builtin
modules because all the Win32 structures are discarded well before
NtUnmapViewOfSection finally does the dlllose.
Even for a winelib .dll.so module, it would be preferable for destructors
to execute during process_detach (before wine tears down the MODREF
and detaches dependant dlls), rather than be left until after the last
NtUnmapViewOfSection (when we finally reach dlclose)
Therefore, winegcc now always uses the DllMainCRTStartup entry point
unless you specify your own --entry=func. Previously it did this only for
PE modules using msvcrt. Making this default consistent matches cl.exe,
which also always defaults to _DllMainCRTStartup unless overridden by /entry:foo
https://docs.microsoft.com/en-us/cpp/build/reference/entry-entry-point-symb…
The ELF version of winecrt0.a now provides a DllMainCRTStartup which,
per the Itanium ABI that is in practice what is used by gcc and clang,
performs this this destruction by calling __cxa_finalize(&__dso_handle)..
This libc function is required to be idempotent, so it's OK that dlclose
still calls it again later (there will just be no further work to do).
Multiple calls to __cxa_finalize shall not result in calling termination
function entries multiple times; the implementation may either remove
entries or mark them finished.
https://itanium-cxx-abi.github.io/cxx-abi/abi.html#dso-dtor-runtime-api
This has two main effects; it moves ELF destructors earlier (before imports
are unmapped), and it moves them inside the Nt loader lock. Being earlier
was the intended goal, and moving them inside the lock seems fine. Any Win32
API calls in destructors are just being subjected to the same lock hierarchy
rules as usual on windows (MSVC also runs destructors from DllMainCrtStartup)
https://docs.microsoft.com/en-us/cpp/build/run-time-library-behavior?view=m…
And any purely-ELF destructors that happen to also run earlier should never
call functions exported from wine (and thus don't care about ntdll's locks).
--
v2: winecrt0: run C++ object destructors in DLL_PROCESS_DETACH.
https://gitlab.winehq.org/wine/wine/-/merge_requests/752
Initial implementation for registry application hives, this is a step forward to get Visual Studio to run.
:-)
--
v7: server: save app hive into it's file when closing handle.
server/registry: pass file name instead of file handle to server.
kernelbase: Implement RegLoadAppKey.
ntdll: Initial implementation for application hives.
ntdll: Move NtLoadKey implementation to NtLoadKeyEx.
https://gitlab.winehq.org/wine/wine/-/merge_requests/717
Fonts loaded with GGO_BITMAP may report different font metrics than that with GGO_METRICS. If the
font metrics from GGO_BITMAP are used and later getting font metrics with GGO_METRICS or vice versa,
the font metric difference may cause UI glitchs.
Fix Steam installer next button text moving to the left for 1 pixel when hovered on Mac and Wine is
built with FreeType > 2.8.0.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/756
In preparation for nulldrv display modes support.
--
v10: win32u: Move display placement logic out of graphics drivers.
winemac.drv: Remove unnecessary display mode flags checks.
win32u: Support interlaced and stretched display modes.
winex11.drv: Remove unnecessary display mode flags checks.
win32u: Move full display mode lookup out of graphics drivers.
win32u: Sort adapter display modes after reading from the registry.
https://gitlab.winehq.org/wine/wine/-/merge_requests/576