qemu/audio
Volker Rümelin 401dcf0540 dsoundaudio: replace GetForegroundWindow()
GetForegroundWindow() doesn't necessarily return the own window
handle. It just returns a handle to the currently active window
and can even return NULL. At the time dsound_open() gets called
the active window is most likely the shell window and not the
QEMU window.

Replace GetForegroundWindow() with GetDesktopWindow() which
always returns a valid window handle, and at the same time
replace the DirectSound buffer flag DSBCAPS_STICKYFOCUS with
DSBCAPS_GLOBALFOCUS where Windows only expects a valid window
handle for DirectSound function SetCooperativeLevel(). The
Microsoft online docs for IDirectSound::SetCooperativeLevel
recommend this in the remarks.

This fixes a bug where you can't hear sound from the guest.

To reproduce start qemu with -machine pcspk-audiodev=audio0
-device intel-hda -device hda-duplex,audiodev=audio0
-audiodev dsound,id=audio0,out.mixing-engine=off
from a shell and start audio playback with the hda device in the
guest. The guest will be silent. To hear guest audio you have to
activate the shell window once.

Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-id: 9315afe5-5958-c0b4-ea1e-14769511a9d5@t-online.de
Message-Id: <20210110100239.27588-20-vr_qemu@t-online.de>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2021-01-15 11:25:22 +01:00
..
alsaaudio.c audio: split pcm_ops function get_buffer_in 2021-01-15 11:25:22 +01:00
audio_int.h audio: split pcm_ops function get_buffer_in 2021-01-15 11:25:22 +01:00
audio_legacy.c sdlaudio: add -audiodev sdl,out.buffer-count option 2021-01-15 11:25:22 +01:00
audio_template.h sdlaudio: add -audiodev sdl,out.buffer-count option 2021-01-15 11:25:22 +01:00
audio_win_int.c audio: use qapi AudioFormat instead of audfmt_e 2019-03-11 10:29:26 +01:00
audio_win_int.h Windows Waveform Audio driver (no ADC support yet) 2009-10-10 01:18:24 +04:00
audio.c audio: remove remaining unused plive code 2021-01-15 11:25:22 +01:00
audio.h qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
coreaudio.c coreaudio: always stop audio playback on shut down 2020-12-15 09:14:17 +01:00
dsound_template.h dsoundaudio: replace GetForegroundWindow() 2021-01-15 11:25:22 +01:00
dsoundaudio.c dsoundaudio: replace GetForegroundWindow() 2021-01-15 11:25:22 +01:00
jackaudio.c audio: split pcm_ops function get_buffer_in 2021-01-15 11:25:22 +01:00
meson.build meson: add spice_headers dependency. 2020-10-15 11:14:40 +02:00
mixeng_template.h audio: fix saturation nonlinearity in clip_* functions 2020-03-16 10:18:07 +01:00
mixeng.c audio: Let audio_sample_to_uint64() use const samples argument 2020-05-26 08:29:30 +02:00
mixeng.h audio: proper support for float samples in mixeng 2020-02-06 14:35:57 +01:00
noaudio.c audio: split pcm_ops function get_buffer_in 2021-01-15 11:25:22 +01:00
ossaudio.c audio: split pcm_ops function get_buffer_in 2021-01-15 11:25:22 +01:00
paaudio.c paaudio: send recorded data in smaller chunks 2021-01-15 11:25:22 +01:00
rate_template.h audio: use size_t where makes sense 2019-08-21 09:13:37 +02:00
sdlaudio.c sdlaudio: enable (in|out).mixing-engine=off 2021-01-15 11:25:22 +01:00
spiceaudio.c audio: split pcm_ops function get_buffer_in 2021-01-15 11:25:22 +01:00
trace-events trace-events: Delete unused trace points 2020-09-09 17:17:02 +01:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
wavaudio.c audio: fix bug 1858488 2020-01-31 08:48:03 +01:00
wavcapture.c monitor: Use getter/setter functions for cur_mon 2020-10-09 07:08:19 +02:00