con il mio solito ritardo, vi spiego la situazione:
il programma in gambas e' player video che utilizza MPV da shell per fare la riproduzione di piu' filmati in una sequenza prefissata.
Pero' alle volte devo fare delle modifiche, delle correzioni al codice di gestione che "spara" i comandi ad mpv e devo chiudere il programma in gambas E il processo di MPV che e' diventato INDIPENDENTE.
Allora, siccome l'interfaccia NON ha il pulsante di chiusura (per evitare che l'utente finale possa accidentalmente terminare il "demone" (il mio gestore della playlist scritto in gambas), premo il pulsante STOP dell'IDE di gambas.
Vorrei che la mia applicazione capisse che il sistema operativo gli indica (gentilmente?) di terminare la sua esistenza e quindi termini tutti i processi da lui generati, per poter poi ripartire ex novo senza avere due, tre video che vengono riprodotti in contemporanea.
Per ora ho fatto il contrario, ovvero all'avvio dell'applicazione termino tutte le istanze di mpv e poi faccio ripartire il demone, ma logicamente l'effetto doveva enire prima della causa
Public Sub ClearSystem()
WriteToSocket("stop")
End
......
Function WriteToSocket(comando As String) As String
Dim ritorno As String
Select Case comando
Case "add-logo"
comando = "echo overlay-add 0 630 450 \x22/mnt/Qnap2OTVA/Tele_Galileo/LOGHI/StationLogoSD.data\x22 1 \x22bgra\x22 100 100 400 | socat - /tmp/mpvsocket"
Case "remove-logo"
comando = "echo overlay-remove 0 | socat - /tmp/mpvsocket"
Case "stop"
comando = "echo \x22stop\x22 | socat - /tmp/mpvsocket"
End Select
Shell comando To ritorno
Debug ritorno
End
che pero' alle volte fallisce perche' i video in esecuzione possono essere diversi ..... more debug needed i suppose