Signed-off-by: Andrew Eikum aeikum@codeweavers.com
On Fri, Apr 15, 2022 at 09:40:43PM +0100, Huw Davies wrote:
Signed-off-by: Huw Davies huw@codeweavers.com
dlls/wineoss.drv/mmdevdrv.c | 35 ++++++----------------------------- dlls/wineoss.drv/oss.c | 35 +++++++++++++++++++++++++++++++++++ dlls/wineoss.drv/unixlib.h | 31 ++++++++++--------------------- 3 files changed, 51 insertions(+), 50 deletions(-)
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c index cdd9b09bff7..9e3380ca8d9 100644 --- a/dlls/wineoss.drv/mmdevdrv.c +++ b/dlls/wineoss.drv/mmdevdrv.c @@ -18,22 +18,7 @@ */
#define COBJMACROS -#include "config.h"
#include <stdarg.h> -#include <errno.h> -#include <limits.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/ioctl.h> -#include <fcntl.h> -#include <unistd.h> -#include <math.h> -#include <sys/soundcard.h> -#include <pthread.h>
#include "windef.h" #include "winbase.h" @@ -277,16 +262,6 @@ static DWORD WINAPI timer_thread(void *user) return 0; }
-static void oss_lock(struct oss_stream *stream) -{
- pthread_mutex_lock(&stream->lock);
-}
-static void oss_unlock(struct oss_stream *stream) -{
- pthread_mutex_unlock(&stream->lock);
-}
static void set_device_guid(EDataFlow flow, HKEY drv_key, const WCHAR *key_name, GUID *guid) { @@ -361,11 +336,13 @@ static void get_device_guid(EDataFlow flow, const char *device, GUID *guid)
static void set_stream_volumes(ACImpl *This) {
- struct oss_stream *stream = This->stream;
- struct set_volumes_params params;
- oss_lock(stream);
- stream->mute = This->session->mute;
- oss_unlock(stream);
- params.stream = This->stream;
- params.master_volume = (This->session->mute ? 0.0f : This->session->master_vol);
- params.volumes = This->vols;
- params.session_volumes = This->session->channel_vols;
- OSS_CALL(set_volumes, ¶ms);
}
static const OSSDevice *get_ossdevice_from_guid(const GUID *guid) diff --git a/dlls/wineoss.drv/oss.c b/dlls/wineoss.drv/oss.c index 79f2e994d89..b4e2cbda704 100644 --- a/dlls/wineoss.drv/oss.c +++ b/dlls/wineoss.drv/oss.c @@ -44,6 +44,28 @@
#include "unixlib.h"
+struct oss_stream +{
- WAVEFORMATEX *fmt;
- EDataFlow flow;
- UINT flags;
- AUDCLNT_SHAREMODE share;
- HANDLE event;
- int fd;
- BOOL playing, mute, please_quit;
- UINT64 written_frames, last_pos_frames;
- UINT32 period_frames, bufsize_frames, held_frames, tmp_buffer_frames, in_oss_frames;
- UINT32 oss_bufsize_bytes, lcl_offs_frames; /* offs into local_buffer where valid data starts */
- REFERENCE_TIME period;
- BYTE *local_buffer, *tmp_buffer;
- INT32 getbuf_last; /* <0 when using tmp_buffer */
- pthread_mutex_t lock;
+};
WINE_DEFAULT_DEBUG_CHANNEL(oss);
/* copied from kernelbase */ @@ -1316,6 +1338,18 @@ static NTSTATUS get_position(void *args) return oss_unlock_result(stream, ¶ms->result, S_OK); }
+static NTSTATUS set_volumes(void *args) +{
- struct set_volumes_params *params = args;
- struct oss_stream *stream = params->stream;
- oss_lock(stream);
- stream->mute = !params->master_volume;
- oss_unlock(stream);
- return STATUS_SUCCESS;
+}
static NTSTATUS set_event_handle(void *args) { struct set_event_handle_params *params = args; @@ -1368,6 +1402,7 @@ unixlib_entry_t __wine_unix_call_funcs[] = get_next_packet_size, get_frequency, get_position,
- set_volumes, set_event_handle, is_started,
}; diff --git a/dlls/wineoss.drv/unixlib.h b/dlls/wineoss.drv/unixlib.h index ed93f0836b1..1ed152fe794 100644 --- a/dlls/wineoss.drv/unixlib.h +++ b/dlls/wineoss.drv/unixlib.h @@ -18,27 +18,7 @@
#include "mmdeviceapi.h"
-struct oss_stream -{
- WAVEFORMATEX *fmt;
- EDataFlow flow;
- UINT flags;
- AUDCLNT_SHAREMODE share;
- HANDLE event;
- int fd;
- BOOL playing, mute, please_quit;
- UINT64 written_frames, last_pos_frames;
- UINT32 period_frames, bufsize_frames, held_frames, tmp_buffer_frames, in_oss_frames;
- UINT32 oss_bufsize_bytes, lcl_offs_frames; /* offs into local_buffer where valid data starts */
- REFERENCE_TIME period;
- BYTE *local_buffer, *tmp_buffer;
- INT32 getbuf_last; /* <0 when using tmp_buffer */
- pthread_mutex_t lock;
-}; +struct stream_oss;
/* From <dlls/mmdevapi/mmdevapi.h> */ enum DriverPriority @@ -208,6 +188,14 @@ struct get_position_params UINT64 *qpctime; };
+struct set_volumes_params +{
- struct oss_stream *stream;
- float master_volume;
- const float *volumes;
- const float *session_volumes;
+};
struct set_event_handle_params { struct oss_stream *stream; @@ -243,6 +231,7 @@ enum oss_funcs oss_get_next_packet_size, oss_get_frequency, oss_get_position,
- oss_set_volumes, oss_set_event_handle, oss_is_started,
};
2.25.1