Robert Reif : winecfg: Added support for auto detecting all drivers by attempting to

Alexandre Julliard julliard at wine.codeweavers.com
Wed Dec 7 06:38:15 CST 2005


Module: wine
Branch: refs/heads/master
Commit: f6a7b6b59ab259968fae7f02f9484aa14e12e069
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=f6a7b6b59ab259968fae7f02f9484aa14e12e069

Author: Robert Reif <reif at 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)
   {




More information about the wine-cvs mailing list