summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBritney Fransen <brfransen@gmail.com>2017-12-08 19:18:59 (GMT)
committerBritney Fransen <brfransen@gmail.com>2017-12-08 19:18:59 (GMT)
commite4b0dec19f02e6d8e995b19a22110cac26f07ac4 (patch)
treea78baa8ac9914820a0c470c391772bcdb9e17b4d
parent8d974e65b3f138043d66e699a9bcfb206abf40f5 (diff)
downloadlinhes_pkgbuild-5b1c794b7c955d1e6813d7f8d9fdaa3f387cb41c.zip
linhes_pkgbuild-5b1c794b7c955d1e6813d7f8d9fdaa3f387cb41c.tar.gz
linhes_pkgbuild-5b1c794b7c955d1e6813d7f8d9fdaa3f387cb41c.tar.bz2
mythtv & mythplugins: update translationsR8.5
add some patches
-rw-r--r--abs/core/mythtv/stable-29/mythplugins/0317-0336-MythMusic-Fix-Playlist-copyTracks-and-removeAllTrack.patch50
-rw-r--r--abs/core/mythtv/stable-29/mythplugins/PKGBUILD15
-rw-r--r--abs/core/mythtv/stable-29/mythtv/0006-cardutil_show_displayname.patch24
-rw-r--r--abs/core/mythtv/stable-29/mythtv/0037-pull103-Add-heuristic-in-TMDB-script-to-detect-movie-release-years.patch52
-rw-r--r--abs/core/mythtv/stable-29/mythtv/0287-MythUiImage-Don-t-block-UI-when-exiting-screens.patch412
-rw-r--r--abs/core/mythtv/stable-29/mythtv/0292-UPnP-Reduce-startup-latency-by-moving-blocking-code-to-own-thread.patch98
-rw-r--r--abs/core/mythtv/stable-29/mythtv/0294-0283-FE-Add-network-status-to-machine-status-dialog.patch71
-rw-r--r--abs/core/mythtv/stable-29/mythtv/PKGBUILD14
-rw-r--r--abs/core/mythtv/stable-29/mythtv/mythfrontend_en_us.ts_Title_Case.patch84
9 files changed, 786 insertions, 34 deletions
diff --git a/abs/core/mythtv/stable-29/mythplugins/0317-0336-MythMusic-Fix-Playlist-copyTracks-and-removeAllTrack.patch b/abs/core/mythtv/stable-29/mythplugins/0317-0336-MythMusic-Fix-Playlist-copyTracks-and-removeAllTrack.patch
new file mode 100644
index 0000000..5c0f623
--- /dev/null
+++ b/abs/core/mythtv/stable-29/mythplugins/0317-0336-MythMusic-Fix-Playlist-copyTracks-and-removeAllTrack.patch
@@ -0,0 +1,50 @@
+From e7c80f43a3ec0fc2024f64e17d13461840429029 Mon Sep 17 00:00:00 2001
+From: Lawrence Rust <lvr@softsystem.co.uk>
+Date: Fri, 17 Jun 2016 18:40:37 +0100
+Subject: [PATCH 336/348] MythMusic: Fix Playlist::copyTracks and
+ removeAllTracks
+
+Correct these 2 functions to call gPlayer->activePlaylistChanged
+
+Signed-off-by: Lawrence Rust <lvr@softsystem.co.uk>
+---
+ mythplugins/mythmusic/mythmusic/playlist.cpp | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/mythplugins/mythmusic/mythmusic/playlist.cpp b/mythplugins/mythmusic/mythmusic/playlist.cpp
+index 79a509a..94146a4 100644
+--- a/mythplugins/mythmusic/mythmusic/playlist.cpp
++++ src/mythplugins/mythmusic/mythmusic/playlist.cpp
+@@ -46,7 +46,7 @@ bool Playlist::checkTrack(MusicMetadata::IdType trackID) const
+
+ void Playlist::copyTracks(Playlist *to_ptr, bool update_display)
+ {
+- disableSaves();
++ to_ptr->disableSaves();
+
+ for (int x = 0; x < m_songs.size(); x++)
+ {
+@@ -58,9 +58,9 @@ void Playlist::copyTracks(Playlist *to_ptr, bool update_display)
+ }
+ }
+
+- enableSaves();
++ to_ptr->enableSaves();
+
+- changed();
++ to_ptr->changed();
+ }
+
+ /// Given a tracks ID, add that track to this playlist
+@@ -94,6 +94,8 @@ void Playlist::removeAllTracks(void)
+ m_shuffledSongs.clear();
+
+ changed();
++
++ gPlayer->activePlaylistChanged(-1, true);
+ }
+
+ void Playlist::removeAllCDTracks(void)
+--
+1.7.9.5
+
diff --git a/abs/core/mythtv/stable-29/mythplugins/PKGBUILD b/abs/core/mythtv/stable-29/mythplugins/PKGBUILD
index 171d9be..35d18e4 100644
--- a/abs/core/mythtv/stable-29/mythplugins/PKGBUILD
+++ b/abs/core/mythtv/stable-29/mythplugins/PKGBUILD
@@ -9,7 +9,7 @@ pkgname=('mytharchive'
'mythweather'
'mythzoneminder')
pkgver=29
-pkgrel=6
+pkgrel=7
arch=('i686' 'x86_64')
url="http://www.mythtv.org"
license=('GPL')
@@ -19,7 +19,10 @@ makedepends=('cdrkit' 'dcraw' 'dvdauthor' 'dvd+rw-tools' 'ffmpeg' 'flac' 'libexi
'perl-json' 'perl-libwww' 'perl-soap-lite' 'perl-xml-sax'
'perl-xml-simple' 'perl-xml-xpath' 'python-oauth' 'python2-pillow'
'python-pycurl' 'zlib')
-source=('mythburn.py-aspectratio.patch' 'cdparanoia.patch')
+source=('mythburn.py-aspectratio.patch'
+ 'cdparanoia.patch'
+ '0317-0336-MythMusic-Fix-Playlist-copyTracks-and-removeAllTrack.patch'
+ )
build() {
if [ -e ${srcdir}/mythplugins ]
@@ -31,9 +34,12 @@ build() {
cd ${startdir}
msg "Copying in mythplugins git_src"
cp -rp ../git_src/mythtv/mythplugins $srcdir
- cd ${srcdir}/${pkgbase}
+
+ cd ${srcdir}
+ patch -Np1 -i "$srcdir/0317-0336-MythMusic-Fix-Playlist-copyTracks-and-removeAllTrack.patch"
msg "Patching configure"
+ cd ${srcdir}/${pkgbase}
patch -Np1 -i "$srcdir/cdparanoia.patch"
msg "Configuring mythplugins"
@@ -118,4 +124,5 @@ package_mythzoneminder() {
}
md5sums=('e98c2a09bcb051fdde959fb4bb2e5ab2'
- '5de8dd79d0b8a2b006f3c3258938b6b7')
+ '5de8dd79d0b8a2b006f3c3258938b6b7'
+ '0299d0214c0d3a452c0284352435d698')
diff --git a/abs/core/mythtv/stable-29/mythtv/0006-cardutil_show_displayname.patch b/abs/core/mythtv/stable-29/mythtv/0006-cardutil_show_displayname.patch
new file mode 100644
index 0000000..6d487ad
--- /dev/null
+++ b/abs/core/mythtv/stable-29/mythtv/0006-cardutil_show_displayname.patch
@@ -0,0 +1,24 @@
+diff -Naur mythtv-master-20150827-g4a81075-old/mythtv/libs/libmythtv/cardutil.cpp mythtv-master-20150827-g4a81075-new/mythtv/libs/libmythtv/cardutil.cpp
+--- src/mythtv/libs/libmythtv/cardutil.cpp 2015-08-27 20:29:30.000000000 +0200
++++ src/mythtv/libs/libmythtv/cardutil.cpp 2015-08-27 21:10:12.749406004 +0200
+@@ -1715,7 +1715,7 @@
+ {
+ QString devlabel;
+ MSqlQuery query(MSqlQuery::InitCon());
+- query.prepare("SELECT cardtype, videodevice "
++ query.prepare("SELECT cardtype, displayname "
+ "FROM capturecard WHERE cardid = :INPUTID ");
+ query.bindValue(":INPUTID", inputid);
+
+diff -Naur mythtv-master-20150827-g4a81075-old/mythtv/programs/mythfrontend/statusbox.cpp mythtv-master-20150827-g4a81075-new/mythtv/programs/mythfrontend/statusbox.cpp
+--- src/mythtv/programs/mythfrontend/statusbox.cpp 2015-08-27 20:29:49.000000000 +0200
++++ src/mythtv/programs/mythfrontend/statusbox.cpp 2015-08-27 21:15:15.081839976 +0200
+@@ -862,7 +862,7 @@
+
+ QString tun = tr("Tuner %1 %2 %3");
+ QString devlabel = CardUtil::GetDeviceLabel(
+- query.value(1).toString(), query.value(2).toString());
++ query.value(0).toInt());
+
+ QString shorttuner = tun.arg(cardid).arg("").arg(status);
+ QString longtuner = tun.arg(cardid).arg(devlabel).arg(status);
diff --git a/abs/core/mythtv/stable-29/mythtv/0037-pull103-Add-heuristic-in-TMDB-script-to-detect-movie-release-years.patch b/abs/core/mythtv/stable-29/mythtv/0037-pull103-Add-heuristic-in-TMDB-script-to-detect-movie-release-years.patch
new file mode 100644
index 0000000..597b064
--- /dev/null
+++ b/abs/core/mythtv/stable-29/mythtv/0037-pull103-Add-heuristic-in-TMDB-script-to-detect-movie-release-years.patch
@@ -0,0 +1,52 @@
+diff -Naur mythtv-master-20170223-ga8b2fe8-old/mythtv/libs/libmythmetadata/videometadata.cpp mythtv-master-20170223-ga8b2fe8-new/mythtv/libs/libmythmetadata/videometadata.cpp
+--- mythtv-master-20170223-ga8b2fe8-old/mythtv/libs/libmythmetadata/videometadata.cpp 2017-02-23 13:18:09.000000000 +0100
++++ src/mythtv/libs/libmythmetadata/videometadata.cpp 2017-02-25 14:03:16.933333314 +0100
+@@ -1162,7 +1162,7 @@
+ title.lastIndexOf('/') -1);
+
+ title = eatBraces(title, "[", "]");
+- title = eatBraces(title, "(", ")");
++ //title = eatBraces(title, "(", ")");
+ title = eatBraces(title, "{", "}");
+ return title.trimmed();
+ }
+diff -Naur mythtv-master-20170223-ga8b2fe8-old/mythtv/programs/scripts/metadata/Movie/tmdb3.py mythtv-master-20170223-ga8b2fe8-new/mythtv/programs/scripts/metadata/Movie/tmdb3.py
+--- mythtv-master-20170223-ga8b2fe8-old/mythtv/programs/scripts/metadata/Movie/tmdb3.py 2017-02-23 13:18:12.000000000 +0100
++++ src/mythtv/programs/scripts/metadata/Movie/tmdb3.py 2017-02-25 13:12:40.213333328 +0100
+@@ -29,6 +29,7 @@
+
+ from optparse import OptionParser
+ import sys
++import re
+
+ def buildSingle(inetref, opts):
+ from MythTV.tmdb3.tmdb_exceptions import TMDBRequestInvalid
+@@ -122,11 +123,27 @@
+ # replace all dashes from queries to work around search behavior
+ # as negative to all text that comes afterwards
+ query = query.replace('-',' ')
++ query = query.strip() # trim extra whitespace
++ # extract year from name -- note that we require a space before the year
++ # so we don't confuse movie names for years (example: "2012 - 2009",
++ # a 2009 movie); also note that we accept optional paranthesis around
++ # the year:
++ yearRegex = re.compile(r"\s\(?((19|20)[0-9]{2})\)?$")
++ year = yearRegex.search(query)
++ if year is not None:
++ year = year.group(1)
++ # if no year was found, we'll pass year=None to searchMovie,
++ # which is the default anyway
++
++ # get rid of the year (if any) from the query text, because
++ # it causes bad TMDB results
++ query = yearRegex.sub("", query)
++ query = query.strip()
+
+ from MythTV.tmdb3 import searchMovie
+ from MythTV import VideoMetadata
+ from lxml import etree
+- results = iter(searchMovie(query))
++ results = iter(searchMovie(query, locale=None, adult=False, year=year))
+ tree = etree.XML(u'<metadata></metadata>')
+ mapping = [['runtime', 'runtime'], ['title', 'originaltitle'],
+ ['releasedate', 'releasedate'], ['tagline', 'tagline'],
diff --git a/abs/core/mythtv/stable-29/mythtv/0287-MythUiImage-Don-t-block-UI-when-exiting-screens.patch b/abs/core/mythtv/stable-29/mythtv/0287-MythUiImage-Don-t-block-UI-when-exiting-screens.patch
new file mode 100644
index 0000000..5bf637b
--- /dev/null
+++ b/abs/core/mythtv/stable-29/mythtv/0287-MythUiImage-Don-t-block-UI-when-exiting-screens.patch
@@ -0,0 +1,412 @@
+From 5ee658b482ad634706c21d20d4f8fd15828fc1d8 Mon Sep 17 00:00:00 2001
+From: Roger Siddons <dizygotheca@ntlworld.com>
+Date: Mon, 12 Oct 2015 14:54:36 +0100
+Subject: [PATCH 11/13] MythUiImage: Don't block UI when exiting screens
+
+When deleting MythUIImages the UI blocks until all image loading threads complete.
+
+This patch removes the need for that by introducing an image proxy for the load threads that
+prohibits access to a deleted image.
+
+Note the ImageLoadEvent is unchanged but has been moved to resolve dependancies. It still
+contains a (potentially dangerous) pointer to the deleted MythUIImage, which IMO is redundant and should be removed.
+
+diff --git a/mythtv/libs/libmythui/mythuiimage.cpp b/mythtv/libs/libmythui/mythuiimage.cpp
+index fc067f7..a937358 100644
+--- a/mythtv/libs/libmythui/mythuiimage.cpp
++++ src/mythtv/libs/libmythui/mythuiimage.cpp
+@@ -121,25 +121,104 @@ void ImageProperties::SetMaskImage(MythImage *image)
+ }
+
+ /*!
++ * \class ImageLoadEvent
++ */
++class ImageLoadEvent : public QEvent
++{
++ public:
++ ImageLoadEvent(const MythUIImage *parent, MythImage *image,
++ const QString &basefile, const QString &filename,
++ int number, bool aborted)
++ : QEvent(kEventType),
++ m_parent(parent), m_image(image), m_basefile(basefile),
++ m_filename(filename), m_number(number),
++ m_images(NULL), m_aborted(aborted) { }
++
++ ImageLoadEvent(const MythUIImage *parent, AnimationFrames *frames,
++ const QString &basefile,
++ const QString &filename, bool aborted)
++ : QEvent(kEventType),
++ m_parent(parent), m_image(NULL), m_basefile(basefile),
++ m_filename(filename), m_number(0),
++ m_images(frames), m_aborted(aborted) { }
++
++ const MythUIImage *GetParent() const { return m_parent; }
++ MythImage *GetImage() const { return m_image; }
++ const QString GetBasefile() const { return m_basefile; }
++ const QString GetFilename() const { return m_filename; }
++ int GetNumber() const { return m_number; }
++ AnimationFrames *GetAnimationFrames() const { return m_images; }
++ bool GetAbortState() const { return m_aborted; }
++
++ static Type kEventType;
++
++ private:
++ const MythUIImage *m_parent;
++ MythImage *m_image;
++ QString m_basefile;
++ QString m_filename;
++ int m_number;
++
++ // Animated Images
++ AnimationFrames *m_images;
++
++ // Image Load
++ bool m_aborted;
++};
++
++QEvent::Type ImageLoadEvent::kEventType =
++ (QEvent::Type) QEvent::registerEventType();
++
++/*!
++ \brief Guards access to the image by Load threads. If the image is deleted
++ by the UI this proxy persists until all its load threads complete.
++ */
++class ImageProxy
++{
++public:
++ ImageProxy(MythUIImage *image) : m_mutex(), m_image(image) {}
++
++ MythUIImage *GetImage() { QMutexLocker lock(&m_mutex); return m_image; }
++ void Orphan() { QMutexLocker lock(&m_mutex); m_image = NULL; }
++ void PostEvent(ImageLoadEvent *event)
++ {
++ QMutexLocker lock(&m_mutex);
++ if (m_image)
++ QCoreApplication::postEvent(m_image, event);
++ else
++ LOG(VB_GUI | VB_FILE, LOG_DEBUG,
++ QString("ImageLoadThread: Discarding load of %1")
++ .arg(event->GetFilename()));
++ }
++
++private:
++ QMutex m_mutex;
++ MythUIImage *m_image;
++};
++
++//! The proxy is shared by the image and all its load threads.
++typedef QSharedPointer<ImageProxy> ProxyPtr;
++
++/*!
+ * \class ImageLoader
+ */
+ class ImageLoader
+ {
+ public:
+- ImageLoader() { };
+- ~ImageLoader() { };
++ ImageLoader() { }
++ ~ImageLoader() { }
+
+- static QHash<QString, const MythUIImage *> m_loadingImages;
+- static QMutex m_loadingImagesLock;
+- static QWaitCondition m_loadingImagesCond;
++ static QHash<QString, const ImageProxy*> m_loadingImages;
++ static QMutex m_loadingImagesLock;
++ static QWaitCondition m_loadingImagesCond;
+
+- static bool PreLoad(const QString &cacheKey, const MythUIImage *uitype)
++ static bool PreLoad(const QString &cacheKey, const ProxyPtr &proxy)
+ {
+ m_loadingImagesLock.lock();
+
+ // Check to see if the image is being loaded by us in another thread
+ if ((m_loadingImages.contains(cacheKey)) &&
+- (m_loadingImages[cacheKey] == uitype))
++ (m_loadingImages[cacheKey] == proxy.data()))
+ {
+ LOG(VB_GUI | VB_FILE, LOG_DEBUG,
+ QString("ImageLoader::PreLoad(%1), this "
+@@ -153,7 +232,7 @@ class ImageLoader
+ while (m_loadingImages.contains(cacheKey))
+ m_loadingImagesCond.wait(&m_loadingImagesLock);
+
+- m_loadingImages[cacheKey] = uitype;
++ m_loadingImages[cacheKey] = proxy.data();
+ m_loadingImagesLock.unlock();
+
+ return true;
+@@ -229,15 +308,12 @@ class ImageLoader
+ // Must be a copy for thread safety
+ ImageProperties imProps,
+ ImageCacheMode cacheMode,
+- // Included only to check address, could be
+- // replaced by generating a unique value for
+- // each MythUIImage object?
+- const MythUIImage *parent,
++ const ProxyPtr &proxy,
+ bool &aborted,
+ MythImageReader *imageReader = NULL)
+ {
+ QString cacheKey = GenImageLabel(imProps);
+- if (!PreLoad(cacheKey, parent))
++ if (!PreLoad(cacheKey, proxy))
+ {
+ aborted = true;
+ return NULL;
+@@ -390,10 +466,7 @@ class ImageLoader
+ // Must be a copy for thread safety
+ ImageProperties imProps,
+ ImageCacheMode cacheMode,
+- // Included only to check address, could be
+- // replaced by generating a unique value for
+- // each MythUIImage object?
+- const MythUIImage *parent,
++ const ProxyPtr &proxy,
+ bool &aborted)
+ {
+ QString filename = QString("frame-%1-") + imProps.filename;
+@@ -411,7 +484,7 @@ class ImageLoader
+ ImageProperties frameProps = imProps;
+ frameProps.filename = frameFilename;
+
+- MythImage *im = LoadImage(painter, frameProps, cacheMode, parent,
++ MythImage *im = LoadImage(painter, frameProps, cacheMode, proxy,
+ aborted, imageReader);
+
+ if (!im)
+@@ -428,58 +501,9 @@ class ImageLoader
+
+ };
+
+-QHash<QString, const MythUIImage *> ImageLoader::m_loadingImages;
+-QMutex ImageLoader::m_loadingImagesLock;
+-QWaitCondition ImageLoader::m_loadingImagesCond;
+-
+-/*!
+- * \class ImageLoadEvent
+- */
+-class ImageLoadEvent : public QEvent
+-{
+- public:
+- ImageLoadEvent(const MythUIImage *parent, MythImage *image,
+- const QString &basefile, const QString &filename,
+- int number, bool aborted)
+- : QEvent(kEventType),
+- m_parent(parent), m_image(image), m_basefile(basefile),
+- m_filename(filename), m_number(number),
+- m_images(NULL), m_aborted(aborted) { }
+-
+- ImageLoadEvent(const MythUIImage *parent, AnimationFrames *frames,
+- const QString &basefile,
+- const QString &filename, bool aborted)
+- : QEvent(kEventType),
+- m_parent(parent), m_image(NULL), m_basefile(basefile),
+- m_filename(filename), m_number(0),
+- m_images(frames), m_aborted(aborted) { }
+-
+- const MythUIImage *GetParent() const { return m_parent; }
+- MythImage *GetImage() const { return m_image; }
+- const QString GetBasefile() const { return m_basefile; }
+- const QString GetFilename() const { return m_filename; }
+- int GetNumber() const { return m_number; }
+- AnimationFrames *GetAnimationFrames() const { return m_images; }
+- bool GetAbortState() const { return m_aborted; }
+-
+- static Type kEventType;
+-
+- private:
+- const MythUIImage *m_parent;
+- MythImage *m_image;
+- QString m_basefile;
+- QString m_filename;
+- int m_number;
+-
+- // Animated Images
+- AnimationFrames *m_images;
+-
+- // Image Load
+- bool m_aborted;
+-};
+-
+-QEvent::Type ImageLoadEvent::kEventType =
+- (QEvent::Type) QEvent::registerEventType();
++QHash<QString, const ImageProxy*> ImageLoader::m_loadingImages;
++QMutex ImageLoader::m_loadingImagesLock;
++QWaitCondition ImageLoader::m_loadingImagesCond;
+
+ /*!
+ * \class ImageLoadThread
+@@ -487,10 +511,10 @@ QEvent::Type ImageLoadEvent::kEventType =
+ class ImageLoadThread : public QRunnable
+ {
+ public:
+- ImageLoadThread(const MythUIImage *parent, MythPainter *painter,
++ ImageLoadThread(const ProxyPtr &proxy, MythPainter *painter,
+ const ImageProperties &imProps, const QString &basefile,
+ int number, ImageCacheMode mode) :
+- m_parent(parent), m_painter(painter), m_imageProperties(imProps),
++ m_proxy(proxy), m_painter(painter), m_imageProperties(imProps),
+ m_basefile(basefile), m_number(number), m_cacheMode(mode)
+ {
+ }
+@@ -500,6 +524,14 @@ class ImageLoadThread : public QRunnable
+ bool aborted = false;
+ QString filename = m_imageProperties.filename;
+
++ // Don't even bother if parent image no longer exists
++ if (!m_proxy || !m_proxy->GetImage())
++ {
++ LOG(VB_GUI | VB_FILE, LOG_DEBUG,
++ QString("ImageLoadThread: Ignoring load of %1").arg(filename));
++ return;
++ }
++
+ // NOTE Do NOT use MythImageReader::supportsAnimation here, it defeats
+ // the point of caching remote images
+ if (ImageLoader::SupportsAnimation(filename))
+@@ -508,17 +540,16 @@ class ImageLoadThread : public QRunnable
+
+ frames = ImageLoader::LoadAnimatedImage(m_painter,
+ m_imageProperties,
+- m_cacheMode, m_parent,
++ m_cacheMode, m_proxy,
+ aborted);
+
+ if (frames && frames->count() > 1)
+ {
+- ImageLoadEvent *le = new ImageLoadEvent(m_parent, frames,
++ ImageLoadEvent *le = new ImageLoadEvent(m_proxy->GetImage(), frames,
+ m_basefile,
+ m_imageProperties.filename,
+ aborted);
+- QCoreApplication::postEvent(const_cast<MythUIImage*>(m_parent), le);
+-
++ m_proxy->PostEvent(le);
+ return;
+ }
+ delete frames;
+@@ -526,18 +557,19 @@ class ImageLoadThread : public QRunnable
+
+ MythImage *image = ImageLoader::LoadImage(m_painter,
+ m_imageProperties,
+- m_cacheMode, m_parent,
++ m_cacheMode, m_proxy,
+ aborted);
+
+- ImageLoadEvent *le = new ImageLoadEvent(m_parent, image, m_basefile,
++ ImageLoadEvent *le = new ImageLoadEvent(m_proxy->GetImage(), image,
++ m_basefile,
+ m_imageProperties.filename,
+ m_number, aborted);
+- QCoreApplication::postEvent(const_cast<MythUIImage*>(m_parent), le);
++ m_proxy->PostEvent(le);
+ }
+
+ private:
+- const MythUIImage *m_parent;
+- MythPainter *m_painter;
++ const ProxyPtr m_proxy;
++ MythPainter *m_painter;
+ ImageProperties m_imageProperties;
+ QString m_basefile;
+ int m_number;
+@@ -549,13 +581,14 @@ class MythUIImagePrivate
+ {
+ public:
+ explicit MythUIImagePrivate(MythUIImage *p)
+- : m_parent(p), m_UpdateLock(QReadWriteLock::Recursive)
+- { };
+- ~MythUIImagePrivate() {};
+-
+- MythUIImage *m_parent;
++ : m_parent(p), m_UpdateLock(QReadWriteLock::Recursive),
++ m_proxy(ProxyPtr(new ImageProxy(p)))
++ { }
++ ~MythUIImagePrivate() {}
+
++ MythUIImage *m_parent;
+ QReadWriteLock m_UpdateLock;
++ ProxyPtr m_proxy;
+ };
+
+ /////////////////////////////////////////////////////////////////
+@@ -609,13 +642,8 @@ MythUIImage::MythUIImage(MythUIType *parent, const QString &name)
+
+ MythUIImage::~MythUIImage()
+ {
+- // Wait until all image loading threads are complete or bad things
+- // may happen if this MythUIImage disappears when a queued thread
+- // needs it.
+- if (m_runningThreads > 0)
+- {
+- GetMythUI()->GetImageThreadPool()->waitForDone();
+- }
++ // Prevent any updates from running loads
++ d->m_proxy->Orphan();
+
+ Clear();
+
+@@ -695,8 +723,6 @@ void MythUIImage::Init(void)
+ m_animationReverse = false;
+ m_animatedImage = false;
+
+- m_runningThreads = 0;
+-
+ m_showingRandomImage = false;
+ }
+
+@@ -1081,9 +1107,8 @@ bool MythUIImage::Load(bool allowLoadInBackground, bool forceStat)
+ LOG(VB_GUI | VB_FILE, LOG_DEBUG, LOC +
+ QString("Load(), spawning thread to load '%1'").arg(filename));
+
+- m_runningThreads++;
+ ImageLoadThread *bImgThread;
+- bImgThread = new ImageLoadThread(this, GetPainter(),
++ bImgThread = new ImageLoadThread(d->m_proxy, GetPainter(),
+ imProps,
+ bFilename, i,
+ static_cast<ImageCacheMode>(cacheMode2));
+@@ -1102,7 +1127,7 @@ bool MythUIImage::Load(bool allowLoadInBackground, bool forceStat)
+
+ myFrames = ImageLoader::LoadAnimatedImage(GetPainter(), imProps,
+ static_cast<ImageCacheMode>(cacheMode2),
+- this, aborted);
++ d->m_proxy, aborted);
+
+ // TODO We might want to handle an abort here more gracefully
+ if (aborted)
+@@ -1121,7 +1146,7 @@ bool MythUIImage::Load(bool allowLoadInBackground, bool forceStat)
+ image = ImageLoader::LoadImage(GetPainter(),
+ imProps,
+ static_cast<ImageCacheMode>(cacheMode2),
+- this, aborted);
++ d->m_proxy, aborted);
+
+ // TODO We might want to handle an abort here more gracefully
+ if (aborted)
+@@ -1604,8 +1629,6 @@ void MythUIImage::customEvent(QEvent *event)
+ animationFrames = le->GetAnimationFrames();
+ aborted = le->GetAbortState();
+
+- m_runningThreads--;
+-
+ d->m_UpdateLock.lockForRead();
+ QString propFilename = m_imageProperties.filename;
+ d->m_UpdateLock.unlock();
+diff --git a/mythtv/libs/libmythui/mythuiimage.h b/mythtv/libs/libmythui/mythuiimage.h
+index 7847c4a..e5390a1 100644
+--- a/mythtv/libs/libmythui/mythuiimage.h
++++ src/mythtv/libs/libmythui/mythuiimage.h
+@@ -174,8 +174,6 @@ class MUI_PUBLIC MythUIImage : public MythUIType
+
+ ImageProperties m_imageProperties;
+
+- int m_runningThreads;
+-
+ bool m_showingRandomImage;
+ QString m_imageDirectory;
+
+--
+2.1.4
+
diff --git a/abs/core/mythtv/stable-29/mythtv/0292-UPnP-Reduce-startup-latency-by-moving-blocking-code-to-own-thread.patch b/abs/core/mythtv/stable-29/mythtv/0292-UPnP-Reduce-startup-latency-by-moving-blocking-code-to-own-thread.patch
new file mode 100644
index 0000000..6b12a79
--- /dev/null
+++ b/abs/core/mythtv/stable-29/mythtv/0292-UPnP-Reduce-startup-latency-by-moving-blocking-code-to-own-thread.patch
@@ -0,0 +1,98 @@
+From f2226b56c1c03ab76d90b9b081b2c1eb526e71f5 Mon Sep 17 00:00:00 2001
+From: Lawrence Rust <lvr@softsystem.co.uk>
+Date: Wed, 5 Jun 2013 10:52:56 +0100
+Subject: [PATCH] UPnP: Reduce startup latency by moving blocking code to own
+ thread
+
+Signed-off-by: Lawrence Rust <lvr@softsystem.co.uk>
+---
+ mythtv/libs/libmythupnp/ssdp.cpp | 20 ++++++++++----------
+ mythtv/libs/libmythupnp/upnptasknotify.cpp | 9 ++++++++-
+ mythtv/libs/libmythupnp/upnptasknotify.h | 4 +++-
+ 3 files changed, 21 insertions(+), 12 deletions(-)
+
+diff --git a/mythtv/libs/libmythupnp/ssdp.cpp b/mythtv/libs/libmythupnp/ssdp.cpp
+index cf54274..07b5a07 100644
+--- a/mythtv/libs/libmythupnp/ssdp.cpp
++++ src/mythtv/libs/libmythupnp/ssdp.cpp
+@@ -168,21 +168,21 @@ void SSDP::EnableNotifications( int nServicePort )
+ // ------------------------------------------------------------------
+
+ LOG(VB_UPNP, LOG_INFO,
+- "SSDP::EnableNotifications() - sending NTS_byebye");
+- m_pNotifyTask->SetNTS( NTS_byebye );
+- m_pNotifyTask->Execute( NULL );
+-
+- m_bAnnouncementsEnabled = true;
++ "SSDP::EnableNotifications() - sending NTS_byebye2");
++ m_pNotifyTask->SetNTS( NTS_byebye2 );
+ }
++ else
++ {
++ LOG(VB_UPNP, LOG_INFO,
++ "SSDP::EnableNotifications() - sending NTS_alive");
++ m_pNotifyTask->SetNTS( NTS_alive );
++ }
++
++ m_bAnnouncementsEnabled = true;
+
+ // ------------------------------------------------------------------
+ // Add Announcement Task to the Queue
+ // ------------------------------------------------------------------
+-
+- LOG(VB_UPNP, LOG_INFO, "SSDP::EnableNotifications() - sending NTS_alive");
+-
+- m_pNotifyTask->SetNTS( NTS_alive );
+-
+ TaskQueue::Instance()->AddTask(m_pNotifyTask);
+
+ LOG(VB_UPNP, LOG_INFO,
+diff --git a/mythtv/libs/libmythupnp/upnptasknotify.cpp b/mythtv/libs/libmythupnp/upnptasknotify.cpp
+index 3f9b3bd..129a2e8 100644
+--- a/mythtv/libs/libmythupnp/upnptasknotify.cpp
++++ src/mythtv/libs/libmythupnp/upnptasknotify.cpp
+@@ -128,7 +128,9 @@ void UPnpNotifyTask::SendNotifyMsg( MSocketDevice *pSocket,
+
+ pSocket->writeBlock( scPacket, scPacket.length(),
+ pSocket->address(), pSocket->port() );
+- std::this_thread::sleep_for(std::chrono::milliseconds(random() % 250));
++ // Only wait if not sending final bybbye. This speeds up shutdown
++ if (m_eNTS != NTS_byebye)
++ std::this_thread::sleep_for(std::chrono::milliseconds(random() % 250));
+ pSocket->writeBlock( scPacket, scPacket.length(),
+ pSocket->address(), pSocket->port() );
+ }
+@@ -169,6 +171,11 @@ void UPnpNotifyTask::Execute( TaskQueue *pQueue )
+
+ if (m_eNTS == NTS_alive)
+ pQueue->AddTask( (m_nMaxAge / 2) * 1000, (Task *)this );
++ else if (m_eNTS == NTS_byebye2)
++ {
++ m_eNTS = NTS_alive;
++ pQueue->AddTask( this );
++ }
+
+ m_mutex.unlock();
+
+diff --git a/mythtv/libs/libmythupnp/upnptasknotify.h b/mythtv/libs/libmythupnp/upnptasknotify.h
+index 15c23fb..7a6a485 100644
+--- a/mythtv/libs/libmythupnp/upnptasknotify.h
++++ src/mythtv/libs/libmythupnp/upnptasknotify.h
+@@ -37,7 +37,8 @@ class UPnpDevice;
+ typedef enum
+ {
+ NTS_alive = 0,
+- NTS_byebye = 1
++ NTS_byebye = 1,
++ NTS_byebye2
+
+ } UPnpNotifyNTS;
+
+@@ -89,6 +90,7 @@ class UPnpNotifyTask : public Task
+ {
+ case NTS_alive : return( "ssdp:alive" );
+ case NTS_byebye: return( "ssdp:byebye" );
++ case NTS_byebye2: return( "ssdp:byebye" );
+ }
+ return( "unknown" );
+ }
diff --git a/abs/core/mythtv/stable-29/mythtv/0294-0283-FE-Add-network-status-to-machine-status-dialog.patch b/abs/core/mythtv/stable-29/mythtv/0294-0283-FE-Add-network-status-to-machine-status-dialog.patch
new file mode 100644
index 0000000..192f0fc
--- /dev/null
+++ b/abs/core/mythtv/stable-29/mythtv/0294-0283-FE-Add-network-status-to-machine-status-dialog.patch
@@ -0,0 +1,71 @@
+From 273937c9ee4ba00ad049ac3c9fe62ecabd2f8fdb Mon Sep 17 00:00:00 2001
+From: Lawrence Rust <lvr@softsystem.co.uk>
+Date: Thu, 1 Oct 2015 09:56:13 +0100
+Subject: [PATCH 283/290] FE: Add network status to machine status dialog
+
+Signed-off-by: Lawrence Rust <lvr@softsystem.co.uk>
+---
+ mythtv/programs/mythfrontend/statusbox.cpp | 33 ++++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+diff --git a/mythtv/programs/mythfrontend/statusbox.cpp b/mythtv/programs/mythfrontend/statusbox.cpp
+index f0078ea..23c5a24 100644
+--- a/mythtv/programs/mythfrontend/statusbox.cpp
++++ src/mythtv/programs/mythfrontend/statusbox.cpp
+@@ -5,6 +5,8 @@ using namespace std;
+
+ #include <QRegExp>
+ #include <QHostAddress>
++#include <QHostInfo>
++#include <QNetworkInterface>
+
+ #include "mythcorecontext.h"
+ #include "filesysteminfo.h"
+@@ -1221,6 +1223,12 @@ void StatusBox::doMachineStatus()
+ line = tr("This machine:");
+ AddLogLine(line, machineStr);
+
++ // Hostname
++ line = " " + tr("Hostname") + ": " + QHostInfo::localHostName();
++ if ( !QHostInfo::localDomainName().isEmpty())
++ line += "." + QHostInfo::localDomainName();
++ AddLogLine(line, machineStr);
++
+ // uptime
+ if (!getUptime(uptime))
+ uptime = 0;
+@@ -1264,6 +1272,31 @@ void StatusBox::doMachineStatus()
+ }
+ }
+
++ // Network status
++ line = " " + tr("Interfaces") + ":";
++ QString sep = " ";
++ foreach( QNetworkInterface iface, QNetworkInterface::allInterfaces())
++ {
++ QNetworkInterface::InterfaceFlags f = iface.flags();
++ if (!(f & QNetworkInterface::IsUp))
++ continue;
++ if (!(f & QNetworkInterface::IsRunning))
++ continue;
++ if (f & QNetworkInterface::IsLoopBack)
++ continue;
++
++ line += sep + iface.humanReadableName() + " [";
++ sep = ", ";
++ QString sep2 = "";
++ foreach( QNetworkAddressEntry addr, iface.addressEntries())
++ {
++ line += sep2 + addr.ip().toString();
++ sep2 = ", ";
++ }
++ line += "]";
++ }
++ AddLogLine(line, machineStr);
++
+ if (!m_isBackendActive)
+ {
+ line = tr("MythTV server") + ':';
+--
+1.7.9.5
+
diff --git a/abs/core/mythtv/stable-29/mythtv/PKGBUILD b/abs/core/mythtv/stable-29/mythtv/PKGBUILD
index 5e3047b..ce77213 100644
--- a/abs/core/mythtv/stable-29/mythtv/PKGBUILD
+++ b/abs/core/mythtv/stable-29/mythtv/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=mythtv
pkgver=29
-pkgrel=6
+pkgrel=7
commit_hash=`cat ../git_src/git_hash`
pkgdesc="A Homebrew PVR project $commit_hash"
arch=('i686' 'x86_64')
@@ -32,6 +32,11 @@ patches=(
'addDamagedToProgDetails.patch'
'defaultThemeLinHES.patch'
'mythfrontend_en_us.ts_Title_Case.patch'
+ '0006-cardutil_show_displayname.patch'
+ '0037-pull103-Add-heuristic-in-TMDB-script-to-detect-movie-release-years.patch'
+ '0292-UPnP-Reduce-startup-latency-by-moving-blocking-code-to-own-thread.patch'
+ '0294-0283-FE-Add-network-status-to-machine-status-dialog.patch'
+ '0287-MythUiImage-Don-t-block-UI-when-exiting-screens.patch'
)
optdepends=()
@@ -124,5 +129,10 @@ md5sums=('fb5a87c52a31168a0c8fdde72f27cc45'
'0f674b9cad031ba1e03aaf6b5ee1499f'
'6add9c16bbb988067e82029327e567b2'
'b0b238320fa78a4928dce2cea7c85071'
- '2e0ec71d00f0aaf107b0a89c51e55faa'
+ '1164214d9eb41588f8eb3382565cb003'
+ '5f2bd4065b145b7b7ff09dfd6f08276c'
+ '2371cf6e680179c067a6ff7756638128'
+ '1f0dbd44f8c1a89b86bb331086f58578'
+ 'abaef221b00690b329f4dca18676bcd6'
+ '3cccbab70c7615bc47e51790e024d5bf'
'633cd853a89aeee5388daaad21ccec28')
diff --git a/abs/core/mythtv/stable-29/mythtv/mythfrontend_en_us.ts_Title_Case.patch b/abs/core/mythtv/stable-29/mythtv/mythfrontend_en_us.ts_Title_Case.patch
index 1b98065..cc77d79 100644
--- a/abs/core/mythtv/stable-29/mythtv/mythfrontend_en_us.ts_Title_Case.patch
+++ b/abs/core/mythtv/stable-29/mythtv/mythfrontend_en_us.ts_Title_Case.patch
@@ -1,5 +1,5 @@
---- src/mythtv/i18n/mythfrontend_en_us.ts.orig 2017-11-29 19:15:53.700048851 +0000
-+++ src/mythtv/i18n/mythfrontend_en_us.ts 2017-11-29 19:15:39.341909739 +0000
+--- src/mythtv/i18n/mythfrontend_en_us.ts.orig 2017-12-05 22:22:27.933329251 +0000
++++ src/mythtv/i18n/mythfrontend_en_us.ts 2017-12-05 22:14:26.565649455 +0000
@@ -573,7 +573,7 @@
<message>
<location filename="../libs/libmythtv/mpeg/dishdescriptors.cpp" line="400"/>
@@ -1809,7 +1809,7 @@
+ <message>
+ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1153"/>
+ <source>Override SRC quality</source>
-+ <translation>Override SRC Quality</translation>
++ <translation>Override Sample Rate Conversion Quality</translation>
+ </message>
+ <message>
+ <location filename="../programs/mythfrontend/audiogeneralsettings.cpp" line="1157"/>
@@ -6698,6 +6698,15 @@
</message>
<message>
<location filename="../html/htmlstrings.h" line="275"/>
+@@ -8449,7 +8791,7 @@
+ <message>
+ <location filename="../html/htmlstrings.h" line="12"/>
+ <source>Loading ...</source>
+- <translation>Loading ...</translation>
++ <translation>Loading...</translation>
+ </message>
+ <message>
+ <location filename="../html/htmlstrings.h" line="14"/>
@@ -8661,7 +9003,7 @@
<message>
<location filename="../libs/libmythtv/channelscan/iptvchannelfetcher.cpp" line="335"/>
@@ -7027,7 +7036,7 @@
<location filename="../programs/mythfrontend/keygrabber.cpp" line="119"/>
<source>Add key &apos;%1&apos;?</source>
- <translation>Add key &apos;%1&apos;?</translation>
-+ <translation>Add ey &apos;%1&apos;?</translation>
++ <translation>Add Key &apos;%1&apos;?</translation>
</message>
</context>
<context>
@@ -7082,7 +7091,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3335"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3325"/>
<source>Display time</source>
- <translation>Display time</translation>
+- <translation>Display time</translation>
++ <translation>Display Time</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3337"/>
@@ -7094,7 +7104,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3349"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3339"/>
<source>Display recording status</source>
- <translation>Display recording status</translation>
+- <translation>Display recording status</translation>
++ <translation>Display Recording Status</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3351"/>
@@ -7106,7 +7117,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3363"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3353"/>
<source>Display menus</source>
- <translation>Display menus</translation>
+- <translation>Display menus</translation>
++ <translation>Display Menus</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3365"/>
@@ -7167,7 +7179,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3419"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3409"/>
<source>Display channel information</source>
- <translation>Display channel information</translation>
+- <translation>Display channel information</translation>
++ <translation>Display Channel Information</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3421"/>
@@ -7179,7 +7192,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3433"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3423"/>
<source>Display volume information</source>
- <translation>Display volume information</translation>
+- <translation>Display volume information</translation>
++ <translation>Display Volume Information</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3435"/>
@@ -7191,7 +7205,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3447"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3437"/>
<source>Display generic information</source>
- <translation>Display generic information</translation>
+- <translation>Display generic information</translation>
++ <translation>Display Generic Information</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3449"/>
@@ -7203,7 +7218,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3460"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3450"/>
<source>Backlight always on</source>
- <translation>Backlight always on</translation>
+- <translation>Backlight always on</translation>
++ <translation>Backlight Always On</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3462"/>
@@ -7215,7 +7231,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3473"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3463"/>
<source>Heartbeat always on</source>
- <translation>Heartbeat always on</translation>
+- <translation>Heartbeat always on</translation>
++ <translation>Heartbeat Always On</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3475"/>
@@ -7227,7 +7244,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3486"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3476"/>
<source>Display large clock</source>
- <translation>Display large clock</translation>
+- <translation>Display large clock</translation>
++ <translation>Display Large Clock</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3488"/>
@@ -7239,7 +7257,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3500"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3490"/>
<source>LCD key order</source>
- <translation>LCD key order</translation>
+- <translation>LCD key order</translation>
++ <translation>LCD Key Order</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3505"/>
@@ -7251,7 +7270,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3517"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3507"/>
<source>Enable LCD device</source>
- <translation>Enable LCD device</translation>
+- <translation>Enable LCD device</translation>
++ <translation>Enable LCD Device</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3519"/>
@@ -7306,7 +7326,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3830"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3706"/>
<source>Video on the desktop</source>
- <translation>Video on the desktop</translation>
+- <translation>Video on the desktop</translation>
++ <translation>Video on the Desktop</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3803"/>
@@ -7318,7 +7339,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3817"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3724"/>
<source>Frames to skip</source>
- <translation>Frames to skip</translation>
+- <translation>Frames to skip</translation>
++ <translation>Frames to Skip</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3821"/>
@@ -7334,7 +7356,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3783"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3676"/>
<source>Video in the dock</source>
- <translation>Video in the dock</translation>
+- <translation>Video in the dock</translation>
++ <translation>Video in the Dock</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3759"/>
@@ -7346,7 +7369,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3771"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3692"/>
<source>Frames to skip</source>
- <translation>Frames to skip</translation>
+- <translation>Frames to skip</translation>
++ <translation>Frames to Skip</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3775"/>
@@ -7362,7 +7386,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3734"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3630"/>
<source>Video in floating window</source>
- <translation>Video in floating window</translation>
+- <translation>Video in floating window</translation>
++ <translation>Video in Floating Window</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3694"/>
@@ -7374,7 +7399,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3706"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3646"/>
<source>Frames to skip</source>
- <translation>Frames to skip</translation>
+- <translation>Frames to skip</translation>
++ <translation>Frames to Skip</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3710"/>
@@ -7402,7 +7428,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3670"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3583"/>
<source>Video in main window</source>
- <translation>Video in main window</translation>
+- <translation>Video in main window</translation>
++ <translation>Video in Main Window</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3629"/>
@@ -7414,7 +7441,8 @@
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3643"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3601"/>
<source>Frames to skip</source>
- <translation>Frames to skip</translation>
+- <translation>Frames to skip</translation>
++ <translation>Frames to Skip</translation>
</message>
<message>
- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3647"/>
@@ -7735,14 +7763,14 @@
<source>If there are any devices that you do not want to be monitored, list them here with commas in-between. The plugins will ignore them. Requires restart.</source>
- <translation>If there are any devices that you do not want to be monitored, list them here with commas in-between. The plugins will ignore them. Requires restart.</translation>
+ <translation>If there are any devices that you do not want to be monitored, list them here with commas in between. The plugins will ignore them. Requires restart.</translation>
- </message>
- <message>
-- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3848"/>
++ </message>
++ <message>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3308"/>
+ <source>This enables support for monitoring your CD/DVD drives for new disks and launching the proper plugin to handle them. Requires restart.</source>
+ <translation>This enables support for monitoring your CD/DVD drives for new disks and launching the proper plugin to handle them. Requires restart.</translation>
-+ </message>
-+ <message>
+ </message>
+ <message>
+- <location filename="../programs/mythfrontend/globalsettings.cpp" line="3848"/>
+ <location filename="../programs/mythfrontend/globalsettings.cpp" line="3791"/>
+ <source>Main Settings</source>
+ <translation>Main Settings</translation>