winenas.drv: Remove broken driver

Maarten Lankhorst m.b.lankhorst at gmail.com
Sat Nov 7 07:45:13 CST 2009


---
-------------- next part --------------
From 88fde5ad95a33dc2da29757605891ccc5047c12f Mon Sep 17 00:00:00 2001
From: mlankhorst <mlankhorst at eee.(none)>
Date: Sat, 7 Nov 2009 13:34:54 +0000
Subject: [PATCH] winenas.drv: Remove broken driver

---
 dlls/winenas.drv/Makefile.in      |   16 -
 dlls/winenas.drv/audio.c          | 1502 -------------------------------------
 dlls/winenas.drv/nas.c            |   85 ---
 dlls/winenas.drv/nas.h            |   28 -
 dlls/winenas.drv/winenas.drv.spec |    2 -
 programs/winecfg/Bg.rc            |    1 -
 programs/winecfg/Cs.rc            |    1 -
 programs/winecfg/Da.rc            |    1 -
 programs/winecfg/De.rc            |    1 -
 programs/winecfg/En.rc            |    1 -
 programs/winecfg/Es.rc            |    1 -
 programs/winecfg/Fi.rc            |    1 -
 programs/winecfg/Fr.rc            |    1 -
 programs/winecfg/Hu.rc            |    1 -
 programs/winecfg/It.rc            |    1 -
 programs/winecfg/Ja.rc            |    1 -
 programs/winecfg/Ko.rc            |    1 -
 programs/winecfg/Lt.rc            |    1 -
 programs/winecfg/Nl.rc            |    1 -
 programs/winecfg/No.rc            |    1 -
 programs/winecfg/Pl.rc            |    1 -
 programs/winecfg/Pt.rc            |    1 -
 programs/winecfg/Ro.rc            |    1 -
 programs/winecfg/Ru.rc            |    1 -
 programs/winecfg/Si.rc            |    1 -
 programs/winecfg/Sv.rc            |    1 -
 programs/winecfg/Tr.rc            |    1 -
 programs/winecfg/Zh.rc            |    2 -
 programs/winecfg/audio.c          |    1 -
 programs/winecfg/resource.h       |    1 -
 30 files changed, 0 insertions(+), 1659 deletions(-)
 delete mode 100644 dlls/winenas.drv/Makefile.in
 delete mode 100644 dlls/winenas.drv/audio.c
 delete mode 100644 dlls/winenas.drv/nas.c
 delete mode 100644 dlls/winenas.drv/nas.h
 delete mode 100644 dlls/winenas.drv/winenas.drv.spec

