Support DllGetClassObject of CLSID_StdPicture.
[wine] / dlls / winmm / winearts / arts.c
1 /* -*- tab-width: 8; c-basic-offset: 4 -*- */
2 /*
3  * Wine Driver for aRts Sound Server
4  *   http://www.arts-project.org
5  *
6  * Copyright 2002 Chris Morgan<cmorgan@alum.wpi.edu>
7  * Code massively copied from Eric Pouech's OSS driver
8  *
9  * This library is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU Lesser General Public
11  * License as published by the Free Software Foundation; either
12  * version 2.1 of the License, or (at your option) any later version.
13  *
14  * This library is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17  * Lesser General Public License for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public
20  * License along with this library; if not, write to the Free Software
21  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
22  */
23
24 #include "config.h"
25
26 #include "windef.h"
27 #include "winbase.h"
28 #include "wingdi.h"
29 #include "winuser.h"
30 #include "mmddk.h"
31 #include "arts.h"
32
33 #ifdef HAVE_ARTS
34 static          int arts = 0;
35
36 /**************************************************************************
37  *                              ARTS_drvOpen                    [internal]
38  */
39 static  DWORD   ARTS_drvOpen(LPSTR str)
40 {
41     if (arts)
42         return 0;
43
44     /* I know, this is ugly, but who cares... */
45     arts = 1;
46     return 1;
47 }
48
49 /**************************************************************************
50  *                              ARTS_drvClose                   [internal]
51  */
52 static  DWORD   ARTS_drvClose(DWORD dwDevID)
53 {
54     if (arts) {
55         arts = 0;
56         return 1;
57     }
58     return 0;
59 }
60 #endif /* #ifdef HAVE_ARTS */
61
62
63 /**************************************************************************
64  *                              DriverProc (WINEARTS.@)
65  */
66 LONG CALLBACK   ARTS_DriverProc(DWORD dwDevID, HDRVR hDriv, DWORD wMsg,
67                                DWORD dwParam1, DWORD dwParam2)
68 {
69 /* EPP     TRACE("(%08lX, %04X, %08lX, %08lX, %08lX)\n",  */
70 /* EPP    dwDevID, hDriv, wMsg, dwParam1, dwParam2); */
71
72     switch(wMsg) {
73 #ifdef HAVE_ARTS
74     case DRV_LOAD:              ARTS_WaveInit();
75 /*                              ARTS_MidiInit(); FIXME: no midi
76 support in artsc so we don't have any in the arts driver */
77                                 return 1;
78     case DRV_FREE:              return ARTS_WaveClose();
79     case DRV_OPEN:              return ARTS_drvOpen((LPSTR)dwParam1);
80     case DRV_CLOSE:             return ARTS_drvClose(dwDevID);
81     case DRV_ENABLE:            return 1;
82     case DRV_DISABLE:           return 1;
83     case DRV_QUERYCONFIGURE:    return 1;
84     case DRV_CONFIGURE:         MessageBoxA(0, "aRts MultiMedia Driver!", "aRts Driver", MB_OK);        return 1;
85     case DRV_INSTALL:           return DRVCNF_RESTART;
86     case DRV_REMOVE:            return DRVCNF_RESTART;
87 #endif
88     default:
89         return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2);
90     }
91 }
92
93