[ANNOUNCE] VDR developer version 1.3.49

Message ID 44532FAF.8040807@cadsoft.de
State New
Headers

Commit Message

Klaus Schmidinger April 29, 2006, 9:19 a.m. UTC
  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
  

Patch

--- vdr.c	2006/04/28 13:23:55	1.266
+++ vdr.c	2006/04/29 09:14:06
@@ -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