RFR: 8267819: CoInitialize/CoUninitialize should be called on same thread
Alexander Matveev
almatvee at openjdk.java.net
Fri May 28 04:56:05 UTC 2021
On Thu, 27 May 2021 04:18:24 GMT, Alexander Matveev <almatvee at openjdk.org> wrote:
> JDK-8264737 introduced new code for audio device removal/arrival notifications which calls CoInitialize/CoUninitialize on separate threads. CoInitialize/CoUninitialize should be called on same thread, since initialization is per thread. Doing it on separate thread will result in unloading COM libraries on that thread and if it uses COM libraries it might not work correctly. Fixed by calling it on same thread in same way it is done in dshowwrapper.
1. Yes, I did test it on RDP reconnect for multiple streams.
2. Not really needed. CoCreateInstance() will fails in this case most likely and we will return false from Init(). So, it should be fine if it fails. Also, CoInitialize() can return RPC_E_CHANGED_MODE if someone already initialized thread as multithread apartment (MTA) and in this case CoCreateInstance() should work, so it is better not to fail Init() even if CoInitialize() failed.
-------------
PR: https://git.openjdk.java.net/jfx/pull/521
More information about the openjfx-dev
mailing list