Commit 731ba0cec2ae7071da75902a8071ac718c86cb14

Authored by malc
1 parent e2eef170

Fix some signedness issues caught by gcc 4.3


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4696 c046a42c-6fe2-441c-8c8c-71466251a162
hw/gus.c
... ... @@ -58,7 +58,7 @@ typedef struct GUSState {
58 58 QEMUSoundCard card;
59 59 int freq;
60 60 int pos, left, shift, irqs;
61   - uint16_t *mixbuf;
  61 + GUSsample *mixbuf;
62 62 uint8_t himem[1024 * 1024 + 32 + 4096];
63 63 int samples;
64 64 SWVoiceOut *voice;
... ... @@ -198,7 +198,7 @@ void GUS_dmarequest (GUSEmuState *der)
198 198 int GUS_read_DMA (void *opaque, int nchan, int dma_pos, int dma_len)
199 199 {
200 200 GUSState *s = opaque;
201   - int8_t tmpbuf[4096];
  201 + char tmpbuf[4096];
202 202 int pos = dma_pos, mode, left = dma_len - dma_pos;
203 203  
204 204 ldebug ("read DMA %#x %d\n", dma_pos, dma_len);
... ...
hw/gusemu.h
... ... @@ -32,12 +32,14 @@
32 32 typedef unsigned short GUSword;
33 33 typedef unsigned int GUSdword;
34 34 typedef signed char GUSchar;
  35 + typedef signed short GUSsample;
35 36 #else
36 37 #include <stdint.h>
37 38 typedef int8_t GUSchar;
38 39 typedef uint8_t GUSbyte;
39 40 typedef uint16_t GUSword;
40 41 typedef uint32_t GUSdword;
  42 + typedef int16_t GUSsample;
41 43 #endif
42 44  
43 45 typedef struct _GUSEmuState
... ... @@ -91,7 +93,7 @@ void gus_dma_transferdata(GUSEmuState *state, char *dma_addr, unsigned int count
91 93 /* If the interrupts are asynchronous, it may be needed to use a separate thread mixing into a temporary */
92 94 /* audio buffer in order to avoid quality loss caused by large numsamples and elapsed_time values. */
93 95  
94   -void gus_mixvoices(GUSEmuState *state, unsigned int playback_freq, unsigned int numsamples, short *bufferpos);
  96 +void gus_mixvoices(GUSEmuState *state, unsigned int playback_freq, unsigned int numsamples, GUSsample *bufferpos);
95 97 /* recommended range: 10 < numsamples < 100 */
96 98 /* lower values may result in increased rounding error, higher values often cause audible timing delays */
97 99  
... ...
hw/gusemu_mixer.c
... ... @@ -33,7 +33,7 @@
33 33  
34 34 /* samples are always 16bit stereo (4 bytes each, first right then left interleaved) */
35 35 void gus_mixvoices(GUSEmuState * state, unsigned int playback_freq, unsigned int numsamples,
36   - short *bufferpos)
  36 + GUSsample *bufferpos)
37 37 {
38 38 /* note that byte registers are stored in the upper half of each voice register! */
39 39 GUSbyte *gusptr;
... ... @@ -170,8 +170,8 @@ void gus_mixvoices(GUSEmuState * state, unsigned int playback_freq, unsigned int
170 170 }
171 171  
172 172 /* mix samples into buffer */
173   - *(bufferpos + 2 * sample) += (short) ((sample1 * PanningPos) >> 4); /* right */
174   - *(bufferpos + 2 * sample + 1) += (short) ((sample1 * (15 - PanningPos)) >> 4); /* left */
  173 + *(bufferpos + 2 * sample) += (GUSsample) ((sample1 * PanningPos) >> 4); /* right */
  174 + *(bufferpos + 2 * sample + 1) += (GUSsample) ((sample1 * (15 - PanningPos)) >> 4); /* left */
175 175 }
176 176 /* write back voice and volume */
177 177 GUSvoice(wVSRCurrVol) = Volume32 / 32;
... ...