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
|
- Fixed handling parameters in the S2SatelliteDeliverySystemDescriptor and
|
||||||
T2DeliverySystemDescriptor that were overwritten when parsing the
|
T2DeliverySystemDescriptor that were overwritten when parsing the
|
||||||
SatelliteDeliverySystemDescriptor or TerrestrialDeliverySystemDescriptor, respectively.
|
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
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* 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"
|
#include "menu.h"
|
||||||
@ -1344,29 +1344,27 @@ eOSState cMenuTimers::Delete(void)
|
|||||||
// Check if this timer is active:
|
// Check if this timer is active:
|
||||||
cTimer *Timer = GetTimer();
|
cTimer *Timer = GetTimer();
|
||||||
if (Timer) {
|
if (Timer) {
|
||||||
if (Interface->Confirm(tr("Delete timer?"))) {
|
bool TimerRecording = Timer->Recording();
|
||||||
if (Timer->Recording()) {
|
timersStateKey.Remove(false); // must release lock while prompting!
|
||||||
if (Interface->Confirm(tr("Timer still recording - really delete?"))) {
|
if (Interface->Confirm(tr("Delete timer?")) && (!TimerRecording || Interface->Confirm(tr("Timer still recording - really delete?")))) {
|
||||||
if (!Timer->Remote()) {
|
Timers = cTimers::GetTimersWrite(timersStateKey);
|
||||||
Timer->Skip();
|
Timer = GetTimer();
|
||||||
cRecordControls::Process(Timers, time(NULL));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
Timer = NULL;
|
|
||||||
}
|
|
||||||
if (Timer) {
|
if (Timer) {
|
||||||
if (!HandleRemoteModifications(NULL, Timer)) {
|
if (!Timer->Remote()) {
|
||||||
timersStateKey.Remove();
|
Timer->Skip();
|
||||||
return osContinue;
|
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);
|
timersStateKey.Remove(Timer != NULL);
|
||||||
return osContinue;
|
return osContinue;
|
||||||
|
Loading…
Reference in New Issue
Block a user