mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Modified cMenuTimers::Delete() to avoid a lengthy lock on the Timers list while prompting the user
This commit is contained in:
parent
55408b73ca
commit
a2b6b142d8
2
HISTORY
2
HISTORY
@ -9314,3 +9314,5 @@ Video Disk Recorder Revision History
|
||||
- Fixed handling parameters in the S2SatelliteDeliverySystemDescriptor and
|
||||
T2DeliverySystemDescriptor that were overwritten when parsing the
|
||||
SatelliteDeliverySystemDescriptor or TerrestrialDeliverySystemDescriptor, respectively.
|
||||
- Modified cMenuTimers::Delete() to avoid a lengthy lock on the Timers list while prompting
|
||||
the user.
|
||||
|
38
menu.c
38
menu.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: menu.c 4.68 2018/03/09 15:02:29 kls Exp $
|
||||
* $Id: menu.c 4.69 2018/03/18 12:01:09 kls Exp $
|
||||
*/
|
||||
|
||||
#include "menu.h"
|
||||
@ -1344,29 +1344,27 @@ eOSState cMenuTimers::Delete(void)
|
||||
// Check if this timer is active:
|
||||
cTimer *Timer = GetTimer();
|
||||
if (Timer) {
|
||||
if (Interface->Confirm(tr("Delete timer?"))) {
|
||||
if (Timer->Recording()) {
|
||||
if (Interface->Confirm(tr("Timer still recording - really delete?"))) {
|
||||
if (!Timer->Remote()) {
|
||||
Timer->Skip();
|
||||
cRecordControls::Process(Timers, time(NULL));
|
||||
}
|
||||
}
|
||||
else
|
||||
Timer = NULL;
|
||||
}
|
||||
bool TimerRecording = Timer->Recording();
|
||||
timersStateKey.Remove(false); // must release lock while prompting!
|
||||
if (Interface->Confirm(tr("Delete timer?")) && (!TimerRecording || Interface->Confirm(tr("Timer still recording - really delete?")))) {
|
||||
Timers = cTimers::GetTimersWrite(timersStateKey);
|
||||
Timer = GetTimer();
|
||||
if (Timer) {
|
||||
if (!HandleRemoteModifications(NULL, Timer)) {
|
||||
timersStateKey.Remove();
|
||||
return osContinue;
|
||||
if (!Timer->Remote()) {
|
||||
Timer->Skip();
|
||||
cRecordControls::Process(Timers, time(NULL));
|
||||
}
|
||||
if (HandleRemoteModifications(NULL, Timer)) {
|
||||
if (Timer->Remote())
|
||||
Timers->SetSyncStateKey(StateKeySVDRPRemoteTimersPoll);
|
||||
Timers->Del(Timer);
|
||||
cOsdMenu::Del(Current());
|
||||
Display();
|
||||
}
|
||||
if (Timer->Remote())
|
||||
Timers->SetSyncStateKey(StateKeySVDRPRemoteTimersPoll);
|
||||
Timers->Del(Timer);
|
||||
cOsdMenu::Del(Current());
|
||||
Display();
|
||||
}
|
||||
}
|
||||
else
|
||||
return osContinue;
|
||||
}
|
||||
timersStateKey.Remove(Timer != NULL);
|
||||
return osContinue;
|
||||
|
Loading…
Reference in New Issue
Block a user