Fixes Dark and Darker's Anti-Cheat "TavernWorker"; Original issue thread on Proton's repo [#2016590](https://github.com/ValveSoftware/Proton/issues/8208).
From the issue thread: Glaring issue seems to be the inability to load past the main menu in Dark and Darker without getting a pop-up that says "Tavern is not working! Please restart your game.", resulting in a forced exit.
I've marked this as Draft as I am not entirely sure returning the `NTSTATUS` of `NtWriteVirtualMemory` is the proper solution here (I have not found any other working solutions so-far). Returning the `NTSTATUS` of `NtQueryVirtualMemory` seems to not achieve working results, however I am not an expert by any means.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/6761
The implementation is backed by a smaller `IWinePropertySetImpl` interface for core operations (insertion, lookup, removal, iteration), which currently uses an `rb_tree` to store `HSTRING`-`IInspectable *` value pairs.
If needed, the `IWinePropertySetImpl` implementation can be later swapped out with a hash table for performance reasons, as `PropertySet` does not have an enumeration order guarantee, at least according to the MSDN docs.
--
v15: wintypes: Add stubs for IKeyValuePair<HSTRING, IInspectable *>.
wintypes: Add stubs for IIterator<IKeyValuePair<HSTRING, IInspectable *>>.
wintypes: Add stubs for IMapView<HSTRING, IInspectable *>.
wintypes: Add IIterable<IKeyValuePair<HSTRING, IInspectable *>> stubs to PropertySet implementation
wintypes: Add IObservableMap<HSTRING, IInspectable *> and stubs to PropertySet implementation.
wintypes: Add IMap<HSTRING, IInspectable *> stubs to PropertySet implementation.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6766
The implementation is backed by a smaller `IWinePropertySetImpl` interface for core operations (insertion, lookup, removal, iteration), which currently uses an `rb_tree` to store `HSTRING`-`IInspectable *` value pairs.
If needed, the `IWinePropertySetImpl` implementation can be later swapped out with a hash table for performance reasons, as `PropertySet` does not have an enumeration order guarantee, at least according to the MSDN docs.
--
v14:
https://gitlab.winehq.org/wine/wine/-/merge_requests/6766
The implementation is backed by a smaller `IWinePropertySetImpl` interface for core operations (insertion, lookup, removal, iteration), which currently uses an `rb_tree` to store `HSTRING`-`IInspectable *` value pairs.
If needed, the `IWinePropertySetImpl` implementation can be later swapped out with a hash table for performance reasons, as `PropertySet` does not have an enumeration order guarantee, at least according to the MSDN docs.
--
v13: wintypes: Implement IMapView methods get_Size, HasKey, Lookup, Split for PropertySet.
wintypes: Invoke MapChanged event handlers from PropertSet on entry removal and Clear().
wintypes: Invoke MapChanged event handlers from PropertySet on insertion.
wintypes: Implement get_Current() for the IIterator implementation obtained from PropertySet.
wintypes: Implement IIterator methods MoveNext() and get_HasCurrent() for PropertySet.
wintypes: Implement IMap methods HasKey, get_Count, Remove, GetView for PropertySet.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6766
The implementation is backed by a smaller `IWinePropertySetImpl` interface for core operations (insertion, lookup, removal, iteration), which currently uses an `rb_tree` to store `HSTRING`-`IInspectable *` value pairs.
If needed, the `IWinePropertySetImpl` implementation can be later swapped out with a hash table for performance reasons, as `PropertySet` does not have an enumeration order guarantee, at least according to the MSDN docs.
--
v12: wintypes: Implement IMapView methods get_Size, HasKey, Lookup, Split for PropertySet.
wintypes: Invoke MapChanged event handlers from PropertSet on entry removal and Clear().
wintypes: Invoke MapChanged event handlers from PropertySet on insertion.
wintypes: Implement get_Current() for the IIterator implementation obtained from PropertySet.
wintypes: Implement IIterator methods MoveNext() and get_HasCurrent() for PropertySet.
wintypes: Implement IMap method GetView() for PropertySet.
wintypes: Implement IMap methods HasKey, get_Count and Remove for PropertySet.
wintypes: Implement IMap method Clear() for PropertySet.
wintypes: Implement IMap methods Insert() and Lookup() for PropertySet.
wintypes: Implement adding/removing IMapChangedEventHandlers for IObservableMap<HSTRING, IInspectable *>.
wintypes: Add stubs for IKeyValuePair<HSTRING, IInspectable *>.
wintypes: Add stubs for IIterator<IKeyValuePair<HSTRING, IInspectable *>>.
wintypes: Add stubs for IMapView<HSTRING, IInspectable *>.
wintypes: Add IObservableMap<HSTRING, IInspectable *> and IIterable<IKeyValuePair<HSTRING, IInspectable *>> stubs to PropertySet implementation.
This merge request has too many patches to be relayed via email.
Please visit the URL below to see the contents of the merge request.
https://gitlab.winehq.org/wine/wine/-/merge_requests/6766