Moved the audio driver configuration to HKCU\Software\Wine\Drivers and
changed it a bit to follow the model of the graphics driver.

diff --git a/dlls/winmm/lolvldrv.c b/dlls/winmm/lolvldrv.c
index 0b62099..4805882 100644
--- a/dlls/winmm/lolvldrv.c
+++ b/dlls/winmm/lolvldrv.c
@@ -723,8 +723,7 @@
     char	driver_buffer[256];
     char	mapper_buffer[256];
     char	midi_buffer[256];
-    char*	p1;
-    char*	p2;
+    char*	p;
     DWORD	type, size;
     BOOL	ret = FALSE;
     TRACE("()\n");
@@ -733,13 +732,29 @@
     strcpy(mapper_buffer, WINE_DEFAULT_WINMM_MAPPER);
     strcpy(midi_buffer, WINE_DEFAULT_WINMM_MIDI);
 
+    /* @@ Wine registry key: HKCU\Software\Wine\Drivers */
+    if (!RegOpenKeyA(HKEY_CURRENT_USER, "Software\\Wine\\Drivers", &hKey))
+    {
+        size = sizeof(driver_buffer);
+        if (RegQueryValueExA(hKey, "Audio", 0, &type, (LPVOID)driver_buffer, &size))
+            strcpy(driver_buffer, WINE_DEFAULT_WINMM_DRIVER);
+    }
+
+    p = driver_buffer;
+    while (p)
+    {
+        char filename[sizeof(driver_buffer)+10];
+        char *next = strchr(p, ',');
+        if (next) *next++ = 0;
+        sprintf( filename, "wine%s.drv", p );
+        ret |= MMDRV_Install( filename, filename, FALSE );
+        p = next;
+    }
+
+    /* finish with mappers */
+
     /* @@ Wine registry key: HKLM\Software\Wine\Wine\Config\WinMM */
     if (! RegCreateKeyA(HKEY_LOCAL_MACHINE, "Software\\Wine\\Wine\\Config\\WinMM", &hKey)) {
-        size = sizeof(driver_buffer);
-        if (RegQueryValueExA(hKey, "Drivers", 0, &type, (LPVOID)driver_buffer, &size)) 
-            strcpy(driver_buffer, WINE_DEFAULT_WINMM_DRIVER);
-
-        /* finish with mappers */
         size = sizeof(mapper_buffer);
         if (RegQueryValueExA(hKey, "WaveMapper", 0, &type, (LPVOID)mapper_buffer, &size))
             strcpy(mapper_buffer, WINE_DEFAULT_WINMM_MAPPER);
@@ -751,14 +766,6 @@
         RegCloseKey(hKey);
     }
 
-    p1 = driver_buffer;
-    while (p1) {
-        p2 = strchr(p1, ';');
-        if (p2) *p2++ = '\0';
-        ret |= MMDRV_Install(p1, p1, FALSE);
-        p1 = p2;
-    }
-
     ret |= MMDRV_Install("wavemapper", mapper_buffer, TRUE);
     ret |= MMDRV_Install("midimapper", midi_buffer, TRUE);
     return ret;
diff --git a/dlls/winmm/winemm.h b/dlls/winmm/winemm.h
index bd65b73..0815840 100644
--- a/dlls/winmm/winemm.h
+++ b/dlls/winmm/winemm.h
@@ -28,7 +28,7 @@
 #include "winbase.h"
 #include "mmddk.h"
 
-#define WINE_DEFAULT_WINMM_DRIVER     "wineoss.drv"
+#define WINE_DEFAULT_WINMM_DRIVER     "oss"
 #define WINE_DEFAULT_WINMM_MAPPER     "msacm.drv"
 #define WINE_DEFAULT_WINMM_MIDI       "midimap.drv"
 
diff --git a/programs/winecfg/audio.c b/programs/winecfg/audio.c
index 09aa0ec..08f0a70 100644
--- a/programs/winecfg/audio.c
+++ b/programs/winecfg/audio.c
@@ -55,7 +55,7 @@
     {
       if (!strcmp (pAudioDrv->szDriver, drivername))
       {
-	set_reg_key("Winmm", "Drivers", (char *) pAudioDrv->szDriver);
+	set_reg_key("Drivers", "Audio", (char *) pAudioDrv->szDriver);
         SendMessage(GetParent(hDlg), PSM_CHANGED, (WPARAM) hDlg, 0); /* enable apply button */
 	SendDlgItemMessage(hDlg, IDC_AUDIO_DRIVER, CB_SETCURSEL,
 			   (WPARAM) i, 0);
@@ -66,7 +66,7 @@
 
 static void initAudioDlg (HWND hDlg)
 {
-    char *curAudioDriver = get_reg_key("Winmm", "Drivers", "winealsa.drv");
+    char *curAudioDriver = get_reg_key("Drivers", "Audio", "alsa");
     const AUDIO_DRIVER *pAudioDrv = NULL;
     int i;
 
@@ -101,7 +101,7 @@
   if(fd)
   {
     close(fd);
-    driversFound[numFound] = "wineoss.drv";
+    driversFound[numFound] = "oss";
     name[numFound] = "OSS";
     numFound++;
   }
@@ -109,7 +109,7 @@
     /* try to detect alsa */
   if(!stat("/proc/asound", &buf))
   {
-    driversFound[numFound] = "winealsa.drv";
+    driversFound[numFound] = "alsa";
     name[numFound] = "Alsa";
     numFound++;
   }
@@ -118,7 +118,7 @@
   argv_new[2] = "ps awx|grep artsd|grep -v grep|grep artsd > /dev/null";
   if(!spawnvp(_P_WAIT, "/bin/sh", argv_new))
   {
-    driversFound[numFound] = "winearts.drv";
+    driversFound[numFound] = "arts";
     name[numFound] = "aRts";
     numFound++;
   }
@@ -127,7 +127,7 @@
   argv_new[2] = "ps awx|grep jackd|grep -v grep|grep jackd > /dev/null";
   if(!spawnvp(_P_WAIT, "/bin/sh", argv_new))
   {
-    driversFound[numFound] = "winejack.drv";
+    driversFound[numFound] = "jack";
     name[numFound] = "jack";
     numFound++;
   }
diff --git a/programs/winecfg/properties.c b/programs/winecfg/properties.c
index 9d8d52d..8cc477f 100644
--- a/programs/winecfg/properties.c
+++ b/programs/winecfg/properties.c
@@ -58,12 +58,12 @@
 };
 
 static AUDIO_DRIVER sAudioDrivers[] = {
-  {"Alsa", "winealsa.drv"},
-  {"aRts", "winearts.drv"},
-  {"OSS", "wineoss.drv"},
-  {"Jack", "winejack.drv"},
-  {"Nas", "winenas.drv"},
-  {"Audio IO(Solaris)", "wineaudioio.drv"},
+  {"Alsa", "alsa"},
+  {"aRts", "arts"},
+  {"OSS", "oss"},
+  {"Jack", "jack"},
+  {"Nas", "nas"},
+  {"Audio IO(Solaris)", "audioio"},
   {"Disable sound", ""},
   {"", ""}
 };