Skip to content
Browse files

Allow easier control of card input ordering.

This change adds two new settings at the card input level.  These
settings allow fine-grained control of the order inputs are used for
scheduling and live TV without the need to delete and recreate the
cards and inputs in the desired order.

"Schedule Order" defines the order inputs are used when scheduling
recordings and priorities are equal.  The available input with the
lowest, positive order number is used first.  Previously, the input
with the lowest input ID was used first.  If the schedule orders for
two inputs are equal, the old behavior is used as a fallback.  Setting
the schedule order for an input to zero makes that input unavailable
for scheduling.

"Live TV Order" defines the order inputs are used when entering live
TV.  The available input with the lowest, positive order number is
used first.  Previously, the default input on the card with the lowest
(or highest if "Avoid Conflicts..." was set) card ID was used first.
If the live TV order for two inputs are equal, the order they are used
is undefined.  Setting the live TV order for an input to zero makes
that input unavailable for live TV.  This setting obsoletes the old
"Avoid conflicts between Live TV and scheduled shows" setting.

Setting either schedule order or live TV order to zero for an input
effectively restricts the use of that input to the other activity.  In
other words, it is now possible to dedicate an input exclusively to
scheduling only or live TV only.

Setting both schedule order and live TV order to zero effectively
takes that input off-line as far as MythTV is concerned.  That input
can then be safely used for other purposes outside of MythTV as long
as the user avoids conflicts with other inputs on the same card or in
the same input group.

Note: this change doesn't yet do exactly what it claims.  The input
used when entering live TV is actually the default input on the card
with the input having the lowest, positive live TV order.  This will
be corrected in a later commit.
  • Loading branch information...
1 parent cd88d57 commit 3281cdd32cbc7fe27a6b693bbc1406aa98b288ca @gigem gigem committed
View
6 mythtv/bindings/perl/MythTV.pm
@@ -106,15 +106,15 @@ package MythTV;
# Note: as of July 21, 2010, this is actually a string, to account for proto
# versions of the form "58a". This will get used if protocol versions are
# changed on a fixes branch ongoing.
- our $PROTO_VERSION = "70";
- our $PROTO_TOKEN = "53153836";
+ our $PROTO_VERSION = "71";
+ our $PROTO_TOKEN = "05e82186";
# currentDatabaseVersion is defined in libmythtv in
# mythtv/libs/libmythtv/dbcheck.cpp and should be the current MythTV core
# schema version supported in the main code. We need to check that the schema
# version in the database is as expected by the bindings, which are expected
# to be kept in sync with the main code.
- our $SCHEMA_VERSION = "1292";
+ our $SCHEMA_VERSION = "1293";
# NUMPROGRAMLINES is defined in mythtv/libs/libmythtv/programinfo.h and is
# the number of items in a ProgramInfo QStringList group used by
View
4 mythtv/bindings/php/MythBackend.php
@@ -11,8 +11,8 @@ class MythBackend {
// MYTH_PROTO_VERSION is defined in libmyth in mythtv/libs/libmyth/mythcontext.h
// and should be the current MythTV protocol version.
- static $protocol_version = '70';
- static $protocol_token = '53153836';
+ static $protocol_version = '71';
+ static $protocol_token = '05e82186';
// The character string used by the backend to separate records
static $backend_separator = '[]:[]';
View
6 mythtv/bindings/python/MythTV/static.py
@@ -5,11 +5,11 @@
"""
OWN_VERSION = (0,25,-1,3)
-SCHEMA_VERSION = 1292
+SCHEMA_VERSION = 1293
NVSCHEMA_VERSION = 1007
MUSICSCHEMA_VERSION = 1018
-PROTO_VERSION = '70'
-PROTO_TOKEN = '53153836'
+PROTO_VERSION = '71'
+PROTO_TOKEN = '05e82186'
BACKEND_SEP = '[]:[]'
INSTALL_PREFIX = '/usr/local'
View
8 mythtv/libs/libmythbase/mythversion.h
@@ -12,7 +12,7 @@
/// Update this whenever the plug-in API changes.
/// Including changes in the libmythbase, libmyth, libmythtv, libmythav* and
/// libmythui class methods used by plug-ins.
-#define MYTH_BINARY_VERSION "0.25.20111207-1"
+#define MYTH_BINARY_VERSION "0.25.20120103-1"
/** \brief Increment this whenever the MythTV network protocol changes.
*
@@ -35,8 +35,8 @@
* mythtv/bindings/python/MythTV/static.py (version number)
* mythtv/bindings/python/MythTV/mythproto.py (layout)
*/
-#define MYTH_PROTO_VERSION "70"
-#define MYTH_PROTO_TOKEN "53153836"
+#define MYTH_PROTO_VERSION "71"
+#define MYTH_PROTO_TOKEN "05e82186"
/** \brief Increment this whenever the MythTV core database schema changes.
*
@@ -51,7 +51,7 @@
* MythTV Python Bindings
* mythtv/bindings/python/MythTV/static.py
*/
-#define MYTH_DATABASE_VERSION "1292"
+#define MYTH_DATABASE_VERSION "1293"
MBASE_PUBLIC const char *GetMythSourceVersion();
View
6 mythtv/libs/libmythservicecontracts/services/captureServices.h
@@ -51,7 +51,7 @@
class SERVICE_PUBLIC CaptureServices : public Service
{
Q_OBJECT
- Q_CLASSINFO( "version" , "1.2" );
+ Q_CLASSINFO( "version" , "1.3" );
Q_CLASSINFO( "RemoveCaptureCard_Method", "POST" )
Q_CLASSINFO( "AddCaptureCard_Method", "POST" )
Q_CLASSINFO( "UpdateCaptureCard_Method", "POST" )
@@ -125,7 +125,9 @@ class SERVICE_PUBLIC CaptureServices : public Service
const QString &DisplayName,
bool DishnetEIT,
const uint RecPriority,
- const uint Quicktune) = 0;
+ const uint Quicktune,
+ const uint SchedOrder,
+ const uint LiveTVOrder) = 0;
virtual bool UpdateCardInput ( int CardInputId,
const QString &Setting,
View
26 mythtv/libs/libmythtv/cardutil.cpp
@@ -778,7 +778,8 @@ static bool clone_cardinputs(uint src_cardid, uint dst_cardid)
query.prepare(
"SELECT sourceid, inputname, externalcommand, "
" tunechan, startchan, displayname, "
- " dishnet_eit, recpriority, quicktune "
+ " dishnet_eit, recpriority, quicktune, "
+ " schedorder, livetvorder "
"FROM cardinput "
"WHERE cardinputid = :INPUTID");
query.bindValue(":INPUTID", src_inputs[i]);
@@ -821,10 +822,12 @@ static bool clone_cardinputs(uint src_cardid, uint dst_cardid)
" displayname = :V5, "
" dishnet_eit = :V6, "
" recpriority = :V7, "
- " quicktune = :V8 "
+ " quicktune = :V8, "
+ " schedorder = :V9, "
+ " livetvorder = :V10 "
"WHERE cardinputid = :INPUTID");
- for (uint j = 0; j < 9; j++)
+ for (uint j = 0; j < 11; j++)
{
query2.bindValue(QString(":V%1").arg(j),
query.value(j).toString());
@@ -1169,7 +1172,7 @@ bool CardUtil::GetInputInfo(InputInfo &input, vector<uint> *groupids)
return false;
MSqlQuery query(MSqlQuery::InitCon());
- query.prepare("SELECT inputname, sourceid, cardid "
+ query.prepare("SELECT inputname, sourceid, cardid, livetvorder "
"FROM cardinput "
"WHERE cardinputid = :INPUTID");
query.bindValue(":INPUTID", input.inputid);
@@ -1186,6 +1189,7 @@ bool CardUtil::GetInputInfo(InputInfo &input, vector<uint> *groupids)
input.name = query.value(0).toString();
input.sourceid = query.value(1).toUInt();
input.cardid = query.value(2).toUInt();
+ input.livetvorder = query.value(3).toUInt();
if (groupids)
*groupids = GetInputGroups(input.inputid);
@@ -1195,14 +1199,14 @@ bool CardUtil::GetInputInfo(InputInfo &input, vector<uint> *groupids)
uint CardUtil::GetCardID(uint inputid)
{
- InputInfo info(QString::null, 0, inputid, 0, 0);
+ InputInfo info(QString::null, 0, inputid, 0, 0, 0);
GetInputInfo(info);
return info.cardid;
}
QString CardUtil::GetInputName(uint inputid)
{
- InputInfo info(QString::null, 0, inputid, 0, 0);
+ InputInfo info(QString::null, 0, inputid, 0, 0, 0);
GetInputInfo(info);
return info.name;
}
@@ -1327,7 +1331,9 @@ int CardUtil::CreateCardInput(const uint cardid,
const QString &displayname,
bool dishnet_eit,
const uint recpriority,
- const uint quicktune)
+ const uint quicktune,
+ const uint schedorder,
+ const uint livetvorder)
{
MSqlQuery query(MSqlQuery::InitCon());
@@ -1335,10 +1341,10 @@ int CardUtil::CreateCardInput(const uint cardid,
"INSERT INTO cardinput "
"(cardid, sourceid, inputname, externalcommand, changer_device, "
"changer_model, tunechan, startchan, displayname, dishnet_eit, "
- "recpriority, quicktune) "
+ "recpriority, quicktune, schedorder, livetvorder) "
"VALUES (:CARDID, :SOURCEID, :INPUTNAME, :EXTERNALCOMMAND, "
":CHANGERDEVICE, :CHANGERMODEL, :TUNECHAN, :STARTCHAN, :DISPLAYNAME, "
- ":DISHNETEIT, :RECPRIORITY, :QUICKTUNE ) ");
+ ":DISHNETEIT, :RECPRIORITY, :QUICKTUNE, :SCHEDORDER, :LIVETVORDER ) ");
query.bindValue(":CARDID", cardid);
query.bindValue(":SOURCEID", sourceid);
@@ -1352,6 +1358,8 @@ int CardUtil::CreateCardInput(const uint cardid,
query.bindValue(":DISHNETEIT", dishnet_eit);
query.bindValue(":RECPRIORITY", recpriority);
query.bindValue(":QUICKTUNE", quicktune);
+ query.bindValue(":SCHEDORDER", schedorder);
+ query.bindValue(":LIVETVORDER", livetvorder);
if (!query.exec())
{
View
4 mythtv/libs/libmythtv/cardutil.h
@@ -275,7 +275,9 @@ class MTV_PUBLIC CardUtil
const QString &displayname,
bool dishnet_eit,
const uint recpriority,
- const uint quicktune);
+ const uint quicktune,
+ const uint schedorder,
+ const uint livetvorder);
static bool DeleteInput(uint inputid);
View
8 mythtv/libs/libmythtv/channelbase.cpp
@@ -592,7 +592,7 @@ vector<InputInfo> ChannelBase::GetFreeInputs(
info.inputid, groupids, excluded_cardids,
busygrp, busyrec, busyin, info.mplexid);
- if (!is_busy_grp)
+ if (!is_busy_grp && info.livetvorder)
new_list.push_back(info);
}
@@ -921,7 +921,7 @@ bool ChannelBase::InitializeInputs(void)
"SELECT cardinputid, "
" inputname, startchan, "
" tunechan, externalcommand, "
- " sourceid "
+ " sourceid, livetvorder "
"FROM cardinput "
"WHERE cardid = :CARDID");
query.bindValue(":CARDID", cardid);
@@ -953,8 +953,8 @@ bool ChannelBase::InitializeInputs(void)
query.value(1).toString(), query.value(2).toString(),
query.value(3).toString(), query.value(4).toString(),
sourceid, cardid,
- query.value(0).toUInt(), 0,
- channels);
+ query.value(0).toUInt(), query.value(5).toUInt(),
+ 0, channels);
if (!IsExternalChannelChangeSupported() &&
!m_inputs[query.value(0).toUInt()]->externalChanger.isEmpty())
View
22 mythtv/libs/libmythtv/dbcheck.cpp
@@ -6082,6 +6082,28 @@ NULL
return false;
}
+ if (dbver == "1292")
+ {
+ const char *updates[] = {
+"ALTER TABLE cardinput "
+" ADD COLUMN schedorder INT(10) UNSIGNED NOT NULL DEFAULT '0', "
+" ADD COLUMN livetvorder INT(10) UNSIGNED NOT NULL DEFAULT '0';",
+"UPDATE cardinput SET schedorder = cardinputid;",
+"UPDATE cardinput SET livetvorder = cardid;",
+NULL
+};
+
+ if (gCoreContext->GetNumSetting("LastFreeCard", 0))
+ {
+ updates[2] =
+ "UPDATE cardinput SET livetvorder = "
+ " (SELECT MAX(cardid) FROM capturecard) - cardid + 1;";
+ }
+
+ if (!performActualUpdate(updates, "1293", dbver))
+ return false;
+ }
+
return true;
}
View
20 mythtv/libs/libmythtv/inputinfo.cpp
@@ -5,12 +5,14 @@
InputInfo::InputInfo(
const QString &_name,
- uint _sourceid, uint _inputid, uint _cardid, uint _mplexid) :
+ uint _sourceid, uint _inputid, uint _cardid, uint _mplexid,
+ uint _livetvorder) :
name(_name),
sourceid(_sourceid),
inputid(_inputid),
cardid(_cardid),
- mplexid(_mplexid)
+ mplexid(_mplexid),
+ livetvorder(_livetvorder)
{
name.detach();
}
@@ -20,7 +22,8 @@ InputInfo::InputInfo(const InputInfo &other) :
sourceid(other.sourceid),
inputid(other.inputid),
cardid(other.cardid),
- mplexid(other.mplexid)
+ mplexid(other.mplexid),
+ livetvorder(other.livetvorder)
{
name.detach();
}
@@ -33,6 +36,7 @@ InputInfo &InputInfo::operator=(const InputInfo &other)
inputid = other.inputid;
cardid = other.cardid;
mplexid = other.mplexid;
+ livetvorder = other.livetvorder;
return *this;
}
@@ -57,7 +61,8 @@ bool InputInfo::FromStringList(QStringList::const_iterator &it,
sourceid = (*it).toUInt(); NEXT();
inputid = (*it).toUInt(); NEXT();
cardid = (*it).toUInt(); NEXT();
- mplexid = (*it).toUInt(); ++it;
+ mplexid = (*it).toUInt(); NEXT();
+ livetvorder = (*it).toUInt(); ++it;
return true;
}
@@ -70,12 +75,15 @@ void InputInfo::ToStringList(QStringList &list) const
list.push_back(QString::number(inputid));
list.push_back(QString::number(cardid));
list.push_back(QString::number(mplexid));
+ list.push_back(QString::number(livetvorder));
}
TunedInputInfo::TunedInputInfo(
const QString &_name,
- uint _sourceid, uint _inputid, uint _cardid, uint _mplexid, uint _chanid) :
- InputInfo(_name, _sourceid, _inputid, _cardid, _mplexid), chanid(_chanid)
+ uint _sourceid, uint _inputid, uint _cardid, uint _mplexid,
+ uint _livetvorder, uint _chanid) :
+ InputInfo(_name, _sourceid, _inputid, _cardid, _mplexid, _livetvorder),
+ chanid(_chanid)
{
}
View
13 mythtv/libs/libmythtv/inputinfo.h
@@ -13,9 +13,11 @@ class MTV_PUBLIC InputInfo
{
public:
InputInfo() : name(QString::null),
- sourceid(0), inputid(0), cardid(0), mplexid(0) {}
+ sourceid(0), inputid(0), cardid(0), mplexid(0),
+ livetvorder(0) {}
InputInfo(const QString &name,
- uint sourceid, uint inputid, uint cardid, uint mplexid);
+ uint sourceid, uint inputid, uint cardid, uint mplexid,
+ uint livetvorder);
InputInfo(const InputInfo &other);
InputInfo &operator=(const InputInfo &other);
virtual ~InputInfo() {}
@@ -39,6 +41,7 @@ class MTV_PUBLIC InputInfo
uint inputid; ///< unique key in DB for this input
uint cardid; ///< card id associated with input
uint mplexid; ///< mplexid restriction if applicable
+ uint livetvorder; ///< order for live TV use
};
class MTV_PUBLIC TunedInputInfo : public InputInfo
@@ -47,7 +50,8 @@ class MTV_PUBLIC TunedInputInfo : public InputInfo
TunedInputInfo() : chanid(0) { }
TunedInputInfo(const QString &name,
uint _sourceid, uint _inputid,
- uint _cardid, uint _mplexid, uint _chanid);
+ uint _cardid, uint _mplexid, uint _livetvorder,
+ uint _chanid);
TunedInputInfo(const TunedInputInfo &other);
TunedInputInfo &operator=(const TunedInputInfo &other);
virtual ~TunedInputInfo() {}
@@ -74,8 +78,9 @@ class MTV_PUBLIC ChannelInputInfo : public InputInfo
QString _tuneToChannel, QString _externalChanger,
uint _sourceid, uint _cardid,
uint _inputid, uint _mplexid,
+ uint _livetvorder,
const DBChanList &_channels) :
- InputInfo(_name, _sourceid, _inputid, _cardid, _mplexid),
+ InputInfo(_name, _sourceid, _inputid, _cardid, _mplexid, _livetvorder),
startChanNum(_startChanNum),
tuneToChannel(_tuneToChannel), externalChanger(_externalChanger),
channels(_channels),
View
3 mythtv/libs/libmythtv/tv_play.cpp
@@ -10926,7 +10926,8 @@ void TV::FillOSDMenuSource(const PlayerContext *ctx, OSD *osd,
InputInfo info;
info.inputid = currentinputs[i];
if (CardUtil::GetInputInfo(info))
- if (!sources.contains(info.sourceid))
+ if (!sources.contains(info.sourceid) &&
+ info.livetvorder)
sources[info.sourceid] = info;
}
}
View
38 mythtv/libs/libmythtv/videosource.cpp
@@ -2855,6 +2855,42 @@ class InputPriority : public SpinBoxSetting, public CardInputDBStorage
};
};
+class ScheduleOrder : public SpinBoxSetting, public CardInputDBStorage
+{
+ public:
+ ScheduleOrder(const CardInput &parent, int _value) :
+ SpinBoxSetting(this, 0, 99, 1),
+ CardInputDBStorage(this, parent, "schedorder")
+ {
+ setLabel(QObject::tr("Schedule order"));
+ setValue(_value);
+ setHelpText(QObject::tr("If priorities and other factors are equal "
+ "the scheduler will choose the available "
+ "input with the lowest, non-zero value. "
+ "Setting this value to zero will make the "
+ "input unavailable to the scheduler."));
+ };
+};
+
+class LiveTVOrder : public SpinBoxSetting, public CardInputDBStorage
+{
+ public:
+ LiveTVOrder(const CardInput &parent, int _value) :
+ SpinBoxSetting(this, 0, 99, 1),
+ CardInputDBStorage(this, parent, "livetvorder")
+ {
+ setLabel(QObject::tr("Live TV order"));
+ setValue(_value);
+ setHelpText(QObject::tr("When entering Live TV, the available, local "
+ "input with the lowest, non-zero value will "
+ "be used. If no local inputs are available, "
+ "the available, remote input with the lowest, "
+ "non-zero value will be used. "
+ "Setting this value to zero will make the "
+ "input unavailable to live TV."));
+ };
+};
+
class DishNetEIT : public CheckBoxSetting, public CardInputDBStorage
{
public:
@@ -2943,6 +2979,8 @@ CardInput::CardInput(bool isDTVcard, bool isDVBcard,
interact->setLabel(QObject::tr("Interactions between inputs"));
interact->addChild(new InputPriority(*this));
+ interact->addChild(new ScheduleOrder(*this, _cardid));
+ interact->addChild(new LiveTVOrder(*this, _cardid));
TransButtonSetting *ingrpbtn = new TransButtonSetting("newgroup");
ingrpbtn->setLabel(QObject::tr("Create a New Input Group"));
View
55 mythtv/programs/mythbackend/mainserver.cpp
@@ -3494,48 +3494,45 @@ void MainServer::HandleGetFreeRecorder(PlaybackSock *pbs)
EncoderLink *encoder = NULL;
QString enchost;
-
- bool lastcard = false;
-
- if (gCoreContext->GetSetting("LastFreeCard", "0") == "1")
- lastcard = true;
+ QString besthost;
+ uint bestorder = 0;
QMap<int, EncoderLink *>::Iterator iter = encoderList->begin();
for (; iter != encoderList->end(); ++iter)
{
EncoderLink *elink = *iter;
- if (!lastcard)
- {
- if (elink->IsLocal())
- enchost = gCoreContext->GetHostName();
- else
- enchost = elink->GetHostName();
+ if (elink->IsLocal())
+ enchost = gCoreContext->GetHostName();
+ else
+ enchost = elink->GetHostName();
- if (enchost == pbshost && elink->IsConnected() &&
- !elink->IsTunerLocked() &&
- !elink->GetFreeInputs(excluded_cardids).empty())
+ LOG(VB_RECORD, LOG_INFO,
+ QString("Checking card %1. Best card so far %2")
+ .arg(iter.key()).arg(retval));
+
+ if (!elink->IsConnected() || elink->IsTunerLocked() ||
+ (besthost == pbshost && enchost != pbshost))
+ continue;
+
+ vector<InputInfo> inputs = elink->GetFreeInputs(excluded_cardids);
+
+ for (uint i = 0; i < inputs.size(); ++i)
+ {
+ if (!encoder || inputs[i].livetvorder < bestorder ||
+ (besthost != pbshost && enchost == pbshost))
{
- encoder = elink;
retval = iter.key();
- LOG(VB_RECORD, LOG_INFO, QString("Card %1 is local.")
- .arg(iter.key()));
- break;
+ encoder = elink;
+ bestorder = inputs[i].livetvorder;
+ besthost = enchost;
}
}
-
- if ((retval == -1 || lastcard) && elink->IsConnected() &&
- !elink->IsTunerLocked() &&
- !elink->GetFreeInputs(excluded_cardids).empty())
- {
- encoder = elink;
- retval = iter.key();
- }
- LOG(VB_RECORD, LOG_INFO,
- QString("Checking card %1. Best card so far %2")
- .arg(iter.key()).arg(retval));
}
+ LOG(VB_RECORD, LOG_INFO,
+ QString("Best card is %1").arg(retval));
+
strlist << QString::number(retval);
if (encoder)
View
12 mythtv/programs/mythbackend/scheduler.cpp
@@ -339,6 +339,9 @@ static bool comp_priority(RecordingInfo *a, RecordingInfo *b)
return a->GetRecordingStartTime() < b->GetRecordingStartTime();
}
+ if (a->GetRecordingPriority2() != b->GetRecordingPriority2())
+ return a->GetRecordingPriority2() < b->GetRecordingPriority2();
+
if (a->GetInputID() != b->GetInputID())
return a->GetInputID() < b->GetInputID();
@@ -1417,6 +1420,7 @@ void Scheduler::PruneRedundants(void)
!lastp->IsSameTimeslot(*p))
{
lastp = p;
+ lastp->SetRecordingPriority2(0);
++i;
}
else
@@ -3769,7 +3773,7 @@ void Scheduler::AddNewRecords(void)
" p.subtitletypes+0, p.audioprop+0, RECTABLE.storagegroup, "//40-42
" capturecard.hostname, recordmatch.oldrecstatus, "
" RECTABLE.avg_delay, "//43-45
- " oldrecstatus.future, " //46
+ " oldrecstatus.future, cardinput.schedorder, " //46-47
+ pwrpri + QString(
"FROM recordmatch "
"INNER JOIN RECTABLE ON (recordmatch.recordid = RECTABLE.recordid) "
@@ -3874,6 +3878,7 @@ void Scheduler::AddNewRecords(void)
result.value(39).toUInt(),//videoproperties
result.value(41).toUInt(),//audioproperties
result.value(46).toInt());//future
+ p->SetRecordingPriority2(result.value(47).toInt()); // schedorder
if (!p->future && !p->IsReactivated() &&
p->oldrecstatus != rsAborted &&
@@ -3890,7 +3895,7 @@ void Scheduler::AddNewRecords(void)
p->SetRecordingPriority(
p->GetRecordingPriority() + recTypeRecPriorityMap[p->GetRecordingRuleType()] +
- result.value(47).toInt() +
+ result.value(48).toInt() +
((autopriority) ?
autopriority - (result.value(45).toInt() * autostrata / 200) : 0));
@@ -3920,7 +3925,8 @@ void Scheduler::AddNewRecords(void)
RecStatusType newrecstatus = p->GetRecordingStatus();
// Check for rsOffLine
- if ((doRun || specsched) && !cardMap.contains(p->GetCardID()))
+ if ((doRun || specsched) &&
+ (!cardMap.contains(p->GetCardID()) || !p->GetRecordingPriority2()))
newrecstatus = rsOffLine;
// Check for rsTooManyRecordings
View
7 mythtv/programs/mythbackend/services/capture.cpp
@@ -283,7 +283,9 @@ int Capture::AddCardInput ( const uint nCardId,
const QString &sDisplayName,
bool bDishnetEIT,
const uint nRecPriority,
- const uint nQuicktune)
+ const uint nQuicktune,
+ const uint nSchedOrder,
+ const uint nLiveTVOrder)
{
if ( nCardId < 1 || nSourceId < 1 || sInputName.isEmpty() )
throw( QString( "This API requires at least a card ID, a source ID, "
@@ -292,7 +294,8 @@ int Capture::AddCardInput ( const uint nCardId,
int nResult = CardUtil::CreateCardInput(nCardId, nSourceId, sInputName,
sExternalCommand, sChangerDevice, sChangerModel,
sHostName, sTuneChan, sStartChan, sDisplayName,
- bDishnetEIT, nRecPriority, nQuicktune);
+ bDishnetEIT, nRecPriority, nQuicktune, nSchedOrder,
+ nLiveTVOrder);
return nResult;
}
View
4 mythtv/programs/mythbackend/services/capture.h
@@ -90,7 +90,9 @@ class Capture : public CaptureServices
const QString &DisplayName,
bool DishnetEIT,
const uint RecPriority,
- const uint Quicktune);
+ const uint Quicktune,
+ const uint SchedOrder,
+ const uint LiveTVOrder);
bool UpdateCardInput ( int CardInputId,
const QString &Setting,
View
13 mythtv/programs/mythfrontend/globalsettings.cpp
@@ -2247,18 +2247,6 @@ static HostComboBox *LongChannelFormat()
return gc;
}
-static GlobalCheckBox *LastFreeCard()
-{
- GlobalCheckBox *bc = new GlobalCheckBox("LastFreeCard");
- bc->setLabel(QObject::tr("Avoid conflicts between Live TV and "
- "scheduled shows"));
- bc->setValue(false);
- bc->setHelpText(QObject::tr("If enabled, Live TV will choose a tuner card "
- "that is less likely to have scheduled recordings "
- "rather than the best card available."));
- return bc;
-}
-
static GlobalCheckBox *LiveTVPriority()
{
GlobalCheckBox *bc = new GlobalCheckBox("LiveTVPriority");
@@ -3484,7 +3472,6 @@ GeneralSettings::GeneralSettings()
general->addChild(ChannelOrdering());
general->addChild(ChannelFormat());
general->addChild(LongChannelFormat());
- general->addChild(LastFreeCard());
general->addChild(LiveTVPriority());
addChild(general);

0 comments on commit 3281cdd

Please sign in to comment.
Something went wrong with that request. Please try again.