diff -urN mythtv-0.14.vanilla/libs/libmythtv/tv_rec.cpp mythtv-0.14/libs/libmythtv/tv_rec.cpp
--- mythtv-0.14.vanilla/libs/libmythtv/tv_rec.cpp	2004-01-29 03:27:08.000000000 +0000
+++ mythtv-0.14/libs/libmythtv/tv_rec.cpp	2004-02-01 11:35:46.000000000 +0000
@@ -178,6 +178,11 @@
     askAllowRecording = true;
 }
 
+int TVRec::TotalRecPriority(ProgramInfo *rcinfo)
+{
+    return rcinfo->recpriority.toInt() + rcinfo->GetRecordingTypeRecPriority(rcinfo->rectype) + rcinfo->GetChannelRecPriority(db_conn, rcinfo->chanid);;
+}
+
 int TVRec::StartRecording(ProgramInfo *rcinfo)
 {
     int retval = 0; //  0 = recording canceled, 1 = recording started
@@ -205,6 +210,8 @@
         VERBOSE(VB_RECORD, "changing state finished, starting now");
     }
 
+    if ((internalState == kState_WatchingLiveTV) && gContext->GetNumSetting("RecPriorityActive") && gContext->GetNumSetting("RecPriorityLiveTVActive") && (TotalRecPriority(rcinfo) < gContext->GetNumSetting("LiveTVRecPriority"))) cancelNextRecording = true;
+
     if (internalState == kState_WatchingLiveTV && !cancelNextRecording)
     {
         QString message = QString("QUIT_LIVETV %1").arg(m_capturecardnum);
@@ -775,7 +782,7 @@
 
         usleep(1000);
 
-        if (recordPending && askAllowRecording && frontendReady)
+        if (recordPending && askAllowRecording && frontendReady && ((! gContext->GetNumSetting("RecPriorityActive")) || (! gContext->GetNumSetting("RecPriorityLiveTVActive")) || (TotalRecPriority(pendingRecording) >= gContext->GetNumSetting("LiveTVRecPriority"))))
         {
             askAllowRecording = false;
 
diff -urN mythtv-0.14.vanilla/libs/libmythtv/tv_rec.h mythtv-0.14/libs/libmythtv/tv_rec.h
--- mythtv-0.14.vanilla/libs/libmythtv/tv_rec.h	2004-01-27 06:42:33.000000000 +0000
+++ mythtv-0.14/libs/libmythtv/tv_rec.h	2004-02-01 11:37:37.000000000 +0000
@@ -230,6 +230,8 @@
     int autoTranscode;
 
     dvb_options_t dvb_options;
+
+    int TotalRecPriority(ProgramInfo *rcinfo);
 };
 
 #endif
diff -urN mythtv-0.14.vanilla/programs/mythfrontend/globalsettings.cpp mythtv-0.14/programs/mythfrontend/globalsettings.cpp
--- mythtv-0.14.vanilla/programs/mythfrontend/globalsettings.cpp	2004-01-31 06:57:24.000000000 +0000
+++ mythtv-0.14/programs/mythfrontend/globalsettings.cpp	2004-02-01 11:35:46.000000000 +0000
@@ -1215,6 +1215,28 @@
 
 // General RecPriorities settings
 
+class GRUseRecPrioritiesLiveTV: public CheckBoxSetting, public BackendSetting {
+public:
+    GRUseRecPrioritiesLiveTV():
+        BackendSetting("RecPriorityLiveTVActive") {
+        setLabel(QObject::tr("LiveTV Override"));
+        setHelpText(QObject::tr("Allow LiveTV to override recordings that have a "
+	            "low recording priority."));
+        setValue(false);
+    };
+};
+
+class GRLiveTVRecPriority: public SpinBoxSetting, public BackendSetting {
+public:
+    GRLiveTVRecPriority():
+        SpinBoxSetting(-99, 99, 1), BackendSetting("LiveTVRecPriority") {
+        setLabel(QObject::tr("LiveTV Priority"));
+        setHelpText(QObject::tr("If LiveTV Override is set then recordings with "
+	            "a priority value lower than this won't interrupt LiveTV."));
+        setValue(0);
+    };
+};
+
 class GRUseRecPriorities: public CheckBoxSetting, public BackendSetting {
 public:
     GRUseRecPriorities():
@@ -1671,6 +1693,8 @@
 
     gr->addChild(new GRUseRecPriorities());
     gr->addChild(new GRRecPrioritiesFirst());
+    gr->addChild(new GRUseRecPrioritiesLiveTV());
+    gr->addChild(new GRLiveTVRecPriority());
     gr->addChild(new GRSingleRecordRecPriority());
     gr->addChild(new GRWeekslotRecordRecPriority());
     gr->addChild(new GRTimeslotRecordRecPriority());
diff -urN mythtv-0.14.vanilla/programs/mythfrontend/viewscheduled.cpp mythtv-0.14/programs/mythfrontend/viewscheduled.cpp
--- mythtv-0.14.vanilla/programs/mythfrontend/viewscheduled.cpp	2004-01-25 01:37:51.000000000 +0000
+++ mythtv-0.14/programs/mythfrontend/viewscheduled.cpp	2004-02-01 11:39:43.000000000 +0000
@@ -293,6 +293,12 @@
 
                 if (p->recstatus == rsRecording)
                     ltype->EnableForcedFont(i, "recording");
+		else if (gContext->GetNumSetting("RecPriorityActive") && gContext->GetNumSetting("RecPriorityLiveTVActive")) {
+                    if ((p->recpriority.toInt() + p->GetRecordingTypeRecPriority(p->rectype)
+                        + p->GetChannelRecPriority(db, p->chanid)) < gContext->GetNumSetting("LiveTVRecPriority")) {
+                        ltype->EnableForcedFont(i, "livetvoverriderecording");
+                    };
+                }
                 else if (p->conflicting)
                     ltype->EnableForcedFont(i, "conflictingrecording");
                 else if (!p->recording || p->recstatus < rsRecording)
