Reduce MAX_HWBUFFERS to 128
[dsound-openal.git] / voiceman.c
blobac1c6b533b0f4de72f0445106aa8817c6077b92d
1 #include "dsound_private.h"
3 HRESULT VoiceMan_Query(DSBuffer *buf, DWORD propid, ULONG *pTypeSupport) {
4 (void)buf;
6 switch (propid) {
7 case DSPROPERTY_VMANAGER_MODE:
8 TRACE("DSPROPERTY_VMANAGER_MODE\n");
9 *pTypeSupport = KSPROPERTY_SUPPORT_GET | KSPROPERTY_SUPPORT_SET;
11 return DS_OK;
13 case DSPROPERTY_VMANAGER_PRIORITY:
14 TRACE("DSPROPERTY_VMANAGER_PRIORITY\n");
15 *pTypeSupport = KSPROPERTY_SUPPORT_GET | KSPROPERTY_SUPPORT_SET;
17 return DS_OK;
19 case DSPROPERTY_VMANAGER_STATE:
20 TRACE("DSPROPERTY_VMANAGER_STATE\n");
21 *pTypeSupport = KSPROPERTY_SUPPORT_GET;
23 return DS_OK;
26 FIXME("Unhandled propid: 0x%08lx\n", propid);
27 return E_PROP_ID_UNSUPPORTED;
30 HRESULT VoiceMan_Set(DSBuffer *buf, DWORD propid, void *pPropData, ULONG cbPropData) {
31 switch (propid) {
32 case DSPROPERTY_VMANAGER_MODE:
33 if (cbPropData >= sizeof(DWORD) && *(DWORD*)pPropData < VMANAGER_MODE_MAX) {
34 TRACE("DSPROPERTY_VMANAGER_MODE set: %ld\n", *(DWORD*)pPropData);
35 buf->share->vm_managermode = *(DWORD*)pPropData;
37 return DS_OK;
39 return DSERR_INVALIDPARAM;
41 case DSPROPERTY_VMANAGER_PRIORITY:
42 if (cbPropData >= sizeof(DWORD)) {
43 TRACE("DSPROPERTY_VMANAGER_PRIORITY set: %ld\n", *(DWORD*)pPropData);
44 buf->vm_voicepriority = *(DWORD*)pPropData;
46 return DS_OK;
48 return DSERR_INVALIDPARAM;
51 FIXME("Unhandled propid: 0x%08lx\n", propid);
52 return E_PROP_ID_UNSUPPORTED;
55 HRESULT VoiceMan_Get(DSBuffer *buf, DWORD propid, void *pPropData, ULONG cbPropData, ULONG *pcbReturned) {
56 *pcbReturned = 0;
58 switch (propid) {
59 case DSPROPERTY_VMANAGER_MODE:
60 if (cbPropData >= sizeof(DWORD)) {
61 *pcbReturned = sizeof(DWORD);
63 *(DWORD*)pPropData = buf->share->vm_managermode;
64 TRACE("DSPROPERTY_VMANAGER_MODE get %ld\n", *(DWORD*)pPropData);
66 return DS_OK;
68 return DSERR_INVALIDPARAM;
70 case DSPROPERTY_VMANAGER_PRIORITY:
71 if (cbPropData >= sizeof(DWORD)) {
72 *pcbReturned = sizeof(DWORD);
74 *(DWORD*)pPropData = buf->vm_voicepriority;
75 TRACE("DSPROPERTY_VMANAGER_PRIORITY get %ld\n", *(DWORD*)pPropData);
77 return DS_OK;
79 return DSERR_INVALIDPARAM;
81 case DSPROPERTY_VMANAGER_STATE:
82 if (cbPropData >= sizeof(DWORD)) {
83 *pcbReturned = sizeof(DWORD);
85 /* FIXME: dubious handling */
86 if (buf->isplaying) {
87 *(DWORD*)pPropData = DSPROPERTY_VMANAGER_STATE_PLAYING3DHW;
88 } else {
89 *(DWORD*)pPropData = DSPROPERTY_VMANAGER_STATE_SILENT;
91 TRACE("DSPROPERTY_VMANAGER_STATE get %ld\n", *(DWORD*)pPropData);
93 return DS_OK;
95 return DSERR_INVALIDPARAM;
98 FIXME("Unhandled propid: 0x%08lx\n", propid);
99 return E_PROP_ID_UNSUPPORTED;