bug(core/playback/mpv): jukebox mode under windows - navidrome#2767

Create track_close files for both platforms and move MpvTrack Close into new file

Signed-off-by: apkatsikas <apkatsikas@gmail.com>
This commit is contained in:
apkatsikas 2024-04-14 12:09:32 -04:00
parent 243b5296f8
commit f066adcbfc
3 changed files with 46 additions and 35 deletions

View File

@ -8,7 +8,6 @@ package mpv
import (
"fmt"
"os"
"runtime"
"time"
"github.com/dexterlb/mpvipc"
@ -104,40 +103,6 @@ func (t *MpvTrack) Pause() {
}
}
func (t *MpvTrack) Close() {
// Windows automatically handles closing
// and cleaning up named pipe
if runtime.GOOS == "windows" {
return
}
log.Debug("Closing resources", "track", t)
t.CloseCalled = true
// trying to shutdown mpv process using socket
if t.isSocketFilePresent() {
log.Debug("sending shutdown command")
_, err := t.Conn.Call("quit")
if err != nil {
log.Error("Error sending quit command to mpv-ipc socket", err)
if t.Exe != nil {
log.Debug("cancelling executor")
err = t.Exe.Cancel()
if err != nil {
log.Error("Error canceling executor", err)
}
}
}
}
if t.isSocketFilePresent() {
log.Debug("Removing socketfile", "socketfile", t.IPCSocketName)
err := os.Remove(t.IPCSocketName)
if err != nil {
log.Error("Error cleaning up socketfile", "socketfile", t.IPCSocketName, err)
}
}
}
func (t *MpvTrack) isSocketFilePresent() bool {
if len(t.IPCSocketName) < 1 {
return false

View File

@ -0,0 +1,38 @@
//go:build !windows
package mpv
import (
"os"
"github.com/navidrome/navidrome/log"
)
func (t *MpvTrack) Close() {
log.Debug("Closing resources", "track", t)
t.CloseCalled = true
// trying to shutdown mpv process using socket
if t.isSocketFilePresent() {
log.Debug("sending shutdown command")
_, err := t.Conn.Call("quit")
if err != nil {
log.Error("Error sending quit command to mpv-ipc socket", err)
if t.Exe != nil {
log.Debug("cancelling executor")
err = t.Exe.Cancel()
if err != nil {
log.Error("Error canceling executor", err)
}
}
}
}
if t.isSocketFilePresent() {
log.Debug("Removing socketfile", "socketfile", t.IPCSocketName)
err := os.Remove(t.IPCSocketName)
if err != nil {
log.Error("Error cleaning up socketfile", "socketfile", t.IPCSocketName, err)
}
}
}

View File

@ -0,0 +1,8 @@
//go:build windows
package mpv
func (t *MpvTrack) Close() {
// Windows automatically handles closing
// and cleaning up named pipe
}