diff --git a/dlls/winenas.drv/Makefile.in b/dlls/winenas.drv/Makefile.in
deleted file mode 100644
index 94bbb2e..0000000
--- a/dlls/winenas.drv/Makefile.in
+++ /dev/null
@@ -1,16 +0,0 @@
-TOPSRCDIR = @top_srcdir@
-TOPOBJDIR = ../..
-SRCDIR    = @srcdir@
-VPATH     = @srcdir@
-MODULE    = winenas.drv
-IMPORTS   = dxguid uuid winmm user32 kernel32
-EXTRAINCL = @X_CFLAGS@
-EXTRALIBS = @NASLIBS@
-
-C_SRCS = \
-	audio.c \
-	nas.c
-
- at MAKE_DLL_RULES@
-
- at DEPENDENCIES@  # everything below this line is overwritten by make depend
diff --git a/dlls/winenas.drv/audio.c b/dlls/winenas.drv/audio.c
deleted file mode 100644
index 10d0b73..0000000
--- a/dlls/winenas.drv/audio.c
+++ /dev/null
@@ -1,1502 +0,0 @@
-/* -*- tab-width: 8; c-basic-offset: 4 -*- */
-/*
- * Wine Driver for NAS Network Audio System
- *   http://radscan.com/nas.html
- *
- * Copyright 1994 Martin Ayotte
- *           1999 Eric Pouech (async playing in waveOut/waveIn)
- *	     2000 Eric Pouech (loops in waveOut)
- *	     2002 Chris Morgan (aRts version of this file)
- *           2002 Nicolas Escuder (NAS version of this file)
- *
- * Copyright 2002 Nicolas Escuder <n.escuder at alineanet.com>
- *
- * 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
- */
-/* NOTE:
- *    with nas we cannot stop the audio that is already in
- *    the servers buffer.
- *
- * FIXME:
- *	pause in waveOut does not work correctly in loop mode
- *
- */
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-#ifdef HAVE_SYS_TIME_H
-# include <sys/time.h>
-#endif
-#include <fcntl.h>
-#include <math.h>
-
-#define FRAG_SIZE  1024
-#define FRAG_COUNT 10
-
-/* avoid type conflicts */
-#define INT8 X_INT8
-#define INT16 X_INT16
-#define INT32 X_INT32
-#define INT64 X_INT64
-#define BOOL X_BOOL
-#define BYTE X_BYTE
-#ifdef HAVE_AUDIO_AUDIOLIB_H
-#include <audio/audiolib.h>
-#endif
-#ifdef HAVE_AUDIO_SOUNDLIB_H
-#include <audio/soundlib.h>
-#endif
-#undef INT8
-#undef INT16
-#undef INT32
-#undef INT64
-#undef LONG64
-#undef BOOL
-#undef BYTE
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "winerror.h"
-#include "mmddk.h"
-#include "dsound.h"
-#include "dsdriver.h"
-#include "nas.h"
-#include "wine/unicode.h"
-#include "wine/debug.h"
-
-WINE_DEFAULT_DEBUG_CHANNEL(wave);
-
-/* Allow 1% deviation for sample rates (some ES137x cards) */
-#define NEAR_MATCH(rate1,rate2) (((100*((int)(rate1)-(int)(rate2)))/(rate1))==0)
-
-#ifdef HAVE_NAS
-
-static AuServer         *AuServ;
-
-#define MAX_WAVEOUTDRV 	(1)
-
-/* state diagram for waveOut writing:
- *
- * +---------+-------------+---------------+---------------------------------+
- * |  state  |  function   |     event     |            new state	     |
- * +---------+-------------+---------------+---------------------------------+
- * |	     | open()	   |		   | STOPPED		       	     |
- * | PAUSED  | write()	   | 		   | PAUSED		       	     |
- * | STOPPED | write()	   | <thrd create> | PLAYING		  	     |
- * | PLAYING | write()	   | HEADER        | PLAYING		  	     |
- * | (other) | write()	   | <error>       |		       		     |
- * | (any)   | pause()	   | PAUSING	   | PAUSED		       	     |
- * | PAUSED  | restart()   | RESTARTING    | PLAYING (if no thrd => STOPPED) |
- * | (any)   | reset()	   | RESETTING     | STOPPED		      	     |
- * | (any)   | close()	   | CLOSING	   | CLOSED		      	     |
- * +---------+-------------+---------------+---------------------------------+
- */
-
-/* states of the playing device */
-#define	WINE_WS_PLAYING		0
-#define	WINE_WS_PAUSED		1
-#define	WINE_WS_STOPPED		2
-#define WINE_WS_CLOSED		3
-
-/* events to be send to device */
-enum win_wm_message {
-    WINE_WM_PAUSING = WM_USER + 1, WINE_WM_RESTARTING, WINE_WM_RESETTING, WINE_WM_HEADER,
-    WINE_WM_UPDATE, WINE_WM_BREAKLOOP, WINE_WM_CLOSING
-};
-
-typedef struct {
-    enum win_wm_message 	msg;	/* message identifier */
-    DWORD_PTR                   param;  /* parameter for this message */
-    HANDLE	                hEvent;	/* if message is synchronous, handle of event for synchro */
-} RING_MSG;
-
-/* implement an in-process message ring for better performance
- * (compared to passing thru the server)
- * this ring will be used by the input (resp output) record (resp playback) routine
- */
-#define NAS_RING_BUFFER_INCREMENT      64
-typedef struct {
-    RING_MSG			* messages;
-    int                         ring_buffer_size;
-    int				msg_tosave;
-    int				msg_toget;
-    HANDLE			msg_event;
-    CRITICAL_SECTION		msg_crst;
-} MSG_RING;
-
-typedef struct {
-    volatile int		state;			/* one of the WINE_WS_ manifest constants */
-    WAVEOPENDESC		waveDesc;
-    WORD			wFlags;
-    PCMWAVEFORMAT		format;
-    WAVEOUTCAPSW		caps;
-    int				Id;
-
-    int                         open;
-    AuServer                    *AuServ;
-    AuDeviceID                  AuDev;
-    AuFlowID                    AuFlow;
-    BOOL                        FlowStarted;
-
-    DWORD                       writeBytes;
-    DWORD                       freeBytes;
-    DWORD                       sendBytes;
-
-    DWORD                       BufferSize;           /* size of whole buffer in bytes */
-
-    char*                       SoundBuffer;
-    long                        BufferUsed;
-
-    DWORD			volume_left;		/* volume control information */
-    DWORD			volume_right;
-
-    LPWAVEHDR			lpQueuePtr;		/* start of queued WAVEHDRs (waiting to be notified) */
-    LPWAVEHDR			lpPlayPtr;		/* start of not yet fully played buffers */
-
-    LPWAVEHDR			lpLoopPtr;              /* pointer of first buffer in loop, if any */
-    DWORD			dwLoops;		/* private copy of loop counter */
-
-    DWORD			PlayedTotal;		/* number of bytes actually played since opening */
-    DWORD                       WrittenTotal;         /* number of bytes written to the audio device since opening */
-
-    /* synchronization stuff */
-    HANDLE			hStartUpEvent;
-    HANDLE			hThread;
-    DWORD			dwThreadID;
-    MSG_RING			msgRing;
-} WINE_WAVEOUT;
-
-static WINE_WAVEOUT	WOutDev   [MAX_WAVEOUTDRV];
-
-static DWORD wodDsCreate(UINT wDevID, PIDSDRIVER* drv);
-static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc);
-
-
-/* NASFUNC */
-static AuBool event_handler(AuServer* aud, AuEvent* ev, AuEventHandlerRec* hnd);
-static int nas_init(void);
-static int nas_end(void);
-
-static int nas_finddev(WINE_WAVEOUT* wwo);
-static int nas_open(WINE_WAVEOUT* wwo);
-static int nas_free(WINE_WAVEOUT* wwo);
-static int nas_close(WINE_WAVEOUT* wwo);
-static void buffer_resize(WINE_WAVEOUT* wwo, int len);
-static int nas_add_buffer(WINE_WAVEOUT* wwo);
-static int nas_send_buffer(WINE_WAVEOUT* wwo);
-
-/* These strings used only for tracing */
-static const char * const wodPlayerCmdString[] = {
-    "WINE_WM_PAUSING",
-    "WINE_WM_RESTARTING",
-    "WINE_WM_RESETTING",
-    "WINE_WM_HEADER",
-    "WINE_WM_UPDATE",
-    "WINE_WM_BREAKLOOP",
-    "WINE_WM_CLOSING",
-};
-
-static const char * const nas_elementnotify_kinds[] = {
-        "LowWater",
-        "HighWater",
-        "State",
-        "Unknown"
-};
-
-static const char * const nas_states[] = {
-        "Stop",
-        "Start",
-        "Pause",
-        "Any"
-};
-
-static const char * const nas_reasons[] = {
-        "User",
-        "Underrun",
-        "Overrun",
-        "EOF",
-        "Watermark",
-        "Hardware",
-        "Any"
-};
-
-static const char* nas_reason(unsigned int reason)
-{
-        if (reason > 6) reason = 6;
-        return nas_reasons[reason];
-}
-
-static const char* nas_elementnotify_kind(unsigned int kind)
-{
-        if (kind > 2) kind = 3;
-        return nas_elementnotify_kinds[kind];
-}
-
-
-#if 0
-static const char* nas_event_type(unsigned int type)
-{
-        static const char * const nas_event_types[] =
-        {
-            "Undefined",
-            "Undefined",
-            "ElementNotify",
-            "GrabNotify",
-            "MonitorNotify",
-            "BucketNotify",
-            "DeviceNotify"
-        };
-
-        if (type > 6) type = 0;
-        return nas_event_types[type];
-}
-#endif
-
-
-static const char* nas_state(unsigned int state)
-{
-        if (state > 3) state = 3;
-        return nas_states[state];
-}
-
-static DWORD bytes_to_mmtime(LPMMTIME lpTime, DWORD position,
-                             PCMWAVEFORMAT* format)
-{
-    TRACE("wType=%04X wBitsPerSample=%u nSamplesPerSec=%u nChannels=%u nAvgBytesPerSec=%u\n",
-          lpTime->wType, format->wBitsPerSample, format->wf.nSamplesPerSec,
-          format->wf.nChannels, format->wf.nAvgBytesPerSec);
-    TRACE("Position in bytes=%u\n", position);
-
-    switch (lpTime->wType) {
-    case TIME_SAMPLES:
-        lpTime->u.sample = position / (format->wBitsPerSample / 8 * format->wf.nChannels);
-        TRACE("TIME_SAMPLES=%u\n", lpTime->u.sample);
-        break;
-    case TIME_MS:
-        lpTime->u.ms = 1000.0 * position / (format->wBitsPerSample / 8 * format->wf.nChannels * format->wf.nSamplesPerSec);
-        TRACE("TIME_MS=%u\n", lpTime->u.ms);
-        break;
-    case TIME_SMPTE:
-        lpTime->u.smpte.fps = 30;
-        position = position / (format->wBitsPerSample / 8 * format->wf.nChannels);
-        position += (format->wf.nSamplesPerSec / lpTime->u.smpte.fps) - 1; /* round up */
-        lpTime->u.smpte.sec = position / format->wf.nSamplesPerSec;
-        position -= lpTime->u.smpte.sec * format->wf.nSamplesPerSec;
-        lpTime->u.smpte.min = lpTime->u.smpte.sec / 60;
-        lpTime->u.smpte.sec -= 60 * lpTime->u.smpte.min;
-        lpTime->u.smpte.hour = lpTime->u.smpte.min / 60;
-        lpTime->u.smpte.min -= 60 * lpTime->u.smpte.hour;
-        lpTime->u.smpte.fps = 30;
-        lpTime->u.smpte.frame = position * lpTime->u.smpte.fps / format->wf.nSamplesPerSec;
-        TRACE("TIME_SMPTE=%02u:%02u:%02u:%02u\n",
-              lpTime->u.smpte.hour, lpTime->u.smpte.min,
-              lpTime->u.smpte.sec, lpTime->u.smpte.frame);
-        break;
-    default:
-        WARN("Format %d not supported, using TIME_BYTES !\n", lpTime->wType);
-        lpTime->wType = TIME_BYTES;
-        /* fall through */
-    case TIME_BYTES:
-        lpTime->u.cb = position;
-        TRACE("TIME_BYTES=%u\n", lpTime->u.cb);
-        break;
-    }
-    return MMSYSERR_NOERROR;
-}
-
-/*======================================================================*
- *                  Low level WAVE implementation			*
- *======================================================================*/
-#if 0
-/* Volume functions derived from Alsaplayer source */
-/* length is the number of 16 bit samples */
-static void volume_effect16(void *bufin, void* bufout, int length, int left,
-                            int right, int nChannels)
-{
-  short *d_out = bufout;
-  short *d_in = bufin;
-  int i, v;
-
-/*
-  TRACE("length == %d, nChannels == %d\n", length, nChannels);
-*/
-
-  if (right == -1) right = left;
-
-  for(i = 0; i < length; i+=(nChannels))
-  {
-    v = (int) ((*(d_in++) * left) / 100);
-    *(d_out++) = (v>32767) ? 32767 : ((v<-32768) ? -32768 : v);
-    if(nChannels == 2)
-    {
-      v = (int) ((*(d_in++) * right) / 100);
-      *(d_out++) = (v>32767) ? 32767 : ((v<-32768) ? -32768 : v);
-    }
-  }
-}
-
-/* length is the number of 8 bit samples */
-static void volume_effect8(void *bufin, void* bufout, int length, int left,
-                           int right, int nChannels)
-{
-  char *d_out = bufout;
-  char *d_in = bufin;
-  int i, v;
-
-/*
-  TRACE("length == %d, nChannels == %d\n", length, nChannels);
-*/
-
-  if (right == -1) right = left;
-
-  for(i = 0; i < length; i+=(nChannels))
-  {
-    v = (char) ((*(d_in++) * left) / 100);
-    *(d_out++) = (v>255) ? 255 : ((v<0) ? 0 : v);
-    if(nChannels == 2)
-    {
-      v = (char) ((*(d_in++) * right) / 100);
-      *(d_out++) = (v>255) ? 255 : ((v<0) ? 0 : v);
-    }
-  }
-}
-#endif
-
-/******************************************************************
- *		NAS_CloseDevice
- *
- */
-static void NAS_CloseDevice(WINE_WAVEOUT* wwo)
-{
-  TRACE("NAS_CloseDevice\n");
-  nas_close(wwo);
-}
-
-/******************************************************************
- *		NAS_WaveClose
- */
-LONG		NAS_WaveClose(void)
-{
-    nas_end();    /* free up nas server */
-    return 1;
-}
-
-/******************************************************************
- *		NAS_WaveInit
- *
- * Initialize internal structures from NAS server info
- */
-LONG NAS_WaveInit(void)
-{
-    int 	i;
-    if (!nas_init()) return MMSYSERR_ERROR;
-
-    /* initialize all device handles to -1 */
-    for (i = 0; i < MAX_WAVEOUTDRV; ++i)
-    {
-        static const WCHAR ini[] = {'N','A','S',' ','W','A','V','E','O','U','T',' ','D','r','i','v','e','r',0};
-	memset(&WOutDev[i].caps, 0, sizeof(WOutDev[i].caps)); /* zero out caps values */
-
-        WOutDev[i].AuServ = AuServ;
-        WOutDev[i].AuDev = AuNone;
-	WOutDev[i].Id = i;
-    	WOutDev[i].caps.wMid = 0x00FF; 	/* Manufac ID */
-    	WOutDev[i].caps.wPid = 0x0001; 	/* Product ID */
-        strcpyW(WOutDev[i].caps.szPname, ini);
-        WOutDev[i].AuFlow = 0;
-    	WOutDev[i].caps.vDriverVersion = 0x0100;
-    	WOutDev[i].caps.dwFormats = 0x00000000;
-    	WOutDev[i].caps.dwSupport = WAVECAPS_VOLUME;
-
-    	WOutDev[i].caps.wChannels = 2;
-    	WOutDev[i].caps.dwSupport |= WAVECAPS_LRVOLUME;
-
-    	WOutDev[i].caps.dwFormats |= WAVE_FORMAT_4M08;
-    	WOutDev[i].caps.dwFormats |= WAVE_FORMAT_4S08;
-    	WOutDev[i].caps.dwFormats |= WAVE_FORMAT_4S16;
-    	WOutDev[i].caps.dwFormats |= WAVE_FORMAT_4M16;
-    	WOutDev[i].caps.dwFormats |= WAVE_FORMAT_2M08;
-    	WOutDev[i].caps.dwFormats |= WAVE_FORMAT_2S08;
-    	WOutDev[i].caps.dwFormats |= WAVE_FORMAT_2M16;
-    	WOutDev[i].caps.dwFormats |= WAVE_FORMAT_2S16;
-    	WOutDev[i].caps.dwFormats |= WAVE_FORMAT_1M08;
-    	WOutDev[i].caps.dwFormats |= WAVE_FORMAT_1S08;
-	WOutDev[i].caps.dwFormats |= WAVE_FORMAT_1M16;
-	WOutDev[i].caps.dwFormats |= WAVE_FORMAT_1S16;
-    }
-
-
-    return 0;
-}
-
-/******************************************************************
- *		NAS_InitRingMessage
- *
- * Initialize the ring of messages for passing between driver's caller and playback/record
- * thread
- */
-static int NAS_InitRingMessage(MSG_RING* mr)
-{
-    mr->msg_toget = 0;
-    mr->msg_tosave = 0;
-    mr->msg_event = CreateEventW(NULL, FALSE, FALSE, NULL);
-    mr->ring_buffer_size = NAS_RING_BUFFER_INCREMENT;
-    mr->messages = HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,mr->ring_buffer_size * sizeof(RING_MSG));
-    InitializeCriticalSection(&mr->msg_crst);
-    mr->msg_crst.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": MSG_RING.msg_crst");
-    return 0;
-}
-
-/******************************************************************
- *		NAS_DestroyRingMessage
- *
- */
-static int NAS_DestroyRingMessage(MSG_RING* mr)
-{
-    CloseHandle(mr->msg_event);
-    HeapFree(GetProcessHeap(),0,mr->messages);
-    mr->msg_crst.DebugInfo->Spare[0] = 0;
-    DeleteCriticalSection(&mr->msg_crst);
-    return 0;
-}
-
-/******************************************************************
- *		NAS_AddRingMessage
- *
- * Inserts a new message into the ring (should be called from DriverProc derived routines)
- */
-static int NAS_AddRingMessage(MSG_RING* mr, enum win_wm_message msg, DWORD param, BOOL wait)
-{
-    HANDLE      hEvent = INVALID_HANDLE_VALUE;
-
-    EnterCriticalSection(&mr->msg_crst);
-    if ((mr->msg_toget == ((mr->msg_tosave + 1) % mr->ring_buffer_size)))
-    {
-	int old_ring_buffer_size = mr->ring_buffer_size;
-	mr->ring_buffer_size += NAS_RING_BUFFER_INCREMENT;
-	TRACE("omr->ring_buffer_size=%d\n",mr->ring_buffer_size);
-	mr->messages = HeapReAlloc(GetProcessHeap(),0,mr->messages, mr->ring_buffer_size * sizeof(RING_MSG));
-	/* Now we need to rearrange the ring buffer so that the new
-	   buffers just allocated are in between mr->msg_tosave and
-	   mr->msg_toget.
-	*/
-	if (mr->msg_tosave < mr->msg_toget)
-	{
-	    memmove(&(mr->messages[mr->msg_toget + NAS_RING_BUFFER_INCREMENT]),
-		    &(mr->messages[mr->msg_toget]),
-		    sizeof(RING_MSG)*(old_ring_buffer_size - mr->msg_toget)
-		    );
-	    mr->msg_toget += NAS_RING_BUFFER_INCREMENT;
-	}
-    }
-    if (wait)
-    {
-        hEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
-        if (hEvent == INVALID_HANDLE_VALUE)
-        {
-            ERR("can't create event !?\n");
-            LeaveCriticalSection(&mr->msg_crst);
-            return 0;
-        }
-        if (mr->msg_toget != mr->msg_tosave && mr->messages[mr->msg_toget].msg != WINE_WM_HEADER)
-            FIXME("two fast messages in the queue!!!!\n");
-
-        /* fast messages have to be added at the start of the queue */
-        mr->msg_toget = (mr->msg_toget + mr->ring_buffer_size - 1) % mr->ring_buffer_size;
-
-        mr->messages[mr->msg_toget].msg = msg;
-        mr->messages[mr->msg_toget].param = param;
-        mr->messages[mr->msg_toget].hEvent = hEvent;
-    }
-    else
-    {
-        mr->messages[mr->msg_tosave].msg = msg;
-        mr->messages[mr->msg_tosave].param = param;
-        mr->messages[mr->msg_tosave].hEvent = INVALID_HANDLE_VALUE;
-        mr->msg_tosave = (mr->msg_tosave + 1) % mr->ring_buffer_size;
-    }
-
-    LeaveCriticalSection(&mr->msg_crst);
-
-    SetEvent(mr->msg_event);    /* signal a new message */
-
-    if (wait)
-    {
-        /* wait for playback/record thread to have processed the message */
-        WaitForSingleObject(hEvent, INFINITE);
-        CloseHandle(hEvent);
-    }
-
-    return 1;
-}
-
-/******************************************************************
- *		NAS_RetrieveRingMessage
- *
- * Get a message from the ring. Should be called by the playback/record thread.
- */
-static int NAS_RetrieveRingMessage(MSG_RING* mr, enum win_wm_message *msg,
-                                   DWORD_PTR *param, HANDLE *hEvent)
-{
-    EnterCriticalSection(&mr->msg_crst);
-
-    if (mr->msg_toget == mr->msg_tosave) /* buffer empty ? */
-    {
-        LeaveCriticalSection(&mr->msg_crst);
-	return 0;
-    }
-
-    *msg = mr->messages[mr->msg_toget].msg;
-    mr->messages[mr->msg_toget].msg = 0;
-    *param = mr->messages[mr->msg_toget].param;
-    *hEvent = mr->messages[mr->msg_toget].hEvent;
-    mr->msg_toget = (mr->msg_toget + 1) % mr->ring_buffer_size;
-    LeaveCriticalSection(&mr->msg_crst);
-    return 1;
-}
-
-/*======================================================================*
- *                  Low level WAVE OUT implementation			*
- *======================================================================*/
-
-/**************************************************************************
- * 			wodNotifyClient			[internal]
- */
-static DWORD wodNotifyClient(WINE_WAVEOUT* wwo, WORD wMsg, DWORD_PTR dwParam1,
-                             DWORD_PTR dwParam2)
-{
-    TRACE("wMsg = 0x%04x dwParm1 = %08lX dwParam2 = %08lX\n", wMsg, dwParam1, dwParam2);
-
-    switch (wMsg) {
-    case WOM_OPEN:
-    case WOM_CLOSE:
-    case WOM_DONE:
-	if (wwo->wFlags != DCB_NULL &&
-	    !DriverCallback(wwo->waveDesc.dwCallback, wwo->wFlags, (HDRVR)wwo->waveDesc.hWave,
-			    wMsg, wwo->waveDesc.dwInstance, dwParam1, dwParam2)) {
-	    WARN("can't notify client !\n");
-	    return MMSYSERR_ERROR;
-	}
-	break;
-    default:
-	FIXME("Unknown callback message %u\n", wMsg);
-        return MMSYSERR_INVALPARAM;
-    }
-    return MMSYSERR_NOERROR;
-}
-
-/**************************************************************************
- * 				wodUpdatePlayedTotal	[internal]
- *
- */
-static BOOL wodUpdatePlayedTotal(WINE_WAVEOUT* wwo)
-{
-    wwo->PlayedTotal = wwo->WrittenTotal;
-    return TRUE;
-}
-
-/**************************************************************************
- * 				wodPlayer_BeginWaveHdr          [internal]
- *
- * Makes the specified lpWaveHdr the currently playing wave header.
- * If the specified wave header is a begin loop and we're not already in
- * a loop, setup the loop.
- */
-static void wodPlayer_BeginWaveHdr(WINE_WAVEOUT* wwo, LPWAVEHDR lpWaveHdr)
-{
-    wwo->lpPlayPtr = lpWaveHdr;
-
-    if (!lpWaveHdr) return;
-
-    if (lpWaveHdr->dwFlags & WHDR_BEGINLOOP) {
-	if (wwo->lpLoopPtr) {
-	    WARN("Already in a loop. Discarding loop on this header (%p)\n", lpWaveHdr);
-	    TRACE("Already in a loop. Discarding loop on this header (%p)\n", lpWaveHdr);
-	} else {
-            TRACE("Starting loop (%dx) with %p\n", lpWaveHdr->dwLoops, lpWaveHdr);
-	    wwo->lpLoopPtr = lpWaveHdr;
-	    /* Windows does not touch WAVEHDR.dwLoops,
-	     * so we need to make an internal copy */
-	    wwo->dwLoops = lpWaveHdr->dwLoops;
-	}
-    }
-}
-
-/**************************************************************************
- * 				wodPlayer_PlayPtrNext	        [internal]
- *
- * Advance the play pointer to the next waveheader, looping if required.
- */
-static LPWAVEHDR wodPlayer_PlayPtrNext(WINE_WAVEOUT* wwo)
-{
-    LPWAVEHDR lpWaveHdr = wwo->lpPlayPtr;
-
-    if ((lpWaveHdr->dwFlags & WHDR_ENDLOOP) && wwo->lpLoopPtr) {
-	/* We're at the end of a loop, loop if required */
-	if (--wwo->dwLoops > 0) {
-	    wwo->lpPlayPtr = wwo->lpLoopPtr;
-	} else {
-	    /* Handle overlapping loops correctly */
-	    if (wwo->lpLoopPtr != lpWaveHdr && (lpWaveHdr->dwFlags & WHDR_BEGINLOOP)) {
-		FIXME("Correctly handled case ? (ending loop buffer also starts a new loop)\n");
-		/* shall we consider the END flag for the closing loop or for
-		 * the opening one or for both ???
-		 * code assumes for closing loop only
-		 */
-	    } else {
-                lpWaveHdr = lpWaveHdr->lpNext;
-            }
-            wwo->lpLoopPtr = NULL;
-            wodPlayer_BeginWaveHdr(wwo, lpWaveHdr);
-	}
-    } else {
-	/* We're not in a loop.  Advance to the next wave header */
-	wodPlayer_BeginWaveHdr(wwo, lpWaveHdr = lpWaveHdr->lpNext);
-    }
-    return lpWaveHdr;
-}
-
-/**************************************************************************
- * 				wodPlayer_NotifyCompletions	[internal]
- *
- * Notifies and remove from queue all wavehdrs which have been played to
- * the speaker (ie. they have cleared the audio device).  If force is true,
- * we notify all wavehdrs and remove them all from the queue even if they
- * are unplayed or part of a loop.
- */
-static DWORD wodPlayer_NotifyCompletions(WINE_WAVEOUT* wwo, BOOL force)
-{
-    LPWAVEHDR		lpWaveHdr;
-
-    /* Start from lpQueuePtr and keep notifying until:
-     * - we hit an unwritten wavehdr
-     * - we hit the beginning of a running loop
-     * - we hit a wavehdr which hasn't finished playing
-     */
-    wodUpdatePlayedTotal(wwo);
-
-    while ((lpWaveHdr = wwo->lpQueuePtr) && (force || (lpWaveHdr != wwo->lpPlayPtr &&
-            lpWaveHdr != wwo->lpLoopPtr && lpWaveHdr->reserved <= wwo->PlayedTotal))) {
-
-	wwo->lpQueuePtr = lpWaveHdr->lpNext;
-
-	lpWaveHdr->dwFlags &= ~WHDR_INQUEUE;
-	lpWaveHdr->dwFlags |= WHDR_DONE;
-
-        wodNotifyClient(wwo, WOM_DONE, (DWORD_PTR)lpWaveHdr, 0);
-    }
-    return  (lpWaveHdr && lpWaveHdr != wwo->lpPlayPtr && lpWaveHdr != wwo->lpLoopPtr) ?
-            1 : 1;
-}
-
-/**************************************************************************
- * 				wodPlayer_Reset			[internal]
- *
- * wodPlayer helper. Resets current output stream.
- */
-static	void	wodPlayer_Reset(WINE_WAVEOUT* wwo, BOOL reset)
-{
-    wodUpdatePlayedTotal(wwo);
-    wodPlayer_NotifyCompletions(wwo, FALSE); /* updates current notify list */
-
-    /* we aren't able to flush any data that has already been written */
-    /* to nas, otherwise we would do the flushing here */
-
-    nas_free(wwo);
-
-    if (reset) {
-        enum win_wm_message     msg;
-        DWORD_PTR               param;
-        HANDLE                  ev;
-
-	/* remove any buffer */
-	wodPlayer_NotifyCompletions(wwo, TRUE);
-
-	wwo->lpPlayPtr = wwo->lpQueuePtr = wwo->lpLoopPtr = NULL;
-	wwo->state = WINE_WS_STOPPED;
-	wwo->PlayedTotal = wwo->WrittenTotal = 0;
-
-        /* remove any existing message in the ring */
-        EnterCriticalSection(&wwo->msgRing.msg_crst);
-
-        /* return all pending headers in queue */
-        while (NAS_RetrieveRingMessage(&wwo->msgRing, &msg, &param, &ev))
-        {
-	    TRACE("flushing msg\n");
-            if (msg != WINE_WM_HEADER)
-            {
-                FIXME("shouldn't have headers left\n");
-                SetEvent(ev);
-                continue;
-            }
-            ((LPWAVEHDR)param)->dwFlags &= ~WHDR_INQUEUE;
-            ((LPWAVEHDR)param)->dwFlags |= WHDR_DONE;
-
-            wodNotifyClient(wwo, WOM_DONE, param, 0);
-        }
-        ResetEvent(wwo->msgRing.msg_event);
-        LeaveCriticalSection(&wwo->msgRing.msg_crst);
-    } else {
-        if (wwo->lpLoopPtr) {
-            /* complicated case, not handled yet (could imply modifying the loop counter */
-            FIXME("Pausing while in loop isn't correctly handled yet, expec strange results\n");
-            wwo->lpPlayPtr = wwo->lpLoopPtr;
-            wwo->WrittenTotal = wwo->PlayedTotal; /* this is wrong !!! */
-        } else {
-	    /* the data already written is going to be played, so take */
-	    /* this fact into account here */
-	    wwo->PlayedTotal = wwo->WrittenTotal;
-        }
-	wwo->state = WINE_WS_PAUSED;
-    }
-}
-
-/**************************************************************************
- * 		      wodPlayer_ProcessMessages			[internal]
- */
-static void wodPlayer_ProcessMessages(WINE_WAVEOUT* wwo)
-{
-    LPWAVEHDR           lpWaveHdr;
-    enum win_wm_message	msg;
-    DWORD_PTR           param;
-    HANDLE		ev;
-
-    while (NAS_RetrieveRingMessage(&wwo->msgRing, &msg, &param, &ev)) {
-        TRACE("Received %s %lx\n", wodPlayerCmdString[msg - WM_USER - 1], param);
-	switch (msg) {
-	case WINE_WM_PAUSING:
-	    wodPlayer_Reset(wwo, FALSE);
-	    SetEvent(ev);
-	    break;
-	case WINE_WM_RESTARTING:
-	    wwo->state = WINE_WS_PLAYING;
-	    SetEvent(ev);
-	    break;
-	case WINE_WM_HEADER:
-	    lpWaveHdr = (LPWAVEHDR)param;
-
-	    /* insert buffer at the end of queue */
-	    {
-		LPWAVEHDR*	wh;
-		for (wh = &(wwo->lpQueuePtr); *wh; wh = &((*wh)->lpNext));
-		*wh = lpWaveHdr;
-	    }
-            if (!wwo->lpPlayPtr)
-                wodPlayer_BeginWaveHdr(wwo,lpWaveHdr);
-	    if (wwo->state == WINE_WS_STOPPED)
-		wwo->state = WINE_WS_PLAYING;
-	    break;
-	case WINE_WM_RESETTING:
-	    wodPlayer_Reset(wwo, TRUE);
-	    SetEvent(ev);
-	    break;
-        case WINE_WM_UPDATE:
-            wodUpdatePlayedTotal(wwo);
-	    SetEvent(ev);
-            break;
-        case WINE_WM_BREAKLOOP:
-            if (wwo->state == WINE_WS_PLAYING && wwo->lpLoopPtr != NULL) {
-                /* ensure exit at end of current loop */
-                wwo->dwLoops = 1;
-            }
-	    SetEvent(ev);
-            break;
-	case WINE_WM_CLOSING:
-	    /* sanity check: this should not happen since the device must have been reset before */
-	    if (wwo->lpQueuePtr || wwo->lpPlayPtr) ERR("out of sync\n");
-	    wwo->hThread = 0;
-	    wwo->state = WINE_WS_CLOSED;
-	    SetEvent(ev);
-	    ExitThread(0);
-	    /* shouldn't go here */
-	default:
-	    FIXME("unknown message %d\n", msg);
-	    break;
-	}
-    }
-}
-
-/**************************************************************************
- * 				wodPlayer			[internal]
- */
-static	DWORD	CALLBACK	wodPlayer(LPVOID pmt)
-{
-    WORD       uDevID = (DWORD_PTR)pmt;
-    WINE_WAVEOUT* wwo = &WOutDev[uDevID];
-
-    wwo->state = WINE_WS_STOPPED;
-    SetEvent(wwo->hStartUpEvent);
-
-    for (;;) {
-
-        if (wwo->FlowStarted) {
-           AuHandleEvents(wwo->AuServ);
-
-           if (wwo->state == WINE_WS_PLAYING && wwo->freeBytes && wwo->BufferUsed)
-              nas_send_buffer(wwo);
-        }
-
-        if (wwo->BufferUsed <= FRAG_SIZE && wwo->writeBytes > 0)
-           wodPlayer_NotifyCompletions(wwo, FALSE);
-
-        WaitForSingleObject(wwo->msgRing.msg_event, 20);
-        wodPlayer_ProcessMessages(wwo);
-
-        while(wwo->lpPlayPtr) {
-           wwo->lpPlayPtr->reserved = wwo->WrittenTotal + wwo->lpPlayPtr->dwBufferLength;
-           nas_add_buffer(wwo);
-           wodPlayer_PlayPtrNext(wwo);
-        }
-    return 0;
-    }
-}
-
-/**************************************************************************
- * 			wodGetDevCaps				[internal]
- */
-static DWORD wodGetDevCaps(WORD wDevID, LPWAVEOUTCAPSW lpCaps, DWORD dwSize)
-{
-    TRACE("(%u, %p, %u);\n", wDevID, lpCaps, dwSize);
-
-    if (lpCaps == NULL) return MMSYSERR_NOTENABLED;
-
-    if (wDevID >= MAX_WAVEOUTDRV) {
-	TRACE("MAX_WAVOUTDRV reached !\n");
-	return MMSYSERR_BADDEVICEID;
-    }
-
-    memcpy(lpCaps, &WOutDev[wDevID].caps, min(dwSize, sizeof(*lpCaps)));
-    return MMSYSERR_NOERROR;
-}
-
-/**************************************************************************
- * 				wodOpen				[internal]
- */
-static DWORD wodOpen(WORD wDevID, LPWAVEOPENDESC lpDesc, DWORD dwFlags)
-{
-    WINE_WAVEOUT*	wwo;
-
-    TRACE("wodOpen (%u, %p, %08X);\n", wDevID, lpDesc, dwFlags);
-
-    if (lpDesc == NULL) {
-	WARN("Invalid Parameter !\n");
-	return MMSYSERR_INVALPARAM;
-    }
-    if (wDevID >= MAX_WAVEOUTDRV) {
-	TRACE("MAX_WAVOUTDRV reached !\n");
-	return MMSYSERR_BADDEVICEID;
-    }
-
-    /* if this device is already open tell the app that it is allocated */
-
-    wwo = &WOutDev[wDevID];
-
-    if(wwo->open)
-    {
-      TRACE("device already allocated\n");
-      return MMSYSERR_ALLOCATED;
-    }
-
-
-    /* only PCM format is supported so far... */
-    if (lpDesc->lpFormat->wFormatTag != WAVE_FORMAT_PCM ||
-	lpDesc->lpFormat->nChannels == 0 ||
-	lpDesc->lpFormat->nSamplesPerSec == 0 ||
-        (lpDesc->lpFormat->wBitsPerSample!=8 && lpDesc->lpFormat->wBitsPerSample!=16)) {
-	WARN("Bad format: tag=%04X nChannels=%d nSamplesPerSec=%d !\n",
-	     lpDesc->lpFormat->wFormatTag, lpDesc->lpFormat->nChannels,
-	     lpDesc->lpFormat->nSamplesPerSec);
-	return WAVERR_BADFORMAT;
-    }
-
-    if (dwFlags & WAVE_FORMAT_QUERY) {
-	TRACE("Query format: tag=%04X nChannels=%d nSamplesPerSec=%d !\n",
-	     lpDesc->lpFormat->wFormatTag, lpDesc->lpFormat->nChannels,
-	     lpDesc->lpFormat->nSamplesPerSec);
-	return MMSYSERR_NOERROR;
-    }
-
-    /* direct sound not supported, ignore the flag */
-    dwFlags &= ~WAVE_DIRECTSOUND;
-
-    wwo->wFlags = HIWORD(dwFlags & CALLBACK_TYPEMASK);
-
-    wwo->waveDesc = *lpDesc;
-    memcpy(&wwo->format,   lpDesc->lpFormat, sizeof(PCMWAVEFORMAT));
-
-    if (wwo->format.wBitsPerSample == 0) {
-	WARN("Resetting zeroed wBitsPerSample\n");
-	wwo->format.wBitsPerSample = 8 *
-	    (wwo->format.wf.nAvgBytesPerSec /
-	     wwo->format.wf.nSamplesPerSec) /
-	    wwo->format.wf.nChannels;
-    }
-
-    if (!nas_open(wwo))
-       return MMSYSERR_ALLOCATED;
-
-    NAS_InitRingMessage(&wwo->msgRing);
-
-    /* create player thread */
-    if (!(dwFlags & WAVE_DIRECTSOUND)) {
-	wwo->hStartUpEvent = CreateEventW(NULL, FALSE, FALSE, NULL);
-        wwo->hThread = CreateThread(NULL, 0, wodPlayer, (LPVOID)(DWORD_PTR)wDevID,
-                                    0, &(wwo->dwThreadID));
-        if (wwo->hThread)
-            SetThreadPriority(wwo->hThread, THREAD_PRIORITY_TIME_CRITICAL);
-	WaitForSingleObject(wwo->hStartUpEvent, INFINITE);
-	CloseHandle(wwo->hStartUpEvent);
-    } else {
-	wwo->hThread = INVALID_HANDLE_VALUE;
-	wwo->dwThreadID = 0;
-    }
-    wwo->hStartUpEvent = INVALID_HANDLE_VALUE;
-
-    TRACE("stream=0x%lx, BufferSize=%d\n", (long)wwo->AuServ, wwo->BufferSize);
-
-    TRACE("wBitsPerSample=%u nAvgBytesPerSec=%u nSamplesPerSec=%u nChannels=%u nBlockAlign=%u\n",
-	  wwo->format.wBitsPerSample, wwo->format.wf.nAvgBytesPerSec,
-	  wwo->format.wf.nSamplesPerSec, wwo->format.wf.nChannels,
-	  wwo->format.wf.nBlockAlign);
-
-    return wodNotifyClient(wwo, WOM_OPEN, 0L, 0L);
-}
-
-/**************************************************************************
- * 				wodClose			[internal]
- */
-static DWORD wodClose(WORD wDevID)
-{
-    DWORD		ret = MMSYSERR_NOERROR;
-    WINE_WAVEOUT*	wwo;
-
-    TRACE("(%u);\n", wDevID);
-
-    if (wDevID >= MAX_WAVEOUTDRV || AuServ  == NULL)
-    {
-	WARN("bad device ID !\n");
-	return MMSYSERR_BADDEVICEID;
-    }
-
-    wwo = &WOutDev[wDevID];
-    if (wwo->lpQueuePtr) {
-	WARN("buffers still playing !\n");
-	ret = WAVERR_STILLPLAYING;
-    } else {
-	TRACE("imhere[3-close]\n");
-	if (wwo->hThread != INVALID_HANDLE_VALUE) {
-	    NAS_AddRingMessage(&wwo->msgRing, WINE_WM_CLOSING, 0, TRUE);
-	}
-
-        NAS_DestroyRingMessage(&wwo->msgRing);
-
-	NAS_CloseDevice(wwo);	/* close the stream and clean things up */
-
-	ret = wodNotifyClient(wwo, WOM_CLOSE, 0L, 0L);
-    }
-    return ret;
-}
-
-/**************************************************************************
- * 				wodWrite			[internal]
- *
- */
-static DWORD wodWrite(WORD wDevID, LPWAVEHDR lpWaveHdr, DWORD dwSize)
-{
-    TRACE("(%u, %p, %08X);\n", wDevID, lpWaveHdr, dwSize);
-
-    /* first, do the sanity checks... */
-    if (wDevID >= MAX_WAVEOUTDRV || AuServ == NULL)
-    {
-        WARN("bad dev ID !\n");
-	return MMSYSERR_BADDEVICEID;
-    }
-
-    if (lpWaveHdr->lpData == NULL || !(lpWaveHdr->dwFlags & WHDR_PREPARED))
-    {
-	TRACE("unprepared\n");
-	return WAVERR_UNPREPARED;
-    }
-
-    if (lpWaveHdr->dwFlags & WHDR_INQUEUE)
-    {
-	TRACE("still playing\n");
-	return WAVERR_STILLPLAYING;
-    }
-
-    lpWaveHdr->dwFlags &= ~WHDR_DONE;
-    lpWaveHdr->dwFlags |= WHDR_INQUEUE;
-    lpWaveHdr->lpNext = 0;
-
-    TRACE("adding ring message\n");
-    NAS_AddRingMessage(&WOutDev[wDevID].msgRing, WINE_WM_HEADER, (DWORD_PTR)lpWaveHdr, FALSE);
-
-    return MMSYSERR_NOERROR;
-}
-
-/**************************************************************************
- * 			wodPause				[internal]
- */
-static DWORD wodPause(WORD wDevID)
-{
-    TRACE("(%u);!\n", wDevID);
-
-    if (wDevID >= MAX_WAVEOUTDRV || AuServ == NULL)
-    {
-	WARN("bad device ID !\n");
-	return MMSYSERR_BADDEVICEID;
-    }
-
-    TRACE("imhere[3-PAUSING]\n");
-    NAS_AddRingMessage(&WOutDev[wDevID].msgRing, WINE_WM_PAUSING, 0, TRUE);
-
-    return MMSYSERR_NOERROR;
-}
-
-/**************************************************************************
- * 			wodRestart				[internal]
- */
-static DWORD wodRestart(WORD wDevID)
-{
-    TRACE("(%u);\n", wDevID);
-
-    if (wDevID >= MAX_WAVEOUTDRV || AuServ == NULL)
-    {
-	WARN("bad device ID !\n");
-	return MMSYSERR_BADDEVICEID;
-    }
-
-    if (WOutDev[wDevID].state == WINE_WS_PAUSED) {
-	TRACE("imhere[3-RESTARTING]\n");
-	NAS_AddRingMessage(&WOutDev[wDevID].msgRing, WINE_WM_RESTARTING, 0, TRUE);
-    }
-
-    /* FIXME: is NotifyClient with WOM_DONE right ? (Comet Busters 1.3.3 needs this notification) */
-    /* FIXME: Myst crashes with this ... hmm -MM
-       return wodNotifyClient(wwo, WOM_DONE, 0L, 0L);
-    */
-
-    return MMSYSERR_NOERROR;
-}
-
-/**************************************************************************
- * 			wodReset				[internal]
- */
-static DWORD wodReset(WORD wDevID)
-{
-    TRACE("(%u);\n", wDevID);
-
-    if (wDevID >= MAX_WAVEOUTDRV || AuServ == NULL)
-    {
-	WARN("bad device ID !\n");
-	return MMSYSERR_BADDEVICEID;
-    }
-
-    TRACE("imhere[3-RESET]\n");
-    NAS_AddRingMessage(&WOutDev[wDevID].msgRing, WINE_WM_RESETTING, 0, TRUE);
-
-    return MMSYSERR_NOERROR;
-}
-
-/**************************************************************************
- * 				wodGetPosition			[internal]
- */
-static DWORD wodGetPosition(WORD wDevID, LPMMTIME lpTime, DWORD uSize)
-{
-    WINE_WAVEOUT*	wwo;
-
-    TRACE("%u, %p, %u);\n", wDevID, lpTime, uSize);
-
-    if (wDevID >= MAX_WAVEOUTDRV || AuServ == NULL)
-    {
-	WARN("bad device ID !\n");
-	return MMSYSERR_BADDEVICEID;
-    }
-
-    if (lpTime == NULL)	return MMSYSERR_INVALPARAM;
-
-    wwo = &WOutDev[wDevID];
-#if 0
-    NAS_AddRingMessage(&wwo->msgRing, WINE_WM_UPDATE, 0, TRUE);
-#endif
-
-    return bytes_to_mmtime(lpTime, wwo->WrittenTotal, &wwo->format);
-}
-
-/**************************************************************************
- * 				wodBreakLoop			[internal]
- */
-static DWORD wodBreakLoop(WORD wDevID)
-{
-    TRACE("(%u);\n", wDevID);
-
-    if (wDevID >= MAX_WAVEOUTDRV || AuServ == NULL)
-    {
-	WARN("bad device ID !\n");
-	return MMSYSERR_BADDEVICEID;
-    }
-    NAS_AddRingMessage(&WOutDev[wDevID].msgRing, WINE_WM_BREAKLOOP, 0, TRUE);
-    return MMSYSERR_NOERROR;
-}
-
-/**************************************************************************
- * 				wodGetVolume			[internal]
- */
-static DWORD wodGetVolume(WORD wDevID, LPDWORD lpdwVol)
-{
-    DWORD left, right;
-
-    left = WOutDev[wDevID].volume_left;
-    right = WOutDev[wDevID].volume_right;
-
-    TRACE("(%u, %p);\n", wDevID, lpdwVol);
-
-    *lpdwVol = ((left * 0xFFFFl) / 100) + (((right * 0xFFFFl) / 100) << 16);
-
-    return MMSYSERR_NOERROR;
-}
-
-/**************************************************************************
- * 				wodSetVolume			[internal]
- */
-static DWORD wodSetVolume(WORD wDevID, DWORD dwParam)
-{
-    DWORD left, right;
-
-    left  = (LOWORD(dwParam) * 100) / 0xFFFFl;
-    right = (HIWORD(dwParam) * 100) / 0xFFFFl;
-
-    TRACE("(%u, %08X);\n", wDevID, dwParam);
-
-    WOutDev[wDevID].volume_left = left;
-    WOutDev[wDevID].volume_right = right;
-
-    return MMSYSERR_NOERROR;
-}
-
-/**************************************************************************
- * 				wodGetNumDevs			[internal]
- */
-static	DWORD	wodGetNumDevs(void)
-{
-    return MAX_WAVEOUTDRV;
-}
-
-/**************************************************************************
- * 				wodMessage (WINENAS.@)
- */
-DWORD WINAPI NAS_wodMessage(UINT wDevID, UINT wMsg, DWORD dwUser,
-                            DWORD_PTR dwParam1, DWORD_PTR dwParam2)
-{
-    TRACE("(%u, %04X, %08X, %08lX, %08lX);\n", wDevID, wMsg, dwUser, dwParam1, dwParam2);
-
-    switch (wMsg) {
-    case DRVM_INIT:
-    case DRVM_EXIT:
-    case DRVM_ENABLE:
-    case DRVM_DISABLE:
-	/* FIXME: Pretend this is supported */
-	return 0;
-    case WODM_OPEN:	 	return wodOpen		(wDevID, (LPWAVEOPENDESC)dwParam1,	dwParam2);
-    case WODM_CLOSE:	 	return wodClose		(wDevID);
-    case WODM_WRITE:	 	return wodWrite		(wDevID, (LPWAVEHDR)dwParam1,		dwParam2);
-    case WODM_PAUSE:	 	return wodPause		(wDevID);
-    case WODM_GETPOS:	 	return wodGetPosition	(wDevID, (LPMMTIME)dwParam1, 		dwParam2);
-    case WODM_BREAKLOOP: 	return wodBreakLoop     (wDevID);
-    case WODM_PREPARE:	 	return MMSYSERR_NOTSUPPORTED;
-    case WODM_UNPREPARE: 	return MMSYSERR_NOTSUPPORTED;
-    case WODM_GETDEVCAPS:	return wodGetDevCaps	(wDevID, (LPWAVEOUTCAPSW)dwParam1,	dwParam2);
-    case WODM_GETNUMDEVS:	return wodGetNumDevs	();
-    case WODM_GETPITCH:	 	return MMSYSERR_NOTSUPPORTED;
-    case WODM_SETPITCH:	 	return MMSYSERR_NOTSUPPORTED;
-    case WODM_GETPLAYBACKRATE:	return MMSYSERR_NOTSUPPORTED;
-    case WODM_SETPLAYBACKRATE:	return MMSYSERR_NOTSUPPORTED;
-    case WODM_GETVOLUME:	return wodGetVolume	(wDevID, (LPDWORD)dwParam1);
-    case WODM_SETVOLUME:	return wodSetVolume	(wDevID, dwParam1);
-    case WODM_RESTART:		return wodRestart	(wDevID);
-    case WODM_RESET:		return wodReset		(wDevID);
-
-    case DRV_QUERYDSOUNDIFACE:	return wodDsCreate	(wDevID, (PIDSDRIVER*)dwParam1);
-    case DRV_QUERYDSOUNDDESC:	return wodDsDesc	(wDevID, (PDSDRIVERDESC)dwParam1);
-    default:
-	FIXME("unknown message %d!\n", wMsg);
-    }
-    return MMSYSERR_NOTSUPPORTED;
-}
-
-/*======================================================================*
- *                  Low level DSOUND implementation			*
- *======================================================================*/
-static DWORD wodDsCreate(UINT wDevID, PIDSDRIVER* drv)
-{
-    /* we can't perform memory mapping as we don't have a file stream
-	interface with nas like we do with oss */
-    MESSAGE("This sound card s driver does not support direct access\n");
-    MESSAGE("The (slower) DirectSound HEL mode will be used instead.\n");
-    return MMSYSERR_NOTSUPPORTED;
-}
-
-static DWORD wodDsDesc(UINT wDevID, PDSDRIVERDESC desc)
-{
-    memset(desc, 0, sizeof(*desc));
-    strcpy(desc->szDesc, "Wine NAS DirectSound Driver");
-    strcpy(desc->szDrvname, "winenas.drv");
-    return MMSYSERR_NOERROR;
-}
-
-static int nas_init(void) {
-    TRACE("NAS INIT\n");
-    if (!(AuServ = AuOpenServer(NULL, 0, NULL, 0, NULL, NULL)))
-       return 0;
-
-    return 1;
-}
-
-static int nas_finddev(WINE_WAVEOUT* wwo) {
-   int i;
-
-    for (i = 0; i < AuServerNumDevices(wwo->AuServ); i++) {
-        if ((AuDeviceKind(AuServerDevice(wwo->AuServ, i)) ==
-             AuComponentKindPhysicalOutput) &&
-             AuDeviceNumTracks(AuServerDevice(wwo->AuServ, i)) == wwo->format.wf.nChannels)
-        {
-            wwo->AuDev = AuDeviceIdentifier(AuServerDevice(wwo->AuServ, i));
-            break;
-        }
-    }
-
-    if (wwo->AuDev == AuNone)
-       return 0;
-    return 1;
-}
-
-static int nas_open(WINE_WAVEOUT* wwo) {
-    AuElement elements[3];
-
-    if (!wwo->AuServ)
-       return 0;
-
-    if (!nas_finddev(wwo))
-       return 0;
-
-    if (!(wwo->AuFlow = AuCreateFlow(wwo->AuServ, NULL)))
-       return 0;
-
-    wwo->BufferSize = FRAG_SIZE * FRAG_COUNT;
-
-    AuMakeElementImportClient(&elements[0], wwo->format.wf.nSamplesPerSec,
-           wwo->format.wBitsPerSample == 16 ? AuFormatLinearSigned16LSB : AuFormatLinearUnsigned8,
-           wwo->format.wf.nChannels, AuTrue, wwo->BufferSize, wwo->BufferSize / 2, 0, NULL);
-
-    AuMakeElementExportDevice(&elements[1], 0, wwo->AuDev, wwo->format.wf.nSamplesPerSec,
-                              AuUnlimitedSamples, 0, NULL);
-
-    AuSetElements(wwo->AuServ, wwo->AuFlow, AuTrue, 2, elements, NULL);
-
-    AuRegisterEventHandler(wwo->AuServ, AuEventHandlerIDMask, 0, wwo->AuFlow,
-                           event_handler, (AuPointer) wwo);
-
-
-    wwo->PlayedTotal = 0;
-    wwo->WrittenTotal = 0;
-    wwo->open = 1;
-
-    wwo->BufferUsed = 0;
-    wwo->writeBytes = 0;
-    wwo->freeBytes = 0;
-    wwo->sendBytes = 0;
-    wwo->SoundBuffer = NULL;
-    wwo->FlowStarted = 0;
-
-    AuStartFlow(wwo->AuServ, wwo->AuFlow, NULL);
-    AuPauseFlow(wwo->AuServ, wwo->AuFlow, NULL);
-    wwo->FlowStarted = 1;
-
-    return 1;
-}
-
-static AuBool
-event_handler(AuServer* aud, AuEvent* ev, AuEventHandlerRec* hnd)
-{
-  WINE_WAVEOUT *wwo = hnd->data;
-        switch (ev->type) {
-
-        case AuEventTypeElementNotify: {
-                AuElementNotifyEvent* event = (AuElementNotifyEvent *)ev;
-
-
-                switch (event->kind) {
-                   case AuElementNotifyKindLowWater:
-                     wwo->freeBytes += event->num_bytes;
-                     if (wwo->writeBytes > 0)
-                        wwo->sendBytes += event->num_bytes;
-                    if (wwo->freeBytes && wwo->BufferUsed)
-                        nas_send_buffer(wwo);
-                   break;
-
-                   case AuElementNotifyKindState:
-                     TRACE("ev: kind %s state %s->%s reason %s numbytes %ld freeB %u\n",
-                                     nas_elementnotify_kind(event->kind),
-                                     nas_state(event->prev_state),
-                                     nas_state(event->cur_state),
-                                     nas_reason(event->reason),
-                                     event->num_bytes, wwo->freeBytes);
-
-                     if (event->cur_state ==  AuStatePause && event->reason != AuReasonUser) {
-                        wwo->freeBytes += event->num_bytes;
-                        if (wwo->writeBytes > 0)
-                           wwo->sendBytes += event->num_bytes;
-                        if (wwo->sendBytes > wwo->writeBytes)
-                           wwo->sendBytes = wwo->writeBytes;
-                       if (wwo->freeBytes && wwo->BufferUsed)
-                           nas_send_buffer(wwo);
-                     }
-                   break;
-                }
-           }
-        }
-        return AuTrue;
-}
-
-static void
-buffer_resize(WINE_WAVEOUT* wwo, int len)
-{
-        void *newbuf = HeapAlloc(GetProcessHeap(), 0, wwo->BufferUsed + len);
-        void *oldbuf = wwo->SoundBuffer;
-        memcpy(newbuf, oldbuf, wwo->BufferUsed);
-        wwo->SoundBuffer = newbuf;
-        HeapFree(GetProcessHeap(), 0, oldbuf);
-}
-
-static int nas_add_buffer(WINE_WAVEOUT* wwo) {
-    int len = wwo->lpPlayPtr->dwBufferLength;
-
-    buffer_resize(wwo, len);
-    memcpy(wwo->SoundBuffer + wwo->BufferUsed, wwo->lpPlayPtr->lpData, len);
-    wwo->BufferUsed += len;
-    wwo->WrittenTotal += len;
-    return len;
-}
-
-static int nas_send_buffer(WINE_WAVEOUT* wwo) {
-  int oldb , len;
-  char *ptr, *newdata;
-  newdata = NULL;
-  oldb = len = 0;
-
-  if (wwo->freeBytes <= 0)
-     return 0;
-
-  if (wwo->SoundBuffer == NULL || wwo->BufferUsed == 0) {
-     return 0;
-  }
-
-  if (wwo->BufferUsed <= wwo->freeBytes) {
-     len = wwo->BufferUsed;
-     ptr = wwo->SoundBuffer;
-  } else {
-     len = wwo->freeBytes;
-     ptr = HeapAlloc(GetProcessHeap(), 0, len);
-     memcpy(ptr,wwo->SoundBuffer,len);
-     newdata = HeapAlloc(GetProcessHeap(), 0, wwo->BufferUsed - len);
-     memcpy(newdata, wwo->SoundBuffer + len, wwo->BufferUsed - len);
-  }
-
- TRACE("envoye de %d bytes / %lu bytes / freeBytes %u\n", len, wwo->BufferUsed, wwo->freeBytes);
-
- AuWriteElement(wwo->AuServ, wwo->AuFlow, 0, len, ptr, AuFalse, NULL);
-
- wwo->BufferUsed -= len;
- wwo->freeBytes -= len;
- wwo->writeBytes += len;
-
- HeapFree(GetProcessHeap(), 0, ptr);
-
- wwo->SoundBuffer = NULL;
-
- if (newdata != NULL)
-    wwo->SoundBuffer = newdata;
-
- return len;
-}
-
-static int nas_free(WINE_WAVEOUT* wwo)
-{
-
-  if (!wwo->FlowStarted && wwo->BufferUsed) {
-     AuStartFlow(wwo->AuServ, wwo->AuFlow, NULL);
-     wwo->FlowStarted = 1;
-  }
-
-  while (wwo->BufferUsed || wwo->writeBytes != wwo->sendBytes) {
-    if (wwo->freeBytes)
-       nas_send_buffer(wwo);
-    AuHandleEvents(wwo->AuServ);
-  }
-
-  AuFlush(wwo->AuServ);
-  return TRUE;
-}
-
-static int nas_close(WINE_WAVEOUT* wwo)
-{
-  AuEvent ev;
-
-  nas_free(wwo);
-
-  AuStopFlow(wwo->AuServ, wwo->AuFlow, NULL);
-  AuDestroyFlow(wwo->AuServ, wwo->AuFlow, NULL);
-  AuFlush(wwo->AuServ);
-  AuNextEvent(wwo->AuServ, AuTrue, &ev);
-  AuDispatchEvent(wwo->AuServ, &ev);
-
-  wwo->AuFlow = 0;
-  wwo->open = 0;
-  wwo->BufferUsed = 0;
-  wwo->freeBytes = 0;
-  wwo->SoundBuffer = NULL;
-  return 1;
-}
-
-static int nas_end(void)
-{
-  if (AuServ)
-  {
-    AuCloseServer(AuServ);
-    AuServ = 0;
-  }
-  return 1;
-}
-
-#else /* !HAVE_NAS */
-
-/**************************************************************************
- * 				wodMessage (WINENAS.@)
- */
-DWORD WINAPI NAS_wodMessage(WORD wDevID, WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2)
-{
-    FIXME("(%u, %04X, %08X, %08X, %08X):stub\n", wDevID, wMsg, dwUser, dwParam1, dwParam2);
-    return MMSYSERR_NOTENABLED;
-}
-#endif
diff --git a/dlls/winenas.drv/nas.c b/dlls/winenas.drv/nas.c
deleted file mode 100644
index aaf12cc..0000000
--- a/dlls/winenas.drv/nas.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/* -*- tab-width: 8; c-basic-offset: 4 -*- */
-/*
- *
- * Wine Driver for NAS Network Audio System
- *   http://radscan.com/nas.html
- *
- * Copyright 2002 Nicolas Escuder <n.escuder at alineanet.com>
- *
- * Code massively copied from Eric Pouech's OSS driver
- * and Chris Morgan aRts driver
- *
- * 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
- */
-
-#include "config.h"
-
-#include <stdarg.h>
-
-#include "windef.h"
-#include "winbase.h"
-#include "wingdi.h"
-#include "winuser.h"
-#include "mmddk.h"
-#include "nas.h"
-
-#ifdef HAVE_NAS
-
-/**************************************************************************
- * 				NAS_drvOpen			[internal]
- */
-static LRESULT NAS_drvOpen(LPSTR str)
-{
-    return 1;
-}
-
-/**************************************************************************
- * 				NAS_drvClose			[internal]
- */
-static LRESULT NAS_drvClose(DWORD_PTR dwDevID)
-{
-    return 1;
-}
-#endif /* #ifdef HAVE_NAS */
-
-
-/**************************************************************************
- * 				DriverProc (WINENAS.@)
- */
-LRESULT CALLBACK NAS_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_NAS
-    case DRV_LOAD:		NAS_WaveInit();
-/*    				NAS_MidiInit(); FIXME: no midi */
-				return 1;
-    case DRV_FREE:	        return NAS_WaveClose();
-    case DRV_OPEN:		return NAS_drvOpen((LPSTR)dwParam1);
-    case DRV_CLOSE:		return NAS_drvClose(dwDevID);
-    case DRV_ENABLE:		return 1;
-    case DRV_DISABLE:		return 1;
-    case DRV_QUERYCONFIGURE:	return 1;
-    case DRV_CONFIGURE:		MessageBoxA(0, "NAS MultiMedia Driver !", "NAS 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);
-    }
-}
diff --git a/dlls/winenas.drv/nas.h b/dlls/winenas.drv/nas.h
deleted file mode 100644
index 603d87b..0000000
--- a/dlls/winenas.drv/nas.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Definition for NAS driver : wine multimedia system
- *
- * Copyright 2002 Nicolas Escuder <n.escuder at alineanet.com>
- *
- * 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_NAS_H
-#define __WINE_NAS_H
-
-extern LONG NAS_WaveInit(void);
-extern LONG NAS_WaveClose(void);
-
-typedef unsigned int AFormat;
-
-#endif  /* __WINE_NAS_H */
diff --git a/dlls/winenas.drv/winenas.drv.spec b/dlls/winenas.drv/winenas.drv.spec
deleted file mode 100644
index 8bee11c..0000000
--- a/dlls/winenas.drv/winenas.drv.spec
+++ /dev/null
@@ -1,2 +0,0 @@
-@ stdcall -private DriverProc(long long long long long) NAS_DriverProc
-@ stdcall -private wodMessage(long long long long long) NAS_wodMessage
diff --git a/programs/winecfg/Bg.rc b/programs/winecfg/Bg.rc
index 5555ad2..3182ee7 100644
--- a/programs/winecfg/Bg.rc
+++ b/programs/winecfg/Bg.rc
@@ -280,7 +280,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD Driver"
     IDS_DRIVER_OSS              "OSS Driver"
     IDS_DRIVER_JACK             "JACK Driver"
-    IDS_DRIVER_NAS              "NAS Driver"
     IDS_DRIVER_AUDIOIO          "Audio IO (Solaris) Driver"
     IDS_DRIVER_COREAUDIO        "CoreAudio Driver"
     IDS_OPEN_DRIVER_ERROR       "Couldn't open %s!"
diff --git a/programs/winecfg/Cs.rc b/programs/winecfg/Cs.rc
index f3116d7..3dedcb4 100644
--- a/programs/winecfg/Cs.rc
+++ b/programs/winecfg/Cs.rc
@@ -280,7 +280,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "Ovladaè EsounD"
     IDS_DRIVER_OSS              "Ovladaè OSS"
     IDS_DRIVER_JACK             "Ovladaè JACK"
-    IDS_DRIVER_NAS              "Ovladaè NAS"
     IDS_DRIVER_AUDIOIO          "Ovladaè Audio IO (Solaris)"
     IDS_DRIVER_COREAUDIO        "Ovladaè CoreAudio"
     IDS_OPEN_DRIVER_ERROR       "Nemohu otevøít %s!"
diff --git a/programs/winecfg/Da.rc b/programs/winecfg/Da.rc
index 64e022b..f886e26 100644
--- a/programs/winecfg/Da.rc
+++ b/programs/winecfg/Da.rc
@@ -274,7 +274,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD-driver"
     IDS_DRIVER_OSS              "OSS-driver"
     IDS_DRIVER_JACK             "JACK-driver"
-    IDS_DRIVER_NAS              "NAS-driver"
     IDS_DRIVER_AUDIOIO          "Audio IO (Solaris)-driver"
     IDS_DRIVER_COREAUDIO        "CoreAudio-driver"
     IDS_OPEN_DRIVER_ERROR       "Kunne ikke åbne %s!"
diff --git a/programs/winecfg/De.rc b/programs/winecfg/De.rc
index fa5bbe5..1fcb809 100644
--- a/programs/winecfg/De.rc
+++ b/programs/winecfg/De.rc
@@ -286,7 +286,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD-Treiber"
     IDS_DRIVER_OSS              "OSS-Treiber"
     IDS_DRIVER_JACK             "JACK-Treiber"
-    IDS_DRIVER_NAS              "NAS-Treiber"
     IDS_DRIVER_AUDIOIO          "Audio-IO-Treiber (Solaris)"
     IDS_DRIVER_COREAUDIO        "CoreAudio-Treiber"
     IDS_OPEN_DRIVER_ERROR       "Konnte %s nicht öffnen!"
diff --git a/programs/winecfg/En.rc b/programs/winecfg/En.rc
index 490314a..253de3d 100644
--- a/programs/winecfg/En.rc
+++ b/programs/winecfg/En.rc
@@ -286,7 +286,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD Driver"
     IDS_DRIVER_OSS              "OSS Driver"
     IDS_DRIVER_JACK             "JACK Driver"
-    IDS_DRIVER_NAS              "NAS Driver"
     IDS_DRIVER_AUDIOIO          "Audio IO (Solaris) Driver"
     IDS_DRIVER_COREAUDIO        "CoreAudio Driver"
     IDS_OPEN_DRIVER_ERROR       "Couldn't open %s!"
diff --git a/programs/winecfg/Es.rc b/programs/winecfg/Es.rc
index 423c783..8f0d0f1 100644
--- a/programs/winecfg/Es.rc
+++ b/programs/winecfg/Es.rc
@@ -274,7 +274,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "Manejador EsounD"
     IDS_DRIVER_OSS              "Manejador OSS"
     IDS_DRIVER_JACK             "Manejador JACK"
-    IDS_DRIVER_NAS              "Manejador NAS"
     IDS_DRIVER_AUDIOIO          "Manejador Audio IO (Solaris)"
     IDS_DRIVER_COREAUDIO        "Manejador CoreAudio"
     IDS_OPEN_DRIVER_ERROR       "¡No se ha podido abrir %s!"
diff --git a/programs/winecfg/Fi.rc b/programs/winecfg/Fi.rc
index 957b87d..efe8a8e 100644
--- a/programs/winecfg/Fi.rc
+++ b/programs/winecfg/Fi.rc
@@ -274,7 +274,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD Driver"
     IDS_DRIVER_OSS              "OSS Driver"
     IDS_DRIVER_JACK             "JACK Driver"
