Hello,
pe, 2018-01-19 kello 19:48 +0200, Teemu Suikki kirjoitti:
I'm starting to think that maybe my problem IS caused entirely by this softhddevice bug. Because my softhddevice keep freezing quite frequently, I have added a shutdown command that detaches softhddevice and leaves vdr running. And then when I watch something, I'm pressing buttons and using menus and there might be timers recording etc, so vdr never becomes idle enough to do the housekeeping?
I tried to understand the code, but I'm having difficulties. :) in vdr.c, only place that sets LastInteract is this:
Interact = Menu ? Menu : cControl::Control(); // might have
been closed in the mean time if (Interact) { LastInteract = Now; eOSState state = Interact->ProcessKey(key); if (state == osUnknown && Interact != cControl::Control()) {
So.. Does this mean that softhddevice's dummy player has menu open all the time? softhddevice.cpp doesn't have really anything menu-related in the dummy player, all those methods must be inherited from main vdr class.
Only thing that looks suspicious is this, dummy player's ProcessKey:
eOSState cSoftHdControl::ProcessKey(eKeys key) { if (SuspendMode == SUSPEND_NORMAL && (!ISMODELESSKEY(key) || key == kMenu || key == kBack || key == kStop)) { delete Player;
Player = NULL; Resume(); SuspendMode = NOT_SUSPENDED; return osEnd; } return osContinue;
}
Looks like the plugin has some kind of dummy player open. If I remember right, housekeeping tasks are not handled (by design) when you have a player open.
I think I had to work around similar issues when I wrote suspendoutput plugin. It was quite a while ago (2005-09-20: Added vdr idle actions) so I don't remember all the details anymore ...
Anyway, the plugin is relatively simple: http://phivdr.dyndns.org/vdr/vdr-suspendoutput/suspendoutput-2.1.0/susp endoutput.c
Housekeeping tasks are handled in MainThreadHook() and CheckInactivityTimer().
Should it really return osContinue all the time?
2018-01-18 23:37 GMT+02:00 Klaus Schmidinger <Klaus.Schmidinger@tvdr. de>:
On 18.01.2018 21:26, Teemu Suikki wrote:
Ok, I did some debugging.
First of all, I noticed something weird that perhaps is not even related to this problem. In vdr.c there is a check:
if ((Now - LastInteract) > ACTIVITYTIMEOUT
if softhhddevice is detached or suspended, "Now - LastInteract" is always zero, and vdr can never enter housekeeping tasks. This must be a bug in softhddevice?
I guess so.
Klaus
vdr mailing list vdr@linuxtv.org https://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr