Index: programs/mythbackend/scheduler.cpp =================================================================== --- programs/mythbackend/scheduler.cpp (revision 14987) +++ programs/mythbackend/scheduler.cpp (working copy) @@ -1503,7 +1503,7 @@ nexttv->StartRecording(nextRecording); nextRecording->AddHistory(false); - if (fsID > -1 && expirer) + if (expirer) { // activate auto expirer expirer->Update(nextRecording->cardid, fsID, true); @@ -2819,7 +2819,7 @@ pginfo->cardid = cardid; int fsID = FillRecordingDir(pginfo, reclist); - if (fsID > -1 && expirer) + if (expirer) { // update auto expirer expirer->Update(cardid, fsID, true); Index: programs/mythbackend/autoexpire.cpp =================================================================== --- programs/mythbackend/autoexpire.cpp (revision 14987) +++ programs/mythbackend/autoexpire.cpp (working copy) @@ -159,10 +159,14 @@ if (fsMap.contains(fsit->fsID)) continue; - fsMap[fsit->fsID] = 1; - + fsMap[fsit->fsID] = 0; size_t thisKBperMin = 0; + // append unkown recordings to all fsIDs + vector::iterator unknownfs_it = fsEncoderMap[-1].begin(); + for (; unknownfs_it != fsEncoderMap[-1].end(); ++encit) + fsEncoderMap[fsit->fsID].push_back(*unknownfs_it); + if (fsEncoderMap.contains(fsit->fsID)) { VERBOSE(VB_FILE, QString( @@ -988,14 +992,15 @@ expirer->instance_cond.wait(&expirer->instance_lock); expirer->update_pending = true; - if (fsID > -1) - { - VERBOSE(VB_FILE, LOC - + QString("Cardid %1: is starting a recording on fsID %2 soon.") - .arg(encoder).arg(fsID)); - expirer->used_encoders[encoder] = fsID; - } + QString msg = QString("Cardid %1: is starting a recording on").arg(encoder) + if (fsID == -1) + msg.append(" an unknown fsID soon."); + else + msg.appen(QString(" fsID %2 soon.").arg(fsID)); + VERBOSE(VB_FILE, LOC + msg); + expirer->used_encoders[encoder] = fsID; + expirer->instance_lock.unlock(); // do it..