[ANNOUNCE] VDR developer version 1.3.49
Commit Message
Udo Richter wrote:
> Dominique Simon wrote:
>> I have the following problem: If a timer is running and i press power
>> off on the remote, VDR shows "eine Aufzeichnung läuft, trotzdem
>> ausschalten?". VDR Shuts down no matter if i press a key or not... Can
>> you verify this?
>
> Yes, there's still a logical bug in it...
>
> The 1.3.49 code shuts down if the recording shut down is confirmed *OR*
> if the plugin shut down is confirmed. Unfortunately, if no plugin has
> activity, this counts as confirmed, so VDR will shut down no matter if
> recording shut down was confirmed or not.
>
> The attached patch reverses the logic a bit, and shuts down if
> recordings *AND* plugins confirm. UserShutdown is set up first, so that
> any non-confirm can leave with 'break'. If all tests pass, ForceShutdown
> is set too.
>
> I've tested all variants I can think of, and it seems to work. More
> testing is of course welcome, so we can mark this one fixed before Sunday.
>
> Btw: There's a slight change in behavior since 1.3.46: Before, a simple
> shut down without confirms did not set ForceShutdown=true, since then,
> ForceShutdown is set true even if no confirmation was necessary.
> cPluginManager::Active does not differentiate between confirmed, denied
> and 'no activity'. The new way is slightly more aggressive, but seems
> more consistent and I don't think that it has bigger negative side effects.
>
> (1.3.49 can shut down while cutting, 1.3.46 can shut down while cutting
> only if also a recording is running, and shutdown is confirmed.)
Thanks, looks good to me.
Since I personally don't use the shutdown feature, it's all the more
important that you folks test this extensively.
While adding your patch I realized that the code formatting of the
'case kPower:' was somewhat off, too, so I shifted it to the left.
The final patch now looks as attached.
I guess it's ok if I don't release another new version, it should be
easy enough to apply this patch and test it thoroughly.
So we still have a GO for version 1.4.0 on Sunday :-)
Klaus
@@ -970,21 +970,23 @@
}
break;
// Power off:
- case kPower: isyslog("Power button pressed");
- DELETE_MENU;
- if (!Shutdown) {
- Skins.Message(mtError, tr("Can't shutdown - option '-s' not given!"));
- break;
- }
- if (cRecordControls::Active()) {
- if (Interface->Confirm(tr("Recording - shut down anyway?")))
- ForceShutdown = true;
- }
- if (!cPluginManager::Active(tr("shut down anyway?")))
- ForceShutdown = true;
- LastActivity = 1; // not 0, see below!
- UserShutdown = true;
- break;
+ case kPower:
+ isyslog("Power button pressed");
+ DELETE_MENU;
+ if (!Shutdown) {
+ Skins.Message(mtError, tr("Can't shutdown - option '-s' not given!"));
+ break;
+ }
+ LastActivity = 1; // not 0, see below!
+ UserShutdown = true;
+ if (cRecordControls::Active()) {
+ if (!Interface->Confirm(tr("Recording - shut down anyway?")))
+ break;
+ }
+ if (cPluginManager::Active(tr("shut down anyway?")))
+ break;
+ ForceShutdown = true;
+ break;
default: break;
}
Interact = Menu ? Menu : cControl::Control(); // might have been closed in the mean time