Avoid linking error with older alsa libs.

diff --git a/dlls/winmm/winealsa/midi.c b/dlls/winmm/winealsa/midi.c
index e4486b4..95e84ee 100644
--- a/dlls/winmm/winealsa/midi.c
+++ b/dlls/winmm/winealsa/midi.c
@@ -156,149 +156,6 @@
 }
 
 /**************************************************************************
- * 			OSS_MidiInit				[internal]
- *
- * Initializes the MIDI devices information variables
- */
-LONG ALSA_MidiInit(void)
-{
-    static	BOOL	bInitDone = FALSE;
-    snd_seq_client_info_t *cinfo;
-    snd_seq_port_info_t *pinfo;
-    int count;
-
-    if (bInitDone)
-	return TRUE;
-
-    TRACE("Initializing the MIDI variables.\n");
-    bInitDone = TRUE;
-
-    /* try to open device */
-    if (midiOpenSeq(0) == -1) {
-	return TRUE;
-    }
-
-#if 0 /* Debug purpose */
-    snd_lib_error_set_handler(error_handler);
-#endif
-    
-    snd_seq_client_info_alloca(&cinfo);
-    snd_seq_port_info_alloca(&pinfo);
-    snd_seq_client_info_set_client(cinfo, -1);
-    while(snd_seq_query_next_client(midiSeq, cinfo) >= 0) {
-        snd_seq_port_info_set_client(pinfo, snd_seq_client_info_get_client(cinfo));
-	snd_seq_port_info_set_port(pinfo, -1);
-	count = 0;
-	while (snd_seq_query_next_port(midiSeq, pinfo) >= 0) {
-            int cap = snd_seq_port_info_get_capability(pinfo);
-	    int type = snd_seq_port_info_get_type(pinfo);
-	    if (cap & SND_SEQ_PORT_CAP_WRITE) {
-                TRACE("OUT (%d:%s:%s:%d:%s:%x)\n",snd_seq_client_info_get_client(cinfo),
-				                snd_seq_client_info_get_name(cinfo),
-						snd_seq_client_info_get_type(cinfo) == SND_SEQ_USER_CLIENT ? "user" : "kernel",
-						snd_seq_port_info_get_port(pinfo),
-						snd_seq_port_info_get_name(pinfo),
-						type);
-		
-		if (MODM_NumDevs >= MAX_MIDIOUTDRV)
-		    continue;
-		if (!type)
-	            continue;
-
-		memcpy(&MidiOutDev[MODM_NumDevs].addr, snd_seq_port_info_get_addr(pinfo), sizeof(snd_seq_addr_t));
-		
-		/* Manufac ID. We do not have access to this with soundcard.h
-		 * Does not seem to be a problem, because in mmsystem.h only
-		 * Microsoft's ID is listed.
-		 */
-		MidiOutDev[MODM_NumDevs].caps.wMid = 0x00FF;
-		MidiOutDev[MODM_NumDevs].caps.wPid = 0x0001; 	/* FIXME Product ID  */
-		/* Product Version. We simply say "1" */
-		MidiOutDev[MODM_NumDevs].caps.vDriverVersion = 0x001;
-		MidiOutDev[MODM_NumDevs].caps.wChannelMask   = 0xFFFF;
-
-		/* FIXME Do we have this information?
-		 * Assuming the soundcards can handle
-		 * MIDICAPS_VOLUME and MIDICAPS_LRVOLUME but
-		 * not MIDICAPS_CACHE.
-		 */
-		MidiOutDev[MODM_NumDevs].caps.dwSupport      = MIDICAPS_VOLUME|MIDICAPS_LRVOLUME;
-                strcpy(MidiOutDev[MODM_NumDevs].caps.szPname, snd_seq_client_info_get_name(cinfo));
-
-                MidiOutDev[MODM_NumDevs].caps.wTechnology = MIDI_AlsaToWindowsDeviceType(type);
-                MidiOutDev[MODM_NumDevs].caps.wVoices     = 16;
-
-                /* FIXME Is it possible to know the maximum
-                 * number of simultaneous notes of a soundcard ?
-                 * I believe we don't have this information, but
-                 * it's probably equal or more than wVoices
-                 */
-                MidiOutDev[MODM_NumDevs].caps.wNotes = 16;
-                MidiOutDev[MODM_NumDevs].bEnabled    = TRUE;
-
-	        TRACE("MidiOut[%d]\tname='%s' techn=%d voices=%d notes=%d chnMsk=%04x support=%ld\n"
-	      	      "\tALSA info: midi dev-type=%lx, capa=%lx\n",
-	      	      MODM_NumDevs, MidiOutDev[MODM_NumDevs].caps.szPname, MidiOutDev[MODM_NumDevs].caps.wTechnology,
-	      	      MidiOutDev[MODM_NumDevs].caps.wVoices, MidiOutDev[MODM_NumDevs].caps.wNotes,
-	              MidiOutDev[MODM_NumDevs].caps.wChannelMask, MidiOutDev[MODM_NumDevs].caps.dwSupport,
-	              (long)type, (long)0);
-
-		
-		MODM_NumDevs++;
-            }
-	    if (cap & SND_SEQ_PORT_CAP_READ) {
-                TRACE("IN  (%d:%s:%s:%d:%s:%x)\n",snd_seq_client_info_get_client(cinfo),
-				                snd_seq_client_info_get_name(cinfo),
-						snd_seq_client_info_get_type(cinfo) == SND_SEQ_USER_CLIENT ? "user" : "kernel",
-						snd_seq_port_info_get_port(pinfo),
-						snd_seq_port_info_get_name(pinfo),
-						type);
-		
-		if (MIDM_NumDevs >= MAX_MIDIINDRV)
-		    continue;
-		if (!type)
-		    continue;
-
-		memcpy(&MidiInDev[MIDM_NumDevs].addr, snd_seq_port_info_get_addr(pinfo), sizeof(snd_seq_addr_t));
-		
-		/* Manufac ID. We do not have access to this with soundcard.h
-		 * Does not seem to be a problem, because in mmsystem.h only
-		 * Microsoft's ID is listed.
-		 */
-		MidiInDev[MIDM_NumDevs].caps.wMid = 0x00FF;
-		MidiInDev[MIDM_NumDevs].caps.wPid = 0x0001; 	/* FIXME Product ID  */
-		/* Product Version. We simply say "1" */
-		MidiInDev[MIDM_NumDevs].caps.vDriverVersion = 0x001;
-
-		/* FIXME Do we have this information?
-		 * Assuming the soundcards can handle
-		 * MIDICAPS_VOLUME and MIDICAPS_LRVOLUME but
-		 * not MIDICAPS_CACHE.
-		 */
-		MidiInDev[MIDM_NumDevs].caps.dwSupport      = MIDICAPS_VOLUME|MIDICAPS_LRVOLUME;
-                strcpy(MidiInDev[MIDM_NumDevs].caps.szPname, snd_seq_client_info_get_name(cinfo));
-
-                MidiInDev[MIDM_NumDevs].state = 0;
-
-                TRACE("MidiIn [%d]\tname='%s' support=%ld\n"
-	      	      "\tALSA info: midi dev-type=%lx, capa=%lx\n",
-	              MIDM_NumDevs, MidiInDev[MIDM_NumDevs].caps.szPname, MidiInDev[MIDM_NumDevs].caps.dwSupport,
-	              (long)type, (long)0);
-
-		MIDM_NumDevs++;
-	    }
-	}
-    }
-
-    /* close file and exit */
-    midiCloseSeq();
-
-    TRACE("End\n");
-    
-    return TRUE;
-}
-
-/**************************************************************************
  * 			MIDI_NotifyClient			[internal]
  */
 static DWORD MIDI_NotifyClient(UINT wDevID, WORD wMsg,
@@ -1102,6 +959,150 @@
  *======================================================================*/
 
 /**************************************************************************
+ * ALSA_MidiInit				[internal]
+ *
+ * Initializes the MIDI devices information variables
+ */
+LONG ALSA_MidiInit(void)
+{
+#if defined(HAVE_ALSA) && ((SND_LIB_MAJOR == 0 && SND_LIB_MINOR >= 9) || SND_LIB_MAJOR >= 1)
+    static	BOOL	bInitDone = FALSE;
+    snd_seq_client_info_t *cinfo;
+    snd_seq_port_info_t *pinfo;
+    int count;
+
+    if (bInitDone)
+	return TRUE;
+
+    TRACE("Initializing the MIDI variables.\n");
+    bInitDone = TRUE;
+
+    /* try to open device */
+    if (midiOpenSeq(0) == -1) {
+	return TRUE;
+    }
+
+#if 0 /* Debug purpose */
+    snd_lib_error_set_handler(error_handler);
+#endif
+    
+    snd_seq_client_info_alloca(&cinfo);
+    snd_seq_port_info_alloca(&pinfo);
+    snd_seq_client_info_set_client(cinfo, -1);
+    while(snd_seq_query_next_client(midiSeq, cinfo) >= 0) {
+        snd_seq_port_info_set_client(pinfo, snd_seq_client_info_get_client(cinfo));
+	snd_seq_port_info_set_port(pinfo, -1);
+	count = 0;
+	while (snd_seq_query_next_port(midiSeq, pinfo) >= 0) {
+            int cap = snd_seq_port_info_get_capability(pinfo);
+	    int type = snd_seq_port_info_get_type(pinfo);
+	    if (cap & SND_SEQ_PORT_CAP_WRITE) {
+                TRACE("OUT (%d:%s:%s:%d:%s:%x)\n",snd_seq_client_info_get_client(cinfo),
+				                snd_seq_client_info_get_name(cinfo),
+						snd_seq_client_info_get_type(cinfo) == SND_SEQ_USER_CLIENT ? "user" : "kernel",
+						snd_seq_port_info_get_port(pinfo),
+						snd_seq_port_info_get_name(pinfo),
+						type);
+		
+		if (MODM_NumDevs >= MAX_MIDIOUTDRV)
+		    continue;
+		if (!type)
+	            continue;
+
+		memcpy(&MidiOutDev[MODM_NumDevs].addr, snd_seq_port_info_get_addr(pinfo), sizeof(snd_seq_addr_t));
+		
+		/* Manufac ID. We do not have access to this with soundcard.h
+		 * Does not seem to be a problem, because in mmsystem.h only
+		 * Microsoft's ID is listed.
+		 */
+		MidiOutDev[MODM_NumDevs].caps.wMid = 0x00FF;
+		MidiOutDev[MODM_NumDevs].caps.wPid = 0x0001; 	/* FIXME Product ID  */
+		/* Product Version. We simply say "1" */
+		MidiOutDev[MODM_NumDevs].caps.vDriverVersion = 0x001;
+		MidiOutDev[MODM_NumDevs].caps.wChannelMask   = 0xFFFF;
+
+		/* FIXME Do we have this information?
+		 * Assuming the soundcards can handle
+		 * MIDICAPS_VOLUME and MIDICAPS_LRVOLUME but
+		 * not MIDICAPS_CACHE.
+		 */
+		MidiOutDev[MODM_NumDevs].caps.dwSupport      = MIDICAPS_VOLUME|MIDICAPS_LRVOLUME;
+                strcpy(MidiOutDev[MODM_NumDevs].caps.szPname, snd_seq_client_info_get_name(cinfo));
+
+                MidiOutDev[MODM_NumDevs].caps.wTechnology = MIDI_AlsaToWindowsDeviceType(type);
+                MidiOutDev[MODM_NumDevs].caps.wVoices     = 16;
+
+                /* FIXME Is it possible to know the maximum
+                 * number of simultaneous notes of a soundcard ?
+                 * I believe we don't have this information, but
+                 * it's probably equal or more than wVoices
+                 */
+                MidiOutDev[MODM_NumDevs].caps.wNotes = 16;
+                MidiOutDev[MODM_NumDevs].bEnabled    = TRUE;
+
+	        TRACE("MidiOut[%d]\tname='%s' techn=%d voices=%d notes=%d chnMsk=%04x support=%ld\n"
+	      	      "\tALSA info: midi dev-type=%lx, capa=%lx\n",
+	      	      MODM_NumDevs, MidiOutDev[MODM_NumDevs].caps.szPname, MidiOutDev[MODM_NumDevs].caps.wTechnology,
+	      	      MidiOutDev[MODM_NumDevs].caps.wVoices, MidiOutDev[MODM_NumDevs].caps.wNotes,
+	              MidiOutDev[MODM_NumDevs].caps.wChannelMask, MidiOutDev[MODM_NumDevs].caps.dwSupport,
+	              (long)type, (long)0);
+
+		
+		MODM_NumDevs++;
+            }
+	    if (cap & SND_SEQ_PORT_CAP_READ) {
+                TRACE("IN  (%d:%s:%s:%d:%s:%x)\n",snd_seq_client_info_get_client(cinfo),
+				                snd_seq_client_info_get_name(cinfo),
+						snd_seq_client_info_get_type(cinfo) == SND_SEQ_USER_CLIENT ? "user" : "kernel",
+						snd_seq_port_info_get_port(pinfo),
+						snd_seq_port_info_get_name(pinfo),
+						type);
+		
+		if (MIDM_NumDevs >= MAX_MIDIINDRV)
+		    continue;
+		if (!type)
+		    continue;
+
+		memcpy(&MidiInDev[MIDM_NumDevs].addr, snd_seq_port_info_get_addr(pinfo), sizeof(snd_seq_addr_t));
+		
+		/* Manufac ID. We do not have access to this with soundcard.h
+		 * Does not seem to be a problem, because in mmsystem.h only
+		 * Microsoft's ID is listed.
+		 */
+		MidiInDev[MIDM_NumDevs].caps.wMid = 0x00FF;
+		MidiInDev[MIDM_NumDevs].caps.wPid = 0x0001; 	/* FIXME Product ID  */
+		/* Product Version. We simply say "1" */
+		MidiInDev[MIDM_NumDevs].caps.vDriverVersion = 0x001;
+
+		/* FIXME Do we have this information?
+		 * Assuming the soundcards can handle
+		 * MIDICAPS_VOLUME and MIDICAPS_LRVOLUME but
+		 * not MIDICAPS_CACHE.
+		 */
+		MidiInDev[MIDM_NumDevs].caps.dwSupport      = MIDICAPS_VOLUME|MIDICAPS_LRVOLUME;
+                strcpy(MidiInDev[MIDM_NumDevs].caps.szPname, snd_seq_client_info_get_name(cinfo));
+
+                MidiInDev[MIDM_NumDevs].state = 0;
+
+                TRACE("MidiIn [%d]\tname='%s' support=%ld\n"
+	      	      "\tALSA info: midi dev-type=%lx, capa=%lx\n",
+	              MIDM_NumDevs, MidiInDev[MIDM_NumDevs].caps.szPname, MidiInDev[MIDM_NumDevs].caps.dwSupport,
+	              (long)type, (long)0);
+
+		MIDM_NumDevs++;
+	    }
+	}
+    }
+
+    /* close file and exit */
+    midiCloseSeq();
+
+    TRACE("End\n");
+#endif
+    return TRUE;
+}
+
+/**************************************************************************
  * 			midMessage (WINEOSS.4)
  */
 DWORD WINAPI ALSA_midMessage(UINT wDevID, UINT wMsg, DWORD dwUser,