CVS commit by kernalex: libwm reactions in case of CDDA are delayed. Please respect it. A better solution can be "timer show real time of track, not a time since last click". M +19 -23 kscd.cpp 1.235 --- kdemultimedia/kscd/kscd.cpp #1.234:1.235 @@ -486,12 +486,4 @@ KSCD::playClicked() #endif { - statuslabel->setText( i18n("Playing") ); - playing = true; - setLEDs( "00:00" ); - populateSongList(); - - kapp->processEvents(); - kapp->flushX(); - if(Prefs::randomPlay()) { @@ -518,7 +510,15 @@ KSCD::playClicked() wm_cd_play (save_track, 0, WM_ENDTRACK); } + statuslabel->setText( i18n("Playing") ); + playing = true; + setLEDs( "00:00" ); + populateSongList(); + + kapp->processEvents(); + kapp->flushX(); } else if (cur_cdmode == WM_CDM_PLAYING || cur_cdmode == WM_CDM_PAUSED) { + wm_cd_pause(); switch (cur_cdmode) { @@ -526,5 +526,4 @@ KSCD::playClicked() statuslabel->setText( i18n("Pause") ); playing = false; - wm_cd_pause(); break; case WM_CDM_PAUSED: @@ -537,12 +536,6 @@ KSCD::playClicked() statuslabel->setText( i18n("Playing") ); } - wm_cd_pause(); playing = true; break; - - default: - // TODO: next release: force "stop". - statuslabel->setText( i18n("Strange...") ); - break; } // switch @@ -603,4 +596,5 @@ KSCD::stopClicked() { // looping = false; + wm_cd_stop(); stoppedByUser = true; statuslabel->setText(i18n("Stopped")); @@ -612,5 +606,4 @@ KSCD::stopClicked() save_track = 1; playlistpointer = 0; - wm_cd_stop(); } // stopClicked() @@ -619,7 +612,4 @@ KSCD::prevClicked() { int track; - setLEDs("00:00"); - kapp->processEvents(); - kapp->flushX(); if(Prefs::randomPlay()) { @@ -647,4 +637,8 @@ KSCD::prevClicked() else wm_cd_play (track, 0, WM_ENDTRACK); + + setLEDs("00:00"); + kapp->processEvents(); + kapp->flushX(); } // prevClicked() @@ -653,7 +647,4 @@ KSCD::nextClicked() { int track; - setLEDs("00:00"); - kapp->processEvents(); - kapp->flushX(); if(Prefs::randomPlay()) { @@ -676,4 +667,8 @@ KSCD::nextClicked() else wm_cd_play (track, 0, WM_ENDTRACK); + + setLEDs("00:00"); + kapp->processEvents(); + kapp->flushX(); } // nextClicked() @@ -882,9 +877,10 @@ KSCD::trackSelected( int trk ) } + wm_cd_play(trk + 1, 0, trk + 2); + setLEDs("00:00"); kapp->processEvents(); kapp->flushX(); - wm_cd_play(trk + 1, 0, trk + 2); updatePlayPB(true); } // trackSelected