wine/dlls/winmm/winearts/arts.c

92 lines
2.6 KiB
C
Raw Normal View History

2002-03-21 01:38:19 +00:00
/* -*- tab-width: 8; c-basic-offset: 4 -*- */
2002-05-31 23:06:46 +00:00
/*
2002-03-21 01:38:19 +00:00
* Wine Driver for aRts Sound Server
* http://www.arts-project.org
*
* Copyright 2002 Chris Morgan<cmorgan@alum.wpi.edu>
* Code massively copied from Eric Pouech's OSS 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "config.h"
#include <stdarg.h>
2002-03-21 01:38:19 +00:00
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "mmddk.h"
#include "arts.h"
#ifdef HAVE_ARTS
static int arts = 0;
/**************************************************************************
2002-05-31 23:06:46 +00:00
* ARTS_drvOpen [internal]
2002-03-21 01:38:19 +00:00
*/
static DWORD ARTS_drvOpen(LPSTR str)
{
if (arts)
return 0;
2002-05-31 23:06:46 +00:00
2002-03-21 01:38:19 +00:00
/* I know, this is ugly, but who cares... */
arts = 1;
return 1;
}
/**************************************************************************
2002-05-31 23:06:46 +00:00
* ARTS_drvClose [internal]
2002-03-21 01:38:19 +00:00
*/
static DWORD ARTS_drvClose(DWORD dwDevID)
{
if (arts) {
arts = 0;
return 1;
}
return 0;
}
#endif /* #ifdef HAVE_ARTS */
/**************************************************************************
* DriverProc (WINEARTS.@)
*/
2002-05-31 23:06:46 +00:00
LONG CALLBACK ARTS_DriverProc(DWORD dwDevID, HDRVR hDriv, DWORD wMsg,
2002-03-21 01:38:19 +00:00
DWORD dwParam1, DWORD dwParam2)
{
/* EPP TRACE("(%08lX, %04X, %08lX, %08lX, %08lX)\n", */
/* EPP dwDevID, hDriv, wMsg, dwParam1, dwParam2); */
2002-05-31 23:06:46 +00:00
2002-03-21 01:38:19 +00:00
switch(wMsg) {
#ifdef HAVE_ARTS
case DRV_LOAD: if (ARTS_WaveInit()<0) return 0;
2002-03-21 01:38:19 +00:00
return 1;
case DRV_FREE: return ARTS_WaveClose();
2002-03-21 01:38:19 +00:00
case DRV_OPEN: return ARTS_drvOpen((LPSTR)dwParam1);
case DRV_CLOSE: return ARTS_drvClose(dwDevID);
case DRV_ENABLE: return 1;
case DRV_DISABLE: return 1;
case DRV_QUERYCONFIGURE: return 1;
case DRV_CONFIGURE: MessageBoxA(0, "aRts MultiMedia Driver!", "aRts 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);
}
}