MeesCode / mmjs

TUI mp3 player designed for excessively large music libraries
MIT License
1 stars 1 forks source link

Progress bar is not always updated #8

Open fwsmit opened 2 years ago

fwsmit commented 2 years ago

Als je midden in een liedje zit en je selecteert een ander liedje, is de progress bar niet meteen geupdated. Pas na max een seconde gebeurt dat.

Ik heb geprobeert dit te doen op de feature/seeking branch:

diff --git a/tui/functions.go b/tui/functions.go
index 36d799c..2e50fb6 100644
--- a/tui/functions.go
+++ b/tui/functions.go
@@ -314,6 +314,7 @@ func playsong() {
        index := myTui.playlist.GetCurrentItem()
        audioplayer.PlaySong(myTui.playlist.GetCurrentItem())
        updatePlayInfo()
+       updateAudioState()
        myTui.playlist.SetCurrentItem(index)
 }

@@ -321,6 +322,7 @@ func previoussong() {
        index := myTui.playlist.GetCurrentItem()
        audioplayer.Previoussong()
        updatePlayInfo()
+       updateAudioState()
        myTui.playlist.SetCurrentItem(index)
 }

@@ -328,6 +330,7 @@ func nextsong() {
        index := myTui.playlist.GetCurrentItem()
        audioplayer.Nextsong()
        updatePlayInfo()
+       updateAudioState()
        myTui.playlist.SetCurrentItem(index)
 }

Maar dat lijkt geen effect te hebben

MeesCode commented 2 years ago

Is by design, je moet de update frequentie van die functie in functions.go updaten, hij sleept nu 1 seconden tussen updates. Ik vond 1 wel voldoende, maar kan natuurlijk sneller

fwsmit commented 2 years ago

Is by design, je moet de update frequentie van die functie in functions.go updaten, hij sleept nu 1 seconden tussen updates. Ik vond 1 wel voldoende, maar kan natuurlijk sneller

Het is prima als ie elke seconde update, maar soms moet ie een extra keer updaten voor responsiveness. Dat heb ik ook gedaan voor seeeking in #2. Anders duurt het een seconde voordat de seeking effect lijkt te hebben.

Voor dit is het natuurlijk minder belangrijk, maar alsnog wel nice om te fixen.

MeesCode commented 2 years ago

Hier heb je last van een race condition, vlc is een media item aan het inladen in een andere goroutine en in deze tijd is de playtime nog niet geupdate als hij de progressbar gaat tekenen. Dan pakt hij hem pas bij de volgende update. Dit kan dus bij langzame pcs ook een probleem zijn bij het seeken.