[vdr] suggestion for shutdown-handling
udo_richter at gmx.de
Thu Mar 2 15:59:08 CET 2006
> The vdr could distinguish between LiveTV (usage as settop-box) and
> recording-mode (usage as a video-recorder).
> In settop-box-mode the user has to care about power-on and power-off - in
> video-recorder-mode it's up to the vdr to care about power-state.
I'm not sure how this actually solves the background activity issue.
There already is a distinction between interactive mode and automatic
mode, based on LastActivity. And giving plugins full access to it would
result in conflicts if several plugins start messing with it.
Some general thoughts on shutdown management:
There are three different groups involved in shutdown management: First,
the interactive user. Second, plugins that do background tasks. And
third, external scripts that do other work.
Interactive use is handled quite well by the LastActivity concept.
Plugin activity is currently hard to realize, though not impossible.
(variant 1: send fake key presses, variant 2: rely on external scripts
that cancel shutdown.) External script activity is possible, but could
For external scripts, I would suggest a method similar to LastActivity:
Allow scripts to set an inactivity timer via SVDRP, "I'm busy right now,
ask again in x minutes", with the possibility to announce "I'm done now,
go ahead if there's no user activity". The important point is that this
shouldn't mess with LastActivity, but with some other timeout variable,
so LastActivity really represents user activity.
This could also be accompanied by a variant of the -s shutdown script,
that actually queries for activity before asking the user.
As typical for external scripts, if there's more than one script out
there, they have to somehow work together as one.
For internal use, a callback method is probably the best way to handle
it. A LastActivity-like timeout would require a separate timeout for
each background activity, and a callback method isn't that much overhead.
But instead of extending the plugin interface, I would suggest some
cShutdownControl class independent of the plugin interface, with
cShutdownControl::Active() callback. This could be as simple as
inheriting this class into a cThread, and the default callback would
cancel all shutdowns. (unless forced by user.)
This could even be used by recordings, cutter and SVDRP connection for
Of course thats just thoughts how this could be handled, and I don't
expect anything before 1.5.
More information about the vdr