better event tracking

This commit is contained in:
Erica Z 2024-10-18 22:27:24 +02:00
parent 0f1bbec5de
commit df3484f147

View file

@ -115,10 +115,15 @@ class Playbin : GLib.Object {
case 2:
assert (data.name == "playlist-pos");
if (data.format == Mpv.Format.NONE) {
this.play_queue_position = 0;
this.play_queue_position = this.play_queue.get_n_items ();
} else {
if (data.parse_int64 () < 0) {
this.play_queue_position = this.play_queue.get_n_items ();
} else {
this.play_queue_position = (uint) data.parse_int64 ();
}
}
debug (@"playlist-pos has been updated to $(this.play_queue_position)");
break;
default:
@ -127,17 +132,16 @@ class Playbin : GLib.Object {
}
break;
case Mpv.EventId.FILE_LOADED:
if (this.notify_next_playing) {
case Mpv.EventId.START_FILE:
debug ("START_FILE received");
if (this.play_queue_position < this.play_queue.get_n_items ()) {
this.song = (Subsonic.Song) this.play_queue.get_item (this.play_queue_position);
this.now_playing ();
} else {
assert (this.song == (Subsonic.Song) this.play_queue.get_item (this.play_queue_position));
this.notify_next_playing = true;
}
break;
case Mpv.EventId.END_FILE:
debug ("END_FILE received");
var data = event.parse_end_file ();
if (data.error < 0) {
warning ("playback of track aborted: %s", data.error.to_string ());