rpms/mythtv/F-16 mythtv-0.25.2-fixes.patch, NONE, 1.1 mythtv-0.25.1-fixes.patch, 1.1, NONE

Richard Shaw hobbes1069 at rpmfusion.org
Sat Aug 25 23:12:27 CEST 2012


Author: hobbes1069

Update of /cvs/free/rpms/mythtv/F-16
In directory old02.ovh.rpmfusion.lan:/tmp/cvs-serv22516

Added Files:
	mythtv-0.25.2-fixes.patch 
Removed Files:
	mythtv-0.25.1-fixes.patch 
Log Message:
Add patch to cvs.

mythtv-0.25.2-fixes.patch:
 checksums/mythplugins-0.25.2.md5sum             |    1 
 checksums/mythtv-0.25.2.md5sum                  |    1 
 mythplugins/mythmusic/mythmusic/musicplayer.cpp |    7 
 mythplugins/mythmusic/mythmusic/polygon.h       |    4 
 mythtv/bindings/python/MythTV/dataheap.py       |    2 
 mythtv/html/setup/wizard-network.qsp            |    4 
 mythtv/libs/libmythbase/serverpool.cpp          |  196 +++++++++++++++---------
 mythtv/libs/libmythtv/firewirerecorder.cpp      |    1 
 mythtv/libs/libmythtv/streamhandler.cpp         |   34 +---
 mythtv/libs/libmythtv/streamhandler.h           |    6 
 mythtv/libs/libmythtv/subtitlescreen.cpp        |    6 
 mythtv/libs/libmythtv/subtitlescreen.h          |    7 
 mythtv/programs/mythbackend/main_helpers.cpp    |    2 
 mythtv/themes/defaultmenu/mainmenu.xml          |    1 
 14 files changed, 176 insertions(+), 96 deletions(-)

--- NEW FILE mythtv-0.25.2-fixes.patch ---
 checksums/mythplugins-0.25.2.md5sum             |    1 +
 checksums/mythtv-0.25.2.md5sum                  |    1 +
 mythplugins/mythmusic/mythmusic/musicplayer.cpp |    7 +
 mythplugins/mythmusic/mythmusic/polygon.h       |    4 +-
 mythtv/bindings/python/MythTV/dataheap.py       |    2 +
 mythtv/html/setup/wizard-network.qsp            |    4 +
 mythtv/libs/libmythbase/serverpool.cpp          |  196 +++++++++++++++--------
 mythtv/libs/libmythtv/firewirerecorder.cpp      |    1 +
 mythtv/libs/libmythtv/streamhandler.cpp         |   34 ++---
 mythtv/libs/libmythtv/streamhandler.h           |    6 +-
 mythtv/libs/libmythtv/subtitlescreen.cpp        |    6 +-
 mythtv/libs/libmythtv/subtitlescreen.h          |    7 +-
 mythtv/programs/mythbackend/main_helpers.cpp    |    2 +-
 mythtv/themes/defaultmenu/mainmenu.xml          |    1 +
 14 files changed, 176 insertions(+), 96 deletions(-)

diff --git a/checksums/mythplugins-0.25.2.md5sum b/checksums/mythplugins-0.25.2.md5sum
new file mode 100644
index 0000000..16f5965
--- /dev/null
+++ b/checksums/mythplugins-0.25.2.md5sum
@@ -0,0 +1 @@
+80466458a82759d213fe69af63d6dc80  mythplugins-0.25.2.tar.bz2
diff --git a/checksums/mythtv-0.25.2.md5sum b/checksums/mythtv-0.25.2.md5sum
new file mode 100644
index 0000000..f02e863
--- /dev/null
+++ b/checksums/mythtv-0.25.2.md5sum
@@ -0,0 +1 @@
+2bf8c0aa75e88d39747e59c27aa6072e  mythtv-0.25.2.tar.bz2
diff --git a/mythplugins/mythmusic/mythmusic/musicplayer.cpp b/mythplugins/mythmusic/mythmusic/musicplayer.cpp
index b0cccf5..d94e08f 100644
--- a/mythplugins/mythmusic/mythmusic/musicplayer.cpp
+++ b/mythplugins/mythmusic/mythmusic/musicplayer.cpp
@@ -105,6 +105,7 @@ MusicPlayer::~MusicPlayer()
         m_cdWatcher->stop();
         m_cdWatcher->wait();
         delete m_cdWatcher;
