Ticket #8131: mixer.diff

File mixer.diff, 1.4 KB (added by eriktorbjorn, 19 years ago)

Patch against a November 17 CVS snapshot

  • scummvm/sound/mixer.cpp

    diff -ur ScummVM-cvs20021117/scummvm/sound/mixer.cpp ScummVM-cvs20021117+hack/scummvm/sound/mixer.cpp
    old new  
    837837
    838838                while ((_posInFrame < _synth.pcm.length) && (len > 0)) {
    839839                        int16 sample = (int16)((scale_sample(*ch) * volume) / 32);
    840                         *data++ += sample;
    841                         *data++ += sample;
     840                        *data = clamped_add_16(*data, sample);
     841                        data++;
     842                        *data = clamped_add_16(*data, sample);
     843                        data++;
    842844                        len--;
    843845                        ch++;
    844846                        _posInFrame++;
     
    957959                ch = _synth.pcm.samples[0] + _posInFrame;
    958960                while ((_posInFrame < _synth.pcm.length) && (len > 0)) {
    959961                        int16 sample = (int16)((scale_sample(*ch++) * volume) / 32);
    960                         *data++ += sample;
    961                         *data++ += sample;
     962                        *data = clamped_add_16(*data, sample);
     963                        data++;
     964                        *data = clamped_add_16(*data, sample);
     965                        data++;
    962966                        len--;
    963967                        _posInFrame++;
    964968                }
     
    10831087        // Mix the samples in
    10841088        for (uint i = 0; i < len; i++) {
    10851089                int16 sample = (int16) ((int32) samples[i * channels] * volume / 256);
    1086                 *data++ += sample;
     1090                *data = clamped_add_16(*data, sample);
     1091                data++;
    10871092                if (channels > 1)
    10881093                        sample = (int16) ((int32) samples[i * channels + 1] * volume / 256);
    1089                 *data++ += sample;
     1094                *data = clamped_add_16(*data, sample);
     1095                data++;
    10901096        }
    10911097
    10921098        delete [] samples;