[Scummvm-cvs-logs] CVS: scummvm/sky/music gmmusic.cpp,1.19,1.20 gmmusic.h,1.11,1.12 mt32music.cpp,1.19,1.20 mt32music.h,1.9,1.10
Robert Göffringmann
lavosspawn at users.sourceforge.net
Thu Oct 21 22:40:08 CEST 2004
Update of /cvsroot/scummvm/scummvm/sky/music
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13359/sky/music
Modified Files:
gmmusic.cpp gmmusic.h mt32music.cpp mt32music.h
Log Message:
changed timing code.
Index: gmmusic.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/music/gmmusic.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- gmmusic.cpp 11 Feb 2004 18:01:26 -0000 1.19
+++ gmmusic.cpp 22 Oct 2004 05:34:18 -0000 1.20
@@ -38,11 +38,10 @@
_driverFileBase = 60200;
_midiDrv = pMidiDrv;
int midiRes = _midiDrv->open();
- if (midiRes != 0) {
+ if (midiRes != 0)
error("Can't open midi device. Errorcode: %d", midiRes);
- }
+ _timerCount = 0;
_midiDrv->setTimerCallback(this, passTimerFunc);
- _ignoreNextPoll = false;
}
GmMusic::~GmMusic(void) {
@@ -62,13 +61,13 @@
}
void GmMusic::timerCall(void) {
-
- // midi driver polls hundred times per sec. We only want 50 times.
- _ignoreNextPoll = !_ignoreNextPoll;
- if (!_ignoreNextPoll) return;
-
- if (_musicData != NULL)
- pollMusic();
+ _timerCount += _midiDrv->getBaseTempo();
+ if (_timerCount > (1000000 / 50)) {
+ // call pollMusic() 50 times per second
+ _timerCount -= 1000000 / 50;
+ if (_musicData != NULL)
+ pollMusic();
+ }
}
void GmMusic::setupPointers(void) {
Index: gmmusic.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/music/gmmusic.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- gmmusic.h 6 Jan 2004 12:45:33 -0000 1.11
+++ gmmusic.h 22 Oct 2004 05:34:18 -0000 1.12
@@ -37,7 +37,7 @@
static void passTimerFunc(void *param);
void timerCall(void);
- bool _ignoreNextPoll;
+ uint32 _timerCount;
uint8 *_sysExSequence;
MidiDriver *_midiDrv;
static byte _mt32_to_gm[128];
Index: mt32music.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/music/mt32music.cpp,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -d -r1.19 -r1.20
--- mt32music.cpp 28 Sep 2004 20:19:32 -0000 1.19
+++ mt32music.cpp 22 Oct 2004 05:34:18 -0000 1.20
@@ -37,13 +37,12 @@
_driverFileBase = 60200;
_midiDrv = pMidiDrv;
int midiRes = _midiDrv->open();
- if (midiRes != 0) {
+ if (midiRes != 0)
error("Can't open midi device. Errorcode: %d",midiRes);
- }
- _midiDrv->setTimerCallback(this, passTimerFunc);
- _ignoreNextPoll = false;
for (uint8 cnt = 0; cnt < 128; cnt++)
_dummyMap[cnt] = cnt;
+ _timerCount = 0;
+ _midiDrv->setTimerCallback(this, passTimerFunc);
}
MT32Music::~MT32Music(void) {
@@ -54,13 +53,13 @@
}
void MT32Music::timerCall(void) {
-
- // midi driver polls hundred times per sec. We only want 50 times.
- _ignoreNextPoll = !_ignoreNextPoll;
- if (!_ignoreNextPoll) return;
-
- if (_musicData != NULL)
- pollMusic();
+ _timerCount += _midiDrv->getBaseTempo();
+ if (_timerCount > (1000000 / 50)) {
+ // call pollMusic() 50 times per second
+ _timerCount -= 1000000 / 50;
+ if (_musicData != NULL)
+ pollMusic();
+ }
}
void MT32Music::setVolume(uint8 volume) {
@@ -87,6 +86,7 @@
for (uint8 cnt = 0; cnt < _numberOfChannels; cnt++) {
uint16 chDataStart = ((channelData[(cnt << 1) | 1] << 8) | channelData[cnt << 1]) + _musicDataLoc;
_channels[cnt] = new GmChannel(_musicData, chDataStart, _midiDrv, _dummyMap, _dummyMap);
+ _channels[cnt]->updateVolume(_musicVolume);
}
}
Index: mt32music.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/sky/music/mt32music.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- mt32music.h 6 Jan 2004 12:45:33 -0000 1.9
+++ mt32music.h 22 Oct 2004 05:34:18 -0000 1.10
@@ -38,7 +38,7 @@
bool processPatchSysEx(uint8 *sysExData);
virtual void setVolume(uint8 volume);
- bool _ignoreNextPoll;
+ uint32 _timerCount;
uint8 *_sysExSequence;
MidiDriver *_midiDrv;
uint8 _dummyMap[128];
More information about the Scummvm-git-logs
mailing list