RFR: 8301846: Invalid TargetDataLine after screen lock when using JFileChooser or COM library [v5]

Alexey Ivanov aivanov at openjdk.org
Thu Jul 27 16:15:46 UTC 2023


On Thu, 27 Jul 2023 03:46:23 GMT, Renjith Kannath Pariyangad <duke at 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:
> 
>   Added COM init for DAUDIO_GetDirectAudioDeviceDescription

I created a short native app, `SoundDevices.exe`, attached to the JBS with its source code in `SoundDevices.cpp`.

By default, it calls `CoInitializeEx` but if you pass ‘0’ as the parameter, it does not initialise COM.

I get the following output:


C:\dev\audio>SoundDevices.exe 0
Sound Devices
000001A3168F1104
{1A29CAD2-72C7-40B4-A39B-94D71FC91E3F}
    Speakers (Realtek(R) Audio)
    {0.0.0.00000000}.{1a29cad2-72c7-40b4-a39b-94d71fc91e3f}

Sound Capture Devices
000001A3168F0D24
{BDF35A00-B9AC-11D0-A619-00AA00A7C000}
    Microphone Array (Realtek(R) Au
    {0.0.1.00000000}.{473909c9-5435-4fb1-ab77-18838bdfa76c}

C:\dev\audio>SoundDevices.exe 1
Sound Devices
000001A56FDB1104
{1A29CAD2-72C7-40B4-A39B-94D71FC91E3F}
    Speakers (Realtek(R) Audio)
    {0.0.0.00000000}.{1a29cad2-72c7-40b4-a39b-94d71fc91e3f}

Sound Capture Devices
000001A56FDB0D24
{473909C9-5435-4FB1-AB77-18838BDFA76C}
    Microphone Array (Realtek(R) Audio)
    {0.0.1.00000000}.{473909c9-5435-4fb1-ab77-18838bdfa76c}


(I removed Primary devices from the output above.)

It confirms Renjith's observations: if COM isn't initialised, the description of the capture device, _Microphone Array_, gets truncated, and its GUID is different from the driver GUID.

It get the same results on other systems where I ran the app.

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

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



More information about the client-libs-dev mailing list