Currently, apartment OXIDs are generated using the process ID
(and the thread ID for a single threaded-apartment). This means
that if an apartment is destroyed and re-created (using
`CoUninitialize` followed by `CoInitializeEx`), the newly created
apartment will end up with the same OXID as the old apartment.
However, testing shows that Windows will generate a *new* OXID
when an apartment is created in the above manner. This patch
uses `rpcss` to generate a new OXID. The current process id is combined
with an incrementing counter stored in rpcss. This ensures that
re-creating an apartment will not re-use an OXID.
Additionally, this fixes an issue that caused the .NET 4.8
installer to become stuck during the downloading stage under Wine.
The installer appears to perform the following actions:
1. Call `IBackgroundCopyJob_SetNotify` interface on a BITS
job. This causes us to create a proxy (in the other process
hosting 'qmgr') for the `IBackgroundCopyCallback` pointer
passed as a parameter.
2. Trigger MTA apartment re-creation (in the process running the setup,
*not* the process with the `IBackgroundCopyCallback` proxy)
through `CoUninitialize` followed by `CoInitializeEx`.
3. Call `IBackgroundCopyJob_SetNotify` on a newly created job,
but with the same `IBackgroundCopyCallback` pointer parameter.
When we deserialize the pointer passed to
`IBackgroundCopyJob_SetNotify`, we will end up re-using the same
`proxy_manager` that we created for the previous `IBackgroundCopyCallback`.
This is due to the fact that the OIDs happen to match (due to the fact that
the .NET 4.8 setup appears to perform actions in the same order between
the old and new apartments), and the apartment OXIDs match as explained above.
above. As a result, we will use the old IPID when we send RPC packets
using this `proxy_manager`. However, the new and old IPIDs will *never* match,
since their generation process includes `RtlGenRandom`. This will cause a fault
packet to be generated on the listening side of the RPC connection.
By avoiding re-using OXIDs across re-created apartments,
we ensure that the proxy side will never incorrectly re-use a stale `proxy_manager`.
--
v4: combase: Generate apartment OXID in rpcss
ole32/tests: Test that re-creating an apartment results in a new OXID
https://gitlab.winehq.org/wine/wine/-/merge_requests/2059
--
v2: ddraw/tests: Test that presenting does not set the pixel format on a window without one.
d3d8/tests: Test that presenting does not set the pixel format on a window without one.
d3d9/tests: Test that presenting does not set the pixel format on a window without one.
ddraw/tests: Remove unnecessary skips and conditionals from test_pixel_format().
https://gitlab.winehq.org/wine/wine/-/merge_requests/2072
Second commit is to be removed.
Signed-off-by: Bernhard Kölbl <besentv(a)gmail.com>
--
v2: windows.media.speech: Implement Vosk create and release functions in the unixlib.
windows.media.speech: Add a unixlib stub.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2091
Chromium uses this, and debug builds assert if it fails.
--
v2: kernelbase: Implement and add tests for QueryProcessCycleTime.
ntdll: Add stub for NtQueryInformationProcess(ProcessCycleTime).
https://gitlab.winehq.org/wine/wine/-/merge_requests/2089
First part of v2 of !27, which aims to:
* Allow allocation of variables of complex types that contain both numerics and objects across multiple register sets (regsets).
* Support the tex2D and tex3D intrinsics, inferring generic samplers dimension from usage, writing sampler declarations, and writing sample instructions.
* Support for arrays of resources for both SM1 and SM4 (not to be confused with the resource-arrays of SM 5.1, which can have non-constant indexes).
* Support for resources declared within structs.
* Support for synthetic combined samplers for SM1 and synthetic separated samplers for SM4, considering that they can be arrays or members of structs.
* Imitate the way the native compiler assigns the register indexes of the resources on allocation, which proved to be the most difficult thing.
* Support for object components within complex input parameters.
* Small fixes to corner cases.
This part consists on parsing the `tex2D()` and `tex3D()` intrinsics and beginning to support the allocation of variables across multiple regsets.
The whole series, is on my [master6](https://gitlab.winehq.org/fcasas/vkd3d/-/commits/master6) branch.
--
v4: vkd3d-shader/hlsl: Allocate register reservations in a separate pass.
vkd3d-shader/hlsl: Respect object reservations even if the object is unused.
vkd3d-shader/hlsl: Allocate objects according to register set.
vkd3d-shader/hlsl: Keep an hlsl_reg for each register set in hlsl_ir_var.
vkd3d-shader/hlsl: Store the type's register size for each register set.
vkd3d-shader/hlsl: Parse the tex3D() intrinsic.
vkd3d-shader/hlsl: Parse the tex2D() intrinsic.
https://gitlab.winehq.org/wine/vkd3d/-/merge_requests/66
Needed for Gungrave G.O.R.E. (besides some bits in raw AAC handling).
The game is fine with GetInputStatus always returning MFT_INPUT_STATUS_ACCEPT_DATA for both h264 and aac but I think it is better to be correct here.
--
v3: winegstreamer: Set MF_SA_D3D11_AWARE attribute for h264 transform.
winegstreamer: Implement _GetInputStatus() for aac decoder transform.
winegstreamer: Implement _GetInputStatus() for h264 decoder transform.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2080
Bunch of misc fixes and preparations for further improvements. The location changes are especially important later when we'll use outer windows everywhere we pass them to external callers (such as script engines, since inner windows are an implementation detail and all operations otherwise should go through the outer window "proxy").
--
v3: mshtml: Embed the HTMLLocation into the outer window.
mshtml: Tie window.location to the outer window.
mshtml: Simplify dynamic props unlinking.
mshtml: Traverse and unlink builtin func disps.
mshtml: Return undefined from window.XMLHttpRequest for uninitialized
jscript: Pass the correct ServiceProvider when invoking external prop.
mshtml: Use Scrollbar_Auto as default for vertical scrollbars.
include/mshtml: Add the other IHTMLEventObj* interfaces.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2069
Continueing PDB support in winedump:
- stricter size checks (to protect against bogus files)
- more bits of PDB files dumped (ranges, sections, OMF details...)
- keeping cleaning up some internal fields names
--
v2: winedump: Be stricter about sizes while walking module's list.
winedump: Properly dump segment map information from PDB/DBI stream.
winedump: Dump correctly ranges' part of DBI stream.
winedump: Explain a bit more errors on hash header.
winedump: Correctly dump PDB_STREAM_INDEX.segment.
winedump: Introduce a helper to print PE section's characteristics.
https://gitlab.winehq.org/wine/wine/-/merge_requests/2087