Maarten Lankhorst : winealsa.drv: Clean up initialisation.

Alexandre Julliard julliard at winehq.org
Mon May 3 11:54:13 CDT 2010


Module: wine
Branch: master
Commit: 755c25d84eff23abee532652b4e0ff7c548da317
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=755c25d84eff23abee532652b4e0ff7c548da317

Author: Maarten Lankhorst <m.b.lankhorst at gmail.com>
Date:   Thu Apr 22 22:52:19 2010 +0200

winealsa.drv: Clean up initialisation.

---

 dlls/winealsa.drv/alsa.c     |    3 +--
 dlls/winealsa.drv/alsa.h     |    5 +----
 dlls/winealsa.drv/midi.c     |   10 +++++-----
 dlls/winealsa.drv/wavein.c   |    1 +
 dlls/winealsa.drv/waveinit.c |   10 ++++++----
 dlls/winealsa.drv/waveout.c  |    1 +
 6 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/dlls/winealsa.drv/alsa.c b/dlls/winealsa.drv/alsa.c
index 5ed7109..9eb50cd 100644
--- a/dlls/winealsa.drv/alsa.c
+++ b/dlls/winealsa.drv/alsa.c
@@ -725,8 +725,7 @@ LRESULT CALLBACK ALSA_DriverProc(DWORD_PTR dwDevID, HDRVR hDriv, UINT wMsg,
 
     switch(wMsg) {
 #ifdef HAVE_ALSA
-    case DRV_LOAD:		ALSA_WaveInit();
-				ALSA_MidiInit();
+    case DRV_LOAD:
     case DRV_FREE:
     case DRV_OPEN:
     case DRV_CLOSE:
diff --git a/dlls/winealsa.drv/alsa.h b/dlls/winealsa.drv/alsa.h
index 88529fb..7c2f0f4 100644
--- a/dlls/winealsa.drv/alsa.h
+++ b/dlls/winealsa.drv/alsa.h
@@ -199,10 +199,7 @@ DWORD widDsDesc(UINT wDevID, PDSDRIVERDESC desc);
 DWORD wodDsCreate(UINT wDevID, PIDSDRIVER* drv);
 DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc);
 
-/* midi.c */
-extern LONG ALSA_MidiInit(void);
-
 /* waveinit.c */
-extern LONG ALSA_WaveInit(void);
+extern void ALSA_WaveInit(void);
 
 #endif /* __ALSA_H */
diff --git a/dlls/winealsa.drv/midi.c b/dlls/winealsa.drv/midi.c
index 00a54bf..0eee1c8 100644
--- a/dlls/winealsa.drv/midi.c
+++ b/dlls/winealsa.drv/midi.c
@@ -1222,8 +1222,6 @@ static void ALSA_AddMidiPort(snd_seq_client_info_t* cinfo, snd_seq_port_info_t*
     }
 }
 
-#endif /* HAVE_ALSA */
-
 
 /*======================================================================*
  *                  	    MIDI entry points 				*
@@ -1234,9 +1232,8 @@ static void ALSA_AddMidiPort(snd_seq_client_info_t* cinfo, snd_seq_port_info_t*
  *
  * Initializes the MIDI devices information variables
  */
-LONG ALSA_MidiInit(void)
+static LONG ALSA_MidiInit(void)
 {
-#ifdef HAVE_ALSA
     static	BOOL	bInitDone = FALSE;
     snd_seq_client_info_t *cinfo;
     snd_seq_port_info_t *pinfo;
@@ -1290,10 +1287,11 @@ LONG ALSA_MidiInit(void)
     HeapFree( GetProcessHeap(), 0, pinfo );
 
     TRACE("End\n");
-#endif
     return TRUE;
 }
 
+#endif
+
 /**************************************************************************
  * 			midMessage (WINEALSA.@)
  */
@@ -1305,6 +1303,7 @@ DWORD WINAPI ALSA_midMessage(UINT wDevID, UINT wMsg, DWORD_PTR dwUser,
     switch (wMsg) {
 #ifdef HAVE_ALSA
     case DRVM_INIT:
+        ALSA_MidiInit();
     case DRVM_EXIT:
     case DRVM_ENABLE:
     case DRVM_DISABLE:
@@ -1349,6 +1348,7 @@ DWORD WINAPI ALSA_modMessage(UINT wDevID, UINT wMsg, DWORD_PTR dwUser,
     switch (wMsg) {
 #ifdef HAVE_ALSA
     case DRVM_INIT:
+        ALSA_MidiInit();
     case DRVM_EXIT:
     case DRVM_ENABLE:
     case DRVM_DISABLE:
diff --git a/dlls/winealsa.drv/wavein.c b/dlls/winealsa.drv/wavein.c
index 625e36e..8985ec3 100644
--- a/dlls/winealsa.drv/wavein.c
+++ b/dlls/winealsa.drv/wavein.c
@@ -750,6 +750,7 @@ DWORD WINAPI ALSA_widMessage(UINT wDevID, UINT wMsg, DWORD_PTR dwUser,
 
     switch (wMsg) {
     case DRVM_INIT:
+        ALSA_WaveInit();
     case DRVM_EXIT:
     case DRVM_ENABLE:
     case DRVM_DISABLE:
diff --git a/dlls/winealsa.drv/waveinit.c b/dlls/winealsa.drv/waveinit.c
index f2eaece..4da53c9 100644
--- a/dlls/winealsa.drv/waveinit.c
+++ b/dlls/winealsa.drv/waveinit.c
@@ -962,7 +962,7 @@ static int ALSA_AddUserSpecifiedDevice(const char *ctlname, const char *pcmname)
 **                          is a way to exactly specify the devices used by Wine.
 **
 */
-LONG ALSA_WaveInit(void)
+void ALSA_WaveInit(void)
 {
     DWORD rc;
     BOOL  AutoScanCards = TRUE;
@@ -971,6 +971,10 @@ LONG ALSA_WaveInit(void)
     DWORD DeviceCount = 0;
     HKEY  key = 0;
     int   i;
+    static int loaded;
+
+    if (loaded++)
+        return;
 
     /* @@ Wine registry key: HKCU\Software\Wine\Alsa Driver */
     rc = RegOpenKeyExA(HKEY_CURRENT_USER, "Software\\Wine\\Alsa Driver", 0, KEY_QUERY_VALUE, &key);
@@ -983,7 +987,7 @@ LONG ALSA_WaveInit(void)
     }
 
     if (AutoScanCards)
-        rc = ALSA_PerformDefaultScan(UseDirectHW, AutoScanDevices);
+        ALSA_PerformDefaultScan(UseDirectHW, AutoScanDevices);
 
     for (i = 0; i < DeviceCount; i++)
     {
@@ -1005,8 +1009,6 @@ LONG ALSA_WaveInit(void)
 
     if (key)
         RegCloseKey(key);
-
-    return (rc);
 }
 
 #endif /* HAVE_ALSA */
diff --git a/dlls/winealsa.drv/waveout.c b/dlls/winealsa.drv/waveout.c
index df0027f..4001f26 100644
--- a/dlls/winealsa.drv/waveout.c
+++ b/dlls/winealsa.drv/waveout.c
@@ -1169,6 +1169,7 @@ DWORD WINAPI ALSA_wodMessage(UINT wDevID, UINT wMsg, DWORD_PTR dwUser,
 
     switch (wMsg) {
     case DRVM_INIT:
+        ALSA_WaveInit();
     case DRVM_EXIT:
     case DRVM_ENABLE:
     case DRVM_DISABLE:




More information about the wine-cvs mailing list