dsound error patch
Robert Reif
reif at earthlink.net
Fri Jul 9 07:33:58 CDT 2004
Better error checking and recovery.
-------------- next part --------------
Index: dlls/dsound/dsound.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/dsound.c,v
retrieving revision 1.3
diff -u -r1.3 dsound.c
--- dlls/dsound/dsound.c 8 Jul 2004 20:16:23 -0000 1.3
+++ dlls/dsound/dsound.c 9 Jul 2004 12:30:06 -0000
@@ -574,7 +574,7 @@
TRACE("(%p, %p)\n",This,lpdwSpeakerConfig);
if (lpdwSpeakerConfig == NULL) {
- WARN("invalid parameter\n");
+ WARN("invalid parameter: lpdwSpeakerConfig == NULL\n");
return DSERR_INVALIDPARAM;
}
@@ -918,12 +918,12 @@
TRACE("(%p,%p)\n",pds,ppunk);
if (ppunk == NULL) {
- ERR("invalid parameter\n");
+ ERR("invalid parameter: ppunk == NULL\n");
return DSERR_INVALIDPARAM;
}
if (pds == NULL) {
- ERR("invalid parameter\n");
+ ERR("invalid parameter: pds == NULL\n");
*ppunk = NULL;
return DSERR_INVALIDPARAM;
}
@@ -1080,12 +1080,12 @@
TRACE("(%p,%p)\n",pds,ppds);
if (ppds == NULL) {
- ERR("invalid parameter\n");
+ ERR("invalid parameter: ppds == NULL\n");
return DSERR_INVALIDPARAM;
}
if (pds == NULL) {
- ERR("invalid parameter\n");
+ ERR("invalid parameter: pds == NULL\n");
*ppds = NULL;
return DSERR_INVALIDPARAM;
}
@@ -1159,12 +1159,12 @@
TRACE("(%p,%p)\n",pds,ppunk);
if (ppunk == NULL) {
- ERR("invalid parameter\n");
+ ERR("invalid parameter: ppunk == NULL\n");
return DSERR_INVALIDPARAM;
}
if (pds == NULL) {
- ERR("invalid parameter\n");
+ ERR("invalid parameter: pds == NULL\n");
*ppunk = NULL;
return DSERR_INVALIDPARAM;
}
@@ -1321,12 +1321,12 @@
TRACE("(%p,%p)\n",pds,ppds);
if (ppds == NULL) {
- ERR("invalid parameter\n");
+ ERR("invalid parameter: ppds == NULL\n");
return DSERR_INVALIDPARAM;
}
if (pds == NULL) {
- ERR("invalid parameter\n");
+ ERR("invalid parameter: pds == NULL\n");
*ppds = NULL;
return DSERR_INVALIDPARAM;
}
@@ -1493,12 +1493,12 @@
TRACE("(%p,%p)\n",pds,ppds);
if (ppds == NULL) {
- ERR("invalid parameter\n");
+ ERR("invalid parameter: ppds == NULL\n");
return DSERR_INVALIDPARAM;
}
if (pds == NULL) {
- ERR("invalid parameter\n");
+ ERR("invalid parameter: pds == NULL\n");
*ppds = NULL;
return DSERR_INVALIDPARAM;
}
@@ -1568,7 +1568,8 @@
hr = IDirectSound_IDirectSound_Create((LPDIRECTSOUND8)dsound, ppDS);
if (*ppDS)
IDirectSound_IDirectSound_AddRef(*ppDS);
- return hr;
+ else
+ WARN("IDirectSound_IDirectSound_Create failed\n");
} else {
ERR("different dsound already opened (only support one sound card at a time now)\n");
*ppDS = NULL;
@@ -1578,22 +1579,28 @@
LPDIRECTSOUND8 pDS;
hr = IDirectSoundImpl_Create(&devGuid, &pDS);
if (pDS) {
- HRESULT hres;
- dsound = (IDirectSoundImpl*)pDS;
- hres = DSOUND_PrimaryCreate(dsound);
- if (hres != DS_OK) {
+ hr = DSOUND_PrimaryCreate((IDirectSoundImpl*)pDS);
+ if (hr == DS_OK) {
+ hr = IDirectSound_IDirectSound_Create(pDS, ppDS);
+ if (*ppDS) {
+ IDirectSound_IDirectSound_AddRef(*ppDS);
+
+ dsound = (IDirectSoundImpl*)pDS;
+ timeBeginPeriod(DS_TIME_RES);
+ dsound->timerID = timeSetEvent(DS_TIME_DEL, DS_TIME_RES, DSOUND_timer,
+ (DWORD)dsound, TIME_PERIODIC | TIME_CALLBACK_FUNCTION);
+ } else {
+ WARN("IDirectSound_IDirectSound_Create failed\n");
+ IDirectSound8_Release(pDS);
+ }
+ } else {
WARN("DSOUND_PrimaryCreate failed\n");
- return hres;
+ IDirectSound8_Release(pDS);
}
- timeBeginPeriod(DS_TIME_RES);
- dsound->timerID = timeSetEvent(DS_TIME_DEL, DS_TIME_RES, DSOUND_timer,
- (DWORD)dsound, TIME_PERIODIC | TIME_CALLBACK_FUNCTION);
- }
- hr = IDirectSound_IDirectSound_Create(pDS, ppDS);
- if (*ppDS)
- IDirectSound_IDirectSound_AddRef(*ppDS);
+ } else
+ WARN("IDirectSoundImpl_Create failed\n");
}
-
+
return hr;
}
@@ -1645,7 +1652,8 @@
hr = IDirectSound8_IDirectSound8_Create((LPDIRECTSOUND8)dsound, ppDS);
if (*ppDS)
IDirectSound8_IDirectSound8_AddRef(*ppDS);
- return hr;
+ else
+ WARN("IDirectSound8_IDirectSound8_Create failed\n");
} else {
ERR("different dsound already opened (only support one sound card at a time now)\n");
*ppDS = NULL;
@@ -1655,21 +1663,27 @@
LPDIRECTSOUND8 pDS;
hr = IDirectSoundImpl_Create(&devGuid, &pDS);
if (pDS) {
- HRESULT hres;
- dsound = (IDirectSoundImpl*)pDS;
- hres = DSOUND_PrimaryCreate(dsound);
- if (hres != DS_OK) {
+ hr = DSOUND_PrimaryCreate((IDirectSoundImpl*)pDS);
+ if (hr == DS_OK) {
+ hr = IDirectSound8_IDirectSound8_Create(pDS, ppDS);
+ if (*ppDS) {
+ IDirectSound8_IDirectSound8_AddRef(*ppDS);
+
+ dsound = (IDirectSoundImpl*)pDS;
+ timeBeginPeriod(DS_TIME_RES);
+ dsound->timerID = timeSetEvent(DS_TIME_DEL, DS_TIME_RES, DSOUND_timer,
+ (DWORD)dsound, TIME_PERIODIC | TIME_CALLBACK_FUNCTION);
+ } else {
+ WARN("IDirectSound8_IDirectSound8_Create failed\n");
+ IDirectSound8_Release(pDS);
+ }
+ } else {
WARN("DSOUND_PrimaryCreate failed\n");
- return hres;
+ IDirectSound8_Release(pDS);
}
- timeBeginPeriod(DS_TIME_RES);
- dsound->timerID = timeSetEvent(DS_TIME_DEL, DS_TIME_RES, DSOUND_timer,
- (DWORD)dsound, TIME_PERIODIC | TIME_CALLBACK_FUNCTION);
- }
- hr = IDirectSound8_IDirectSound8_Create(pDS, ppDS);
- if (*ppDS)
- IDirectSound8_IDirectSound8_AddRef(*ppDS);
+ } else
+ WARN("IDirectSoundImpl_Create failed\n");
}
-
+
return hr;
}
More information about the wine-patches
mailing list