+        m_cdWatcher = NULL;
     }
 
     if (!hasClient())
@@ -283,6 +284,12 @@ void MusicPlayer::stop(bool stopAll)
         m_output = NULL;
     }
 
+    if (stopAll && m_cdWatcher)
+    {
+        m_cdWatcher->stop();
+        m_cdWatcher->wait();
+    }
+
     // because we don't actually stop the audio output we have to fake a Stopped
     // event so any listeners can act on it
     OutputEvent oe(OutputEvent::Stopped);
diff --git a/mythplugins/mythmusic/mythmusic/polygon.h b/mythplugins/mythmusic/mythmusic/polygon.h
index 2884d8e..d859d5d 100644
--- a/mythplugins/mythmusic/mythmusic/polygon.h
+++ b/mythplugins/mythmusic/mythmusic/polygon.h
@@ -18,13 +18,13 @@ class Bitmap
         delete[] data;
         width = w;
         height = h;
-        data = new Pixel[w*h+extra];
+        data = new Pixel[2*w*h+extra];
         clear();
     }
   
     void clear()
     {
-        memset(data,0,sizeof(Pixel)*(width*height+extra));
+        memset(data,0,sizeof (Pixel)*(2*width*height+extra));
     }
 };
 #endif
diff --git a/mythtv/bindings/python/MythTV/dataheap.py b/mythtv/bindings/python/MythTV/dataheap.py
index dd832ba..ae817e7 100644
--- a/mythtv/bindings/python/MythTV/dataheap.py
+++ b/mythtv/bindings/python/MythTV/dataheap.py
@@ -612,6 +612,7 @@ class Job( DBDataWrite, JOBTYPE, JOBCMD, JOBFLAG, JOBSTATUS ):
     def fromRecorded(cls, rec, type, status=None, schedruntime=None,
                                hostname=None, args=None, flags=None):
         job = cls(db=rec._db)
+        job.type = type
         job.chanid = rec.chanid
         job.starttime = rec.starttime
         if status:
@@ -632,6 +633,7 @@ class Job( DBDataWrite, JOBTYPE, JOBCMD, JOBFLAG, JOBSTATUS ):
         if prog.rectype != prog.rsRecorded:
             raise MythError('Invalid recording type for Job.')
         job = cls(db=prog._db)
+        job.type = type
         job.chanid = prog.chanid
         job.starttime = prog.recstartts
         if status:
diff --git a/mythtv/html/setup/wizard-network.qsp b/mythtv/html/setup/wizard-network.qsp
index 03c37ac..59b67a9 100644
--- a/mythtv/html/setup/wizard-network.qsp
+++ b/mythtv/html/setup/wizard-network.qsp
@@ -13,6 +13,10 @@
         <td id='BackendServerIP6_cell'>&nbsp;
             <a href="javascript:showSettingHelp('BackendServerIP6')">[?]</a>
             </td></tr>
+    <tr><th align=right><i18n>Use Link-Local</i18n>:</th>
+        <td id='AllowLinkLocal_cell'>&nbsp;
+            <a href="javascript:showSettingHelp('AllowLinkLocal')">[?]</a>
+            </td></tr>
     <tr><th align=right><i18n>Security PIN</i18n>:</th>
         <td><input id='SecurityPin' type='password' size=10>
             <a href="javascript:showSettingHelp('SecurityPin')">[?]</a>
