diff '--color=auto' -Naur extrecmenung-v2.0.12.orig/mymenu.c extrecmenung-v2.0.12/mymenu.c --- extrecmenung-v2.0.12.orig/mymenu.c 2024-03-16 12:06:32.000000000 +0100 +++ extrecmenung-v2.0.12/mymenu.c 2025-09-27 16:08:59.981088185 +0200 @@ -1642,7 +1642,8 @@ Display(); // this keeps the higher level menus from showing up briefly when pressing 'Back' during replay - if (wasdvd && !cControl::Control()) { + cMutexLock MutexLock; + if (wasdvd && !cControl::Control(MutexLock)) { char *cmd = NULL; if (-1 != asprintf(&cmd, "dvdarchive.sh umount \"%s\"", *strescape(myReplayControl::LastReplayed(), "'\\\"$"))) { isyslog("[extrecmenu] calling %s to unmount dvd", cmd); @@ -1658,7 +1659,8 @@ wasdvd = false; } - if (washdd &&! cControl::Control()) { + cMutexLock MutexLock2; + if (washdd &&! cControl::Control(MutexLock2)) { char *cmd=NULL; if (-1 != asprintf(&cmd, "hddarchive.sh umount \"%s\"", *strescape(myReplayControl::LastReplayed(), "'\\\"$"))) { isyslog("[extrecmenu] calling %s to unmount Archive-HDD", cmd); @@ -1982,7 +1984,8 @@ } else if (CurrentRecording && strcmp(CurrentRecording, Recording->FileName()) == 0) { SetCurrent(LastDir ? LastDir : LastItem); - if (Item && !Item->IsDirectory() && (Item->IsDVD() || Item->IsHDD()) && !cControl::Control()) + cMutexLock MutexLock; + if (Item && !Item->IsDirectory() && (Item->IsDVD() || Item->IsHDD()) && !cControl::Control(MutexLock)) cReplayControl::ClearLastReplayed(cReplayControl::LastReplayed()); } }