Small tracing improvement in DSB.SetFormat

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Changelog:

    Francois Gouget <fgouget@codeweavers.com>

  * dlls/dsound/dsound_main.c,
    dlls/dsound/primary.c

    DSB.SetFormat:Trace the requested format as soon as possible in case
it is not supported and simplify validity check
    Initialize the buffer format, and only from the fields we checked
    DirectSoundCreate8 fully initialize the buffer format (just in case)

--
Francois Gouget
fgouget@codeweavers.com



--
Francois Gouget
fgouget@codeweavers.com

Index: dlls/dsound/dsound_main.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/dsound_main.c,v
retrieving revision 1.69
diff -u -r1.69 dsound_main.c
--- dlls/dsound/dsound_main.c	7 Jan 2003 19:43:18 -0000	1.69
+++ dlls/dsound/dsound_main.c	9 Jan 2003 23:28:26 -0000
@@ -644,6 +642,7 @@
         (*ippDS)->wfx.nChannels = 2;
         (*ippDS)->wfx.nBlockAlign = (*ippDS)->wfx.wBitsPerSample * (*ippDS)->wfx.nChannels / 8;
         (*ippDS)->wfx.nAvgBytesPerSec = (*ippDS)->wfx.nSamplesPerSec * (*ippDS)->wfx.nBlockAlign;
+        (*ippDS)->wfx.cbSize = 0;
 
 	/* If the driver requests being opened through MMSYSTEM
 	 * (which is recommended by the DDK), it is supposed to happen
Index: dlls/dsound/primary.c
===================================================================
RCS file: /home/wine/wine/dlls/dsound/primary.c,v
retrieving revision 1.4
diff -u -r1.4 primary.c
--- dlls/dsound/primary.c	13 Dec 2002 20:26:23 -0000	1.4
+++ dlls/dsound/primary.c	9 Jan 2003 08:18:27 -0000
@@ -109,7 +109,7 @@
 		if (newbuf == NULL) {
 			ERR("failed to allocate primary buffer\n");
 			merr = DSERR_OUTOFMEMORY;
-			/* but the old buffer might still exists and must be re-prepared */
+			/* but the old buffer might still exist and must be re-prepared */
 		} else {
 			This->buffer = newbuf;
 			This->buflen = buflen;
@@ -281,13 +304,21 @@
 	}
 
 	/* Let's be pedantic! */
-	if ((wfex == NULL) ||
-	    (wfex->wFormatTag != WAVE_FORMAT_PCM) ||
+	if (wfex == NULL) {
+		TRACE("wfex==NULL!\n");
+		return DSERR_INVALIDPARAM;
+	}
+	TRACE("(formattag=0x%04x,chans=%d,samplerate=%ld,"
+	      "bytespersec=%ld,blockalign=%d,bitspersamp=%d,cbSize=%d)\n",
+	      wfex->wFormatTag, wfex->nChannels, wfex->nSamplesPerSec,
+	      wfex->nAvgBytesPerSec, wfex->nBlockAlign,
+	      wfex->wBitsPerSample, wfex->cbSize);
+
+	if ((wfex->wFormatTag != WAVE_FORMAT_PCM) ||
 	    (wfex->nChannels < 1) || (wfex->nChannels > 2) ||
 	    (wfex->nSamplesPerSec < 1) ||
-	    (wfex->nBlockAlign < 1) || (wfex->nChannels > 4) ||
 	    ((wfex->wBitsPerSample != 8) && (wfex->wBitsPerSample != 16))) {
-		TRACE("failed pedantic check!\n");
+		TRACE("unsupported format!\n");
 		return DSERR_INVALIDPARAM;
 	}
 
@@ -308,14 +339,10 @@
 		}
 	}
 
-	memcpy(&(dsound->wfx), wfex, sizeof(dsound->wfx));
-
-	TRACE("(formattag=0x%04x,chans=%d,samplerate=%ld,"
-		   "bytespersec=%ld,blockalign=%d,bitspersamp=%d,cbSize=%d)\n",
-		   wfex->wFormatTag, wfex->nChannels, wfex->nSamplesPerSec,
-		   wfex->nAvgBytesPerSec, wfex->nBlockAlign,
-		   wfex->wBitsPerSample, wfex->cbSize);
-
+	dsound->wfx.nSamplesPerSec = wfex->nSamplesPerSec;
+	dsound->wfx.nChannels = wfex->nChannels;
+	dsound->wfx.wBitsPerSample = wfex->wBitsPerSample;
+	dsound->wfx.nBlockAlign = dsound->wfx.wBitsPerSample * dsound->wfx.nChannels;
 	dsound->wfx.nAvgBytesPerSec =
 		dsound->wfx.nSamplesPerSec * dsound->wfx.nBlockAlign;
 


[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux