From: Davide Beatrici git@davidebeatrici.dev
The version check logic is removed because redundant.
SNDCTL_SYSINFO was introduced in OSS 4.0: http://developer.opensound.com/oss4white.pdf
The ioctl() call fails with OSS 3.x. --- dlls/wineoss.drv/mmdevdrv.c | 2 +- dlls/wineoss.drv/oss.c | 17 +++-------------- dlls/wineoss.drv/unixlib.h | 3 ++- 3 files changed, 6 insertions(+), 16 deletions(-)
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c index dbd9c5a0490..1bb1ab01574 100644 --- a/dlls/wineoss.drv/mmdevdrv.c +++ b/dlls/wineoss.drv/mmdevdrv.c @@ -236,7 +236,7 @@ int WINAPI AUDDRV_GetPriority(void)
OSS_CALL(test_connect, ¶ms);
- return params.priority; + return SUCCEEDED(params.result) ? Priority_Preferred : Priority_Unavailable; }
static HRESULT stream_release(stream_handle stream, HANDLE timer_thread) diff --git a/dlls/wineoss.drv/oss.c b/dlls/wineoss.drv/oss.c index 4368523684d..d74466f51c2 100644 --- a/dlls/wineoss.drv/oss.c +++ b/dlls/wineoss.drv/oss.c @@ -130,7 +130,7 @@ static NTSTATUS oss_test_connect(void *args) mixer_fd = open("/dev/mixer", O_RDONLY, 0); if(mixer_fd < 0){ TRACE("Priority_Unavailable: open failed\n"); - params->priority = Priority_Unavailable; + params->result = E_FAIL; return STATUS_SUCCESS; }
@@ -139,26 +139,15 @@ static NTSTATUS oss_test_connect(void *args) if(ioctl(mixer_fd, SNDCTL_SYSINFO, &sysinfo) < 0){ TRACE("Priority_Unavailable: ioctl failed\n"); close(mixer_fd); - params->priority = Priority_Unavailable; + params->result = E_FAIL; return STATUS_SUCCESS; }
close(mixer_fd);
- if(sysinfo.version[0] < '4' || sysinfo.version[0] > '9'){ - TRACE("Priority_Low: sysinfo.version[0]: %x\n", sysinfo.version[0]); - params->priority = Priority_Low; - return STATUS_SUCCESS; - } - if(sysinfo.versionnum & 0x80000000){ - TRACE("Priority_Low: sysinfo.versionnum: %x\n", sysinfo.versionnum); - params->priority = Priority_Low; - return STATUS_SUCCESS; - } - TRACE("Priority_Preferred: Seems like valid OSS!\n");
- params->priority = Priority_Preferred; + params->result = S_OK; return STATUS_SUCCESS; }
diff --git a/dlls/wineoss.drv/unixlib.h b/dlls/wineoss.drv/unixlib.h index b418bb70d2d..86a31f68001 100644 --- a/dlls/wineoss.drv/unixlib.h +++ b/dlls/wineoss.drv/unixlib.h @@ -31,7 +31,8 @@ enum DriverPriority
struct test_connect_params { - enum DriverPriority priority; + const char *name; + HRESULT result; };
struct endpoint