Index: libs/libmythtv/dbcheck.cpp
===================================================================
--- libs/libmythtv/dbcheck.cpp	(revision 13045)
+++ libs/libmythtv/dbcheck.cpp	(working copy)
@@ -10,7 +10,7 @@
 #include "mythdbcon.h"
 
 /// This is the DB schema version expected by the running MythTV instance.
-const QString currentDatabaseVersion = "1184";
+const QString currentDatabaseVersion = "1185";
 
 static bool UpdateDBVersionNumber(const QString &newnumber);
 static bool performActualUpdate(const QString updates[], QString version,
@@ -2983,6 +2983,21 @@
             return false;
     }
 
+    if (dbver == "1184")
+    {
+        const QString updates[] = {
+"UPDATE capturecard,cardinput,videosource "
+"   SET dvb_on_demand = 0 "
+" WHERE capturecard.cardid = cardinput.cardid "
+"   AND cardinput.sourceid = videosource.sourceid "
+"   AND useeit = 1 "
+"   AND dvb_on_demand = 1;",
+""};
+
+        if (!performActualUpdate(updates, "1185", dbver))
+            return false;
+    }
+
 //"ALTER TABLE cardinput DROP COLUMN preference;" in 0.22
 //"ALTER TABLE channel DROP COLUMN atscsrcid;" in 0.22
 //"ALTER TABLE recordedmarkup DROP COLUMN offset;" in 0.22
@@ -3000,7 +3015,6 @@
 }
 
 
-
 bool InitializeDatabase(void)
 {
     MSqlQuery query(MSqlQuery::InitCon());
Index: libs/libmythtv/videosource.cpp
===================================================================
--- libs/libmythtv/videosource.cpp	(revision 13045)
+++ libs/libmythtv/videosource.cpp	(working copy)
@@ -926,7 +926,9 @@
         setHelpText(
             QObject::tr("This option makes the backend dvb-recorder "
                         "only open the card when it is actually in-use, leaving "
-                        "it free for other programs at other times."));
+                        "it free for other programs at other times "
+                        "(only recording and live-tv qualify as in-use, "
+                        "the EIT scan does not)."));
     };
 };
 
Index: libs/libmythtv/tv_rec.cpp
===================================================================
--- libs/libmythtv/tv_rec.cpp	(revision 13045)
+++ libs/libmythtv/tv_rec.cpp	(working copy)
@@ -1144,7 +1144,7 @@
     return NULL;
 }
 
-bool get_use_eit(uint cardid)
+static bool get_use_eit(uint cardid)
 {
     MSqlQuery query(MSqlQuery::InitCon());
     query.prepare(
@@ -1184,6 +1184,25 @@
     return false;
 }
 
+static bool get_dvb_on_demand(uint cardid)
+{
+    MSqlQuery query(MSqlQuery::InitCon());
+    query.prepare(
+        "SELECT dvb_on_demand "
+        "FROM capturecard "
+        "WHERE cardid     = :CARDID");
+    query.bindValue(":CARDID", cardid);
+
+    if (!query.exec() || !query.isActive())
+    {
+        MythContext::DBError("get_dvb_on_demand", query);
+        return false;
+    }
+    else if (query.next())
+        return query.value(0).toBool();
+    return false;
+}
+
 /** \fn TVRec::RunTV(void)
  *  \brief Event handling method, contains event loop.
  */
@@ -1348,6 +1367,12 @@
                         "for all sources on this card.");
                 eitScanStartTime = eitScanStartTime.addYears(1);
             }
+            else if (get_dvb_on_demand(GetCaptureCardNum()))
+            {
+                VERBOSE(VB_EIT, LOC + "EIT scanning disabled "
+                        "since the card should be used only on demand.");
+                eitScanStartTime = eitScanStartTime.addYears(1);
+            }
             else
             {
                 scanner->StartActiveScan(
Index: libs/libmythtv/eitscanner.cpp
===================================================================
--- libs/libmythtv/eitscanner.cpp	(revision 13045)
+++ libs/libmythtv/eitscanner.cpp	(working copy)
@@ -125,7 +125,10 @@
             }
 
             if (activeScanNextChan == activeScanChannels.end())
-                activeScanNextChan = activeScanChannels.begin();
+            {
+                exitThread = true;
+                break;
+            }
  
             if (!(*activeScanNextChan).isEmpty())
             {