-    IDS_DRIVER_NAS              "NAS Driver"
     IDS_DRIVER_AUDIOIO          "Audio IO (Solaris) Driver"
     IDS_DRIVER_COREAUDIO        "CoreAudio Driver"
     IDS_OPEN_DRIVER_ERROR       "Couldn't open %s!"
diff --git a/programs/winecfg/Fr.rc b/programs/winecfg/Fr.rc
index f84cff6..46222ae 100644
--- a/programs/winecfg/Fr.rc
+++ b/programs/winecfg/Fr.rc
@@ -288,7 +288,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "Pilote EsounD"
     IDS_DRIVER_OSS              "Pilote OSS"
     IDS_DRIVER_JACK             "Pilote JACK"
-    IDS_DRIVER_NAS              "Pilote NAS"
     IDS_DRIVER_AUDIOIO          "Pilote Audio IO (Solaris)"
     IDS_DRIVER_COREAUDIO        "Pilote CoreAudio"
     IDS_OPEN_DRIVER_ERROR       "Impossible d'ouvrir %s !"
diff --git a/programs/winecfg/Hu.rc b/programs/winecfg/Hu.rc
index 7c4e4fc..0c43cfe 100644
--- a/programs/winecfg/Hu.rc
+++ b/programs/winecfg/Hu.rc
@@ -274,7 +274,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD Driver"
     IDS_DRIVER_OSS              "OSS Driver"
     IDS_DRIVER_JACK             "JACK Driver"