diff --git a/mythtv/libs/libmythbase/serverpool.cpp b/mythtv/libs/libmythbase/serverpool.cpp
index 609e190..745e329 100644
--- a/mythtv/libs/libmythbase/serverpool.cpp
+++ b/mythtv/libs/libmythbase/serverpool.cpp
@@ -20,6 +20,13 @@ static QList<QNetworkAddressEntry> naList_4;
 static QList<QNetworkAddressEntry> naList_6;
 static QReadWriteLock naLock;
 
+static QPair<QHostAddress, int> kLinkLocal  =
+                            QHostAddress::parseSubnet("169.254.0.0/16");
+#if !defined(QT_NO_IPV6)
+static QPair<QHostAddress, int> kLinkLocal6 =
+                            QHostAddress::parseSubnet("fe80::/10");
+#endif
+
 class PrivUdpSocket : public QUdpSocket
 {
 public:
@@ -38,7 +45,7 @@ public:
     {
 #if !defined(QT_NO_IPV6)
         if (addr.protocol() == QAbstractSocket::IPv6Protocol &&
-            addr.isInSubnet(QHostAddress::parseSubnet("fe80::/10")) &&
+            addr.isInSubnet(kLinkLocal6) &&
             host.ip().scopeId() != addr.scopeId())
         {
             return false;
@@ -92,6 +99,7 @@ void ServerPool::SelectDefaultListen(bool force)
     QHostAddress config_v6(gCoreContext->GetSetting("BackendServerIP6"));
     bool v6IsSet = config_v6.isNull() ? true : false;
 #endif
+    bool allowLinkLocal = gCoreContext->GetNumSetting("AllowLinkLocal", true) > 0;
 
     // loop through all available interfaces
     QList<QNetworkInterface> IFs = QNetworkInterface::allInterfaces();
@@ -102,97 +110,147 @@ void ServerPool::SelectDefaultListen(bool force)
             continue;
 
         QList<QNetworkAddressEntry> IPs = qni->addressEntries();
-        QList<QNetworkAddressEntry>::const_iterator qnai;
+        QList<QNetworkAddressEntry>::iterator qnai;
         for (qnai = IPs.begin(); qnai != IPs.end(); ++qnai)
         {
             QHostAddress ip = qnai->ip();
-            if (naList_4.contains(*qnai))
-                // already defined, skip
-                continue;
-            else if (!config_v4.isNull() && (ip == config_v4))
+#if !defined(QT_NO_IPV6)
+            if (ip.protocol() == QAbstractSocket::IPv4Protocol)
             {
-                // IPv4 address is defined, add it
-                LOG(VB_GENERAL, LOG_DEBUG,
+#endif
+                if (naList_4.contains(*qnai))
+                    // already defined, skip
+                    continue;
+
+                else if (!config_v4.isNull() && (ip == config_v4))
+                {
+                    // IPv4 address is defined, add it
+                    LOG(VB_GENERAL, LOG_DEBUG,
                         QString("Adding BackendServerIP to address list."));
-                naList_4.append(*qnai);
-                v4IsSet = true;
-            }
-            else if (ip == QHostAddress::LocalHost)
-            {
-                // always listen on LocalHost
-                LOG(VB_GENERAL, LOG_DEBUG,
-                        QString("Adding IPv4 loopback to address list."));
-                naList_4.append(*qnai);
-                if (!v4IsSet && (config_v4 == ip))
+                    naList_4.append(*qnai);
                     v4IsSet = true;
-            }
-            else if (config_v4.isNull() &&
-                     (ip.protocol() == QAbstractSocket::IPv4Protocol))
-            {
-                // IPv4 address is not defined, populate one
-                // restrict autoconfiguration to RFC1918 private networks
-                if (ip.isInSubnet(QHostAddress::parseSubnet("10.0.0.0/8")) ||
-                    ip.isInSubnet(QHostAddress::parseSubnet("172.16.0.0/12")) ||
-                    ip.isInSubnet(QHostAddress::parseSubnet("192.168.0.0/16")))
+
+                }
+
+                else if (ip == QHostAddress::LocalHost)
                 {
+                    // always listen on LocalHost
                     LOG(VB_GENERAL, LOG_DEBUG,
-                            QString("Adding '%1' to address list.")
-                                .arg(ip.toString()));
+                        QString("Adding IPv4 loopback to address list."));
+                    naList_4.append(*qnai);
+                    if (!v4IsSet && (config_v4 == ip))
+                        v4IsSet = true;
+                }
+
+                else if (ip.isInSubnet(kLinkLocal) && allowLinkLocal)
+                {
+                    // optionally listen on linklocal
+                    // the next clause will enable it anyway if no IP address
+                    // has been set
+                    LOG(VB_GENERAL, LOG_DEBUG,
+                            QString("Adding link-local '%1' to address list.")
+                                .arg(PRETTYIP_(ip)));
                     naList_4.append(*qnai);
                 }
+
+                else if (config_v4.isNull())
+                {
+                    // IPv4 address is not defined, populate one
+                    // restrict autoconfiguration to RFC1918 private networks
+                    static QPair<QHostAddress, int>
+                       privNet1 = QHostAddress::parseSubnet("10.0.0.0/8"),
+                       privNet2 = QHostAddress::parseSubnet("172.16.0.0/12"),
+                       privNet3 = QHostAddress::parseSubnet("192.168.0.0/16");
+
+                    if (ip.isInSubnet(privNet1) || ip.isInSubnet(privNet2) ||
+                        ip.isInSubnet(privNet3))
+                    {
+                        LOG(VB_GENERAL, LOG_DEBUG,
+                                QString("Adding '%1' to address list.")
+                                    .arg(PRETTYIP_(ip)));
+                        naList_4.append(*qnai);
+                    }
+                    else if (ip.isInSubnet(kLinkLocal))
+                    {
+                        LOG(VB_GENERAL, LOG_DEBUG,
+                            QString("Adding link-local '%1' to address list.")
+                                    .arg(PRETTYIP_(ip)));
+                        naList_4.append(*qnai);
+                    }
+                    else
+                        LOG(VB_GENERAL, LOG_DEBUG, QString("Skipping "
+                           "non-private address during IPv4 autoselection: %1")
+                                    .arg(PRETTYIP_(ip)));
+                }
+
                 else
-                    LOG(VB_GENERAL, LOG_DEBUG, QString("Skipping non-private "
-                            "address during IPv4 autoselection: %1")
-                                .arg(ip.toString()));
-            }
+                    LOG(VB_GENERAL, LOG_DEBUG, QString("Skipping address: %1")
+                                .arg(PRETTYIP_(ip)));
+
 #if !defined(QT_NO_IPV6)
-            else if (naList_6.contains(*qnai))
-                // already defined, skip
-                continue;
-            else if (!config_v6.isNull() && (ip == config_v6))
+            }
+            else
             {
+                if (ip.isInSubnet(kLinkLocal6))
+                {
+                    // set scope id for link local address
+                    ip.setScopeId(qni->name());
+                    qnai->setIp(ip);
+                }
+
+                if (naList_6.contains(*qnai))
+                    // already defined, skip
+                    continue;
+
+                else if ((!config_v6.isNull()) && (ip == config_v6))
+                {
                 // IPv6 address is defined, add it
-                LOG(VB_GENERAL, LOG_DEBUG,
+                    LOG(VB_GENERAL, LOG_DEBUG,
                         QString("Adding BackendServerIP6 to address list."));
-                naList_6.append(*qnai);
-                v6IsSet = true;
-            }
-            else if (ip == QHostAddress::LocalHostIPv6)
-            {
-                // always listen on LocalHost
-                LOG(VB_GENERAL, LOG_DEBUG,
-                        QString("Adding IPv6 loopback to address list."));
-                naList_6.append(*qnai);
-                if (!v6IsSet && (config_v6 == ip))
+                    naList_6.append(*qnai);
                     v6IsSet = true;
-            }
-            else if (config_v6.isNull() &&
-                     (ip.protocol() == QAbstractSocket::IPv6Protocol))
-            {
-                bool linklocal = false;
-                if (ip.isInSubnet(QHostAddress::parseSubnet("fe80::/10")))
+                }
+
+                else if (ip == QHostAddress::LocalHostIPv6)
                 {
-                    // Link-local address, find its scope ID (interface name)
-                    QNetworkAddressEntry ae = *qnai;
-                    QHostAddress ha = ip;
-                    ha.setScopeId(qni->name());
-                    ae.setIp(ha);
-                    naList_6.append(ae);
-                    linklocal = true;
+                // always listen on LocalHost
+                    LOG(VB_GENERAL, LOG_DEBUG,
+                            QString("Adding IPv6 loopback to address list."));
+                    naList_6.append(*qnai);
+                    if (!v6IsSet && (config_v6 == ip))
+                        v6IsSet = true;
                 }
-                else
+
+                else if (ip.isInSubnet(kLinkLocal6) && allowLinkLocal)
+                {
+                    // optionally listen on linklocal
+                    // the next clause will enable it anyway if no IP address
+                    // has been set
+                    LOG(VB_GENERAL, LOG_DEBUG,
+                            QString("Adding link-local '%1' to address list.")
+                                .arg(ip.toString()));
+                    naList_6.append(*qnai);
+                }
+
+                else if (config_v6.isNull())
                 {
+                    if (ip.isInSubnet(kLinkLocal6))
+                        LOG(VB_GENERAL, LOG_DEBUG,
+                            QString("Adding link-local '%1' to address list.")
+                                .arg(PRETTYIP_(ip)));
+                    else
+                        LOG(VB_GENERAL, LOG_DEBUG,
+                            QString("Adding '%1' to address list.")
+                                .arg(PRETTYIP_(ip)));
+
                     naList_6.append(*qnai);
                 }
-                LOG(VB_GENERAL, LOG_DEBUG,
-                        QString("Adding%1 '%2' to address list.")
-                    .arg(linklocal ? " link-local" : "")
-                            .arg(PRETTYIP_(ip)));
+
+                else
+                    LOG(VB_GENERAL, LOG_DEBUG, QString("Skipping address: %1")
+                                .arg(PRETTYIP_(ip)));
             }
 #endif
-            else
-                LOG(VB_GENERAL, LOG_DEBUG, QString("Skipping address: %1")
-                    .arg(PRETTYIP_(ip)));
         }
     }
 
diff --git a/mythtv/libs/libmythtv/firewirerecorder.cpp b/mythtv/libs/libmythtv/firewirerecorder.cpp
index 9caa28e..fbb5ed0 100644
--- a/mythtv/libs/libmythtv/firewirerecorder.cpp
+++ b/mythtv/libs/libmythtv/firewirerecorder.cpp
@@ -210,6 +210,7 @@ bool FirewireRecorder::PauseAndWait(int timeout)
     {
         LOG(VB_RECORD, LOG_INFO, LOC +
             QString("PauseAndWait(%1) -- unpause").arg(timeout));
+        paused = false;
         StartStreaming();
         unpauseWait.wakeAll();
     }
diff --git a/mythtv/libs/libmythtv/streamhandler.cpp b/mythtv/libs/libmythtv/streamhandler.cpp
index 2b0a7b6..fbe9399 100644
--- a/mythtv/libs/libmythtv/streamhandler.cpp
+++ b/mythtv/libs/libmythtv/streamhandler.cpp
@@ -26,9 +26,15 @@ StreamHandler::StreamHandler(const QString &device) :
 
 StreamHandler::~StreamHandler()
 {
-    if (!_stream_data_list.empty())
+    QMutexLocker locker(&_add_rm_lock);
+
     {
-        LOG(VB_GENERAL, LOG_ERR, LOC + "dtor & _stream_data_list not empty");
+        QMutexLocker locker2(&_listener_lock);
+        if (!_stream_data_list.empty())
+        {
+            LOG(VB_GENERAL, LOG_ERR, LOC +
+                "dtor & _stream_data_list not empty");
+        }
     }
 
     // This should never be triggered.. just to be safe..
@@ -41,6 +47,8 @@ void StreamHandler::AddListener(MPEGStreamData *data,
                                 bool needs_buffering,
                                 QString output_file)
 {
+    QMutexLocker locker(&_add_rm_lock);
+
     LOG(VB_RECORD, LOG_INFO, LOC + QString("AddListener(0x%1) -- begin")
                 .arg((uint64_t)data,0,16));
     if (!data)
@@ -93,6 +101,8 @@ void StreamHandler::AddListener(MPEGStreamData *data,
 
 void StreamHandler::RemoveListener(MPEGStreamData *data)
 {
+    QMutexLocker locker(&_add_rm_lock);
+
     LOG(VB_RECORD, LOG_INFO, LOC + QString("RemoveListener(0x%1) -- begin")
                 .arg((uint64_t)data,0,16));
     if (!data)
@@ -158,12 +168,6 @@ void StreamHandler::Start(void)
     while (!_running && !_error && _running_desired)
         _running_state_changed.wait(&_start_stop_lock, 100);
 
-    if (!_running_desired)
-    {
-        LOG(VB_GENERAL, LOG_WARNING, LOC +
-            "Programmer Error: Stop called before Start finished");
-    }
-
     if (_error)
     {
         LOG(VB_GENERAL, LOG_WARNING, LOC + "Start failed");
@@ -175,17 +179,9 @@ void StreamHandler::Stop(void)
 {
     QMutexLocker locker(&_start_stop_lock);
 
-    do
-    {
-        SetRunningDesired(false);
-        while (!_running_desired && _running)
-            _running_state_changed.wait(&_start_stop_lock, 100);
-        if (_running_desired)
-        {
-            LOG(VB_GENERAL, LOG_WARNING, LOC +
-                "Programmer Error: Start called before Stop finished");
-        }
-    } while (_running_desired);
+    SetRunningDesired(false);
+    while (_running)
+        _running_state_changed.wait(&_start_stop_lock, 100);
 
     wait();
 }
diff --git a/mythtv/libs/libmythtv/streamhandler.h b/mythtv/libs/libmythtv/streamhandler.h
index 1db0584..8f97cdb 100644
--- a/mythtv/libs/libmythtv/streamhandler.h
+++ b/mythtv/libs/libmythtv/streamhandler.h
@@ -45,7 +45,9 @@ class PIDInfo
 typedef QMap<uint,PIDInfo*> PIDInfoMap;
 
 // locking order
-// _pid_lock -> _listener_lock -> _start_stop_lock
+// _pid_lock -> _listener_lock
+// _add_rm_lock -> _listener_lock
+//              -> _start_stop_lock
 
 class StreamHandler : protected MThread, public DeviceReaderCB
 {
@@ -101,6 +103,8 @@ class StreamHandler : protected MThread, public DeviceReaderCB
     bool              _needs_buffering;
     bool              _allow_section_reader;
 
+    QMutex            _add_rm_lock;
+
     mutable QMutex    _start_stop_lock;
     volatile bool     _running_desired;
     volatile bool     _error;
diff --git a/mythtv/libs/libmythtv/subtitlescreen.cpp b/mythtv/libs/libmythtv/subtitlescreen.cpp
index 9ec70e9..43dc711 100644
--- a/mythtv/libs/libmythtv/subtitlescreen.cpp
+++ b/mythtv/libs/libmythtv/subtitlescreen.cpp
@@ -922,7 +922,8 @@ void FormattedTextSubtitle::InitFromCC608(vector<CC608Text*> &buffers,
             CC708CharacterAttribute attr(isItalic, isBold, isUnderline,
                                          clr[min(max(0, color), 7)],
                                          useBackground);
-            FormattedTextChunk chunk(captionText, attr, parent);
+            FormattedTextChunk chunk(captionText, attr, parent,
+                                     cc->teletextmode);
             line.chunks += chunk;
             LOG(VB_VBI, LOG_INFO,
                 QString("Adding cc608 chunk (%1,%2): %3")
@@ -1089,6 +1090,7 @@ bool FormattedTextChunk::Split(FormattedTextChunk &newChunk)
             QString("Failed to split chunk '%1'").arg(text));
         return false;
     }
+    newChunk.isTeletext = isTeletext;
     newChunk.parent = parent;
     newChunk.format = format;
     newChunk.text = text.mid(lastSpace + 1).trimmed() + ' ';
@@ -1119,6 +1121,8 @@ QString FormattedTextChunk::ToLogString(void) const
         .arg(format.boldface);
     str += QString("font=%1 ").arg(format.font_tag);
     str += QString(" text='%1'").arg(text);
+    if (isTeletext)
+        str += " DEPRECATED_608_TELETEXT";
     return str;
 }
 
diff --git a/mythtv/libs/libmythtv/subtitlescreen.h b/mythtv/libs/libmythtv/subtitlescreen.h
index 44b3f6a..8821dff 100644
--- a/mythtv/libs/libmythtv/subtitlescreen.h
+++ b/mythtv/libs/libmythtv/subtitlescreen.h
@@ -110,11 +110,11 @@ class FormattedTextChunk
 {
   public:
     FormattedTextChunk(const QString &t, CC708CharacterAttribute formatting,
-                       SubtitleScreen *p)
-        : text(t), format(formatting), parent(p)
+                       SubtitleScreen *p, bool teletext = false)
+        : text(t), format(formatting), parent(p), isTeletext(teletext)
     {
     }
-    FormattedTextChunk(void) : parent(NULL) {}
+    FormattedTextChunk(void) : parent(NULL), isTeletext(false) {}
 
     QSize CalcSize(float layoutSpacing = 0.0f) const
     {
@@ -130,6 +130,7 @@ class FormattedTextChunk
     QString text;
     CC708CharacterAttribute format;
     SubtitleScreen *parent; // where fonts and sizes are kept
+    bool isTeletext;
 };
 
 class FormattedTextLine
diff --git a/mythtv/programs/mythbackend/main_helpers.cpp b/mythtv/programs/mythbackend/main_helpers.cpp
index 5017af4..28d5a4a 100644
--- a/mythtv/programs/mythbackend/main_helpers.cpp
+++ b/mythtv/programs/mythbackend/main_helpers.cpp
@@ -405,7 +405,7 @@ int handle_command(const MythBackendCommandLineParser &cmdline)
         return (ok) ? GENERIC_EXIT_OK : GENERIC_EXIT_CONNECT_ERROR;
     }
 
-    if (!cmdline.toBool("printexpire"))
+    if (cmdline.toBool("printexpire"))
     {
         expirer = new AutoExpire();
         expirer->PrintExpireList(cmdline.toString("printexpire"));
diff --git a/mythtv/themes/defaultmenu/mainmenu.xml b/mythtv/themes/defaultmenu/mainmenu.xml
index 1c72a92..b747575 100644
--- a/mythtv/themes/defaultmenu/mainmenu.xml
+++ b/mythtv/themes/defaultmenu/mainmenu.xml
@@ -41,6 +41,7 @@
         <text>Setup</text>
         <description>Configure MythTV and plugins</description>
         <action>MENU main_settings.xml</action>
+        <password>SetupPinCode</password>
     </button>
 
 </mythmenu>


--- mythtv-0.25.1-fixes.patch DELETED ---


More information about the rpmfusion-commits mailing list