wined3d: Use the bo binding in wined3d_context_gl_map_bo_address().
[wine.git] / dlls / dpvoice / client.c
blobb611370659e22b0e7f9c91801a7af5181bd39318
1 /*
2 * DirectPlay Voice Client Interface
4 * Copyright (C) 2014 Alistair Leslie-Hughes
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #include <stdarg.h>
23 #define COBJMACROS
24 #include "windef.h"
25 #include "winbase.h"
26 #include "wingdi.h"
27 #include "winuser.h"
28 #include "objbase.h"
30 #include "wine/debug.h"
32 #include "dvoice.h"
33 #include "dvoice_private.h"
35 WINE_DEFAULT_DEBUG_CHANNEL(dpvoice);
37 typedef struct IDirectPlayVoiceClientImpl
39 IDirectPlayVoiceClient IDirectPlayVoiceClient_iface;
40 LONG ref;
41 } IDirectPlayVoiceClientImpl;
43 typedef struct IDirectPlayVoiceTestImpl
45 IDirectPlayVoiceTest IDirectPlayVoiceTest_iface;
46 LONG ref;
47 } IDirectPlayVoiceTestImpl;
49 static inline IDirectPlayVoiceClientImpl *impl_from_IDirectPlayVoiceClient(IDirectPlayVoiceClient *iface)
51 return CONTAINING_RECORD(iface, IDirectPlayVoiceClientImpl, IDirectPlayVoiceClient_iface);
54 static inline IDirectPlayVoiceTestImpl *impl_from_IDirectPlayVoiceTest(IDirectPlayVoiceTest *iface)
56 return CONTAINING_RECORD(iface, IDirectPlayVoiceTestImpl, IDirectPlayVoiceTest_iface);
59 static HRESULT WINAPI dpvclient_QueryInterface(IDirectPlayVoiceClient *iface, REFIID riid, void **ppv)
61 if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectPlayVoiceClient))
63 IUnknown_AddRef(iface);
64 *ppv = iface;
65 return S_OK;
68 WARN("(%p)->(%s,%p),not found\n", iface, debugstr_guid(riid), ppv);
69 return E_NOINTERFACE;
72 static ULONG WINAPI dpvclient_AddRef(IDirectPlayVoiceClient *iface)
74 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
75 ULONG ref = InterlockedIncrement(&This->ref);
77 TRACE("(%p) ref=%u\n", This, ref);
79 return ref;
82 static ULONG WINAPI dpvclient_Release(IDirectPlayVoiceClient *iface)
84 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
85 ULONG ref = InterlockedDecrement(&This->ref);
87 TRACE("(%p) ref=%u\n", This, ref);
89 if (!ref)
91 HeapFree(GetProcessHeap(), 0, This);
93 return ref;
96 static HRESULT WINAPI dpvclient_Initialize(IDirectPlayVoiceClient *iface,LPUNKNOWN pVoid, PDVMESSAGEHANDLER pMessageHandler,
97 void *pUserContext, DWORD *pdwMessageMask, DWORD dwMessageMaskElements)
99 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
100 FIXME("%p %p %p %p %p %d\n", This, pVoid, pMessageHandler, pUserContext,pdwMessageMask, dwMessageMaskElements);
101 return E_NOTIMPL;
104 static HRESULT WINAPI dpvclient_Connect(IDirectPlayVoiceClient *iface, PDVSOUNDDEVICECONFIG pSoundDeviceConfig,
105 PDVCLIENTCONFIG pdvClientConfig, DWORD dwFlags)
107 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
108 FIXME("%p %p %p %d\n", This, pSoundDeviceConfig, pdvClientConfig, dwFlags);
109 return E_NOTIMPL;
112 static HRESULT WINAPI dpvclient_Disconnect(IDirectPlayVoiceClient *iface, DWORD dwFlags)
114 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
115 FIXME("%p %d\n", This, dwFlags);
116 return E_NOTIMPL;
119 static HRESULT WINAPI dpvclient_GetSessionDesc(IDirectPlayVoiceClient *iface, PDVSESSIONDESC pvSessionDesc)
121 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
122 FIXME("%p %p\n", This, pvSessionDesc);
123 return E_NOTIMPL;
126 static HRESULT WINAPI dpvclient_GetClientConfig(IDirectPlayVoiceClient *iface, PDVCLIENTCONFIG pClientConfig)
128 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
129 FIXME("%p %p\n", This, pClientConfig);
130 return E_NOTIMPL;
133 static HRESULT WINAPI dpvclient_SetClientConfig(IDirectPlayVoiceClient *iface, PDVCLIENTCONFIG pClientConfig)
135 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
136 FIXME("%p %p\n", This, pClientConfig);
137 return E_NOTIMPL;
140 static HRESULT WINAPI dpvclient_GetCaps(IDirectPlayVoiceClient *iface, PDVCAPS pCaps)
142 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
143 FIXME("%p %p\n", This, pCaps);
144 return E_NOTIMPL;
147 static HRESULT WINAPI dpvclient_GetCompressionTypes(IDirectPlayVoiceClient *iface, void *pData,
148 DWORD *pdwDataSize, DWORD *pdwNumElements, DWORD dwFlags)
150 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
151 FIXME("%p %p %p %p %d semi-stub\n", This, pData, pdwDataSize, pdwNumElements, dwFlags);
152 return DPVOICE_GetCompressionTypes(pData, pdwDataSize, pdwNumElements, dwFlags);
155 static HRESULT WINAPI dpvclient_SetTransmitTargets(IDirectPlayVoiceClient *iface, PDVID pdvIDTargets,
156 DWORD dwNumTargets, DWORD dwFlags)
158 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
159 FIXME("%p %p %d %d\n", This, pdvIDTargets, dwNumTargets, dwFlags);
160 return E_NOTIMPL;
163 static HRESULT WINAPI dpvclient_GetTransmitTargets(IDirectPlayVoiceClient *iface, PDVID pdvIDTargets,
164 DWORD *pdwNumTargets, DWORD dwFlags)
166 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
167 FIXME("%p %p %d\n", This, pdwNumTargets, dwFlags);
168 return E_NOTIMPL;
171 static HRESULT WINAPI dpvclient_Create3DSoundBuffer(IDirectPlayVoiceClient *iface, DVID dvID,
172 LPDIRECTSOUNDBUFFER lpdsSourceBuffer, DWORD dwPriority, DWORD dwFlags,
173 LPDIRECTSOUND3DBUFFER *lpUserBuffer)
175 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
176 FIXME("%p %d %p %d %d %p\n", This, dvID, lpdsSourceBuffer, dwPriority, dwFlags, lpUserBuffer);
177 return E_NOTIMPL;
180 static HRESULT WINAPI dpvclient_Delete3DSoundBuffer(IDirectPlayVoiceClient *iface, DVID dvID, LPDIRECTSOUND3DBUFFER *lpUserBuffer)
182 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
183 FIXME("%p %d %p\n", This, dvID, lpUserBuffer);
184 return E_NOTIMPL;
187 static HRESULT WINAPI dpvclient_SetNotifyMask(IDirectPlayVoiceClient *iface, DWORD *pdwMessageMask, DWORD dwMessageMaskElements)
189 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
190 FIXME("%p %p %d\n", This, pdwMessageMask, dwMessageMaskElements);
191 return E_NOTIMPL;
194 static HRESULT WINAPI dpvclient_GetSoundDeviceConfig(IDirectPlayVoiceClient *iface, PDVSOUNDDEVICECONFIG pSoundDeviceConfig,
195 DWORD *pdwSize)
197 IDirectPlayVoiceClientImpl *This = impl_from_IDirectPlayVoiceClient(iface);
198 FIXME("%p %p %p\n", This, pSoundDeviceConfig, pdwSize);
199 return E_NOTIMPL;
203 static const IDirectPlayVoiceClientVtbl DirectPlayVoiceClient_Vtbl =
205 dpvclient_QueryInterface,
206 dpvclient_AddRef,
207 dpvclient_Release,
208 dpvclient_Initialize,
209 dpvclient_Connect,
210 dpvclient_Disconnect,
211 dpvclient_GetSessionDesc,
212 dpvclient_GetClientConfig,
213 dpvclient_SetClientConfig,
214 dpvclient_GetCaps,
215 dpvclient_GetCompressionTypes,
216 dpvclient_SetTransmitTargets,
217 dpvclient_GetTransmitTargets,
218 dpvclient_Create3DSoundBuffer,
219 dpvclient_Delete3DSoundBuffer,
220 dpvclient_SetNotifyMask,
221 dpvclient_GetSoundDeviceConfig
224 HRESULT DPVOICE_CreateDirectPlayVoiceClient(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, void **ppobj)
226 IDirectPlayVoiceClientImpl* client;
227 HRESULT ret;
229 TRACE("(%p, %s, %p)\n", pUnkOuter, debugstr_guid(riid), ppobj);
231 *ppobj = NULL;
233 client = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectPlayVoiceClientImpl));
234 if (!client)
235 return E_OUTOFMEMORY;
237 client->IDirectPlayVoiceClient_iface.lpVtbl = &DirectPlayVoiceClient_Vtbl;
238 client->ref = 1;
240 ret = IDirectPlayVoiceClient_QueryInterface(&client->IDirectPlayVoiceClient_iface, riid, ppobj);
241 IDirectPlayVoiceClient_Release(&client->IDirectPlayVoiceClient_iface);
243 return ret;
246 static HRESULT WINAPI dpvtest_QueryInterface(IDirectPlayVoiceTest *iface, REFIID riid, void **ppv)
248 if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IDirectPlayVoiceTest))
250 IUnknown_AddRef(iface);
251 *ppv = iface;
252 return S_OK;
255 WARN("(%p)->(%s,%p),not found\n", iface, debugstr_guid(riid), ppv);
256 return E_NOINTERFACE;
259 static ULONG WINAPI dpvtest_AddRef(IDirectPlayVoiceTest *iface)
261 IDirectPlayVoiceTestImpl *This = impl_from_IDirectPlayVoiceTest(iface);
262 ULONG ref = InterlockedIncrement(&This->ref);
264 TRACE("(%p) ref=%u\n", This, ref);
266 return ref;
269 static ULONG WINAPI dpvtest_Release(IDirectPlayVoiceTest *iface)
271 IDirectPlayVoiceTestImpl *This = impl_from_IDirectPlayVoiceTest(iface);
272 ULONG ref = InterlockedDecrement(&This->ref);
274 TRACE("(%p) ref=%u\n", This, ref);
276 if (!ref)
278 HeapFree(GetProcessHeap(), 0, This);
280 return ref;
283 static HRESULT WINAPI dpvtest_CheckAudioSetup(IDirectPlayVoiceTest *iface, const GUID *pguidPlaybackDevice, const GUID *pguidCaptureDevice,
284 HWND hwndParent, DWORD dwFlags)
286 IDirectPlayVoiceTestImpl *This = impl_from_IDirectPlayVoiceTest(iface);
287 FIXME("%p %s %s %p %d\n", This, debugstr_guid(pguidPlaybackDevice),
288 debugstr_guid(pguidCaptureDevice), hwndParent, dwFlags);
289 return E_NOTIMPL;
292 static const IDirectPlayVoiceTestVtbl DirectPlayVoiceTest_Vtbl =
294 dpvtest_QueryInterface,
295 dpvtest_AddRef,
296 dpvtest_Release,
297 dpvtest_CheckAudioSetup
300 HRESULT DPVOICE_CreateDirectPlayVoiceTest(IClassFactory *iface, IUnknown *pUnkOuter, REFIID riid, void **ppobj)
302 IDirectPlayVoiceTestImpl* test;
303 HRESULT ret;
305 TRACE("(%p, %s, %p)\n", pUnkOuter, debugstr_guid(riid), ppobj);
307 *ppobj = NULL;
309 test = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IDirectPlayVoiceTestImpl));
310 if (!test)
311 return E_OUTOFMEMORY;
313 test->IDirectPlayVoiceTest_iface.lpVtbl = &DirectPlayVoiceTest_Vtbl;
314 test->ref = 1;
316 ret = IDirectPlayVoiceTest_QueryInterface(&test->IDirectPlayVoiceTest_iface, riid, ppobj);
317 IDirectPlayVoiceTest_Release(&test->IDirectPlayVoiceTest_iface);
319 return ret;