-    IDS_DRIVER_NAS              "NAS Driver"
     IDS_DRIVER_AUDIOIO          "Audio IO (Solaris) Driver"
     IDS_DRIVER_COREAUDIO        "CoreAudio Driver"
     IDS_OPEN_DRIVER_ERROR       "Couldn't open %s!"
diff --git a/programs/winecfg/It.rc b/programs/winecfg/It.rc
index 29deea2..059a236 100644
--- a/programs/winecfg/It.rc
+++ b/programs/winecfg/It.rc
@@ -288,7 +288,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "Driver Esound"
     IDS_DRIVER_OSS              "Driver OSS"
     IDS_DRIVER_JACK             "Driver JACK"
-    IDS_DRIVER_NAS              "Driver NAS"
     IDS_DRIVER_AUDIOIO          "Driver Audio IO (Solaris)"
     IDS_DRIVER_COREAUDIO        "Driver CoreAudio"
     IDS_OPEN_DRIVER_ERROR       "Impossibile aprire %s!"
diff --git a/programs/winecfg/Ja.rc b/programs/winecfg/Ja.rc
index ff03564..11ce156 100644
--- a/programs/winecfg/Ja.rc
+++ b/programs/winecfg/Ja.rc
@@ -289,7 +289,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD ã??ã?©ã?¤ã??"
     IDS_DRIVER_OSS              "OSS ã??ã?©ã?¤ã??"
     IDS_DRIVER_JACK             "JACK ã??ã?©ã?¤ã??"
-    IDS_DRIVER_NAS              "NAS ã??ã?©ã?¤ã??"
     IDS_DRIVER_AUDIOIO          "Audio IO (Solaris) ã??ã?©ã?¤ã??"
     IDS_DRIVER_COREAUDIO        "CoreAudio ã??ã?©ã?¤ã??"
     IDS_OPEN_DRIVER_ERROR       "%sã??ã?ªã?¼ã??ã?³ã?§ã??ã?¾ã??ã??!"
diff --git a/programs/winecfg/Ko.rc b/programs/winecfg/Ko.rc
index b30ce87..96da0ab 100644
--- a/programs/winecfg/Ko.rc
+++ b/programs/winecfg/Ko.rc
@@ -289,7 +289,6 @@ BEGIN
    IDS_DRIVER_ESOUND           "EsounD µå¶óÀ̹ö"
    IDS_DRIVER_OSS              "OSS µå¶óÀ̹ö"
    IDS_DRIVER_JACK             "JACK µå¶óÀ̹ö"
-   IDS_DRIVER_NAS              "NAS µå¶óÀ̹ö"
    IDS_DRIVER_AUDIOIO          "Audio IO (Solaris) µå¶óÀ̹ö"
    IDS_DRIVER_COREAUDIO        "CoreAudio µå¶óÀ̹ö"
    IDS_OPEN_DRIVER_ERROR       "%s¸¦ ¿­ ¼ö ¾ø½À´Ï´Ù!"
diff --git a/programs/winecfg/Lt.rc b/programs/winecfg/Lt.rc
index 1a9d0fa..38f01c9 100644
--- a/programs/winecfg/Lt.rc
+++ b/programs/winecfg/Lt.rc
@@ -287,7 +287,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD tvarkyklÄ?"
     IDS_DRIVER_OSS              "OSS tvarkyklÄ?"
     IDS_DRIVER_JACK             "JACK tvarkyklÄ?"
-    IDS_DRIVER_NAS              "NAS tvarkyklÄ?"
     IDS_DRIVER_AUDIOIO          "Audio IO (Solaris) tvarkyklÄ?"
     IDS_DRIVER_COREAUDIO        "CoreAudio tvarkyklÄ?"
     IDS_OPEN_DRIVER_ERROR       "Nepavyko atverti %s!"
diff --git a/programs/winecfg/Nl.rc b/programs/winecfg/Nl.rc
index 5783033..0b5362d 100644
--- a/programs/winecfg/Nl.rc
+++ b/programs/winecfg/Nl.rc
@@ -287,7 +287,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD Stuurprogramma"
     IDS_DRIVER_OSS              "OSS Stuurprogramma"
     IDS_DRIVER_JACK             "JACK Stuurprogramma"
-    IDS_DRIVER_NAS              "NAS Stuurprogramma"
     IDS_DRIVER_AUDIOIO          "Audio IO (Solaris) Stuurprogramma"
     IDS_DRIVER_COREAUDIO        "CoreAudio Stuurprogramma"
     IDS_OPEN_DRIVER_ERROR       "%s kon niet worden geopend!"
diff --git a/programs/winecfg/No.rc b/programs/winecfg/No.rc
index fc89482..48b8437 100644
--- a/programs/winecfg/No.rc
+++ b/programs/winecfg/No.rc
@@ -274,7 +274,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD-driver"
     IDS_DRIVER_OSS              "OSS-driver"
     IDS_DRIVER_JACK             "JACK-driver"
-    IDS_DRIVER_NAS              "NAS-driver"
     IDS_DRIVER_AUDIOIO          "Audio IO (Solaris)-driver"
     IDS_DRIVER_COREAUDIO        "CoreAudio-driver"
     IDS_OPEN_DRIVER_ERROR       "Klarte ikke åpne %s."
diff --git a/programs/winecfg/Pl.rc b/programs/winecfg/Pl.rc
index 9422f34..1a30c9f 100644
--- a/programs/winecfg/Pl.rc
+++ b/programs/winecfg/Pl.rc
@@ -277,7 +277,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "Sterownik EsounD"
     IDS_DRIVER_OSS              "Sterownik OSS"
     IDS_DRIVER_JACK             "Sterownik JACK"
-    IDS_DRIVER_NAS              "Sterownik NAS"
     IDS_DRIVER_AUDIOIO          "Sterownik Audio IO (Solaris)"
     IDS_DRIVER_COREAUDIO        "Sterownik CoreAudio"
     IDS_OPEN_DRIVER_ERROR       "Nie mogê otworzyæ %s!"
diff --git a/programs/winecfg/Pt.rc b/programs/winecfg/Pt.rc
index 3d2ee2d..49a4f4b 100644
--- a/programs/winecfg/Pt.rc
+++ b/programs/winecfg/Pt.rc
@@ -474,7 +474,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "Controlador EsounD"
     IDS_DRIVER_OSS              "Controlador OSS"
     IDS_DRIVER_JACK             "Controlador JACK"
-    IDS_DRIVER_NAS              "Controlador NAS"
     IDS_DRIVER_AUDIOIO          "Controlador ES de Ã?udio (Solaris)"
     IDS_DRIVER_COREAUDIO        "Controlador CoreAudio"
     IDS_OPEN_DRIVER_ERROR       "Não é possível abrir %s!"
diff --git a/programs/winecfg/Ro.rc b/programs/winecfg/Ro.rc
index c031ea8..73f7d4a 100644
--- a/programs/winecfg/Ro.rc
+++ b/programs/winecfg/Ro.rc
@@ -286,7 +286,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "Driver Esound"
     IDS_DRIVER_OSS              "Driver OSS"
     IDS_DRIVER_JACK             "Driver JACK"
-    IDS_DRIVER_NAS              "Driver NAS"
     IDS_DRIVER_AUDIOIO          "Driver Audio IO (Solaris)"
     IDS_DRIVER_COREAUDIO        "Driver CoreAudio"
     IDS_OPEN_DRIVER_ERROR       "Nu pot deschide %s!"
diff --git a/programs/winecfg/Ru.rc b/programs/winecfg/Ru.rc
index 58252ba..6e6b681 100644
--- a/programs/winecfg/Ru.rc
+++ b/programs/winecfg/Ru.rc
@@ -291,7 +291,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD дÑ?айвеÑ?"
     IDS_DRIVER_OSS              "OSS дÑ?айвеÑ?"
     IDS_DRIVER_JACK             "JACK дÑ?айвеÑ?"
-    IDS_DRIVER_NAS              "NAS дÑ?айвеÑ?"
     IDS_DRIVER_AUDIOIO          "Audio IO (Solaris) дÑ?айвеÑ?"
     IDS_DRIVER_COREAUDIO        "CoreAudio дÑ?айвеÑ?"
     IDS_OPEN_DRIVER_ERROR       "Ð?евозможно оÑ?кÑ?Ñ?Ñ?Ñ? %s!"
diff --git a/programs/winecfg/Si.rc b/programs/winecfg/Si.rc
index eec1658..b11daa5 100644
--- a/programs/winecfg/Si.rc
+++ b/programs/winecfg/Si.rc
@@ -276,7 +276,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD gonilnik"
     IDS_DRIVER_OSS              "OSS gonilnik"
     IDS_DRIVER_JACK             "JACK gonilnik"
-    IDS_DRIVER_NAS              "NAS gonilnik"
     IDS_DRIVER_AUDIOIO          "Audio IO (Solaris) gonilnik"
     IDS_DRIVER_COREAUDIO        "CoreAudio gonilnik"
     IDS_OPEN_DRIVER_ERROR       "Gonilnika %s ni mogoÄ?e odpreti!"
diff --git a/programs/winecfg/Sv.rc b/programs/winecfg/Sv.rc
index d724afa..1ec9a68 100644
--- a/programs/winecfg/Sv.rc
+++ b/programs/winecfg/Sv.rc
@@ -274,7 +274,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD-drivrutin"
     IDS_DRIVER_OSS              "OSS-drivrutin"
     IDS_DRIVER_JACK             "JACK-drivrutin"
-    IDS_DRIVER_NAS              "NAS-drivrutin"
     IDS_DRIVER_AUDIOIO          "Audio IO-drivrutin (Solaris)"
     IDS_DRIVER_COREAUDIO        "CoreAudio Driver"
     IDS_OPEN_DRIVER_ERROR       "Kunde inte öppna %s!"
diff --git a/programs/winecfg/Tr.rc b/programs/winecfg/Tr.rc
index 89ddb23..8586bbe 100644
--- a/programs/winecfg/Tr.rc
+++ b/programs/winecfg/Tr.rc
@@ -274,7 +274,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD Sürücüsü"
     IDS_DRIVER_OSS              "OSS Sürücüsü"
     IDS_DRIVER_JACK             "JACK Sürücüsü"
-    IDS_DRIVER_NAS              "NAS Sürücüsü"
     IDS_DRIVER_AUDIOIO          "Audio IO (Solaris) Sürücüsü"
     IDS_DRIVER_COREAUDIO        "CoreAudio Sürücüsü"
     IDS_OPEN_DRIVER_ERROR       "%s açýlamadý!"
diff --git a/programs/winecfg/Zh.rc b/programs/winecfg/Zh.rc
index 14ac5c3..66a8859 100644
--- a/programs/winecfg/Zh.rc
+++ b/programs/winecfg/Zh.rc
@@ -279,7 +279,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD 驱�"
     IDS_DRIVER_OSS              "OSS 驱�"
     IDS_DRIVER_JACK             "JACK 驱�"
-    IDS_DRIVER_NAS              "NAS 驱�"
     IDS_DRIVER_AUDIOIO          "Audio IO (Solaris) 驱�"
     IDS_DRIVER_COREAUDIO        "CoreAudio 驱�"
     IDS_OPEN_DRIVER_ERROR       "æ? æ³?æ??å¼? %s !"
@@ -580,7 +579,6 @@ BEGIN
     IDS_DRIVER_ESOUND           "EsounD é©?å??"
     IDS_DRIVER_OSS              "OSS é©?å??"
     IDS_DRIVER_JACK             "JACK é©?å??"
-    IDS_DRIVER_NAS              "NAS é©?å??"
     IDS_DRIVER_AUDIOIO          "Audio IO (Solaris) é©?å??"
     IDS_DRIVER_COREAUDIO        "CoreAudio é©?å??"
     IDS_OPEN_DRIVER_ERROR       "ç?¡æ³?é??å?? %s ï¼?"
diff --git a/programs/winecfg/audio.c b/programs/winecfg/audio.c
index 9f8a0a2..67eeaa2 100644
--- a/programs/winecfg/audio.c
+++ b/programs/winecfg/audio.c
@@ -93,7 +93,6 @@ static const AUDIO_DRIVER sAudioDrivers[] = {
   {IDS_DRIVER_OSS,       "oss"},
   {IDS_DRIVER_COREAUDIO, "coreaudio"},
   {IDS_DRIVER_JACK,      "jack"},
-  {IDS_DRIVER_NAS,       "nas"},
   {IDS_DRIVER_ESOUND,    "esd"},
   {IDS_DRIVER_AUDIOIO,   "audioio"},
   {0, ""}
diff --git a/programs/winecfg/resource.h b/programs/winecfg/resource.h
index f006861..a707bd9 100644
--- a/programs/winecfg/resource.h
+++ b/programs/winecfg/resource.h
@@ -191,7 +191,6 @@
 #define IDS_DRIVER_ESOUND               8306
 #define IDS_DRIVER_OSS                  8307
 #define IDS_DRIVER_JACK                 8308
-#define IDS_DRIVER_NAS                  8309
 #define IDS_DRIVER_AUDIOIO              8310
 #define IDS_DRIVER_COREAUDIO            8311
 #define IDS_OPEN_DRIVER_ERROR           8312
-- 
1.6.5.2


More information about the wine-patches mailing list