Module: wine Branch: refs/heads/master Commit: f6a7b6b59ab259968fae7f02f9484aa14e12e069 URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=f6a7b6b59ab259968fae7f02...
Author: Robert Reif reif@earthlink.net Date: Wed Dec 7 13:07:30 2005 +0100
winecfg: Added support for auto detecting all drivers by attempting to open them.
---
programs/winecfg/audio.c | 84 +++++++++++++--------------------------------- 1 files changed, 24 insertions(+), 60 deletions(-)
diff --git a/programs/winecfg/audio.c b/programs/winecfg/audio.c index 87f3899..6f0cb5f 100644 --- a/programs/winecfg/audio.c +++ b/programs/winecfg/audio.c @@ -426,68 +426,32 @@ static void initAudioDlg (HWND hDlg)
static const char *audioAutoDetect(void) { - struct stat buf; - const char *argv_new[4]; - int fd; - - const char *driversFound[10]; - const char *name[10]; - int numFound = 0,i; - - argv_new[0] = "/bin/sh"; - argv_new[1] = "-c"; - argv_new[3] = NULL; - - /* try to detect oss */ - fd = open("/dev/dsp", O_WRONLY | O_NONBLOCK); - if(fd) - { - close(fd); - driversFound[numFound] = "oss"; - name[numFound] = "OSS"; - numFound++; - } - - /* try to detect alsa */ - if(!stat("/proc/asound", &buf)) - { - driversFound[numFound] = "alsa"; - name[numFound] = "ALSA"; - numFound++; - } + const char *driversFound[10]; + const char *name[10]; + int numFound = 0; + const AUDIO_DRIVER *pAudioDrv = NULL; + int i;
- /* try to detect arts */ - argv_new[2] = "ps awx|grep artsd|grep -v grep|grep artsd > /dev/null"; - if(!spawnvp(_P_WAIT, "/bin/sh", argv_new)) - { - driversFound[numFound] = "arts"; - name[numFound] = "aRts"; - numFound++; - } + pAudioDrv = getAudioDrivers();
- /* try to detect jack */ - argv_new[2] = "ps awx|grep jackd|grep -v grep|grep jackd > /dev/null"; - if(!spawnvp(_P_WAIT, "/bin/sh", argv_new)) - { - driversFound[numFound] = "jack"; - name[numFound] = "JACK"; - numFound++; - } - - /* try to detect EsounD */ - argv_new[2] = "ps awx|grep esd|grep -v grep|grep esd > /dev/null"; - if(!spawnvp(_P_WAIT, "/bin/sh", argv_new)) - { - driversFound[numFound] = "esd"; - name[numFound] = "EsounD"; - numFound++; - } - - /* try to detect nas */ - /* TODO */ - - /* try to detect audioIO (solaris) */ - /* TODO */ + for (i = 0; *pAudioDrv->szName; i++, pAudioDrv++) + { + if (strlen(pAudioDrv->szDriver)) + { + HDRVR hdrv; + char driver[MAX_PATH]; + + sprintf(driver, "wine%s.drv", pAudioDrv->szDriver); + + if ((hdrv = OpenDriverA(driver, 0, 0))) + { + CloseDriver(hdrv, 0, 0); + driversFound[numFound] = pAudioDrv->szDriver; + name[numFound] = pAudioDrv->szName; + numFound++; + } + } + }
if(numFound == 0) {