summaryrefslogtreecommitdiff
path: root/library/sound.cpp
Unidiff
Diffstat (limited to 'library/sound.cpp') (more/less context) (show whitespace changes)
-rw-r--r--library/sound.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/library/sound.cpp b/library/sound.cpp
index 602fcf0..1ff3b3f 100644
--- a/library/sound.cpp
+++ b/library/sound.cpp
@@ -107,6 +107,7 @@ public:
107 filename(Resource::findSound(name)) 107 filename(Resource::findSound(name))
108 { 108 {
109 loopsleft=0; 109 loopsleft=0;
110 ms = WAVsoundDuration(filename);
110 } 111 }
111 112
112 void playLoop(int loopcnt = -1) 113 void playLoop(int loopcnt = -1)
@@ -114,7 +115,6 @@ public:
114 // needs server support 115 // needs server support
115 loopsleft = loopcnt; 116 loopsleft = loopcnt;
116 117
117 int ms = WAVsoundDuration(filename);
118 if ( ms ) 118 if ( ms )
119 startTimer(ms > 50 ? ms-50 : 0); // 50 for latency 119 startTimer(ms > 50 ? ms-50 : 0); // 50 for latency
120 play(); 120 play();
@@ -123,10 +123,12 @@ public:
123 void timerEvent ( QTimerEvent *e ) 123 void timerEvent ( QTimerEvent *e )
124 { 124 {
125 if (loopsleft >= 0) { 125 if (loopsleft >= 0) {
126 if (--loopsleft <= 0) 126 if ( --loopsleft <= 0 ) {
127 killTimer (e->timerId()); 127 killTimer (e->timerId());
128 loopsleft = 0;
128 return; 129 return;
129 } 130 }
131 }
130 play(); 132 play();
131 } 133 }
132 134
@@ -138,7 +140,9 @@ public:
138private: 140private:
139 QString filename; 141 QString filename;
140 int loopsleft; 142 int loopsleft;
143 int ms;
141}; 144};
145
142#endif 146#endif
143 147
144Sound::Sound(const QString& name) 148Sound::Sound(const QString& name)
@@ -158,7 +162,6 @@ Sound::~Sound()
158void Sound::play() 162void Sound::play()
159{ 163{
160#ifndef QT_NO_SOUND 164#ifndef QT_NO_SOUND
161 d->killTimers();
162 d->playLoop(1); 165 d->playLoop(1);
163#endif 166#endif
164} 167}
@@ -182,6 +185,8 @@ bool Sound::isFinished() const
182{ 185{
183#ifndef QT_NO_SOUND 186#ifndef QT_NO_SOUND
184 return d->isFinished(); 187 return d->isFinished();
188#else
189 return true;
185#endif 190#endif
186} 191}
187 192