wineesd.drv: Clean up loading.
authorMaarten Lankhorst <m.b.lankhorst@gmail.com>
Wed, 21 Apr 2010 11:45:33 +0000 (13:45 +0200)
committerAlexandre Julliard <julliard@winehq.org>
Wed, 21 Apr 2010 14:15:35 +0000 (16:15 +0200)
dlls/wineesd.drv/audio.c
dlls/wineesd.drv/esound.c
dlls/wineesd.drv/esound.h [deleted file]

index a69949c7e6df21ea14a334d310107536dc294463..3d4225a335e60f5d3aa1958e23a0acfbef167308 100644 (file)
 #include "ks.h"
 #include "ksguid.h"
 #include "ksmedia.h"
-#include "esound.h"
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(wave);
 
+#ifdef HAVE_SYS_ERRNO_H
+#include <sys/errno.h>
+#endif
+
 #ifdef HAVE_ESD
 
 #include <esd.h>
@@ -384,13 +387,17 @@ static void       ESD_CloseWaveInDevice(WINE_WAVEIN* wwi)
        wwi->stream_fd = -1;
 }
 
+static int WAVE_loadcount;
 /******************************************************************
  *             ESD_WaveClose
  */
-LONG           ESD_WaveClose(void)
+static LONG ESD_WaveClose(void)
 {
     int iDevice;
 
+    if (--WAVE_loadcount)
+        return 1;
+
     /* close all open devices */
     for(iDevice = 0; iDevice < MAX_WAVEOUTDRV; iDevice++)
     {
@@ -416,18 +423,20 @@ LONG              ESD_WaveClose(void)
  *
  * Initialize internal structures from ESD server info
  */
-LONG ESD_WaveInit(void)
+static LONG ESD_WaveInit(void)
 {
     int        i;
     int        fd;
 
     TRACE("called\n");
+    if (WAVE_loadcount++)
+        return 1;
 
     /* Testing whether the esd host is alive. */
     if ((fd = esd_open_sound(NULL)) < 0)
     {
        WARN("esd_open_sound() failed (%d)\n", errno);
-       return -1;
+       return 0;
     }
     esd_close(fd);
 
@@ -497,7 +506,7 @@ LONG ESD_WaveInit(void)
 
        WInDev[i].caps.wReserved1 = 0;
     }
-    return 0;
+    return 1;
 }
 
 /******************************************************************
index c3455f42020a66b379fae248c5aa9fbd5a6f1053..64c075310479427ccc450172aa1e579151f33b13 100644 (file)
 #include "wingdi.h"
 #include "winuser.h"
 #include "mmddk.h"
-#include "esound.h"
-
-#ifdef HAVE_ESD
-
-/**************************************************************************
- *                             ESD_drvOpen                     [internal]
- */
-static LRESULT ESD_drvOpen(LPSTR str)
-{
-    return 1;
-}
-
-/**************************************************************************
- *                             ESD_drvClose                    [internal]
- */
-static LRESULT ESD_drvClose(DWORD_PTR dwDevID)
-{
-    return 1;
-}
-#endif /* #ifdef HAVE_ESD */
-
 
 /**************************************************************************
  *                             DriverProc (WINEESD.@)
@@ -59,24 +38,21 @@ static LRESULT ESD_drvClose(DWORD_PTR dwDevID)
 LRESULT CALLBACK ESD_DriverProc(DWORD_PTR dwDevID, HDRVR hDriv, UINT wMsg,
                                 LPARAM dwParam1, LPARAM dwParam2)
 {
-/* EPP     TRACE("(%08lX, %04X, %08lX, %08lX, %08lX)\n",  */
-/* EPP           dwDevID, hDriv, wMsg, dwParam1, dwParam2); */
-
     switch(wMsg) {
 #ifdef HAVE_ESD
-    case DRV_LOAD:             if (ESD_WaveInit()<0) return 0;
-                               return 1;
-    case DRV_FREE:             return ESD_WaveClose();
-    case DRV_OPEN:             return ESD_drvOpen((LPSTR)dwParam1);
-    case DRV_CLOSE:            return ESD_drvClose(dwDevID);
-    case DRV_ENABLE:           return 1;
-    case DRV_DISABLE:          return 1;
-    case DRV_QUERYCONFIGURE:   return 1;
+    case DRV_LOAD:
+    case DRV_FREE:
+    case DRV_OPEN:
+    case DRV_CLOSE:
+    case DRV_INSTALL:
+    case DRV_REMOVE:
+    case DRV_ENABLE:
+    case DRV_DISABLE:
+    case DRV_QUERYCONFIGURE:
+        return 1;
     case DRV_CONFIGURE:                MessageBoxA(0, "EsounD MultiMedia Driver!", "EsounD Driver", MB_OK);    return 1;
-    case DRV_INSTALL:          return DRVCNF_RESTART;
-    case DRV_REMOVE:           return DRVCNF_RESTART;
 #endif
     default:
-       return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2);
+       return 0;
     }
 }
diff --git a/dlls/wineesd.drv/esound.h b/dlls/wineesd.drv/esound.h
deleted file mode 100644 (file)
index e8ebd0e..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Definition for EsounD drivers : wine multimedia system
- *
- * Copyright 2004 Zhangrong Huang <hzhr@users.sourceforge.net>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_ESD_H
-#define __WINE_ESD_H
-
-#ifndef __WINE_CONFIG_H
-# error You must include config.h to use this header
-#endif
-
-#ifdef HAVE_SYS_ERRNO_H
-#include <sys/errno.h>
-#endif
-
-extern LONG ESD_WaveInit(void);
-extern LONG ESD_WaveClose(void);
-
-#endif  /* __WINE_ESD_H */