summaryrefslogtreecommitdiffstats
path: root/abs/mv-core/myth/release-fixes
diff options
context:
space:
mode:
authorJames Meyer <james.meyer@operamail.com>2008-11-23 03:47:32 (GMT)
committerJames Meyer <james.meyer@operamail.com>2008-11-23 03:47:32 (GMT)
commita73aa26202d19da424722bcf1285b566dbfd9d8d (patch)
treecc24843c13127ef3b5d8207aa7c82be0b1f00d37 /abs/mv-core/myth/release-fixes
parenta1219610c24fc89e2e4c1b81194fe25e40933cf5 (diff)
downloadlinhes_pkgbuild-a73aa26202d19da424722bcf1285b566dbfd9d8d.zip
linhes_pkgbuild-a73aa26202d19da424722bcf1285b566dbfd9d8d.tar.gz
linhes_pkgbuild-a73aa26202d19da424722bcf1285b566dbfd9d8d.tar.bz2
add mythvantage specific packages.
Diffstat (limited to 'abs/mv-core/myth/release-fixes')
-rwxr-xr-xabs/mv-core/myth/release-fixes/Midnight-blue/PKGBUILD21
-rwxr-xr-xabs/mv-core/myth/release-fixes/Midnight-wide/PKGBUILD21
-rwxr-xr-xabs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/HOST_SETTINGS.xml71
-rw-r--r--abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml121
-rwxr-xr-xabs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml.mv106
-rwxr-xr-xabs/mv-core/myth/release-fixes/MythVanage-mythmenu/PKGBUILD15
-rwxr-xr-xabs/mv-core/myth/release-fixes/basic-amber/PKGBUILD20
-rwxr-xr-xabs/mv-core/myth/release-fixes/basic-blue/PKGBUILD20
-rwxr-xr-xabs/mv-core/myth/release-fixes/basic-green/PKGBUILD20
-rwxr-xr-xabs/mv-core/myth/release-fixes/basic-purple/PKGBUILD20
-rwxr-xr-xabs/mv-core/myth/release-fixes/basic-red/PKGBUILD20
-rwxr-xr-xabs/mv-core/myth/release-fixes/compile-plugins.sh17
-rwxr-xr-xabs/mv-core/myth/release-fixes/mythtv-release-fixes/3466-v1.patch240
-rwxr-xr-xabs/mv-core/myth/release-fixes/mythtv-release-fixes/PKGBUILD79
-rw-r--r--abs/mv-core/myth/release-fixes/mythtv-release-fixes/dbconfig.patch19
-rw-r--r--abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_uitypes.cpp.patch21
-rw-r--r--abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_xmlparse.cpp.patch14
-rw-r--r--abs/mv-core/myth/release-fixes/mythtv-release-fixes/jump_snapshot.patch13
-rwxr-xr-xabs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.find_orphans.pl260
-rwxr-xr-xabs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.sh4
-rwxr-xr-xabs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend37
-rwxr-xr-xabs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend.sh117
-rw-r--r--abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.cpp.patch125
-rw-r--r--abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.h.patch25
-rwxr-xr-xabs/mv-core/myth/release-fixes/mythtv-release-fixes/mythtv.install59
-rw-r--r--abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.cpp.patch51
-rw-r--r--abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.h.patch10
-rw-r--r--abs/mv-core/myth/release-fixes/mythtv-release-fixes/reload.patch52
-rw-r--r--abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshot_jump.patch10
-rw-r--r--abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots.diff458
-rw-r--r--abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots2.diff467
-rw-r--r--abs/mv-core/myth/release-fixes/mythtv-release-fixes/smolt_jump.patch10
-rwxr-xr-xabs/mv-core/myth/release-fixes/mythtv-themes/PKGBUILD36
-rw-r--r--abs/mv-core/myth/release-fixes/plugins/mytharchive/PKGBUILD41
-rw-r--r--abs/mv-core/myth/release-fixes/plugins/mythbrowser/PKGBUILD34
-rw-r--r--abs/mv-core/myth/release-fixes/plugins/mythcontrols/PKGBUILD36
-rw-r--r--abs/mv-core/myth/release-fixes/plugins/mythflix/PKGBUILD36
-rw-r--r--abs/mv-core/myth/release-fixes/plugins/mythgallery/PKGBUILD36
-rw-r--r--abs/mv-core/myth/release-fixes/plugins/mythgame/PKGBUILD36
-rw-r--r--abs/mv-core/myth/release-fixes/plugins/mythmovietime/PKGBUILD35
-rw-r--r--abs/mv-core/myth/release-fixes/plugins/mythmusic/PKGBUILD39
-rw-r--r--abs/mv-core/myth/release-fixes/plugins/mythmusic/gcc4.3.patch37
-rw-r--r--abs/mv-core/myth/release-fixes/plugins/mythmusic/music_flac.patch293
-rw-r--r--abs/mv-core/myth/release-fixes/plugins/mythnews/PKGBUILD34
-rw-r--r--abs/mv-core/myth/release-fixes/plugins/mythphone/PKGBUILD42
-rw-r--r--abs/mv-core/myth/release-fixes/plugins/mythsmolt/PKGBUILD27
-rw-r--r--abs/mv-core/myth/release-fixes/plugins/mythvideo/PKGBUILD36
-rw-r--r--abs/mv-core/myth/release-fixes/plugins/mythweather/PKGBUILD37
-rwxr-xr-xabs/mv-core/myth/release-fixes/plugins/mythweb/PKGBUILD34
-rwxr-xr-xabs/mv-core/myth/release-fixes/plugins/mythweb/dblogininit.inc6
-rwxr-xr-xabs/mv-core/myth/release-fixes/plugins/mythweb/mythweb.install37
-rwxr-xr-xabs/mv-core/myth/release-fixes/plugins/mythweb/mythweblighttpd.patch13
-rwxr-xr-xabs/mv-core/myth/release-fixes/syth-lacquer-clean/PKGBUILD22
-rwxr-xr-xabs/mv-core/myth/release-fixes/syth-lacquer-wide/PKGBUILD23
54 files changed, 3513 insertions, 0 deletions
diff --git a/abs/mv-core/myth/release-fixes/Midnight-blue/PKGBUILD b/abs/mv-core/myth/release-fixes/Midnight-blue/PKGBUILD
new file mode 100755
index 0000000..eb0eed1
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/Midnight-blue/PKGBUILD
@@ -0,0 +1,21 @@
+pkgname=Midnight-blue
+pkgver=1
+pkgrel=22
+pkgdesc=""
+url=""
+license=""
+depends=()
+makedepends=()
+conflicts=()
+replaces=()
+backup=()
+source=(http://www.mythvantage.com/src/Midnight-blue.tgz)
+arch=i686
+md5sums=()
+
+build() {
+ cd $startdir/src
+ mkdir -p $startdir/pkg/usr/local/share/mythtv/themes
+ cp -rp $pkgname $startdir/pkg/usr/local/share/mythtv/themes/
+
+}
diff --git a/abs/mv-core/myth/release-fixes/Midnight-wide/PKGBUILD b/abs/mv-core/myth/release-fixes/Midnight-wide/PKGBUILD
new file mode 100755
index 0000000..9ddc525
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/Midnight-wide/PKGBUILD
@@ -0,0 +1,21 @@
+pkgname=Midnight-wide
+pkgver=1
+pkgrel=22
+pkgdesc=""
+url=""
+license=""
+depends=()
+makedepends=()
+conflicts=()
+replaces=()
+backup=()
+source=(http://www.mythvantage.com/src/Midnight-wide.tgz)
+arch=i686
+md5sums=()
+
+build() {
+ cd $startdir/src
+ mkdir -p $startdir/pkg/usr/local/share/mythtv/themes
+ cp -rp $pkgname $startdir/pkg/usr/local/share/mythtv/themes/
+
+}
diff --git a/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/HOST_SETTINGS.xml b/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/HOST_SETTINGS.xml
new file mode 100755
index 0000000..c9b7e20
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/HOST_SETTINGS.xml
@@ -0,0 +1,71 @@
+<mythmenu name="HOST_SETTINGS">
+
+ <button>
+ <type>MV_NETWORK_SETUP_MENU</type>
+ <text>Network Settings</text>
+ <action>EXEC mythinstall -s network </action>
+ </button>
+
+ <button>
+ <type>MV_SYSTEM_SETUP_MENU</type>
+ <text>System type</text>
+ <action>EXEC mythinstall -s hostype </action>
+ </button>
+
+ <button>
+ <type>MV_MISC_SETUP_MENU</type>
+ <text>Misc Settings</text>
+ <action>EXEC mythinstall -s misc </action>
+ </button>
+
+ <button>
+ <type>MV_SOFTWARE_MENU</type>
+ <text>Software</text>
+ <action>EXEC mythinstall -s plugins </action>
+ </button>
+
+ <button>
+ <type>MV_SHUTDOWN_SETUP_MENU</type>
+ <text>Shutdown settings</text>
+ <action>EXEC mythinstall -s sleep </action>
+ </button>
+
+
+<button>
+ <type>MV_ADVANCED_X_SETUP_MENU</type>
+ <text>Display</text>
+ <action>EXEC mythinstall -s advancedX</action>
+</button>
+
+<button>
+ <type>MV_ADVANCED_SETUP_MENU</type>
+ <text>Advanced settings</text>
+ <action>EXEC mythinstall -s advanced</action>
+</button>
+
+
+<button>
+ <type>MV_AUDIO_SETUP_MENU</type>
+ <text>Audio settings</text>
+ <action>EXEC mythinstall -s sound </action>
+</button>
+
+
+<button>
+ <type>MV_ACCESS_SETUP_MENU</type>
+ <text>Access</text>
+ <action>EXEC mythinstall -s accesscontrol </action>
+</button>
+ <!--
+ <button>
+ <type>SETUP_MENU</type>
+ <text>Settings profile manager</text>
+ <action>EXEC mythinstall -t </action>
+
+ </button>
+ -->
+
+
+
+
+</mythmenu>
diff --git a/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml b/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml
new file mode 100644
index 0000000..aeecbbb
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml
@@ -0,0 +1,121 @@
+<mythmenu name="UTIL">
+
+ <button>
+ <type>MUSIC_PLAYLIST</type>
+ <text>Music Tools</text>
+ <text lang="IT">Opzioni Musica</text>
+ <text lang="DE">Musik verwalten</text>
+ <text lang="IS">Tónlistartól</text>
+ <text lang="NL">Muziek Beheren</text>
+ <text lang="SV">Musikverktyg</text>
+ <text lang="FR">Gestion Musiques</text>
+ <text lang="JA">ミュージックツール</text>
+ <text lang="FI">Musiikkityökalut</text>
+ <text lang="ZH_TW">音樂工具</text>
+ <text lang="SI">Glasbena orodja</text>
+ <text lang="ET">Muusikatööriistad</text>
+ <text lang="NB">Musikkverktøy</text>
+ <text lang="DK">Musikværktøjer</text>
+ <text lang="ES">Gestionar Música</text>
+ <text lang="PT">Gerir Música</text>
+ <text lang="CZ">Hudební nástroje</text>
+ <text lang="RU">Работа с музыкой</text>
+ <text lang="PL">Narzędzia muzyczne</text>
+ <text lang="HE">כלי מוסיקה</text>
+ <action>PLUGIN mythmusic</action>
+ <depends>mythmusic</depends>
+ </button>
+
+ <button>
+ <type>VIDEO_MANAGER</type>
+ <text>Video Manager</text>
+ <text lang="IT">Gestione Video</text>
+ <text lang="ES">Gestionar Videos</text>
+ <text lang="CA">Gestionar vídeos</text>
+ <text lang="DK">Filmopsætning</text>
+ <text lang="DE">Videos verwalten</text>
+ <text lang="IS">Kvikmyndatól</text>
+ <text lang="PT">Gerir Filmes</text>
+ <text lang="SV">Filmhanterare</text>
+ <text lang="FR">Gestion Vidéos</text>
+ <text lang="NL">Films Beheren</text>
+ <text lang="JA">ビデオマネージャー</text>
+ <text lang="FI">Videonhallinta</text>
+ <text lang="ZH_TW">電影工具</text>
+ <text lang="SI">Video orodja</text>
+ <text lang="ET">Videohaldus</text>
+ <text lang="NB">Videobehandler</text>
+ <text lang="CZ">Manažer filmů</text>
+ <text lang="RU">Управление фильмами</text>
+ <text lang="PL">Zarządca Filmów</text>
+ <text lang="HE">מנהל וידאו</text>
+ <action>JUMP Video Manager</action>
+ <depends>mythvideo</depends>
+ </button>
+
+ <button>
+ <type>SETUP_KEYS</type>
+ <text>Edit Keys</text>
+ <text lang="IT">Modifica Tasti</text>
+ <text lang="FR">Configurer les touches</text>
+ <text lang="IS">Stilla takka</text>
+ <text lang="DE">Tastenbelegung ändern</text>
+ <text lang="FI">Muokkaa Näppäimiä</text>
+ <text lang="DK">Redigér tasteindstillinger</text>
+ <text lang="SV">Ändra knappar</text>
+ <text lang="ES">Editar Teclas</text>
+ <text lang="PT">Configurar Teclas</text>
+ <text lang="ET">Klahvide muutmine</text>
+ <text lang="NL">Toetsen Aanpassen</text>
+ <text lang="CZ">Editovat klávesy</text>
+ <text lang="JA">キー設定</text>
+ <text lang="RU">Редактировать клавиши</text>
+ <text lang="SI">Urejanje tipk</text>
+ <text lang="PL">Edytuj klawisze</text>
+ <text lang="HE">עריכת מקשים</text>
+ <action>PLUGIN mythcontrols</action>
+ <depends>mythcontrols</depends>
+ </button>
+
+ <button>
+ <type>SETUP_MENU</type>
+ <text>Setup</text>
+ <text lang="IT">Impostazioni</text>
+ <text lang="ES">Configurar</text>
+ <text lang="CA">Configurar</text>
+ <text lang="FR">Paramètres</text>
+ <text lang="DE">Konfiguration</text>
+ <text lang="DK">Indstillinger</text>
+ <text lang="IS">Stillingar</text>
+ <text lang="NL">Configuratie</text>
+ <text lang="PT">Configurações</text>
+ <text lang="SV">Inställningar</text>
+ <text lang="JA">設定</text>
+ <text lang="FI">Asetukset</text>
+ <text lang="ZH_TW">設定</text>
+ <text lang="SI">Nastavitve</text>
+ <text lang="ET">Sätted</text>
+ <text lang="NB">Innstillinger</text>
+ <text lang="CZ">Nastavení</text>
+ <text lang="RU">Настройки</text>
+ <text lang="PL">Ustawienia</text>
+ <text lang="HE">הגדרה</text>
+ <action>MENU main_settings.xml</action>
+ </button>
+ <button>
+ <type>MV_SETUP_MENU</type>
+ <text>MythVantage Settings</text>
+ <action>MENU HOST_SETTINGS.xml</action>
+
+ </button>
+
+ <button>
+ <type>MV_TEMPLATE</type>
+ <text>Settings profile manager</text>
+ <action>EXEC mythinstall -t </action>
+
+ </button>
+
+
+
+</mythmenu>
diff --git a/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml.mv b/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml.mv
new file mode 100755
index 0000000..4a94303
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml.mv
@@ -0,0 +1,106 @@
+<mythmenu name="UTIL">
+
+ <button>
+ <type>MUSIC_PLAYLIST</type>
+ <text>Music Tools</text>
+ <text lang="DE">Musik verwalten</text>
+ <text lang="IS">Tónlistartól</text>
+ <text lang="NL">Muziek Beheren</text>
+ <text lang="SV">Musikverktyg</text>
+ <text lang="FR">Musiques</text>
+ <text lang="JA">ミュージックツール</text>
+ <text lang="FI">Musiikkityökalut</text>
+ <text lang="ZH_TW">音樂工具</text>
+ <text lang="SI">Glasbena orodja</text>
+ <text lang="ET">Muusikatööriistad</text>
+ <text lang="NB">Musikkverktøy</text>
+ <text lang="DK">Musikværktøjer</text>
+ <text lang="ES">Gestionar Música</text>
+ <text lang="PT">Gerir Música</text>
+ <text lang="CZ">Hudební nástroje</text>
+ <text lang="RU">Работа с музыкой</text>
+ <action>PLUGIN mythmusic</action>
+ <depends>mythmusic</depends>
+ </button>
+
+ <button>
+ <type>VIDEO_MANAGER</type>
+ <text>Video Manager</text>
+ <text lang="ES">Gestionar Videos</text>
+ <text lang="CA">Gestionar vídeos</text>
+ <text lang="DK">Filmopsætning</text>
+ <text lang="DE">Videos verwalten</text>
+ <text lang="IS">Kvikmyndatól</text>
+ <text lang="PT">Gerir Filmes</text>
+ <text lang="SV">Filmhanterare</text>
+ <text lang="FR">Vidéos</text>
+ <text lang="NL">Films Beheren</text>
+ <text lang="JA">ビデオマネージャー</text>
+ <text lang="FI">Videonhallinta</text>
+ <text lang="ZH_TW">電影工具</text>
+ <text lang="SI">Video manager</text>
+ <text lang="ET">Videohaldus</text>
+ <text lang="NB">Videobehandler</text>
+ <text lang="CZ">Manažer filmů</text>
+ <text lang="RU">Управление фильмами</text>
+ <action>JUMP Video Manager</action>
+ <depends>mythvideo</depends>
+ </button>
+
+ <button>
+ <type>SETUP_KEYS</type>
+ <text>Edit Keys</text>
+ <text lang="FR">Configurer les touches</text>
+ <text lang="IS">Stilla takka</text>
+ <text lang="DE">Tastenbelegung ändern</text>
+ <text lang="FI">Muokkaa Näppäimiä</text>
+ <text lang="DK">Redigér tasteindstillinger</text>
+ <text lang="SV">Ändra knappar</text>
+ <text lang="ES">Editar Teclas</text>
+ <text lang="PT">Configurar Teclas</text>
+ <text lang="ET">Klahvide muutmine</text>
+ <text lang="NL">Toetsen Aanpassen</text>
+ <text lang="CZ">Editovat klávesy</text>
+ <text lang="JA">キー設定</text>
+ <text lang="RU">Редактировать клавиши</text>
+ <action>PLUGIN mythcontrols</action>
+ <depends>mythcontrols</depends>
+ </button>
+
+ <button>
+ <type>SETUP_MENU</type>
+ <text>Setup</text>
+ <text lang="IT">Impostazioni</text>
+ <text lang="ES">Configurar</text>
+ <text lang="CA">Configurar</text>
+ <text lang="FR">Configuration</text>
+ <text lang="DE">Konfiguration</text>
+ <text lang="DK">Indstillinger</text>
+ <text lang="IS">Stillingar</text>
+ <text lang="NL">Configuratie</text>
+ <text lang="PT">Configurações</text>
+ <text lang="SV">Inställningar</text>
+ <text lang="JA">設定</text>
+ <text lang="FI">Asetukset</text>
+ <text lang="ZH_TW">設定</text>
+ <text lang="SI">Nastavitve</text>
+ <text lang="ET">Sätted</text>
+ <text lang="NB">Innstillinger</text>
+ <text lang="CZ">Nastavení</text>
+ <text lang="RU">Настройки</text>
+ <action>MENU main_settings.xml</action>
+ </button>
+ <button>
+ <type>MV_SETUP_MENU</type>
+ <text>MythVantage Settings</text>
+ <action>MENU HOST_SETTINGS.xml</action>
+
+ </button>
+
+ <button>
+ <type>MV_TEMPLATE</type>
+ <text>Settings profile manager</text>
+ <action>EXEC mythinstall -t </action>
+
+ </button>
+</mythmenu>
diff --git a/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/PKGBUILD b/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/PKGBUILD
new file mode 100755
index 0000000..888228e
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/PKGBUILD
@@ -0,0 +1,15 @@
+pkgname=MythVantage-mythmenu
+pkgver=1.0
+pkgrel=6
+pkgdesc="Myth menu with MythVantage settings"
+#depends=( mythtv-svn )
+source=()
+arch=('i686')
+build() {
+ cd $startdir/src
+ rsync -a --exclude=.svn $startdir/MythVantage-menu .
+ mkdir -p -m 755 $startdir/pkg/usr/local/share/mythtv/themes
+ cp -rp MythVantage-menu $startdir/pkg/usr/local/share/mythtv/themes
+
+}
+
diff --git a/abs/mv-core/myth/release-fixes/basic-amber/PKGBUILD b/abs/mv-core/myth/release-fixes/basic-amber/PKGBUILD
new file mode 100755
index 0000000..f31b77f
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/basic-amber/PKGBUILD
@@ -0,0 +1,20 @@
+pkgname=basic-amber
+pkgver=1
+pkgrel=5
+pkgdesc=""
+url=""
+license=""
+depends=()
+makedepends=()
+conflicts=()
+replaces=()
+backup=()
+source=(http://www.mythvantage.com/src/basic-amber.tgz)
+md5sums=()
+arch=('i686')
+build() {
+ cd $startdir/src
+ mkdir -p $startdir/pkg/usr/local/share/mythtv/themes
+ cp -rp $pkgname $startdir/pkg/usr/local/share/mythtv/themes/
+
+}
diff --git a/abs/mv-core/myth/release-fixes/basic-blue/PKGBUILD b/abs/mv-core/myth/release-fixes/basic-blue/PKGBUILD
new file mode 100755
index 0000000..48e5f8e
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/basic-blue/PKGBUILD
@@ -0,0 +1,20 @@
+pkgname=basic-blue
+pkgver=1
+pkgrel=6
+pkgdesc=""
+url=""
+license=""
+depends=()
+makedepends=()
+conflicts=()
+replaces=()
+backup=()
+source=(http://www.mythvantage.com/src/basic-blue.tgz)
+md5sums=()
+arch=('i686')
+build() {
+ cd $startdir/src
+ mkdir -p $startdir/pkg/usr/local/share/mythtv/themes
+ #cp -rp $pkgname $startdir/pkg/usr/local/share/mythtv/themes/
+ rsync -a --exclude=.svn $pkgname $startdir/pkg/usr/local/share/mythtv/themes/
+}
diff --git a/abs/mv-core/myth/release-fixes/basic-green/PKGBUILD b/abs/mv-core/myth/release-fixes/basic-green/PKGBUILD
new file mode 100755
index 0000000..f735150
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/basic-green/PKGBUILD
@@ -0,0 +1,20 @@
+pkgname=basic-green
+pkgver=1
+pkgrel=5
+pkgdesc=""
+url=""
+license=""
+depends=()
+makedepends=()
+conflicts=()
+replaces=()
+backup=()
+source=(http://www.mythvantage.com/src/basic-green.tgz)
+md5sums=()
+arch=('i686')
+build() {
+ cd $startdir/src
+ mkdir -p $startdir/pkg/usr/local/share/mythtv/themes
+ cp -rp $pkgname $startdir/pkg/usr/local/share/mythtv/themes/
+
+}
diff --git a/abs/mv-core/myth/release-fixes/basic-purple/PKGBUILD b/abs/mv-core/myth/release-fixes/basic-purple/PKGBUILD
new file mode 100755
index 0000000..ff19c9f
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/basic-purple/PKGBUILD
@@ -0,0 +1,20 @@
+pkgname=basic-purple
+pkgver=1
+pkgrel=5
+pkgdesc=""
+url=""
+license=""
+depends=()
+makedepends=()
+conflicts=()
+replaces=()
+backup=()
+source=(http://www.mythvantage.com/src/basic-purple.tgz)
+md5sums=()
+arch=('i686')
+build() {
+ cd $startdir/src
+ mkdir -p $startdir/pkg/usr/local/share/mythtv/themes
+ cp -rp $pkgname $startdir/pkg/usr/local/share/mythtv/themes/
+
+}
diff --git a/abs/mv-core/myth/release-fixes/basic-red/PKGBUILD b/abs/mv-core/myth/release-fixes/basic-red/PKGBUILD
new file mode 100755
index 0000000..2b8db8a
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/basic-red/PKGBUILD
@@ -0,0 +1,20 @@
+pkgname=basic-red
+pkgver=1
+pkgrel=5
+pkgdesc=""
+url=""
+license=""
+depends=()
+makedepends=()
+conflicts=()
+replaces=()
+backup=()
+source=(http://www.mythvantage.com/src/basic-red.tgz)
+md5sums=()
+arch=('i686')
+build() {
+ cd $startdir/src
+ mkdir -p $startdir/pkg/usr/local/share/mythtv/themes
+ cp -rp $pkgname $startdir/pkg/usr/local/share/mythtv/themes/
+
+}
diff --git a/abs/mv-core/myth/release-fixes/compile-plugins.sh b/abs/mv-core/myth/release-fixes/compile-plugins.sh
new file mode 100755
index 0000000..22d03d9
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/compile-plugins.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+logdir=`pwd`
+rm fail.log
+for i in plugins/*
+do
+ if [ -d $i ]
+ then
+ mydir=`pwd`
+
+ cd $i
+# versionpkg -mf||exit 1
+ echo "starting $i"
+ mp -fsr || echo "$i failed" >> $logdir/fail.log
+ cd $mydir
+ fi
+done
+
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/3466-v1.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/3466-v1.patch
new file mode 100755
index 0000000..912ce27
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/3466-v1.patch
@@ -0,0 +1,240 @@
+Index: libs/libmythtv/NuppelVideoPlayer.cpp
+===================================================================
+--- libs/libmythtv/NuppelVideoPlayer.cpp (revision 13535)
++++ libs/libmythtv/NuppelVideoPlayer.cpp (working copy)
+@@ -1475,6 +1475,12 @@
+ }
+ }
+
++void NuppelVideoPlayer::DrawUnusedRects(bool sync)
++{
++ if (videoOutput)
++ videoOutput->DrawUnusedRects(sync);
++}
++
+ void NuppelVideoPlayer::ResetCaptions(uint mode_override)
+ {
+ uint origMode = textDisplayMode;
+Index: libs/libmythtv/guidegrid.h
+===================================================================
+--- libs/libmythtv/guidegrid.h (revision 13535)
++++ libs/libmythtv/guidegrid.h (working copy)
+@@ -86,8 +86,9 @@
+ void paintEvent(QPaintEvent *);
+
+ private slots:
+- void timeout();
+- void jumpToChannelTimeout();
++ void timeCheckTimeout(void);
++ void repaintVideoTimeout(void);
++ void jumpToChannelTimeout(void);
+
+ private:
+ void keyPressEvent(QKeyEvent *e);
+@@ -174,6 +175,7 @@
+ QString currentTimeColor;
+
+ QTimer *timeCheck;
++ QTimer *videoRepaintTimer;
+
+ bool keyDown;
+
+Index: libs/libmythtv/tv_play.h
+===================================================================
+--- libs/libmythtv/tv_play.h (revision 13535)
++++ libs/libmythtv/tv_play.h (working copy)
+@@ -112,6 +112,7 @@
+ void StopEmbeddingOutput(void);
+ bool IsEmbedding(void);
+ void EPGChannelUpdate(uint chanid, QString channum);
++ void DrawUnusedRects(bool sync);
+
+ // Recording commands
+ int PlayFromRecorder(int recordernum);
+Index: libs/libmythtv/guidegrid.cpp
+===================================================================
+--- libs/libmythtv/guidegrid.cpp (revision 13535)
++++ libs/libmythtv/guidegrid.cpp (working copy)
+@@ -261,9 +261,14 @@
+
+ timeCheck = NULL;
+ timeCheck = new QTimer(this);
+- connect(timeCheck, SIGNAL(timeout()), SLOT(timeout()) );
++ connect(timeCheck, SIGNAL(timeout()), SLOT(timeCheckTimeout()) );
+ timeCheck->start(200);
+
++ videoRepaintTimer = new QTimer(this);
++ QObject::connect(videoRepaintTimer, SIGNAL(timeout()),
++ this, SLOT(repaintVideoTimeout()));
++ videoRepaintTimer->start(1000);
++
+ selectState = false;
+
+ updateBackground();
+@@ -281,18 +286,46 @@
+ for (int x = 0; x < MAX_DISPLAY_TIMES; x++)
+ {
+ if (m_timeInfos[x])
++ {
+ delete m_timeInfos[x];
++ m_timeInfos[x] = NULL;
++ }
+ }
+
+ for (int y = 0; y < MAX_DISPLAY_CHANS; y++)
+ {
+ if (m_programs[y])
++ {
+ delete m_programs[y];
++ m_programs[y] = NULL;
++ }
+ }
+
+ m_channelInfos.clear();
+
+- delete theme;
++ if (theme)
++ {
++ delete theme;
++ theme = NULL;
++ }
++
++ if (jumpToChannelTimer)
++ {
++ jumpToChannelTimer->deleteLater();
++ jumpToChannelTimer = NULL;
++ }
++
++ if (timeCheck)
++ {
++ timeCheck->deleteLater();
++ timeCheck = NULL;
++ }
++
++ if (videoRepaintTimer)
++ {
++ videoRepaintTimer->deleteLater();
++ videoRepaintTimer = NULL;
++ }
+ }
+
+ void GuideGrid::keyPressEvent(QKeyEvent *e)
+@@ -533,7 +566,7 @@
+ return m_channelInfos[idx].chanid;
+ }
+
+-void GuideGrid::timeout()
++void GuideGrid::timeCheckTimeout(void)
+ {
+ timeCheck->changeInterval((int)(60 * 1000));
+ QTime new_time = QTime::currentTime();
+@@ -561,6 +594,12 @@
+ repaint(curInfoRect, false);
+ }
+
++void GuideGrid::repaintVideoTimeout(void)
++{
++ timeCheck->changeInterval(1000);
++ update(videoRect);
++}
++
+ void GuideGrid::fillChannelInfos(bool gotostartchannel)
+ {
+ m_channelInfos.clear();
+@@ -974,6 +1013,7 @@
+ if (r.intersects(videoRect) && m_player)
+ {
+ timeCheck->changeInterval((int)(200));
++ m_player->DrawUnusedRects(false);
+ }
+
+ qApp->unlock();
+@@ -1794,7 +1834,10 @@
+ ChannelInfo info = m_channelInfos[idx];
+
+ if (m_player)
++ {
+ m_player->EPGChannelUpdate(info.chanid, info.chanstr);
++ videoRepaintTimer->start(200);
++ }
+ }
+
+ //
+Index: libs/libmythtv/NuppelVideoPlayer.h
+===================================================================
+--- libs/libmythtv/NuppelVideoPlayer.h (revision 13535)
++++ libs/libmythtv/NuppelVideoPlayer.h (working copy)
+@@ -118,6 +118,7 @@
+ void StopEmbedding(void);
+ void ExposeEvent(void);
+ bool IsEmbedding(void);
++ void DrawUnusedRects(bool sync);
+
+ // Audio Sets
+ void SetNoAudio(void) { no_audio_out = true; }
+Index: libs/libmythtv/tv_play.cpp
+===================================================================
+--- libs/libmythtv/tv_play.cpp (revision 13535)
++++ libs/libmythtv/tv_play.cpp (working copy)
+@@ -5035,6 +5035,12 @@
+ return false;
+ }
+
++void TV::DrawUnusedRects(bool sync)
++{
++ if (nvp)
++ nvp->DrawUnusedRects(sync);
++}
++
+ void TV::doEditSchedule(int editType)
+ {
+ if (!playbackinfo)
+Index: libs/libmythtv/videoout_xv.cpp
+===================================================================
+--- libs/libmythtv/videoout_xv.cpp (revision 13535)
++++ libs/libmythtv/videoout_xv.cpp (working copy)
+@@ -2465,7 +2465,7 @@
+ }
+
+ if ((needrepaint || xv_need_bobdeint_repaint) &&
+- (VideoOutputSubType() >= XVideo))
++ (VideoOutputSubType() >= XVideo) && !embedding)
+ {
+ DrawUnusedRects(/* don't do a sync*/false);
+ }
+@@ -2480,12 +2480,6 @@
+
+ void VideoOutputXv::DrawUnusedRects(bool sync)
+ {
+- // Unfortunately, this gets drawn in the wrong place on prebuffering
+- // pauses when embedding and this is rarely useful when embedding
+- // since the background is drawn in guidegrid so we bail here. -- dtk
+- if (embedding)
+- return;
+-
+ // boboff assumes the smallest interlaced resolution is 480 lines - 5%
+ bool use_bob = (m_deinterlacing && m_deintfiltername == "bobdeint");
+ int boboff_raw = (int)round(((double)display_video_rect.height()) /
+@@ -2512,7 +2506,12 @@
+
+ X11L;
+
+- if (xv_draw_colorkey && needrepaint)
++ // This is used to avoid drawing the colorkey when embedding and
++ // not using overlay. This is needed because we don't paint this
++ // in the vertical retrace period when calling this from the EPG.
++ bool clrdraw = xv_colorkey || !embedding;
++
++ if (xv_draw_colorkey && needrepaint && clrdraw)
+ {
+ XSetForeground(XJ_disp, XJ_gc, xv_colorkey);
+ XFillRectangle(XJ_disp, XJ_curwin, XJ_gc,
+@@ -2521,7 +2520,7 @@
+ display_visible_rect.width(),
+ display_visible_rect.height() - 2 * boboff);
+ }
+- else if (xv_draw_colorkey && xv_need_bobdeint_repaint)
++ else if (xv_draw_colorkey && xv_need_bobdeint_repaint && clrdraw)
+ {
+ // if this is only for deinterlacing mode switching, draw
+ // the border areas, presumably the main image is undamaged.
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/PKGBUILD b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/PKGBUILD
new file mode 100755
index 0000000..c210b55
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/PKGBUILD
@@ -0,0 +1,79 @@
+pkgname=mythtv-release-fixes
+pkgver=18322
+pkgrel=13
+pkgdesc=".21 A personal video recorder for Linux"
+url="http://www.mythtv.org"
+license="GPL"
+depends=('lame' 'libmysqlclient' 'alsa-lib' 'wget' 'qt3' 'x-server' 'freetype2' 'libmpeg2' 'libxml2' 'libraw1394' 'lirc' 'perl-date-manip' 'libavc1394' 'libdc1394' 'libiec61883')
+makedepends=('subversion')
+conflicts=(mythtv-svn)
+replaces=()
+backup=()
+options=(!strip)
+MAKEFLAGS="-j6"
+
+install='mythtv.install'
+#source=(mythbackend myth.sh 3466-v1.patch reload.patch)
+source=(mythbackend myth.sh myth.find_orphans.pl dbconfig.patch myththemedmenu.cpp.patch myththemedmenu.h.patch screenshots2.diff screenshot_jump.patch pop_be_restart.h.patch pop_be_restart.cpp.patch jump_snapshot.patch smolt_jump.patch)
+arch=('i686')
+md5sums=()
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythtv
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythtv
+_svnmod=mythtv
+
+build() {
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ cd $startdir/src/mythtv
+ patch -p0 < ../dbconfig.patch
+ grep snapshot programs/mythfrontend/networkcontrol.cpp|grep -q jumpMap
+ status=$?
+
+ if [ $status != 0 ]
+ then
+ echo "patching for screenshot"
+ patch -p0 < ../screenshots2.diff
+ patch -p0 < ../screenshot_jump.patch
+ # patch -p0 < ../jump_snapshot.patch
+
+ else
+ echo "screenshot already patched"
+ fi
+ patch -p0 < ../myththemedmenu.cpp.patch
+ patch -p0 < ../myththemedmenu.h.patch
+ patch -p0 < ../pop_be_restart.h.patch
+ patch -p0 < ../pop_be_restart.cpp.patch
+ patch -p0 < ../smolt_jump.patch
+ sed -i -e "s/\`(svnversion \$\${SVNTREEDIR} 2>\/dev\/null) || echo Unknown\`/$pkgver/" version.pro
+ make distclean
+ make clean
+ ./configure --prefix=/usr/local --enable-xvmc --enable-xvmc-pro --enable-opengl-vsync --enable-dvb --enable-firewire --compile-type=release --with-bindings=perl --disable-audio-arts --disable-xrandr --disable-audio-jack
+ #./configure --prefix=/usr/local --enable-xvmc --enable-xvmc-pro --enable-opengl-vsync --enable-dvb --enable-firewire --compile-type=release --disable-audio-arts --disable-xrandr --without-bindings=perl --disable-audio-jack
+. /etc/profile
+
+ make
+ make INSTALL_ROOT=$startdir/pkg install
+ mkdir -p $startdir/pkg/usr/local/share/mythtv/contrib
+ mkdir -p $startdir/pkg/etc/rc.d
+ mkdir -p $startdir/pkg/var/log/mythtv
+ mkdir -p $startdir/pkg/etc/profile.d
+ install -m0755 ../myth.sh $startdir/pkg/etc/profile.d/
+# install contrib
+ mkdir -p $startdir/pkg/usr/local/share/mythtv/contrib || return 1
+ #cp -rp contrib/* $startdir/pkg/usr/local/share/mythtv/contrib
+ rsync -a --exclude=.svn contrib/* $startdir/pkg/usr/local/share/mythtv/contrib
+ echo "-release-fixes" > $startdir/pkg/usr/local/share/mythtv/.releasetype
+ #install -m0755 themes/*.ttf $startdir/pkg/usr/local/share/mythtv/themes/
+ # set suid on mythfrontend
+# chmod a+s $startdir/pkg/usr/local/bin/mythfrontend
+
+# mkdir -p $startdir/pkg/usr/lib/
+# mv $startdir/pkg/usr/local/lib/perl5 $startdir/pkg/usr/lib/perl5
+ cd $startdir/src/mythtv/contrib
+ gcc -Wall -o firewire_tester firewire_tester.c -liec61883 -lraw1394
+ install -m0755 firewire_tester $startdir/pkg/usr/local/bin/firewire_tester
+ install -m0755 $startdir/pkg/usr/local/share/mythtv/contrib/optimize_mythdb.pl $startdir/pkg/usr/local/bin/optimize_mythdb.pl
+ cp $startdir/src/myth.find_orphans.pl $startdir/pkg/usr/local/share/mythtv/contrib/myth.find_orphans.pl
+ install -m0755 $startdir/pkg/usr/local/share/mythtv/contrib/myth.find_orphans.pl $startdir/pkg/usr/local/bin/myth.find_orphans.pl
+
+
+}
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/dbconfig.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/dbconfig.patch
new file mode 100644
index 0000000..1d181ac
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/dbconfig.patch
@@ -0,0 +1,19 @@
+--- libs/libmyth/mythcontext.cpp 2007-10-04 00:20:28.000000000 -0500
++++ libs/libmyth/mythcontext.cpp.new 2007-11-12 22:54:57.000000000 -0600
+@@ -852,14 +852,14 @@
+ cout << endl << error << endl << endl;
+ response = getResponse("Would you like to configure the database "
+ "connection now?",
+- "yes");
++ "no");
+ if (!response || response.left(1).lower() != "y")
+ return false;
+
+ params.dbHostName = getResponse("Database host name:",
+ params.dbHostName);
+ response = getResponse("Should I test connectivity to this host "
+- "using the ping command?", "yes");
++ "using the ping command?", "no");
+ params.dbHostPing = (!response || response.left(1).lower() != "y");
+
+ params.dbPort = intResponse("Database non-default port:",
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_uitypes.cpp.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_uitypes.cpp.patch
new file mode 100644
index 0000000..b87b89f
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_uitypes.cpp.patch
@@ -0,0 +1,21 @@
+--- mythtv/libs/libmyth/uitypes.cpp.orig 2007-11-30 14:03:07.000000000 -0600
++++ mythtv/libs/libmyth/uitypes.cpp 2007-11-30 14:04:09.000000000 -0600
+@@ -3831,15 +3831,15 @@
+ //
+ // Debugging, draw edges around bins
+ //
+-
+- /*
++ if (m_debug == true)
++ {
+ p->setPen(QColor(255,0,0));
+ CornerMap::Iterator it;
+ for ( it = bin_corners.begin(); it != bin_corners.end(); ++it )
+ {
+ p->drawRect(it.data());
+ }
+- */
++ }
+
+ }
+
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_xmlparse.cpp.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_xmlparse.cpp.patch
new file mode 100644
index 0000000..f479bbe
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_xmlparse.cpp.patch
@@ -0,0 +1,14 @@
+--- mythtv/libs/libmyth/xmlparse.cpp.orig 2007-11-30 14:03:00.000000000 -0600
++++ mythtv/libs/libmyth/xmlparse.cpp 2007-11-30 14:06:22.000000000 -0600
+@@ -2618,6 +2618,11 @@
+ area = parseRect(getFirstText(info));
+ normalizeRect(area);
+ }
++ if (info.tagName() == "debug")
++ {
++ if (getFirstText(info) == "true")
++ container->SetDebug(true);
++ }
+ else if (info.tagName() == "image")
+ {
+ QString imgname = "";
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/jump_snapshot.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/jump_snapshot.patch
new file mode 100644
index 0000000..2d2c68b
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/jump_snapshot.patch
@@ -0,0 +1,13 @@
+--- libs/libmythui/mythmainwindow.cpp.orrig 2008-03-19 18:43:08.000000000 +0000
++++ libs/libmythui/mythmainwindow.cpp 2008-03-19 18:43:51.000000000 +0000
+@@ -1132,7 +1132,9 @@
+
+ void MythMainWindow::JumpTo(const QString& destination, bool pop)
+ {
+- if (d->destinationMap.count(destination) > 0 && d->exitmenucallback == NULL)
++ if (destination == "ScreenShot")
++ screenShot();
++ else if (d->destinationMap.count(destination) > 0 && d->exitmenucallback == NULL)
+ {
+ d->exitingtomain = true;
+ d->popwindows = pop;
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.find_orphans.pl b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.find_orphans.pl
new file mode 100755
index 0000000..c258e1d
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.find_orphans.pl
@@ -0,0 +1,260 @@
+#!/usr/bin/perl
+
+# check for recording anomolies -
+# based somewhat on greg froese's "myth.rebuilddatabase.pl"
+# -- Lincoln Dale <ltd@interlink.com.au>, September 2006
+# 2007-03-11: Added pretty print of unknown files vs. orphaned thumbnails. (Robert Kulagowski)
+
+# The intent of this script is to be able to find orphaned rows in the 'recorded' table
+# (entries which don't have matching media files) and orphaned media files (potentially
+# taking up gigabytes of otherwise usable disk space) which have no matching row in
+# the 'recorded' db table.
+#
+# By default, running the script will simply return a list of problems it finds.
+# Running with --dodbdelete will remove db recorded rows for which there is no matching
+# media file. Running with --dodelete will delete media files for which there is no
+# matching db record.
+#
+# This script may be useful to fix up some orphaned db entries (causes mythweb to run
+# verrry slow) as well as reclaim some disk space from some orphaned media files.
+# (in an ideal world, neither of these would ever happen, but i've seen both happen in reality).
+# This script makes it easy to keep track of whether it has or hasn't happened, even if you
+# have thousands of recordings and terabytes of stored media.
+#
+# no warranties expressed or implied. if you run this and it deletes all your recordings
+# and sets mythtv to fill up all your disk space with The Home Shopping Network, its entirely
+# your fault.
+
+my $progname = "myth.find_orphans.pl";
+my $revision = "0.20";
+
+use DBI;
+use Sys::Hostname;
+use Getopt::Long;
+
+#
+# options
+#
+
+my $opt_host = hostname;
+my $opt_dbhost = "localhost";
+my $opt_database = "mythconverg";
+my $opt_user = "mythtv";
+my $opt_pass = "mythtv";
+my $opt_ext = "{nuv,mpg,mpeg,avi}";
+my $opt_dir = "";
+my $opt_dodelete = 0;
+my $opt_dodbdelete = 0;
+my $debug = 0;
+my $opt_help = 0;
+
+GetOptions(
+ 'host=s' => \$opt_host,
+ 'dbhost=s' => \$opt_dbhost,
+ 'database=s' => \$opt_database,
+ 'user=s' => \$opt_user,
+ 'pass=s' => \$opt_pass,
+ 'dir=s' => \$opt_dir,
+ 'dodelete' => \$opt_dodelete,
+ 'dodbdelete' => \$opt_dodbdelete,
+ 'debug+' => \$debug,
+ 'help' => \$opt_help,
+ 'h' => \$opt_help,
+ 'v' => \$opt_help);
+
+if ($opt_help) {
+ print<<EOF
+$progname (rev $revision)
+(checks MythTV recording directories for orphaned files)
+
+options:
+ --host=(host) MythTV backend host ($opt_host)
+ --dbhost=(host) host where MySQL database for backend is ($opt_dbhost)
+ --database=(dbname) MythTV database ($opt_database)
+ --user=(user) MySQL MythTV database user ($opt_user)
+ --pass=(pass) MySQL MythTV database password ($opt_pass)
+ --dir=directories manually specify recording directories (otherwise setting is from database)
+ --debug increase debug level
+ --dodbdelete remove recorded db entries with no matching file (default: don't)
+ --dodelete delete files with no record (default: don't)
+
+EOF
+;
+ exit(0);
+}
+
+#
+# go go go!
+#
+
+my $valid_recordings = 0;
+my $missing_recordings = 0;
+my $errors = 0;
+my $unknown_files = 0;
+my $known_files = 0;
+my $unknown_size = 0;
+my $known_size = 0;
+my $unknown_thumbnail = 0;
+
+if (!($dbh = DBI->connect("dbi:mysql:database=$opt_database:host=$opt_dbhost","$opt_user","$opt_pass"))) {
+ die "Cannot connect to database $opt_database on host $opt_dbhost: $!\n";
+}
+
+if ($opt_dir eq "") {
+ &dir_lookup("SELECT dirname FROM storagegroup WHERE hostname=(?)");
+ &dir_lookup("SELECT data FROM settings WHERE value='RecordFilePrefix' AND hostname=(?)");
+
+ printf STDERR "Recording directories ($opt_host): $opt_dir\n" if $debug;
+}
+
+if ($opt_dir eq "") {
+ printf "ERROR: no directory found or specified\n";
+ exit 1;
+}
+
+foreach $d (split(/,/,$opt_dir)) {
+ $d =~ s/\/$//g; # strip trailing /
+ $dirs{$d}++;
+}
+
+
+#
+# look in recorded table, make sure we can find every file ..
+#
+
+my $q = "SELECT title, subtitle, starttime, endtime, chanid, basename FROM recorded WHERE hostname=(?) ORDER BY starttime";
+$sth = $dbh->prepare($q);
+$sth->execute($opt_host) || die "Could not execute ($q): $!\n";
+
+while (my @row=$sth->fetchrow_array) {
+ ($title, $subtitle, $starttime, $endtime, $channel, $basename) = @row;
+
+ # see if we can find it...
+ $loc = find_file($basename);
+ if ($loc eq "") {
+ printf "Missing media: %s (title:%s, start:%s)\n",$basename,$title,$starttime;
+ $missing_recordings++;
+
+ if ($opt_dodbdelete) {
+ my $sql = sprintf "DELETE FROM recorded WHERE basename LIKE \"%s\" LIMIT 1",$basename;
+ printf "performing database delete: %s\n",$sql;
+ $dbh->do($sql) || die "Could not execute $sql: $!\n";
+ }
+ } else {
+ $valid_recordings++;
+ $seen_basename{$basename}++;
+ $seen_basename{$basename.".png"}++; # thumbnail
+ }
+}
+
+#
+# look in recording directories, see if there are extra files not in database
+#
+
+foreach my $this_dir (keys %dirs) {
+ opendir(DIR, $this_dir) || die "cannot open directory $this_dir: $!\n";
+ foreach $this_file (readdir(DIR)) {
+ if (-f "$this_dir/$this_file") {
+
+ next if ($this_file eq "nfslockfile.lock");
+ next if ($this_file =~ m/^mythconv.*/);
+ next if ($this_dir eq "/data/database_backup");
+
+ my $this_filesize = -s "$this_dir/$this_file";
+ if ($seen_basename{$this_file} == 0) {
+ $sorted_filesizes{$this_filesize} .= sprintf "unknown file [%s]: %s/%s\n",pretty_filesize($this_filesize),$this_dir,$this_file;
+ $unknown_size += $this_filesize;
+ if (substr($this_file,-4) eq ".png") {
+ $unknown_thumbnail++;
+ }
+ else {
+ $unknown_files++;
+ }
+
+ if ($opt_dodelete) {
+ printf STDERR "deleting [%s]: %s/%s\n",pretty_filesize($this_filesize),$this_dir,$this_file;
+ unlink "$this_dir/$this_file";
+
+ if (-f "$this_dir/$this_file") {
+ $errors++;
+ printf "ERROR: could not delete $this_dir/$this_file\n";
+ }
+ }
+ } else {
+ $known_files++;
+ $known_size += $this_filesize;
+ printf "KNOWN file [%s]: %s/%s\n",pretty_filesize($this_filesize),$this_dir,$this_file if $debug;
+ }
+ } else {
+ printf "NOT A FILE: %s/%s\n",$this_dir,$this_file if $debug;
+ }
+ }
+ closedir DIR;
+}
+
+
+#
+# finished, report results
+#
+
+foreach my $key (sort { $a <=> $b } keys %sorted_filesizes) {
+ printf $sorted_filesizes{$key};
+}
+
+printf "Summary:\n";
+printf " Host: %s, Directories: %s\n", $opt_host, join(" ",keys %dirs);
+printf " %d ERRORS ENCOUNTERED (see above for details)\n",$errors if ($errors > 0);
+printf " %d valid recording%s, %d missing recording%s %s\n",
+ $valid_recordings, ($valid_recordings != 1 ? "s" : ""),
+ $missing_recordings, ($missing_recordings != 1 ? "s" : ""),
+ ($missing_recordings > 0 ? ($opt_dodbdelete ? "were fixed" : "not fixed, check above is valid and use --dodbdelete to fix") : "");
+printf " %d known media files using %s\n %d orphaned thumbnails with no corresponding recording\n %d unknown files using %s %s\n",
+ $known_files, pretty_filesize($known_size),
+ $unknown_thumbnail,$unknown_files, pretty_filesize($unknown_size),
+ ($unknown_files > 0 ? ($opt_dodelete ? "were fixed" : "not fixed, check above and use --dodelete to clean up if the above output is accurate") : "");
+
+exit(0);
+
+###########################################################################
+# filesize bling
+
+sub pretty_filesize
+{
+ local($fsize) = @_;
+ return sprintf "%0.1fGB",($fsize / 1000000000) if ($fsize >= 1000000000);
+ return sprintf "%0.1fMB",($fsize / 1000000) if ($fsize >= 1000000);
+ return sprintf "%0.1fKB",($fsize / 1000) if ($fsize >= 1000);
+ return sprintf "%0.0fB",$fsize;
+}
+
+###########################################################################
+# find a file in directories without globbing
+
+sub find_file
+{
+ local($fname) = @_;
+
+ foreach my $d (keys %dirs) {
+ my $f = $d."/".$fname;
+ if (-e $f) {
+ return $f;
+ }
+ }
+ return;
+}
+
+###########################################################################
+
+sub dir_lookup
+{
+ my $query = shift;
+
+ $sth = $dbh->prepare($query);
+ $sth->execute($opt_host) || die "Could not execute ($dir_query)";
+ while (my @row = $sth->fetchrow_array) {
+ $opt_dir .= "," if ($opt_dir ne "");
+ $opt_dir .= $row[0];
+ }
+}
+
+###########################################################################
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.sh b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.sh
new file mode 100755
index 0000000..fb7122c
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.sh
@@ -0,0 +1,4 @@
+export PATH=$PATH:/usr/local/bin
+# set core file size to 0
+ulimit -c 0
+export MALLOC_CHECK_=0 \ No newline at end of file
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend
new file mode 100755
index 0000000..f96c6b7
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/bin/mythbackend`
+case "$1" in
+ start)
+ stat_busy "Starting MythTV Backend"
+ [ ! -e /var/run/mysqld.pid ] && echo -n "mysqld not started" && stat_fail && exit
+ [ -z "$PID" ] && /usr/local/bin/mythbackend -d -l /var/log/mythbackend.log -v quiet
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ echo $PID > /var/run/mythbackend.pid
+ add_daemon mythbackend
+ stat_done
+ fi
+ ;;
+ stop)
+ stat_busy "Stopping MythTV Backend"
+ [ ! -z "$PID" ] && kill $PID &>/dev/null
+ if [ $? -gt 0 ]; then
+ stat_fail
+ else
+ rm_daemon mythbackend
+ stat_done
+ fi
+ ;;
+ restart)
+ $0 stop
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend.sh b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend.sh
new file mode 100755
index 0000000..e7a7b70
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend.sh
@@ -0,0 +1,117 @@
+#!/bin/bash
+#
+# /etc/rc.d/init.d/mythbackend
+#
+# Starts the mythbackend as a daemon
+#
+# chkconfig: 345 90 10
+# description: Starts the mythbackend process as a daemon after the XWindows \
+# system is started, in runlevel 5. This allows scheduled \
+# recordings to occur without manual intervention.
+# processname: mythbackend
+
+# Copyright (c) by Michael Thomson <linux at m-thomson dot net>
+# With thanks to Stu Tomlinson <stu at nosnilmot dot com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+# Default values to use if none are supplied in the config file.
+# User who should start the mythbackend processes
+MBE_USER="root"
+# Directory holding the mythbackend binary
+MBE_LOCATION="/usr/local/bin/"
+# Name of mythbackend binary
+MBE_PROG="mythbackend"
+# Full path to mythbackend log file
+MBE_LOGFILE="/var/log/mythtv/mythbackend.log"
+
+# Source function library.
+. /etc/init.d/functions
+
+# Source config file if available
+if [ -f "/etc/sysconfig/mythbackend" ]; then
+ . /etc/sysconfig/mythbackend
+fi
+
+test -x ${MBE_LOCATION}${MBE_PROG} || exit 0
+
+RETVAL=0
+
+#
+# See how we were called.
+#
+
+start() {
+ # Check if mythbackend is already running
+ if [ ! -f /var/lock/subsys/${MBE_PROG} ]; then
+ echo -n "Starting ${MBE_PROG}: "
+ # /usr/local/bin/mythbackend -d -l /some/log/file
+ #daemon --user ${MBE_USER} ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE}
+ ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE}
+ RETVAL=$?
+ [ $RETVAL -eq 0 ] && touch /var/lock/subsys/${MBE_PROG}
+ echo
+ fi
+ return $RETVAL
+}
+
+stop() {
+ echo -n "Stopping ${MBE_PROG}: "
+ killproc ${MBE_LOCATION}${MBE_PROG}
+ RETVAL=$?
+ [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/${MBE_PROG}
+ echo
+ return $RETVAL
+}
+
+
+restart() {
+ stop
+ start
+}
+
+reload() {
+ restart
+}
+
+status_at() {
+ status ${MBE_LOCATION}${MBE_PROG}
+}
+
+case "$1" in
+start)
+ start
+ ;;
+stop)
+ stop
+ ;;
+reload|restart)
+ restart
+ ;;
+condrestart)
+ if [ -f /var/lock/subsys/${MBE_PROG} ]; then
+ restart
+ fi
+ ;;
+status)
+ status_at
+ ;;
+*)
+ echo "Usage: $0 {start|stop|restart|condrestart|status}"
+ exit 1
+esac
+
+exit $?
+exit $RETVAL
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.cpp.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.cpp.patch
new file mode 100644
index 0000000..f5baccd
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.cpp.patch
@@ -0,0 +1,125 @@
+--- libs/libmythui/myththemedmenu.cpp.orig 2008-01-31 15:26:38.000000000 +0000
++++ libs/libmythui/myththemedmenu.cpp 2008-02-07 22:24:27.000000000 +0000
+@@ -2102,6 +2102,10 @@
+ }
+ lastbutton = NULL;
+ }
++ else if (action == "MENU")
++ {
++ parent->doMenu();
++ }
+ else if (action == "EJECT")
+ {
+ myth_eject();
+@@ -2482,6 +2486,8 @@
+
+ if (d->foundtheme)
+ d->parseMenu(menufile);
++
++ m_menuPopup = NULL;
+ }
+
+ MythThemedMenu::~MythThemedMenu(void)
+@@ -2592,3 +2598,102 @@
+ MythScreenType::aboutToShow();
+ d->updateLCD();
+ }
++void MythThemedMenu::doMenu()
++{
++ int allowsd = gContext->GetNumSetting("AllowQuitShutdown");
++ if (m_menuPopup)
++ return;
++ QString label = "System Menu";
++ MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
++ m_menuPopup = new MythDialogBox(label, mainStack, "menuPopup");
++ if (m_menuPopup->Create())
++ mainStack->AddScreen(m_menuPopup);
++
++
++ if ( allowsd != 0 && allowsd !=4 )
++ {
++ m_menuPopup->SetReturnEvent(this,"popmenu_exit");
++ m_menuPopup->AddButton("Shutdown");
++ m_menuPopup->AddButton("Reboot");
++ m_menuPopup->AddButton("About");
++ m_menuPopup->AddButton("Cancel");
++ }
++ else
++ {
++ m_menuPopup->SetReturnEvent(this,"popmenu_noexit");
++ m_menuPopup->AddButton("About");
++ m_menuPopup->AddButton("Cancel");
++ }
++}
++
++void MythThemedMenu::aboutScreen()
++{
++{
++ extern const char *myth_source_version;
++ extern const char *myth_source_path;
++ QString distro_line;
++ distro_line="";
++
++ QFile file("/etc/os_myth_release");
++ if ( file.open(IO_ReadOnly | IO_Translate) )
++ {
++ QTextStream t( &file ); // use a text stream
++ distro_line = t.readLine();
++ file.close();
++ }
++
++ QString label = "";
++ label.append(QObject::tr("Revision: ") + myth_source_version + " \n Branch:" + myth_source_path + "\n" + distro_line );
++
++ MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
++ m_menuPopup = new MythDialogBox(label, mainStack, "About");
++ if (m_menuPopup->Create())
++ mainStack->AddScreen(m_menuPopup);
++
++ m_menuPopup->SetReturnEvent(this,"About");
++ m_menuPopup->AddButton("OK!");
++ }
++}
++
++void MythThemedMenu::customEvent(QCustomEvent *event)
++{
++ if (event->type() == kMythDialogBoxCompletionEventType)
++ {
++ DialogCompletionEvent *dce =
++ dynamic_cast<DialogCompletionEvent*>(event);
++
++ QString resultid= dce->GetId();
++ int buttonnum = dce->GetResult();
++ if (resultid == "popmenu_exit")
++ {
++ if (buttonnum == 0)
++ {
++ QString halt_cmd = gContext->GetSetting("HaltCommand",
++ "sudo /sbin/halt -p");
++ if (!halt_cmd.isEmpty())
++ system(halt_cmd.ascii());
++ }
++
++ if (buttonnum == 1)
++ {
++ QString reboot_cmd = gContext->GetSetting("RebootCommand",
++ "sudo /sbin/reboot");
++ if (!reboot_cmd.isEmpty())
++ system(reboot_cmd.ascii());
++ }
++
++ if (buttonnum == 2)
++ {
++ aboutScreen();
++ }
++ }
++
++ if (resultid == "popmenu_noexit")
++ {
++ if (buttonnum == 0)
++ aboutScreen();
++ }
++
++ m_menuPopup = NULL;
++ }
++}
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.h.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.h.patch
new file mode 100644
index 0000000..9744b11
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.h.patch
@@ -0,0 +1,25 @@
+--- libs/libmythui/myththemedmenu.h.orig 2008-01-31 15:26:45.000000000 +0000
++++ libs/libmythui/myththemedmenu.h 2008-02-07 21:00:22.000000000 +0000
+@@ -2,6 +2,7 @@
+ #define MYTHTHEMEDMENU_H_
+
+ #include "mythscreentype.h"
++#include "mythdialogbox.h"
+
+ class MythMainWindow;
+ class MythThemedMenuPrivate;
+@@ -26,8 +27,14 @@
+
+ void ReloadTheme(void);
+ void ReloadExitKey(void);
++
+ virtual void aboutToShow(void);
+
++ void doMenu();
++ void aboutScreen();
++ MythDialogBox *m_menuPopup;
++ void customEvent(QCustomEvent *event);
++
+ protected:
+ virtual bool keyPressEvent(QKeyEvent *e);
+ virtual void gestureEvent(MythUIType *origtype, MythGestureEvent *ge);
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythtv.install b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythtv.install
new file mode 100755
index 0000000..2c87aee
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythtv.install
@@ -0,0 +1,59 @@
+
+# arg 1: the new package version
+pre_install () {
+ echo "backing up the database"
+ dbver=`pacman -Q mythtv-release-fixes | awk ' { print $2 } '`
+ if [ ! -e /data/databases_backup ]
+ then
+ mkdir -p /data/database_backup
+ fi
+ mysqldump -u mythtv -pmythtv mythconverg -c > /data/database_backup/${dbver}.dump.sql
+}
+
+post_install() {
+ mkdir -p /data/home
+ /usr/sbin/useradd -G users,video,audio,optical -m -d /data/home/mythtv mythtv
+ /usr/sbin/usermod -G users,video,audio,optical mythtv
+# mkdir /var/log/mythtv
+# chown -R mythtv:users /var/log/mythtv
+ dbver=`pacman -Q mythtv-release-fixes | awk ' { print $2 } '`
+ if [ ! -e /data/database_backup ]
+ then
+ mkdir -p /data/database_backup
+ fi
+ chown mythtv:nobody /data/database_backup
+ chmod g+s /data/database_backup
+
+ mysqldump -u mythtv -pmythtv mythconverg -c > /data/database_backup/${dbver}.dump.sql
+ grep -q /usr/local/lib /etc/ld.so.conf
+ if [ $? = 1 ]
+ then
+ echo "/usr/local/lib" >> /etc/ld.so.conf
+ fi
+
+}
+pre_upgrade () {
+ pre_install
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install
+
+ /bin/true
+}
+
+# arg 1: the old package version
+pre_remove() {
+ /bin/true
+}
+
+# arg 1: the old package version
+post_remove() {
+/bint/true
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.cpp.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.cpp.patch
new file mode 100644
index 0000000..a7a5326
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.cpp.patch
@@ -0,0 +1,51 @@
+--- libs/libmythui/myththemedmenu.cpp.orig 2008-03-17 15:54:00.000000000 -0500
++++ libs/libmythui/myththemedmenu.cpp 2008-03-17 15:54:09.000000000 -0500
+@@ -2615,12 +2615,14 @@
+ m_menuPopup->SetReturnEvent(this,"popmenu_exit");
+ m_menuPopup->AddButton("Shutdown");
+ m_menuPopup->AddButton("Reboot");
++ m_menuPopup->AddButton("MythBackend restart");
+ m_menuPopup->AddButton("About");
+ m_menuPopup->AddButton("Cancel");
+ }
+ else
+ {
+ m_menuPopup->SetReturnEvent(this,"popmenu_noexit");
++ m_menuPopup->AddButton("MythBackend restart");
+ m_menuPopup->AddButton("About");
+ m_menuPopup->AddButton("Cancel");
+ }
+@@ -2655,6 +2657,11 @@
+ }
+ }
+
++void MythThemedMenu::Restartmythbackend()
++{
++ system("/usr/MythVantage/bin/mythbeselect -restart");
++}
++
+ void MythThemedMenu::customEvent(QCustomEvent *event)
+ {
+ if (event->type() == kMythDialogBoxCompletionEventType)
+@@ -2684,6 +2691,10 @@
+
+ if (buttonnum == 2)
+ {
++ Restartmythbackend();
++ }
++ if (buttonnum == 3)
++ {
+ aboutScreen();
+ }
+ }
+@@ -2691,6 +2702,10 @@
+ if (resultid == "popmenu_noexit")
+ {
+ if (buttonnum == 0)
++ {
++ Restartmythbackend();
++ }
++ if (buttonnum == 1)
+ aboutScreen();
+ }
+
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.h.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.h.patch
new file mode 100644
index 0000000..1fba435
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.h.patch
@@ -0,0 +1,10 @@
+--- libs/libmythui/myththemedmenu.h.orig 2008-03-17 15:48:28.000000000 -0500
++++ libs/libmythui/myththemedmenu.h 2008-03-17 15:48:30.000000000 -0500
+@@ -32,6 +32,7 @@
+
+ void doMenu();
+ void aboutScreen();
++ void Restartmythbackend();
+ MythDialogBox *m_menuPopup;
+ void customEvent(QCustomEvent *event);
+
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/reload.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/reload.patch
new file mode 100644
index 0000000..9cc2044
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/reload.patch
@@ -0,0 +1,52 @@
+--- programs/mythfrontend/main.cpp 2007-11-13 15:34:40.000000000 +0000
++++ programs/mythfrontend/main.cpp.new 2007-11-13 15:36:15.000000000 +0000
+@@ -72,6 +72,9 @@
+ RunProgramGuide(chanid, channum);
+ }
+
++
++
++
+ void startFinder(void)
+ {
+ RunProgramFind();
+@@ -761,6 +764,7 @@
+ }
+ }
+
++
+ void InitJumpPoints(void)
+ {
+ REG_JUMP("Reload Theme", "", "", reloadTheme);
+@@ -784,6 +788,17 @@
+ TV::SetEmbedPbbFunc(PlaybackBox::RunPlaybackBox);
+ }
+
++
++void signal_USR1_handler(int){
++ VERBOSE(VB_GENERAL, "SIG USR1 received, reloading theme");
++ RemoteSendMessage("CLEAR_SETTINGS_CACHE");
++ gContext->ActivateSettingsCache(false);
++ qApp->processEvents();
++ GetMythMainWindow()->JumpTo("Reload Theme");
++ gContext->removeCurrentLocation();
++ gContext->ActivateSettingsCache(true);
++}
++
+ int internal_media_init()
+ {
+ REG_MEDIAPLAYER("Internal", "MythTV's native media player.",
+@@ -1411,7 +1426,12 @@
+
+ if (!RunMenu(themedir))
+ break;
+-
++ struct sigaction new_action, old_action;
++ /* Set up the structure to specify the new action. */
++ new_action.sa_handler = signal_USR1_handler;
++ ::sigemptyset(&new_action.sa_mask);
++ new_action.sa_flags = 0;
++ ::sigaction (SIGUSR1, &new_action, &old_action);
+ qApp->setMainWidget(mainWindow);
+ qApp->exec();
+ } while (!(exitstatus = handleExit()));
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshot_jump.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshot_jump.patch
new file mode 100644
index 0000000..8a5dee4
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshot_jump.patch
@@ -0,0 +1,10 @@
+--- programs/mythfrontend/networkcontrol.cpp.orig 2008-03-16 23:31:05.000000000 +0000
++++ programs/mythfrontend/networkcontrol.cpp 2008-03-16 23:32:01.000000000 +0000
+@@ -80,6 +80,7 @@
+ jumpMap["zoneminderconsole"] = "ZoneMinder Console";
+ jumpMap["zoneminderliveview"] = "ZoneMinder Live View";
+ jumpMap["zoneminderevents"] = "ZoneMinder Events";
++ jumpMap["snapshot"] = "ScreenShot";
+
+ // These jump point names match the (lowercased) locations from gContext
+ jumpMap["channelrecpriority"] = "Channel Recording Priorities";
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots.diff b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots.diff
new file mode 100644
index 0000000..2b5dabe
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots.diff
@@ -0,0 +1,458 @@
+Index: libs/libmythui/mythmainwindow.cpp
+===================================================================
+--- libs/libmythui/mythmainwindow.cpp (revision 15827)
++++ libs/libmythui/mythmainwindow.cpp (working copy)
+@@ -504,6 +507,81 @@
+ d->repaintRegion = d->repaintRegion.unite(pe->region());
+ }
+
++bool MythMainWindow::screenShot(QString fname, int x, int y, int x2, int y2, int w, int h)
++{
++ bool ret = false;
++
++ QString extension = fname.section('.', -1, -2);
++
++ if (extension == "jpg")
++ extension = "JPEG";
++ else
++ extension = "PNG";
++
++ VERBOSE(VB_GENERAL, QString("MythMainWindow::screenShot saving winId %1 to %2 (%3 x %4) [ %5/%6 - %7/%8]")
++ .arg(QApplication::desktop()->winId())
++ .arg(fname)
++ .arg(w)
++ .arg(h)
++ .arg(x)
++ .arg(y)
++ .arg(x2)
++ .arg(y2));
++
++ QPixmap p;
++ p = QPixmap::grabWindow( QApplication::desktop()->winId(), x, y, x2, y2);
++
++ QImage img = p.convertToImage();
++
++ if ( w == 0 )
++ w = img.width();
++
++ if ( h == 0 )
++ h = img.height();
++
++ VERBOSE(VB_GENERAL, QString("Scaling to %1 x %2 from %3 x %4")
++ .arg(w)
++ .arg(h)
++ .arg(img.width())
++ .arg(img.height()));
++
++ img = img.smoothScale( w, h , QImage::ScaleMin);
++
++ if (img.save(fname ,extension))
++ {
++ VERBOSE(VB_GENERAL, "MythMainWindow::screenShot succeeded");
++ ret = true;
++ }
++ else
++ {
++ VERBOSE(VB_GENERAL, "MythMainWindow::screenShot Failed!");
++ ret = false;
++ }
++
++ return ret;
++}
++
++bool MythMainWindow::screenShot(int x, int y, int x2, int y2)
++{
++ QString fPath = gContext->GetSetting("ScreenShotPath","/tmp/");
++ QString fName = QString("/%1/myth-screenshot-%2.png")
++ .arg(gContext->GetSetting("ScreenShotPath","/tmp/"))
++ .arg(QDateTime::currentDateTime().toString("yyyy-mm-ddThh-mm-ss.zzz"));
++
++ return screenShot(fName, x, y, x2, y2, 0, 0);
++}
++
++bool MythMainWindow::screenShot(QString fname, int w, int h)
++{
++ return screenShot(fname, 0, 0, -1, -1, w, h);
++}
++
++
++bool MythMainWindow::screenShot(void)
++{
++ return screenShot(0,0,-1,-1);
++}
++
+ #ifdef USING_APPLEREMOTE
+ // This may be possible via installEventFilter() instead?
+
+Index: libs/libmythui/mythmainwindow.h
+===================================================================
+--- libs/libmythui/mythmainwindow.h (revision 15827)
++++ libs/libmythui/mythmainwindow.h (working copy)
+@@ -101,6 +101,11 @@
+
+ MythPainter *GetCurrentPainter();
+
++ bool screenShot(QString fname, int x, int y, int x2, int y2, int w, int h);
++ bool screenShot(int x, int y, int x2, int y2);
++ bool screenShot(QString fname, int w, int h);
++ bool screenShot(void);
++
+ void AllowInput(bool allow);
+
+ QRect GetUIScreenRect();
+Index: programs/mythfrontend/mediarenderer.cpp
+===================================================================
+--- programs/mythfrontend/mediarenderer.cpp (revision 15827)
++++ programs/mythfrontend/mediarenderer.cpp (working copy)
+@@ -9,6 +9,7 @@
+ /////////////////////////////////////////////////////////////////////////////
+
+ #include "mediarenderer.h"
++#include "mythfexml.h"
+ #include "compat.h"
+
+ /////////////////////////////////////////////////////////////////////////////
+@@ -85,6 +86,11 @@
+ "http-get:*:video/mpeg:*,"
+ "http-get:*:video/nupplevideo:*,"
+ "http-get:*:video/x-ms-wmv:*";
++ // ------------------------------------------------------------------
++ // Register the MythFEXML protocol...
++ // ------------------------------------------------------------------
++ VERBOSE(VB_UPNP, "MediaRenderer::Registering MythFEXML Service." );
++ m_pHttpServer->RegisterExtension( new MythFEXML( RootDevice() ));
+
+ // VERBOSE(VB_UPNP, QString( "MediaRenderer::Registering AVTransport Service." ));
+ // m_pHttpServer->RegisterExtension( m_pUPnpAVT = new UPnpAVTransport( RootDevice() ));
+Index: programs/mythfrontend/MFEXML_scpd.xml
+===================================================================
+--- programs/mythfrontend/MFEXML_scpd.xml (revision 0)
++++ programs/mythfrontend/MFEXML_scpd.xml (revision 0)
+@@ -0,0 +1,34 @@
++<?xml version="1.0" encoding="utf-8"?>
++<scpd xmlns="urn:schemas-upnp-org:service-1-0">
++ <specVersion>
++ <major>1</major>
++ <minor>0</minor>
++ </specVersion>
++ <actionList>
++ <action>
++ <name>GetScreenShot</name>
++ <argumentList>
++ <argument>
++ <name>Height</name>
++ <direction>in</direction>
++ <relatedStateVariable>A_ARG_TYPE_Height</relatedStateVariable>
++ </argument>
++ <argument>
++ <name>Width</name>
++ <direction>in</direction>
++ <relatedStateVariable>A_ARG_TYPE_Width</relatedStateVariable>
++ </argument>
++ </argumentList>
++ </action>
++ </actionList>
++ <serviceStateTable>
++ <stateVariable sendEvents="no">
++ <name>A_ARG_TYPE_Height</name>
++ <dataType>i2</dataType>
++ </stateVariable>
++ <stateVariable sendEvents="no">
++ <name>A_ARG_TYPE_Width</name>
++ <dataType>i2</dataType>
++ </stateVariable>
++ </serviceStateTable>
++</scpd>
+Index: programs/mythfrontend/globalsettings.cpp
+===================================================================
+--- programs/mythfrontend/globalsettings.cpp (revision 15827)
++++ programs/mythfrontend/globalsettings.cpp (working copy)
+@@ -2182,6 +2182,15 @@
+ return ge;
+ }
+
++static HostLineEdit *ScreenShotPath()
++{
++ HostLineEdit *ge = new HostLineEdit("ScreenShotPath");
++ ge->setLabel(QObject::tr("ScreenShotPath"));
++ ge->setValue("");
++ ge->setHelpText(QObject::tr("Path to screenshot storage location. Should be writable by the frontend"));
++ return ge;
++}
++
+ static HostCheckBox *UseArrowAccels()
+ {
+ HostCheckBox *gc = new HostCheckBox("UseArrowAccels");
+@@ -4455,6 +4464,7 @@
+ MythMediaSettings *mediaMon = new MythMediaSettings();
+
+ general->addChild(LircKeyPressedApp());
++ general->addChild(ScreenShotPath());
+ general->addChild(row);
+ general->addChild(NetworkControlPort());
+ general->addChild(mediaMon);
+Index: programs/mythfrontend/mythfexml.h
+===================================================================
+--- programs/mythfrontend/mythfexml.h (revision 0)
++++ programs/mythfrontend/mythfexml.h (revision 0)
+@@ -0,0 +1,66 @@
++//////////////////////////////////////////////////////////////////////////////
++// Program Name: mythxml.h
++//
++// Purpose - Myth Frontend XML protocol HttpServerExtension
++//
++//////////////////////////////////////////////////////////////////////////////
++
++#ifndef MYTHFEXML_H_
++#define MYTHFEXML_H_
++
++#include <qdom.h>
++#include <qdatetime.h>
++
++#include "upnp.h"
++#include "eventing.h"
++#include "mythcontext.h"
++
++typedef enum
++{
++ MFEXML_Unknown = 0,
++ MFEXML_GetScreenShot = 1
++
++} MythFEXMLMethod;
++
++class MythFEXML : public Eventing
++{
++ private:
++
++ QString m_sControlUrl;
++ QString m_sServiceDescFileName;
++
++ protected:
++
++ // Implement UPnpServiceImpl methods that we can
++
++ virtual QString GetServiceType () { return "urn:schemas-mythtv-org:service:MythTv:1"; }
++ virtual QString GetServiceId () { return "urn:mythtv-org:serviceId:MYTHTV_1-0"; }
++ virtual QString GetServiceControlURL() { return m_sControlUrl.mid( 1 ); }
++ virtual QString GetServiceDescURL () { return m_sControlUrl.mid( 1 ) + "/GetServDesc"; }
++
++ private:
++
++ MythFEXMLMethod GetMethod( const QString &sURI );
++
++ void GetScreenShot ( HTTPRequest *pRequest );
++
++ public:
++ MythFEXML( UPnpDevice *pDevice );
++ virtual ~MythFEXML();
++
++ bool ProcessRequest( HttpWorkerThread *pThread, HTTPRequest *pRequest );
++
++ // Static methods shared with HttpStatus
++
++};
++
++/////////////////////////////////////////////////////////////////////////////
++/////////////////////////////////////////////////////////////////////////////
++//
++//
++//
++/////////////////////////////////////////////////////////////////////////////
++/////////////////////////////////////////////////////////////////////////////
++#endif
++
++
+Index: programs/mythfrontend/main.cpp
+===================================================================
+--- programs/mythfrontend/main.cpp (revision 15827)
++++ programs/mythfrontend/main.cpp (working copy)
+@@ -799,6 +799,11 @@
+ }
+ }
+
++void getScreenShot(void)
++{
++ (void) gContext->GetMainWindow()->screenShot();
++}
++
+ void InitJumpPoints(void)
+ {
+ REG_JUMP("Reload Theme", "", "", reloadTheme);
+@@ -817,6 +822,8 @@
+ REG_JUMP("Status Screen", "", "", showStatus);
+ REG_JUMP("Previously Recorded", "", "", startPrevious);
+
++ REG_JUMPEX("ScreenShot","","",getScreenShot,false);
++
+ REG_KEY("qt", "DELETE", "Delete", "D");
+ REG_KEY("qt", "EDIT", "Edit", "E");
+
+Index: programs/mythfrontend/mythfrontend.pro
+===================================================================
+--- programs/mythfrontend/mythfrontend.pro (revision 15827)
++++ programs/mythfrontend/mythfrontend.pro (working copy)
+@@ -15,7 +15,7 @@
+ setting.files += util_menu.xml info_settings.xml main_settings.xml
+ setting.files += recpriorities_settings.xml tv_search.xml tv_lists.xml
+ setting.files += library.xml manage_recordings.xml optical_menu.xml tvmenu.xml
+-setting.files += tv_settings.xml
++setting.files += tv_settings.xml MFEXML_scpd.xml
+ setting.extra = -ldconfig
+
+ INSTALLS += setting
+@@ -26,13 +26,13 @@
+ HEADERS += manualbox.h playbackbox.h viewscheduled.h globalsettings.h
+ HEADERS += manualschedule.h programrecpriority.h channelrecpriority.h
+ HEADERS += statusbox.h networkcontrol.h custompriority.h
+-HEADERS += mediarenderer.h
++HEADERS += mediarenderer.h mythfexml.h
+ HEADERS += mythappearance.h
+
+ SOURCES += main.cpp manualbox.cpp playbackbox.cpp viewscheduled.cpp
+ SOURCES += globalsettings.cpp manualschedule.cpp programrecpriority.cpp
+ SOURCES += channelrecpriority.cpp statusbox.cpp networkcontrol.cpp
+-SOURCES += mediarenderer.cpp
++SOURCES += mediarenderer.cpp mythfexml.cpp
+ SOURCES += custompriority.cpp
+ SOURCES += mythappearance.cpp
+
+Index: programs/mythfrontend/mythfexml.cpp
+===================================================================
+--- programs/mythfrontend/mythfexml.cpp (revision 0)
++++ programs/mythfrontend/mythfexml.cpp (revision 0)
+@@ -0,0 +1,135 @@
++//////////////////////////////////////////////////////////////////////////////
++// Program Name: MythXML.cpp
++//
++// Purpose - Html & XML status HttpServerExtension
++//
++// Created By : David Blain Created On : Oct. 24, 2005
++// Modified By : Daniel Kristjansson Modified On: Oct. 31, 2007
++//
++//////////////////////////////////////////////////////////////////////////////
++
++#include "mythfexml.h"
++
++#include "libmyth/mythcontext.h"
++#include "libmyth/util.h"
++#include "libmyth/mythdbcon.h"
++
++#include "mythmainwindow.h"
++
++#include <qtextstream.h>
++#include <qdir.h>
++#include <qfile.h>
++#include <qregexp.h>
++#include <qbuffer.h>
++#include <math.h>
++
++#include "../../config.h"
++
++/////////////////////////////////////////////////////////////////////////////
++//
++/////////////////////////////////////////////////////////////////////////////
++
++MythFEXML::MythFEXML( UPnpDevice *pDevice ) : Eventing( "MythFEXML", "MYTHTV_Event" )
++{
++
++ QString sUPnpDescPath = UPnp::g_pConfig->GetValue( "UPnP/DescXmlPath", m_sSharePath );
++
++ m_sServiceDescFileName = sUPnpDescPath + "MFEXML_scpd.xml";
++ m_sControlUrl = "/MythFE";
++
++ // Add our Service Definition to the device.
++
++ RegisterService( pDevice );
++}
++
++/////////////////////////////////////////////////////////////////////////////
++//
++/////////////////////////////////////////////////////////////////////////////
++
++MythFEXML::~MythFEXML()
++{
++}
++
++/////////////////////////////////////////////////////////////////////////////
++//
++/////////////////////////////////////////////////////////////////////////////
++
++MythFEXMLMethod MythFEXML::GetMethod( const QString &sURI )
++{
++ if (sURI == "GetScreenShot" ) return MFEXML_GetScreenShot;
++
++ return( MFEXML_Unknown );
++}
++
++/////////////////////////////////////////////////////////////////////////////
++//
++/////////////////////////////////////////////////////////////////////////////
++
++bool MythFEXML::ProcessRequest( HttpWorkerThread *pThread, HTTPRequest *pRequest )
++{
++ try
++ {
++ if (pRequest)
++ {
++ if (pRequest->m_sBaseUrl != m_sControlUrl)
++ return( false );
++
++ VERBOSE(VB_UPNP, QString("MythFEXML::ProcessRequest: %1 : %2")
++ .arg(pRequest->m_sMethod)
++ .arg(pRequest->m_sRawRequest));
++
++ switch( GetMethod( pRequest->m_sMethod ))
++ {
++ case MFEXML_GetScreenShot : GetScreenShot ( pRequest ); return true;
++
++
++ default:
++ {
++ UPnp::FormatErrorResponse( pRequest, UPnPResult_InvalidAction );
++
++ return true;
++ }
++ }
++ }
++ }
++ catch( ... )
++ {
++ VERBOSE( VB_IMPORTANT, "MythFEXML::ProcessRequest() - Unexpected Exception" );
++ }
++
++ return( false );
++}
++
++// ==========================================================================
++// Request handler Methods
++// ==========================================================================
++
++/////////////////////////////////////////////////////////////////////////////
++//
++/////////////////////////////////////////////////////////////////////////////
++
++void MythFEXML::GetScreenShot( HTTPRequest *pRequest )
++{
++ bool bDefaultPixmap = false;
++
++ pRequest->m_eResponseType = ResponseTypeFile;
++
++ // Optional Parameters
++
++ int nWidth = pRequest->m_mapParams[ "Width" ].toInt();
++ int nHeight = pRequest->m_mapParams[ "Height" ].toInt();
++
++ // Read Icon file path from database
++
++ QString sFileName = "/tmp/moo.jpg";
++
++
++ if (!gContext->GetMainWindow()->screenShot(sFileName,nWidth, nHeight))
++ {
++ VERBOSE(VB_GENERAL, "MythFEXML: Failed to take screenshot. Aborting");
++ return;
++ }
++
++ pRequest->m_sFileName = sFileName;
++}
++
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots2.diff b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots2.diff
new file mode 100644
index 0000000..64ce08c
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots2.diff
@@ -0,0 +1,467 @@
+Index: libs/libmythui/mythmainwindow.cpp
+===================================================================
+--- libs/libmythui/mythmainwindow.cpp (revision 16103)
++++ libs/libmythui/mythmainwindow.cpp (working copy)
+@@ -8,6 +8,8 @@
+ #include <qpaintdevicemetrics.h>
+ #include <qdir.h>
+ #include <qfile.h>
++#include <math.h>
++
+ #ifdef QWS
+ #include <qwindowsystem_qws.h>
+ #endif
+@@ -504,6 +507,83 @@
+ d->repaintRegion = d->repaintRegion.unite(pe->region());
+ }
+
++bool MythMainWindow::screenShot(QString fname, int x, int y, int x2, int y2, int w, int h)
++{
++ bool ret = false;
++
++ QString extension = fname.section('.', -1, -1);
++ if (extension == "jpg")
++ extension = "JPEG";
++ else
++ extension = "PNG";
++
++ VERBOSE(VB_GENERAL, QString("MythMainWindow::screenShot saving winId %1 to %2 (%3 x %4) [ %5/%6 - %7/%8] type %9")
++ .arg(QApplication::desktop()->winId())
++ .arg(fname)
++ .arg(w)
++ .arg(h)
++ .arg(x)
++ .arg(y)
++ .arg(x2)
++ .arg(y2)
++ .arg(extension));
++
++ QPixmap p;
++ p = QPixmap::grabWindow( QApplication::desktop()->winId(), x, y, x2, y2);
++
++ QImage img = p.convertToImage();
++
++ if ( w == 0 )
++ w = img.width();
++
++ if ( h == 0 )
++ h = img.height();
++
++ VERBOSE(VB_GENERAL, QString("Scaling to %1 x %2 from %3 x %4")
++ .arg(w)
++ .arg(h)
++ .arg(img.width())
++ .arg(img.height()));
++
++ img = img.smoothScale( w, h , QImage::ScaleMin);
++
++ if (img.save(fname ,extension,100))
++ {
++ VERBOSE(VB_GENERAL, "MythMainWindow::screenShot succeeded");
++ ret = true;
++ }
++ else
++ {
++ VERBOSE(VB_GENERAL, "MythMainWindow::screenShot Failed!");
++ ret = false;
++ }
++
++ return ret;
++}
++
++bool MythMainWindow::screenShot(int x, int y, int x2, int y2)
++{
++ QString fPath = gContext->GetSetting("ScreenShotPath","/tmp/");
++ QString fName = QString("/%1/myth-screenshot-%2.png")
++ .arg(fPath)
++ .arg(QDateTime::currentDateTime().toString("yyyy-mm-ddThh-mm-ss.zzz"));
++
++ return screenShot(fName, x, y, x2, y2, 0, 0);
++}
++
++bool MythMainWindow::screenShot(QString fname, int w, int h)
++{
++ QRect sLoc = qApp->mainWidget()->geometry();
++ return screenShot(fname, sLoc.left(),sLoc.top(), sLoc.width(), sLoc.height(), w, h);
++}
++
++
++bool MythMainWindow::screenShot(void)
++{
++ QRect sLoc = qApp->mainWidget()->geometry();
++ return screenShot(sLoc.left(),sLoc.top(), sLoc.width(), sLoc.height());
++}
++
+ #ifdef USING_APPLEREMOTE
+ // This may be possible via installEventFilter() instead?
+
+Index: libs/libmythui/mythmainwindow.h
+===================================================================
+--- libs/libmythui/mythmainwindow.h (revision 16103)
++++ libs/libmythui/mythmainwindow.h (working copy)
+@@ -101,6 +101,11 @@
+
+ MythPainter *GetCurrentPainter();
+
++ bool screenShot(QString fname, int x, int y, int x2, int y2, int w, int h);
++ bool screenShot(int x, int y, int x2, int y2);
++ bool screenShot(QString fname, int w, int h);
++ bool screenShot(void);
++
+ void AllowInput(bool allow);
+
+ QRect GetUIScreenRect();
+Index: programs/mythfrontend/mediarenderer.cpp
+===================================================================
+--- programs/mythfrontend/mediarenderer.cpp (revision 16103)
++++ programs/mythfrontend/mediarenderer.cpp (working copy)
+@@ -9,6 +9,7 @@
+ /////////////////////////////////////////////////////////////////////////////
+
+ #include "mediarenderer.h"
++#include "mythfexml.h"
+ #include "compat.h"
+
+ /////////////////////////////////////////////////////////////////////////////
+@@ -89,6 +90,11 @@
+ "http-get:*:video/mpeg:*,"
+ "http-get:*:video/nupplevideo:*,"
+ "http-get:*:video/x-ms-wmv:*";
++ // ------------------------------------------------------------------
++ // Register the MythFEXML protocol...
++ // ------------------------------------------------------------------
++ VERBOSE(VB_UPNP, "MediaRenderer::Registering MythFEXML Service." );
++ m_pHttpServer->RegisterExtension( new MythFEXML( RootDevice() ));
+
+ // VERBOSE(VB_UPNP, QString( "MediaRenderer::Registering AVTransport Service." ));
+ // m_pHttpServer->RegisterExtension( m_pUPnpAVT = new UPnpAVTransport( RootDevice() ));
+Index: programs/mythfrontend/MFEXML_scpd.xml
+===================================================================
+--- programs/mythfrontend/MFEXML_scpd.xml (revision 0)
++++ programs/mythfrontend/MFEXML_scpd.xml (revision 0)
+@@ -0,0 +1,34 @@
++<?xml version="1.0" encoding="utf-8"?>
++<scpd xmlns="urn:schemas-upnp-org:service-1-0">
++ <specVersion>
++ <major>1</major>
++ <minor>0</minor>
++ </specVersion>
++ <actionList>
++ <action>
++ <name>GetScreenShot</name>
++ <argumentList>
++ <argument>
++ <name>Height</name>
++ <direction>in</direction>
++ <relatedStateVariable>A_ARG_TYPE_Height</relatedStateVariable>
++ </argument>
++ <argument>
++ <name>Width</name>
++ <direction>in</direction>
++ <relatedStateVariable>A_ARG_TYPE_Width</relatedStateVariable>
++ </argument>
++ </argumentList>
++ </action>
++ </actionList>
++ <serviceStateTable>
++ <stateVariable sendEvents="no">
++ <name>A_ARG_TYPE_Height</name>
++ <dataType>i2</dataType>
++ </stateVariable>
++ <stateVariable sendEvents="no">
++ <name>A_ARG_TYPE_Width</name>
++ <dataType>i2</dataType>
++ </stateVariable>
++ </serviceStateTable>
++</scpd>
+Index: programs/mythfrontend/globalsettings.cpp
+===================================================================
+--- programs/mythfrontend/globalsettings.cpp (revision 16103)
++++ programs/mythfrontend/globalsettings.cpp (working copy)
+@@ -2220,6 +2220,15 @@
+ return ge;
+ }
+
++static HostLineEdit *ScreenShotPath()
++{
++ HostLineEdit *ge = new HostLineEdit("ScreenShotPath");
++ ge->setLabel(QObject::tr("ScreenShotPath"));
++ ge->setValue("/tmp/");
++ ge->setHelpText(QObject::tr("Path to screenshot storage location. Should be writable by the frontend"));
++ return ge;
++}
++
+ static HostCheckBox *UseArrowAccels()
+ {
+ HostCheckBox *gc = new HostCheckBox("UseArrowAccels");
+@@ -4502,6 +4511,7 @@
+ MythMediaSettings *mediaMon = new MythMediaSettings();
+
+ general->addChild(LircKeyPressedApp());
++ general->addChild(ScreenShotPath());
+ general->addChild(row);
+ general->addChild(NetworkControlPort());
+ general->addChild(mediaMon);
+Index: programs/mythfrontend/mythfexml.h
+===================================================================
+--- programs/mythfrontend/mythfexml.h (revision 0)
++++ programs/mythfrontend/mythfexml.h (revision 0)
+@@ -0,0 +1,66 @@
++//////////////////////////////////////////////////////////////////////////////
++// Program Name: mythxml.h
++//
++// Purpose - Myth Frontend XML protocol HttpServerExtension
++//
++//////////////////////////////////////////////////////////////////////////////
++
++#ifndef MYTHFEXML_H_
++#define MYTHFEXML_H_
++
++#include <qdom.h>
++#include <qdatetime.h>
++
++#include "upnp.h"
++#include "eventing.h"
++#include "mythcontext.h"
++
++typedef enum
++{
++ MFEXML_Unknown = 0,
++ MFEXML_GetScreenShot = 1
++
++} MythFEXMLMethod;
++
++class MythFEXML : public Eventing
++{
++ private:
++
++ QString m_sControlUrl;
++ QString m_sServiceDescFileName;
++
++ protected:
++
++ // Implement UPnpServiceImpl methods that we can
++
++ virtual QString GetServiceType () { return "urn:schemas-mythtv-org:service:MythTv:1"; }
++ virtual QString GetServiceId () { return "urn:mythtv-org:serviceId:MYTHTV_1-0"; }
++ virtual QString GetServiceControlURL() { return m_sControlUrl.mid( 1 ); }
++ virtual QString GetServiceDescURL () { return m_sControlUrl.mid( 1 ) + "/GetServDesc"; }
++
++ private:
++
++ MythFEXMLMethod GetMethod( const QString &sURI );
++
++ void GetScreenShot ( HTTPRequest *pRequest );
++
++ public:
++ MythFEXML( UPnpDevice *pDevice );
++ virtual ~MythFEXML();
++
++ bool ProcessRequest( HttpWorkerThread *pThread, HTTPRequest *pRequest );
++
++ // Static methods shared with HttpStatus
++
++};
++
++/////////////////////////////////////////////////////////////////////////////
++/////////////////////////////////////////////////////////////////////////////
++//
++//
++//
++/////////////////////////////////////////////////////////////////////////////
++/////////////////////////////////////////////////////////////////////////////
++#endif
++
++
+Index: programs/mythfrontend/main.cpp
+===================================================================
+--- programs/mythfrontend/main.cpp (revision 16103)
++++ programs/mythfrontend/main.cpp (working copy)
+@@ -800,6 +800,11 @@
+ }
+ }
+
++void getScreenShot(void)
++{
++ (void) gContext->GetMainWindow()->screenShot();
++}
++
+ void InitJumpPoints(void)
+ {
+ REG_JUMP("Reload Theme", "", "", reloadTheme);
+@@ -818,6 +823,8 @@
+ REG_JUMP("Status Screen", "", "", showStatus);
+ REG_JUMP("Previously Recorded", "", "", startPrevious);
+
++ REG_JUMPEX("ScreenShot","","",getScreenShot,false);
++
+ REG_KEY("qt", "DELETE", "Delete", "D");
+ REG_KEY("qt", "EDIT", "Edit", "E");
+
+Index: programs/mythfrontend/mythfrontend.pro
+===================================================================
+--- programs/mythfrontend/mythfrontend.pro (revision 16103)
++++ programs/mythfrontend/mythfrontend.pro (working copy)
+@@ -15,7 +15,7 @@
+ setting.files += util_menu.xml info_settings.xml main_settings.xml
+ setting.files += recpriorities_settings.xml tv_search.xml tv_lists.xml
+ setting.files += library.xml manage_recordings.xml optical_menu.xml tvmenu.xml
+-setting.files += tv_settings.xml
++setting.files += tv_settings.xml MFEXML_scpd.xml
+ setting.extra = -ldconfig
+
+ INSTALLS += setting
+@@ -26,13 +26,13 @@
+ HEADERS += manualbox.h playbackbox.h viewscheduled.h globalsettings.h
+ HEADERS += manualschedule.h programrecpriority.h channelrecpriority.h
+ HEADERS += statusbox.h networkcontrol.h custompriority.h
+-HEADERS += mediarenderer.h
++HEADERS += mediarenderer.h mythfexml.h
+ HEADERS += mythappearance.h
+
+ SOURCES += main.cpp manualbox.cpp playbackbox.cpp viewscheduled.cpp
+ SOURCES += globalsettings.cpp manualschedule.cpp programrecpriority.cpp
+ SOURCES += channelrecpriority.cpp statusbox.cpp networkcontrol.cpp
+-SOURCES += mediarenderer.cpp
++SOURCES += mediarenderer.cpp mythfexml.cpp
+ SOURCES += custompriority.cpp
+ SOURCES += mythappearance.cpp
+
+Index: programs/mythfrontend/mythfexml.cpp
+===================================================================
+--- programs/mythfrontend/mythfexml.cpp (revision 0)
++++ programs/mythfrontend/mythfexml.cpp (revision 0)
+@@ -0,0 +1,133 @@
++//////////////////////////////////////////////////////////////////////////////
++// Program Name: MythXML.cpp
++//
++// Purpose - Html & XML status HttpServerExtension
++//
++// Created By : David Blain Created On : Oct. 24, 2005
++// Modified By : Daniel Kristjansson Modified On: Oct. 31, 2007
++//
++//////////////////////////////////////////////////////////////////////////////
++
++#include "mythfexml.h"
++
++#include "libmyth/mythcontext.h"
++#include "libmyth/util.h"
++#include "libmyth/mythdbcon.h"
++
++#include "mythmainwindow.h"
++
++#include <qtextstream.h>
++#include <qdir.h>
++#include <qfile.h>
++#include <qregexp.h>
++#include <qbuffer.h>
++#include <math.h>
++
++#include "../../config.h"
++
++/////////////////////////////////////////////////////////////////////////////
++//
++/////////////////////////////////////////////////////////////////////////////
++
++MythFEXML::MythFEXML( UPnpDevice *pDevice ) : Eventing( "MythFEXML", "MYTHTV_Event" )
++{
++
++ QString sUPnpDescPath = UPnp::g_pConfig->GetValue( "UPnP/DescXmlPath", m_sSharePath );
++
++ m_sServiceDescFileName = sUPnpDescPath + "MFEXML_scpd.xml";
++ m_sControlUrl = "/MythFE";
++
++ // Add our Service Definition to the device.
++
++ RegisterService( pDevice );
++}
++
++/////////////////////////////////////////////////////////////////////////////
++//
++/////////////////////////////////////////////////////////////////////////////
++
++MythFEXML::~MythFEXML()
++{
++}
++
++/////////////////////////////////////////////////////////////////////////////
++//
++/////////////////////////////////////////////////////////////////////////////
++
++MythFEXMLMethod MythFEXML::GetMethod( const QString &sURI )
++{
++ if (sURI == "GetScreenShot" ) return MFEXML_GetScreenShot;
++
++ return( MFEXML_Unknown );
++}
++
++/////////////////////////////////////////////////////////////////////////////
++//
++/////////////////////////////////////////////////////////////////////////////
++
++bool MythFEXML::ProcessRequest( HttpWorkerThread *pThread, HTTPRequest *pRequest )
++{
++ try
++ {
++ if (pRequest)
++ {
++ if (pRequest->m_sBaseUrl != m_sControlUrl)
++ return( false );
++
++ VERBOSE(VB_UPNP, QString("MythFEXML::ProcessRequest: %1 : %2")
++ .arg(pRequest->m_sMethod)
++ .arg(pRequest->m_sRawRequest));
++
++ switch( GetMethod( pRequest->m_sMethod ))
++ {
++ case MFEXML_GetScreenShot : GetScreenShot ( pRequest ); return true;
++
++
++ default:
++ {
++ UPnp::FormatErrorResponse( pRequest, UPnPResult_InvalidAction );
++
++ return true;
++ }
++ }
++ }
++ }
++ catch( ... )
++ {
++ VERBOSE( VB_IMPORTANT, "MythFEXML::ProcessRequest() - Unexpected Exception" );
++ }
++
++ return( false );
++}
++
++// ==========================================================================
++// Request handler Methods
++// ==========================================================================
++
++/////////////////////////////////////////////////////////////////////////////
++//
++/////////////////////////////////////////////////////////////////////////////
++
++void MythFEXML::GetScreenShot( HTTPRequest *pRequest )
++{
++ pRequest->m_eResponseType = ResponseTypeFile;
++
++ // Optional Parameters
++
++ int nWidth = pRequest->m_mapParams[ "Width" ].toInt();
++ int nHeight = pRequest->m_mapParams[ "Height" ].toInt();
++
++ // Read Icon file path from database
++
++ QString sFileName = QString("/%1/myth-screenshot-XML.jpg")
++ .arg(gContext->GetSetting("ScreenShotPath","/tmp/"));
++
++ if (!gContext->GetMainWindow()->screenShot(sFileName,nWidth, nHeight))
++ {
++ VERBOSE(VB_GENERAL, "MythFEXML: Failed to take screenshot. Aborting");
++ return;
++ }
++
++ pRequest->m_sFileName = sFileName;
++}
++
diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/smolt_jump.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/smolt_jump.patch
new file mode 100644
index 0000000..ca9bd08
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/smolt_jump.patch
@@ -0,0 +1,10 @@
+--- programs/mythfrontend/networkcontrol.cpp.orig 2008-03-23 23:00:25.000000000 +0000
++++ programs/mythfrontend/networkcontrol.cpp 2008-03-23 23:01:33.000000000 +0000
+@@ -81,6 +81,7 @@
+ jumpMap["zoneminderliveview"] = "ZoneMinder Live View";
+ jumpMap["zoneminderevents"] = "ZoneMinder Events";
+ jumpMap["snapshot"] = "ScreenShot";
++ jumpMap["mythsmolt"] = "MythSmolt";
+
+ // These jump point names match the (lowercased) locations from gContext
+ jumpMap["channelrecpriority"] = "Channel Recording Priorities";
diff --git a/abs/mv-core/myth/release-fixes/mythtv-themes/PKGBUILD b/abs/mv-core/myth/release-fixes/mythtv-themes/PKGBUILD
new file mode 100755
index 0000000..5e6928c
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/mythtv-themes/PKGBUILD
@@ -0,0 +1,36 @@
+pkgname=mythtv-themes-release-fixes
+pkgver=15931
+pkgrel=4
+pkgdesc="themes for mythtv"
+url="http://www.mythtv.org"
+license="GPL"
+depends=( )
+#makedepends=('sqlite3' 'sed')
+conflicts=()
+replaces=()
+backup=()
+#install='mythtv.install'
+source=()
+arch=('i686')
+md5sums=()
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/myththemes
+_svnmod=myththemes
+
+build() {
+echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+#svn co http://cvs.mythtv.org/svn/trunk/mythtv
+#svn co http://cvs.mythtv.org/svn/trunk/mythplugins
+#svn co http://cvs.mythtv.org/svn/trunk/myththemes
+cd $startdir/src/myththemes
+ make distclean
+ ./configure
+ #./configure --disable-all --enable-mythweather --enable-fftw --disable-aac
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install
+# cd $startdir/src/$pkgname
+# cd mythmovietime
+# make || return 1
+# make INSTALL_ROOT=$startdir/pkg install
+
+}
diff --git a/abs/mv-core/myth/release-fixes/plugins/mytharchive/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mytharchive/PKGBUILD
new file mode 100644
index 0000000..5a73f74
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mytharchive/PKGBUILD
@@ -0,0 +1,41 @@
+pkgname=mytharchive-release-fixes
+pkgver=17719
+pkgrel=5
+pkgdesc="MythTV plugin that lets you create DVDs from or archive your recorded shows."
+arch=('i686')
+url="http://www.mythtv.org"
+license=('GPL')
+depends=('mythtv-release-fixes' 'libxmu' 'mysql-python' 'pil' 'dvdauthor' 'cdrkit' 'dvd+rw-tools' 'mjpegtools' 'transcode' )
+source=()
+groups=('mythtv-all-plugins-release-fixes')
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+ PLUGIN=mytharchive
+ cd $startdir/src/
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ cd $startdir/src/mythplugins
+
+ PLUGIN=mytharchive
+ grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro
+ if [ $? != 0 ]
+ then
+ echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+ msg "appending program lib"
+ fi
+ msg "Correcting configure kde3 to kde"
+ sed -i 's#kde3#kde#' configure || return 1
+ make distclean
+ ./configure --enable-opengl --disable-all --enable-create-archive --enable-create-dvd --enable-mytharchive || return 1
+ qmake mythplugins.pro || return 1
+ make qmake || return 1
+ msg "Correcting Makefile kde3 to kde"
+ sed -i 's#kde3#kde#' ./mytharchive/mytharchive/Makefile || return 1
+ make -j 2 || return 1
+ make INSTALL_ROOT=$startdir/pkg install
+}
+
+
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythbrowser/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythbrowser/PKGBUILD
new file mode 100644
index 0000000..0a1b29e
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythbrowser/PKGBUILD
@@ -0,0 +1,34 @@
+
+pkgname=mythbrowser-release-fixes
+pkgver=17284
+pkgrel=2
+pkgdesc="Mini web browser for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-release-fixes' 'wget' 'libxvmc' 'kdelibs3')
+conflicts=('mythtv-plugins-release-fixes')
+groups=('mythtv-all-plugins-release-fixes')
+license="GPL"
+source=()
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svnmod=mythplugins
+build() {
+ cd $startdir/src/
+ echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ cd $startdir/src/mythplugins
+ pwd
+ PLUGIN=mythbrowser
+ grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro
+ if [ $? != 0 ]
+ then
+ echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+ msg "appending program lib"
+ fi
+ make distclean
+ ./configure --enable-opengl --disable-all --enable-mythbrowser || return 1
+ # sed -i 's#kde3#kde#' ./mythbrowser/mythbrowser/Makefile || return 1
+ make || return 1
+
+ make INSTALL_ROOT=$startdir/pkg install
+}
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythcontrols/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythcontrols/PKGBUILD
new file mode 100644
index 0000000..31b1e73
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythcontrols/PKGBUILD
@@ -0,0 +1,36 @@
+pkgname=mythcontrols-release-fixes
+pkgver=17719
+pkgrel=5
+pkgdesc="Experimental controls for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv'-release-fixes)
+conflicts=('mythtv-plugins-release-fixes')
+groups=('mythtv-all-plugins-release-fixes')
+license="GPL"
+source=()
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+ cd $startdir/src/
+ echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ cd $startdir/src/mythplugins
+PLUGIN=mythcontrols
+grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro
+if [ $? != 0 ]
+then
+ echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+ msg "appending program lib"
+ fi
+ make distclean
+ ./configure --disable-all --enable-opengl --enable-mythcontrols
+
+ make -j 2 || return 1
+
+ make INSTALL_ROOT=$startdir/pkg install
+}
+
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythflix/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythflix/PKGBUILD
new file mode 100644
index 0000000..3e49073
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythflix/PKGBUILD
@@ -0,0 +1,36 @@
+pkgname=mythflix-release-fixes
+pkgver=17719
+pkgrel=2
+pkgdesc="Netflix access plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-release-fixes')
+conflicts=('mythtv-plugins-release-fixes')
+groups=('mythtv-all-plugins-release-fixes')
+license="GPL"
+source=()
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svnmod=mythplugins
+
+build() {
+ cd $startdir/src/
+ echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ cd $startdir/src/mythplugins
+ PLUGIN=mythflix
+ grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro
+ if [ $? != 0 ]
+ then
+ echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+ msg "appending program lib"
+ fi
+ make distclean
+ ./configure --disable-all --enable-opengl --enable-mythflix
+
+ make -j 2 || return 1
+
+ make INSTALL_ROOT=$startdir/pkg install
+}
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythgallery/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythgallery/PKGBUILD
new file mode 100644
index 0000000..4469148
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythgallery/PKGBUILD
@@ -0,0 +1,36 @@
+pkgname=mythgallery-release-fixes
+pkgver=17719
+pkgrel=3
+pkgdesc="Image gallery plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-release-fixes' 'libexif' 'libtiff')
+conflicts=('mythtv-plugins-release-fixes')
+groups=('mythtv-all-plugins-release-fixes')
+license="GPL"
+source=()
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svnmod=mythplugins
+
+build() {
+ cd $startdir/src/
+ echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ cd $startdir/src/mythplugins
+ export QMAKESPEC='linux-g++'
+ PLUGIN=mythgallery
+ grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro
+ if [ $? != 0 ]
+ then
+ echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+ msg "appending program lib"
+ fi
+ make distclean
+ ./configure --disable-all --enable-opengl --enable-mythgallery --enable-exif
+
+ make -j 2 || return 1
+
+ make INSTALL_ROOT=$startdir/pkg install
+}
+
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythgame/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythgame/PKGBUILD
new file mode 100644
index 0000000..d572df1
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythgame/PKGBUILD
@@ -0,0 +1,36 @@
+pkgname=mythgame-release-fixes
+pkgver=17719
+pkgrel=4
+pkgdesc="Emulation plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-release-fixes' 'zlib')
+conflicts=('mythtv-plugins-release-fixes')
+groups=('mythtv-all-plugins-release-fixes')
+license="GPL"
+source=()
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svnmod=mythplugins
+
+build() {
+ cd $startdir/src/
+ echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ cd $startdir/src/mythplugins
+PLUGIN=mythgame
+grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro
+if [ $? != 0 ]
+then
+ echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+ msg "appending program lib"
+ fi
+ export QMAKESPEC='linux-g++'
+ make distclean
+ ./configure --disable-all --enable-opengl --enable-mythgame
+
+ make -j 2 || return 1
+
+ make INSTALL_ROOT=$startdir/pkg install
+}
+
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythmovietime/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythmovietime/PKGBUILD
new file mode 100644
index 0000000..f6945af
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythmovietime/PKGBUILD
@@ -0,0 +1,35 @@
+pkgname=mythmovietime-release-fixes
+pkgver=17284
+pkgrel=6
+pkgdesc="Emulation plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-release-fixes' 'zlib')
+conflicts=('mythtv-plugins-release-fixes')
+groups=('mythtv-all-plugins-release-fixes')
+license="GPL"
+source=()
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svnmod=mythplugins
+
+build() {
+ cd $startdir/src/
+ echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ cd $startdir/src/mythplugins
+PLUGIN=mythmovietime
+grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro
+if [ $? != 0 ]
+then
+ echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+ msg "appending program lib"
+ fi
+ export QMAKESPEC='linux-g++'
+ make distclean
+ ./configure --disable-all --enable-mythmovies
+
+ make -j 2 || return 1
+
+ make INSTALL_ROOT=$startdir/pkg install
+}
+
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythmusic/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythmusic/PKGBUILD
new file mode 100644
index 0000000..de26f57
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythmusic/PKGBUILD
@@ -0,0 +1,39 @@
+pkgname=mythmusic-release-fixes
+pkgver=17719
+pkgrel=9
+pkgdesc="Music playing plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-release-fixes ' 'libid3tag' 'flac>=1.1.4 ' 'a52dec' 'libcdaudio' 'libcddb' 'libdvdread' 'libid3tag' 'libmad' 'libogg' 'libtheora' 'libvorbis' 'taglib' 'libvisual' 'cdparanoia' 'sdl' 'faad2' 'lame' 'fftw2')
+
+conflicts=('mythtv-plugins-release-fixes')
+groups=('mythtv-all-plugins-release-fixes')
+license="GPL"
+source=(gcc4.3.patch)
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svnmod=mythplugins
+
+build() {
+ cd $startdir/src/
+ make distclean
+ echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ cd $startdir/src/mythplugins/mythmusic
+ patch -p1 < ../../gcc4.3.patch
+ cd $startdir/src/mythplugins
+ ./configure --disable-all --enable-mythmusic --enable-fftw --enable-sdl --disable-aac --enable-opengl
+PLUGIN=mythmusic
+grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro
+if [ $? != 0 ]
+then
+ echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+ msg "appending program lib"
+ fi
+
+# ./configure --disable-all --enable-mythmusic
+
+ make || return 1
+
+ make INSTALL_ROOT=$startdir/pkg install
+}
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythmusic/gcc4.3.patch b/abs/mv-core/myth/release-fixes/plugins/mythmusic/gcc4.3.patch
new file mode 100644
index 0000000..564c434
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythmusic/gcc4.3.patch
@@ -0,0 +1,37 @@
+Index: mythmusic/mythmusic/aacdecoder.cpp
+===================================================================
+--- mythmusic/mythmusic/aacdecoder.cpp (revision 17452)
++++ mythmusic/mythmusic/aacdecoder.cpp (working copy)
+@@ -19,6 +19,7 @@
+ #include <qobject.h>
+ #include <qiodevice.h>
+ #include <qfile.h>
++#include <stdlib.h>
+
+ #include "aacdecoder.h"
+ #include "constants.h"
+Index: mythmusic/mythmusic/aacdecoder.h
+===================================================================
+--- mythmusic/mythmusic/aacdecoder.h (revision 17452)
++++ mythmusic/mythmusic/aacdecoder.h (working copy)
+@@ -51,7 +51,7 @@
+ bool done, finish;
+ long len, bitrate;
+ uchar channels;
+- unsigned long sample_rate;
++ uint32_t sample_rate;
+ unsigned long output_size;
+ double totalTime, seekTime;
+
+Index: mythmusic/mythmusic/metaiomp4.cpp
+===================================================================
+--- mythmusic/mythmusic/metaiomp4.cpp (revision 17452)
++++ mythmusic/mythmusic/metaiomp4.cpp (working copy)
+@@ -3,6 +3,7 @@
+ #include <fcntl.h>
+ #include <unistd.h>
+ #include <sys/types.h>
++#include <stdlib.h>
+
+ using namespace std;
+
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythmusic/music_flac.patch b/abs/mv-core/myth/release-fixes/plugins/mythmusic/music_flac.patch
new file mode 100644
index 0000000..b152249
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythmusic/music_flac.patch
@@ -0,0 +1,293 @@
+--- flacdecoder.cpp.old 2007-03-11 18:14:37.000000000 -0400
++++ flacdecoder.cpp 2007-03-11 18:15:34.000000000 -0400
+@@ -17,7 +17,7 @@
+
+ #include <qtimer.h>
+
+-static FLAC__SeekableStreamDecoderReadStatus flacread(const FLAC__SeekableStreamDecoder *decoder, FLAC__byte bufferp[], unsigned *bytes, void *client_data)
++static FLAC__StreamDecoderReadStatus flacread(const FLAC__StreamDecoder *decoder, FLAC__byte bufferp[], unsigned *bytes, void *client_data)
+ {
+ decoder = decoder;
+
+@@ -26,27 +26,27 @@
+
+ if (len == -1)
+ {
+- return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR;
++ return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
+ }
+
+ *bytes = len;
+- return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK;
++ return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
+ }
+
+-static FLAC__SeekableStreamDecoderSeekStatus flacseek(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data)
++static FLAC__StreamDecoderSeekStatus flacseek(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data)
+ {
+ decoder = decoder;
+ FlacDecoder *dflac = (FlacDecoder *)client_data;
+
+ if (!dflac->input()->isDirectAccess())
+- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR;
++ return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR;
+
+ if (dflac->input()->at(absolute_byte_offset))
+- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK;
+- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR;
++ return FLAC__STREAM_DECODER_SEEK_STATUS_OK;
++ return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR;
+ }
+
+-static FLAC__SeekableStreamDecoderTellStatus flactell(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
++static FLAC__StreamDecoderTellStatus flactell(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
+ {
+ decoder = decoder;
+ FlacDecoder *dflac = (FlacDecoder *)client_data;
+@@ -54,20 +54,20 @@
+ long t = dflac->input()->at();
+ *absolute_byte_offset = t;
+
+- return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK;
++ return FLAC__STREAM_DECODER_TELL_STATUS_OK;
+ }
+
+-static FLAC__SeekableStreamDecoderLengthStatus flaclength(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data)
++static FLAC__StreamDecoderLengthStatus flaclength(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data)
+ {
+ decoder = decoder;
+
+ FlacDecoder *dflac = (FlacDecoder *)client_data;
+
+ *stream_length = dflac->input()->size();
+- return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK;
++ return FLAC__STREAM_DECODER_LENGTH_STATUS_OK;
+ }
+
+-static FLAC__bool flaceof(const FLAC__SeekableStreamDecoder *decoder, void *client_data)
++static FLAC__bool flaceof(const FLAC__StreamDecoder *decoder, void *client_data)
+ {
+ decoder = decoder;
+
+@@ -76,7 +76,7 @@
+ return dflac->input()->atEnd();
+ }
+
+-static FLAC__StreamDecoderWriteStatus flacwrite(const FLAC__SeekableStreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
++static FLAC__StreamDecoderWriteStatus flacwrite(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
+ {
+ decoder = decoder;
+
+@@ -132,7 +132,7 @@
+ }
+ }
+
+-static void flacmetadata(const FLAC__SeekableStreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
++static void flacmetadata(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
+ {
+ decoder = decoder;
+
+@@ -156,11 +156,11 @@
+ }
+ }
+
+-static void flacerror(const FLAC__SeekableStreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
++static void flacerror(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
+ {
+ decoder = decoder;
+
+- FLAC__FileDecoder *file_decoder = (FLAC__FileDecoder *)client_data;
++ FLAC__StreamDecoder *file_decoder = (FLAC__StreamDecoder *)client_data;
+
+ file_decoder = file_decoder;
+ status = status;
+@@ -262,17 +262,8 @@
+ }
+ }
+
+- decoder = FLAC__seekable_stream_decoder_new();
+- FLAC__seekable_stream_decoder_set_md5_checking(decoder, false);
+- FLAC__seekable_stream_decoder_set_read_callback(decoder, flacread);
+- FLAC__seekable_stream_decoder_set_seek_callback(decoder, flacseek);
+- FLAC__seekable_stream_decoder_set_tell_callback(decoder, flactell);
+- FLAC__seekable_stream_decoder_set_length_callback(decoder, flaclength);
+- FLAC__seekable_stream_decoder_set_eof_callback(decoder, flaceof);
+- FLAC__seekable_stream_decoder_set_write_callback(decoder, flacwrite);
+- FLAC__seekable_stream_decoder_set_metadata_callback(decoder, flacmetadata);
+- FLAC__seekable_stream_decoder_set_error_callback(decoder, flacerror);
+- FLAC__seekable_stream_decoder_set_client_data(decoder, this);
++ decoder = FLAC__stream_decoder_new();
++ FLAC__stream_decoder_set_md5_checking(decoder, false);
+
+ freq = 0;
+ bitrate = 0;
+@@ -281,8 +272,17 @@
+ totalTime = 0;
+ totalTime = totalTime < 0 ? 0 : totalTime;
+
+- FLAC__seekable_stream_decoder_init(decoder);
+- FLAC__seekable_stream_decoder_process_until_end_of_metadata(decoder);
++ FLAC__stream_decoder_init_stream(decoder,
++ flacread,
++ flacseek,
++ flactell,
++ flaclength,
++ flaceof,
++ flacwrite,
++ flacmetadata,
++ flacerror,
++ this);
++ FLAC__stream_decoder_process_until_end_of_metadata(decoder);
+
+ inited = TRUE;
+ return TRUE;
+@@ -295,8 +295,8 @@
+
+ void FlacDecoder::deinit()
+ {
+- FLAC__seekable_stream_decoder_finish(decoder);
+- FLAC__seekable_stream_decoder_delete(decoder);
++ FLAC__stream_decoder_finish(decoder);
++ FLAC__stream_decoder_delete(decoder);
+
+ if (input()->isOpen())
+ input()->close();
+@@ -330,7 +330,7 @@
+ }
+
+ bool flacok = true;
+- FLAC__SeekableStreamDecoderState decoderstate;
++ FLAC__StreamDecoderState decoderstate;
+
+ while (! done && ! finish) {
+ lock();
+@@ -340,12 +340,12 @@
+ FLAC__uint64 sample = (FLAC__uint64)(seekTime * 44100.0);
+ if (sample > totalsamples - 50)
+ sample = totalsamples - 50;
+- FLAC__seekable_stream_decoder_seek_absolute(decoder, sample);
++ FLAC__stream_decoder_seek_absolute(decoder, sample);
+ seekTime = -1.0;
+ }
+
+- flacok = FLAC__seekable_stream_decoder_process_single(decoder);
+- decoderstate = FLAC__seekable_stream_decoder_get_state(decoder);
++ flacok = FLAC__stream_decoder_process_single(decoder);
++ decoderstate = FLAC__stream_decoder_get_state(decoder);
+
+ if (decoderstate == 0 || decoderstate == 1)
+ {
+--- flacdecoder.h.old 2007-03-11 18:14:37.000000000 -0400
++++ flacdecoder.h 2007-03-11 18:14:12.000000000 -0400
+@@ -35,7 +35,7 @@
+ char *output_buf;
+ ulong output_bytes, output_at;
+
+- FLAC__SeekableStreamDecoder *decoder;
++ FLAC__StreamDecoder *decoder;
+
+ unsigned int bks;
+ bool done, finish;
+--- flacencoder.cpp.old 2007-03-11 18:14:37.000000000 -0400
++++ flacencoder.cpp 2007-03-11 18:14:12.000000000 -0400
+@@ -9,7 +9,7 @@
+ #include "flacencoder.h"
+ #include "metaioflacvorbiscomment.h"
+
+-#include <FLAC/file_encoder.h>
++#include <FLAC/stream_encoder.h>
+ #include <FLAC/assert.h>
+ #include <mythtv/mythcontext.h>
+
+@@ -29,32 +29,32 @@
+ int rice_parameter_search_dist = 0;
+ int max_lpc_order = 8;
+
+- encoder = FLAC__file_encoder_new();
++ encoder = FLAC__stream_encoder_new();
+
+- FLAC__file_encoder_set_streamable_subset(encoder, true);
+- FLAC__file_encoder_set_do_mid_side_stereo(encoder, do_mid_side);
+- FLAC__file_encoder_set_loose_mid_side_stereo(encoder, loose_mid_side);
+- FLAC__file_encoder_set_channels(encoder, NUM_CHANNELS);
+- FLAC__file_encoder_set_bits_per_sample(encoder, 16);
+- FLAC__file_encoder_set_sample_rate(encoder, 44100);
+- FLAC__file_encoder_set_blocksize(encoder, blocksize);
+- FLAC__file_encoder_set_max_lpc_order(encoder, max_lpc_order);
+- FLAC__file_encoder_set_qlp_coeff_precision(encoder, qlp_coeff_precision);
+- FLAC__file_encoder_set_do_qlp_coeff_prec_search(encoder, false);
+- FLAC__file_encoder_set_do_escape_coding(encoder, do_escape_coding);
+- FLAC__file_encoder_set_do_exhaustive_model_search(encoder,
++ FLAC__stream_encoder_set_streamable_subset(encoder, true);
++ FLAC__stream_encoder_set_do_mid_side_stereo(encoder, do_mid_side);
++ FLAC__stream_encoder_set_loose_mid_side_stereo(encoder, loose_mid_side);
++ FLAC__stream_encoder_set_channels(encoder, NUM_CHANNELS);
++ FLAC__stream_encoder_set_bits_per_sample(encoder, 16);
++ FLAC__stream_encoder_set_sample_rate(encoder, 44100);
++ FLAC__stream_encoder_set_blocksize(encoder, blocksize);
++ FLAC__stream_encoder_set_max_lpc_order(encoder, max_lpc_order);
++ FLAC__stream_encoder_set_qlp_coeff_precision(encoder, qlp_coeff_precision);
++ FLAC__stream_encoder_set_do_qlp_coeff_prec_search(encoder, false);
++ FLAC__stream_encoder_set_do_escape_coding(encoder, do_escape_coding);
++ FLAC__stream_encoder_set_do_exhaustive_model_search(encoder,
+ do_exhaustive_model_search);
+- FLAC__file_encoder_set_min_residual_partition_order(encoder,
++ FLAC__stream_encoder_set_min_residual_partition_order(encoder,
+ min_residual_partition_order);
+- FLAC__file_encoder_set_max_residual_partition_order(encoder,
++ FLAC__stream_encoder_set_max_residual_partition_order(encoder,
+ max_residual_partition_order);
+- FLAC__file_encoder_set_rice_parameter_search_dist(encoder,
++ FLAC__stream_encoder_set_rice_parameter_search_dist(encoder,
+ rice_parameter_search_dist);
+
+- FLAC__file_encoder_set_filename(encoder, outfile.local8Bit());
++
+
+- int ret = FLAC__file_encoder_init(encoder);
+- if (ret != FLAC__FILE_ENCODER_OK)
++ int ret = FLAC__stream_encoder_init_file(encoder, outfile.local8Bit(), NULL, NULL);
++ if (ret != FLAC__STREAM_ENCODER_OK)
+ {
+ VERBOSE(VB_GENERAL, QString("Error initializing FLAC encoder."
+ " Got return code: %1").arg(ret));
+@@ -70,8 +70,8 @@
+
+ if (encoder)
+ {
+- FLAC__file_encoder_finish(encoder);
+- FLAC__file_encoder_delete(encoder);
++ FLAC__stream_encoder_finish(encoder);
++ FLAC__stream_encoder_delete(encoder);
+ }
+
+ if (metadata)
+@@ -102,7 +102,7 @@
+
+ if(sampleindex == MAX_SAMPLES || (length == 0 && sampleindex > 0) )
+ {
+- if (!FLAC__file_encoder_process(encoder,
++ if (!FLAC__stream_encoder_process(encoder,
+ (const FLAC__int32 * const *) input,
+ sampleindex))
+ {
+--- flacencoder.h.old 2007-03-11 18:14:37.000000000 -0400
++++ flacencoder.h 2007-03-11 18:14:12.000000000 -0400
+@@ -4,7 +4,7 @@
+ #include <qstring.h>
+
+ #define HAVE_INTTYPES_H
+-#include <FLAC/file_encoder.h>
++#include <FLAC/stream_encoder.h>
+
+ #include "encoder.h"
+
+@@ -21,7 +21,7 @@
+ int addSamples(int16_t *bytes, unsigned int len);
+
+ private:
+- FLAC__FileEncoder *encoder;
++ FLAC__StreamEncoder *encoder;
+ unsigned int sampleindex;
+ FLAC__int32 inputin[NUM_CHANNELS][MAX_SAMPLES];
+ FLAC__int32 *input[NUM_CHANNELS];
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythnews/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythnews/PKGBUILD
new file mode 100644
index 0000000..ef46fd9
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythnews/PKGBUILD
@@ -0,0 +1,34 @@
+pkgname=mythnews-release-fixes
+pkgver=17719
+pkgrel=4
+pkgdesc="News checking plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-release-fixes')
+conflicts=('mythtv-plugins-release-fixes')
+groups=('mythtv-all-plugins-release-fixes')
+license="GPL"
+source=()
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svnmod=mythplugins
+build() {
+ cd $startdir/src/
+ echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ cd $startdir/src/mythplugins
+ PLUGIN=mythnews
+ grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro
+ if [ $? != 0 ]
+ then
+ echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+ msg "appending program lib"
+ fi
+ make distclean
+ ./configure --disable-all --enable-mythnews
+
+ make -j 2 || return 1
+
+ make INSTALL_ROOT=$startdir/pkg install
+}
+md5sums=('2a9fbf45ae58a3a35857ce8d7c4d12db')
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythphone/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythphone/PKGBUILD
new file mode 100644
index 0000000..0311916
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythphone/PKGBUILD
@@ -0,0 +1,42 @@
+pkgname=mythphone-release-fixes
+pkgver=17719
+pkgrel=3
+pkgdesc="Plugin that allows phone calls to be made to MythTv"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-release-fixes')
+conflicts=('mythtv-plugins-release-fixes')
+groups=('mythtv-all-plugins-release-fixes')
+license="GPL"
+source=()
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svnmod=mythplugins
+
+build() {
+ cd $startdir/src/
+ echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ cd $startdir/src/mythplugins
+ make distclean
+ PLUGIN=mythphone
+ grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro
+ if [ $? != 0 ]
+ then
+ echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+ msg "appending program lib"
+ fi
+
+ msg "Correcting configure kde3 to kde"
+ sed -i 's#kde3#kde#' configure || return 1
+ ./configure --enable-opengl --disable-all --enable-mythphone || return 1
+ qmake mythplugins.pro || return 1
+ make qmake || return 1
+
+ msg "Correcting Makefile kde3 to kde"
+ sed -i 's#kde3#kde#' ./mythphone/mythphone/Makefile || return 1
+
+ make -j 2 || return 1
+ make INSTALL_ROOT=$startdir/pkg install
+}
+
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythsmolt/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythsmolt/PKGBUILD
new file mode 100644
index 0000000..021d270
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythsmolt/PKGBUILD
@@ -0,0 +1,27 @@
+pkgname=mythsmolt-release-fixes
+pkgver=0.21
+pkgrel=4
+pkgdesc="mythsmolt, a hardware profileing tool"
+arch=('i686' 'x86_64')
+url="http://www.mythvantage.com"
+license=('GPL')
+depends=("mythtv-release-fixes" urlgrabber hal)
+source=("http://www.mythvantage.com/request.php?4")
+
+groups=('mythtv-extras')
+
+build() {
+ cd $startdir/src/mythsmolt_src/mythsmolt
+ . /etc/profile.d/qt3.sh
+
+ # use QT3 qmake
+ export PATH=$QTDIR/bin:$PATH
+ echo "INCLUDEPATH += /usr/local/include/mythtv" >> mythsmolt.pro.local
+ qmake mythsmolt.pro.local
+ make qmake || return 1
+ make -j 2 || return 1
+
+ make INSTALL_ROOT=$startdir/pkg install
+}
+
+
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythvideo/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythvideo/PKGBUILD
new file mode 100644
index 0000000..cdc8dea
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythvideo/PKGBUILD
@@ -0,0 +1,36 @@
+pkgname=mythvideo-release-fixes
+pkgver=17719
+pkgrel=2
+pkgdesc="Video playback and browsing plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-release-fixes' 'perlxml' 'perl-libwww' 'perl-uri' 'perl-xml-simple' 'ffmpeg')
+license="GPL"
+conflicts=('mythtv-plugins-release-fixes')
+groups=('mythtv-all-plugins-release-fixes')
+
+source=()
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svnmod=mythplugins
+
+build() {
+ cd $startdir/src/
+ echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ cd $startdir/src/mythplugins
+ make distclean
+ PLUGIN=mythvideo
+ grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro
+ if [ $? != 0 ]
+ then
+ echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+ msg "appending program lib"
+ fi
+ ./configure --disable-all --enable-mythvideo --enable-transcode
+
+ make -j 2 || return 1
+
+ make INSTALL_ROOT=$startdir/pkg install
+}
+md5sums=('2a9fbf45ae58a3a35857ce8d7c4d12db')
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythweather/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythweather/PKGBUILD
new file mode 100644
index 0000000..997f78a
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythweather/PKGBUILD
@@ -0,0 +1,37 @@
+pkgname=mythweather-release-fixes
+pkgver=17719
+pkgrel=6
+pkgdesc="Weather checking plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-release-fixes' 'wget' 'perl-xml-sax' 'perl-soap-lite' 'perl-image-size' 'imagemagick')
+conflicts=('mythtv-plugins-release-fixes')
+groups=('mythtv-all-plugins-release-fixes')
+license="GPL"
+source=()
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svnmod=mythplugins
+
+build() {
+ cd $startdir/src/
+ echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ cd $startdir/src/mythplugins
+ make distclean
+ PLUGIN=mythweather
+ grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro
+ if [ $? != 0 ]
+ then
+ echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+ msg "appending program lib"
+ fi
+ ./configure --enable-opengl --disable-all --enable-mythweather
+
+ make -j 2 || return 1
+
+ make INSTALL_ROOT=$startdir/pkg install
+}
+md5sums=('2a9fbf45ae58a3a35857ce8d7c4d12db')
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythweb/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythweb/PKGBUILD
new file mode 100755
index 0000000..9bddf1c
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythweb/PKGBUILD
@@ -0,0 +1,34 @@
+pkgname=mythweb-release-fixes
+pkgver=17724
+pkgrel=21
+pkgdesc="mythweb"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686')
+depends=(php fcgi libmysqlclient )
+conflicts=('mythweb' 'mythweb-fixes')
+replaces=()
+backup=()
+install='mythweb.install'
+source=(mythweblighttpd.patch dblogininit.inc )
+md5sums=()
+_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins
+_svnmod=mythplugins
+build() {
+echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+#svn co http://cvs.mythtv.org/svn/trunk/mythtv
+#svn co http://cvs.mythtv.org/svn/trunk/mythplugins
+#svn co http://cvs.mythtv.org/svn/trunk/myththemes
+cd $startdir/src/mythplugins
+
+#take care of fing mythweb
+mkdir -p $startdir/pkg/data/srv/httpd/htdocs/
+cp -rp mythweb $startdir/pkg/data/srv/httpd/htdocs/
+cp -f $startdir/src/dblogininit.inc $startdir/pkg/data/srv/httpd/htdocs/mythweb/includes/
+cd $startdir/pkg/data/srv/httpd/htdocs/mythweb/includes
+patch -p0 < $startdir/src/mythweblighttpd.patch
+
+chown -R nobody:nobody $startdir/pkg/data/srv/httpd/htdocs/mythweb
+chmod -R 775 $startdir/pkg/data/srv/httpd/htdocs/mythweb
+}
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythweb/dblogininit.inc b/abs/mv-core/myth/release-fixes/plugins/mythweb/dblogininit.inc
new file mode 100755
index 0000000..c5395c5
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythweb/dblogininit.inc
@@ -0,0 +1,6 @@
+<?
+ $_SERVER["db_server"] = "localhost";
+ $_SERVER["db_name"] = "mythconverg";
+ $_SERVER["db_login"] = "mythtv";
+ $_SERVER["db_password"] = "mythtv";
+?>
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythweb/mythweb.install b/abs/mv-core/myth/release-fixes/plugins/mythweb/mythweb.install
new file mode 100755
index 0000000..e135b6c
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythweb/mythweb.install
@@ -0,0 +1,37 @@
+
+# arg 1: the new package version
+pre_install () {
+/bin/true
+}
+
+post_install() {
+ #cp /etc/lighttpd/lighttpd.conf /tmp
+# sed -e "s/# .* \"mod_fastcgi\",/\"mod_fastcgi\"\,/g" /tmp/lighttpd.conf > /etc/lighttpd/lighttpd.conf
+ /bin/true
+
+}
+pre_upgrade () {
+ pre_install
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ post_install
+
+ /bin/true
+}
+
+# arg 1: the old package version
+pre_remove() {
+ /bin/true
+}
+
+# arg 1: the old package version
+post_remove() {
+/bint/true
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/mv-core/myth/release-fixes/plugins/mythweb/mythweblighttpd.patch b/abs/mv-core/myth/release-fixes/plugins/mythweb/mythweblighttpd.patch
new file mode 100755
index 0000000..6403a88
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/plugins/mythweb/mythweblighttpd.patch
@@ -0,0 +1,13 @@
+--- database.php.orig 2007-12-31 21:25:30.000000000 +0000
++++ database.php 2007-12-31 21:25:50.000000000 +0000
+@@ -18,6 +18,10 @@
+ custom_error("Please install the MySQL libraries for PHP.\n"
+ .'The package is usually called something like php-mysql.');
+ }
++ if (empty($_SERVER['db_server']) || empty($_SERVER['db_name']) || empty($_SERVER['db_login'])) {
++ require_once 'dblogininit.inc';
++ }
++
+
+ // No database connection info defined?
+ if (empty($_SERVER['db_server']) || empty($_SERVER['db_name']) || empty($_SERVER['db_login'])) {
diff --git a/abs/mv-core/myth/release-fixes/syth-lacquer-clean/PKGBUILD b/abs/mv-core/myth/release-fixes/syth-lacquer-clean/PKGBUILD
new file mode 100755
index 0000000..1f47a47
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/syth-lacquer-clean/PKGBUILD
@@ -0,0 +1,22 @@
+pkgname=syth-lacquer-clean-wide
+pkgver=1
+pkgrel=9
+pkgdesc=""
+url=""
+license=""
+depends=()
+makedepends=()
+conflicts=()
+replaces=()
+backup=()
+#source=($pkgname.tar.bz2)
+source=(http://jmeyer.us/e107_files/downloads/SVN/$pkgname.tar.bz2)
+
+md5sums=()
+
+build() {
+ cd $startdir/src
+ mkdir -p $startdir/pkg/usr/local/share/mythtv/themes
+ cp -rp $pkgname $startdir/pkg/usr/local/share/mythtv/themes/
+
+}
diff --git a/abs/mv-core/myth/release-fixes/syth-lacquer-wide/PKGBUILD b/abs/mv-core/myth/release-fixes/syth-lacquer-wide/PKGBUILD
new file mode 100755
index 0000000..e160f46
--- /dev/null
+++ b/abs/mv-core/myth/release-fixes/syth-lacquer-wide/PKGBUILD
@@ -0,0 +1,23 @@
+pkgname=syth-lacquer-wide
+pkgver=4
+pkgrel=1
+pkgdesc="Syth for mythtv .21"
+url=""
+license=""
+depends=()
+makedepends=()
+conflicts=()
+replaces=()
+backup=()
+arch='i686'
+
+source=(http://www.mythvantage.com/src/syth-lacquer-wide.tgz)
+
+md5sums=()
+
+build() {
+ cd $startdir/src
+ mkdir -p $startdir/pkg/usr/local/share/mythtv/themes
+ cp -rp $pkgname $startdir/pkg/usr/local/share/mythtv/themes/
+
+}