On Wed, 4 Oct 2023 05:37:10 GMT, Renjith Kannath Pariyangad <d...@openjdk.org> 
wrote:

>> Hi Reviewers,
>> 
>> Observations :
>> 1. Without com initialize if we access Mixer for recording, library loaded 
>> invalid GUID and clipped description in windows(ID not found in registry). 
>> With com initialization library load proper GUID (same as registry).
>> 2. For Play back device always loading proper device GUID irrespective of 
>> com Initialization.
>> 
>> Test:
>> Since screen lock and unlock workflow required for reproducing this issue, 
>> did coupe of iteration of manual testing post fix and confirmed its 
>> resolving the problem.
>> To reconfirm nothing is broken, executed all audio related test cases on 
>> test bench post fix and all are green.
>> 
>> Please review the changes and let me know your comments if any.
>> 
>> Regards,
>> Renjith.
>
> Renjith Kannath Pariyangad has updated the pull request incrementally with 
> one additional commit since the last revision:
> 
>   File permission updated

To clarify the situation and to eliminate any misunderstanding, there are three 
possible cases:

1. COM is not initialised. `CoInitializeEx(COINIT_MULTITHREADED)` returns 
`S_OK`. This is the ideal situation.
2. The app has already initialised COM on the thread with 
`CoInitializeEx(COINIT_MULTITHREADED)`. Thus, the second call to 
`CoInitializeEx` will return `S_FALSE`. This case is also fine.
3. The app has already initialised COM on the thread with 
`CoInitializeEx(COINIT_APARTMENTTHREADED)`. Thus, the second call inside Java 
to `CoInitializeEx(COINIT_MULTITHREADED)` will return `RPC_E_CHANGED_MODE` 
because the concurrency model is changed. Yet this case is fine as well.

In all the three cases, it is safe to proceed to call `DirectSoundEnumerate*` 
because the prerequisite—COM is initialised—is satisfied and because 
DirectSound APIs support both MTA and STA.

In the first two cases, we *must call* `CoUninitialize` when finished; in the 
third case, we *must **not** call* `CoUninitialize`.

If `CoInitializeEx` returns any other error, we must bail out.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/14898#issuecomment-1748967705

Reply via email to