Signed-off-by: Jacek Caban jacek@codeweavers.com --- dlls/winepulse.drv/mmdevdrv.c | 52 +++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 18 deletions(-)
Signed-off-by: Andrew Eikum aeikum@codeweavers.com
On Mon, May 24, 2021 at 06:22:33PM +0200, Jacek Caban wrote:
Signed-off-by: Jacek Caban jacek@codeweavers.com
dlls/winepulse.drv/mmdevdrv.c | 52 +++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 18 deletions(-)
diff --git a/dlls/winepulse.drv/mmdevdrv.c b/dlls/winepulse.drv/mmdevdrv.c index df38bb594c7..0d55b0fc2d0 100644 --- a/dlls/winepulse.drv/mmdevdrv.c +++ b/dlls/winepulse.drv/mmdevdrv.c @@ -30,8 +30,6 @@ #include <stdio.h> #include <errno.h>
-#include <pulse/pulseaudio.h>
#include "windef.h" #include "winbase.h" #include "winnls.h" @@ -134,7 +132,7 @@ struct ACImpl { IUnknown *marshal; IMMDevice *parent; struct list entry;
- float vol[PA_CHANNELS_MAX];
float *vol;
LONG ref; EDataFlow dataflow;
@@ -293,7 +291,6 @@ int WINAPI AUDDRV_GetPriority(void) HRESULT WINAPI AUDDRV_GetAudioEndpoint(GUID *guid, IMMDevice *dev, IAudioClient **out) { ACImpl *This;
- int i; EDataFlow dataflow; HRESULT hr;
@@ -319,8 +316,6 @@ HRESULT WINAPI AUDDRV_GetAudioEndpoint(GUID *guid, IMMDevice *dev, IAudioClient This->IAudioStreamVolume_iface.lpVtbl = &AudioStreamVolume_Vtbl; This->dataflow = dataflow; This->parent = dev;
for (i = 0; i < PA_CHANNELS_MAX; ++i)
This->vol[i] = 1.f;
hr = CoCreateFreeThreadedMarshaler((IUnknown*)&This->IAudioClient3_iface, &This->marshal); if (hr) {
@@ -533,8 +528,10 @@ static HRESULT WINAPI AudioClient_Initialize(IAudioClient3 *iface, const GUID *sessionguid) { ACImpl *This = impl_from_IAudioClient3(iface);
- unsigned int i, channel_count;
- struct pulse_stream *stream; char *name;
- HRESULT hr = S_OK;
HRESULT hr;
TRACE("(%p)->(%x, %x, %s, %s, %p, %s)\n", This, mode, flags, wine_dbgstr_longlong(duration), wine_dbgstr_longlong(period), fmt, debugstr_guid(sessionguid));
@@ -583,21 +580,40 @@ static HRESULT WINAPI AudioClient_Initialize(IAudioClient3 *iface,
name = get_application_name(); hr = pulse->create_stream(name, This->dataflow, mode, flags, duration, period, fmt,
&This->channel_count, &This->pulse_stream);
free(name);&channel_count, &stream);
- if (SUCCEEDED(hr)) {
hr = get_audio_session(sessionguid, This->parent, This->channel_count, &This->session);
if (SUCCEEDED(hr)) {
set_stream_volumes(This);
list_add_tail(&This->session->clients, &This->entry);
} else {
pulse->release_stream(This->pulse_stream, NULL);
This->pulse_stream = NULL;
}
if (FAILED(hr))
{
pulse->unlock();
return hr;
}
if (!(This->vol = malloc(channel_count * sizeof(*This->vol))))
{
pulse->release_stream(stream, NULL);
pulse->unlock();
return E_OUTOFMEMORY;
}
for (i = 0; i < channel_count; i++)
This->vol[i] = 1.f;
hr = get_audio_session(sessionguid, This->parent, channel_count, &This->session);
if (FAILED(hr))
{
free(This->vol);
This->vol = NULL;
pulse->unlock();
pulse->release_stream(stream, NULL);
return E_OUTOFMEMORY;
}
This->pulse_stream = stream;
This->channel_count = channel_count;
list_add_tail(&This->session->clients, &This->entry);
set_stream_volumes(This);
pulse->unlock();
- return hr;
- return S_OK;
}
static HRESULT WINAPI AudioClient_GetBufferSize(IAudioClient3 *iface,