Author: hobbes1069
Update of /cvs/free/rpms/mythtv/devel
In directory old02.ovh.rpmfusion.lan:/tmp/cvs-serv2604
Modified Files:
ChangeLog mythtv-0.26-fixes.patch mythtv.spec
Log Message:
* Sat Dec 22 2012 Richard Shaw <hobbes1069(a)gmail.com> - 0.26.0-4
- Update to latest upstream release.
Index: ChangeLog
===================================================================
RCS file: /cvs/free/rpms/mythtv/devel/ChangeLog,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ChangeLog 30 Oct 2012 02:57:20 -0000 1.5
+++ ChangeLog 22 Dec 2012 22:45:07 -0000 1.6
@@ -1,3 +1,365 @@
+commit 637d6d87d20aa8b17247fedf87b6c78ef091f08c
+Author: Stuart Morgan <smorgan(a)mythtv.org>
+Date: Tue Dec 18 16:07:53 2012 +0000
+
+ Fix copy/paste error in MythUIType::SetMinArea(). Coverity 746771
+
+commit 190279b50307cd5b53d4ae9c8f4dc70b13eeeed5
+Author: Stuart Morgan <smorgan(a)mythtv.org>
+Date: Tue Dec 18 16:06:30 2012 +0000
+
+ Fix copy/paste error in MythUIType::AdjustMinArea(). Coverity 746772
+
+commit 3d7a20ce1008b1a84127f17dea7c75e05cacb4aa
+Author: Karl Dietz <dekarl(a)mythtv.org>
+Date: Mon Dec 17 00:32:42 2012 +0100
+
+ Speed up and reduce temporary space of time search a lot.
+
+ By factoring out the description into a super query the performance can
+ be greatly improved (e.g. from 2 minutes to 2 seconds)
+
+ Thanks to sphery for inspiration by [d9fb21853f] and justinh for testing
+ and fixing my braino with the column order.
+
+ Fixes #10023
+ (cherry picked from commit c0c47344879d3467cfea62938a33e70278252b36)
+
+ Conflicts:
+
+ mythtv/libs/libmyth/programinfo.cpp
+
+commit cd0212131d67c21c1f346fbb659cf268e76a4454
+Author: Jean-Yves Avenard <jyavenard(a)mythtv.org>
+Date: Mon Dec 17 01:01:03 2012 +1100
+
+ Revert "Revert "Temporary fix for stuttery playback of AVI files over
Storage Group.""
+
+ This reverts commit f1cc7e3e4410195aeb6c7da3bba7dc44830bdc4e.
+ Was never supposed to commit this revert
+
+commit f1cc7e3e4410195aeb6c7da3bba7dc44830bdc4e
+Author: Jean-Yves Avenard <jyavenard(a)mythtv.org>
+Date: Sat Dec 15 20:02:44 2012 +1100
+
+ Revert "Temporary fix for stuttery playback of AVI files over Storage
Group."
+
+ This reverts commit c21e9beb16583f640e7457e798c047b3af05cf15.
+
+commit c21e9beb16583f640e7457e798c047b3af05cf15
+Author: Jean-Yves Avenard <jyavenard(a)mythtv.org>
+Date: Sat Dec 15 18:53:49 2012 +1100
+
+ Temporary fix for stuttery playback of AVI files over Storage Group.
+
+ This is a reverse of ffmpeg SHA1:8df774be88c347c40f1b2411ed9e391dfec0ebb7
+
http://git.videolan.org/?p=ffmpeg.git;a=commit;h=8df774be88c347c40f1b2411...
+
+ This is not a proper fix. It only reveals an issue with myth Storage Group file ring
buffer.
+ With this ffmpeg change, some AVI files are detected as non-interleaved and the
readahead thread starts to pull MB of data which saturates 100Mbit/s link causing the
video playback to stutter.
+ (cherry picked from commit f1540fe05ee15d1f53fe30e137931b185b791821)
+
+commit b8998fc41b1cb23d816354c211e8fa96ab316db3
+Author: Jim Stichnoth <jstichnoth(a)mythtv.org>
+Date: Wed Dec 5 09:08:32 2012 -0800
+
+ Cutlist editor: Trigger a redraw of the editbar when changes are made.
+
+ Otherwise, cut/keep marks may incorrectly stay visible when changes to
+ cut/keep regions are made.
+ (cherry picked from commit 1241485d5d2ec81deddf2c5ab8deb21b7d796248)
+
+commit 1ecfe64da85dad6be51174e139b7ed9c4f85b3f6
+Author: Jim Stichnoth <jstichnoth(a)mythtv.org>
+Date: Wed Dec 5 08:53:51 2012 -0800
+
+ Properly initialize the MythPlayer::video_aspect field.
+
+ The MythPlayer constructor unconditionally initializes video_aspect to
+ 4.0/3.0. In some configurations, pressing EDIT during the "Please
+ Wait" screen before the start of playback of a non-4:3 recording, will
+ bring up the cutlist editor locked into 4:3 mode. Explicitly
+ initializing video_aspect earlier fixes this.
+ (cherry picked from commit 192e850ad9a87b7ff457d30cf8308b568cc18299)
+
+commit 2baece97462dc411cbf9f45f11667b2e4f186730
+Author: Stuart Morgan <smorgan(a)mythtv.org>
+Date: Wed Dec 12 13:39:32 2012 +0000
+
+ Don't setup to decode every video stream found, just the first.
+
+ Fixes playback of certain video files containing multiple video streams.
+
+commit 09ac5b2226b8e6d855dbfc9c24fdfd2cf9075687
+Author: Stuart Morgan <smorgan(a)mythtv.org>
+Date: Wed Dec 5 16:34:52 2012 +0000
+
+ Fix use after free in MediaMonitor::RemoveDevice(), found by cppcheck
+
+commit 93204a3747db4219833cdd24eaa41146fdc6b8d5
+Author: Stuart Morgan <smorgan(a)mythtv.org>
+Date: Wed Dec 5 10:35:24 2012 +0000
+
+ Fix .empty() being called when .clear() was meant in cddb.cpp. Spotted by cppcheck
+
+commit b28041a11711a2ddd9eb63f8eee0c1ce3009c4ac
+Author: Daniel Thor Kristjansson <danielk(a)cuymedia.net>
+Date: Wed Nov 21 10:27:31 2012 -0500
+
+ Fix #10995. Default to local time for mythshutdown --setwakeup.
+
+commit 3c359636b261409a9cf0761bdbb82092b93a0306
+Author: Jim Stichnoth <jstichnoth(a)mythtv.org>
+Date: Mon Nov 26 19:16:49 2012 -0800
+
+ Subtitles: Don't use a persistent DB setting to control forced subtitles.
+
+ Instead, always allow forced subtitles when playback starts, and allow
+ the user to disable/enable forced subtitles during the current
+ playback.
+ (cherry picked from commit 0b7e9027cbc4d4b0b15533b2701077733f62162c)
+
+commit ed7b577702442c62b5d0f43b434fcb5494d0a8d8
+Author: Jean-Yves Avenard <jyavenard(a)mythtv.org>
+Date: Sat Dec 1 17:07:09 2012 +1100
+
+ Fix cross-compilation on mac.
+
+ Depending on the version of Qt you are using QMAKE_OBJECTIVE_CXXFLAGS may be ignored
and QMAKE_OBJECTIVE_CFLAGS is used instead.
+ So define both.
+
+ [cherry-picked from 75e47c5989248aebe5c0d2b41b11c6465b2b4ebc]
+
+commit b62198ffcada256ebf3c40c9c6c4be1615ae17ea
+Author: Chris Pinkham <cpinkham(a)mythtv.org>
+Date: Fri Nov 30 20:58:26 2012 -0800
+
+ Fix mythfrontend services API /Frontend/PlayRecording call.
+
+ We don't need to convert the specified starttime toLocalTime() anymore.
+
+ Copies 3eef99e from master.
+
+ Fixes #11236 and #11152 I believe.
+
+commit 6313659aba17e992b726fcf6edc613518d3c0205
+Author: Chris Petersen <cpetersen(a)mythtv.org>
+Date: Sun Nov 25 13:59:46 2012 -0800
+
+ Patch to fix UTC issues
+
+ Closes #11079
+
+
http://code.mythtv.org/trac/ticket/11079
+
+commit 57396ed6cfe4195a6ab4ef1087e233ba66ce402c
+Author: Jean-Yves Avenard <jyavenard(a)mythtv.org>
+Date: Fri Nov 30 20:13:54 2012 +1100
+
+ Fix AirTunes so it works with iTunes 11
+
+ iTunes used to only send an AES-128 challenge once, and myth was expecting that the
challenge came during the OPTIONS packet.
+ The challenge is now sent with more packet, including during the ANNOUNCE one.
+ So we move the handling of the challenge so it will work no matter which packet it
comes with.
+
+ Tested with iTunes 11, iTunes 10 and iOS 6.01
+
+ [cherry-picked from 06be92206c772509875dbde313769bfae9a2adf7]
+
+commit bfa76a2f924af04327afcf4b04177a2fd6870f24
+Author: Richard <peper03(a)yahoo.com>
+Date: Thu Nov 29 20:54:55 2012 +0100
+
+ Set palette correctly when DVD menu highlight changes to ensure highlights are the
right colour/have the correct transparency.
+
+ Fixes #11265
+
+ Signed-off-by: Stuart Morgan <smorgan(a)mythtv.org>
+ (cherry picked from commit 5df1322ae0f73566766bcde0c7948292877fd443)
+
+commit 84cc4bb95a6496428221981a18013f8846617924
+Author: Stuart Morgan <smorgan(a)mythtv.org>
+Date: Thu Nov 29 19:31:49 2012 +0000
+
+ Fix playback of DVDs which feature an empty audio stream
+ (cherry picked from commit 20baa43b4b0313900dec05c11e6054760123cb9d)
+
+commit 8a7892b1ca1ec307d32a78153b57e012a721e9d3
+Author: Ian Dall <ian(a)beware.dropbear.id.au>
+Date: Thu Nov 29 19:00:10 2012 +0000
+
+ Fix deletes on Slave backends. Remove references to deleted_set and
+ initialise dont_expire_set properly which conflicted with 'deleted'
+ recgroup behaviour since 0.25. Fixes #10704
+
+ Signed-off-by: Stuart Morgan <smorgan(a)mythtv.org>
+ (cherry picked from commit e150a19030a81e3c099eff76b280b886122529b1)
+
+commit cd9f7eb68642f9052de40e68d544ccd40fc112a1
+Author: Stuart Morgan <smorgan(a)mythtv.org>
+Date: Thu Nov 29 17:54:00 2012 +0000
+
+ Treat POLLHUP as EOF not an error, fixes IVTV (PVR-) recorders failing. Based on
patch from ltskinol(a)gmail.com Fixes #10732
+ (cherry picked from commit 3d13d795b2ae4a66f4bd3e5bdfd4168c66474282)
+
+commit 793814e81ae7f0b2e54df6adf9b64d43b0f52df3
+Author: Stuart Morgan <smorgan(a)mythtv.org>
+Date: Thu Nov 29 17:15:15 2012 +0000
+
+ Don't strip unnecessary white space from title when creating the title list.
Fixes #11200
+ (cherry picked from commit b47711179612a12d8e4f888c426cb5b268893797)
+
+commit 10479af5e68010d0b25982323cd3b743bd353d88
+Author: Jim Stichnoth <jstichnoth(a)mythtv.org>
+Date: Fri Nov 23 22:21:53 2012 -0800
+
+ Reduce the amount of "Build background buttonlist" logging.
+ (cherry picked from commit d1243e25eba64b1e20e6c1ea901eaaa6b3044049)
+
+commit ca8f5e75dd4d222599c48ad3c849356e31042bd4
+Author: Jim Stichnoth <jstichnoth(a)mythtv.org>
+Date: Fri Nov 23 07:45:23 2012 -0800
+
+ Subtitles: Add support for forced text subtitle tracks.
+
+ Fixes #11242.
+
+ If there is a forced text subtitle track (which is possible in e.g. a
+ .mkv container), and forced subtitles are allowed, then start playback
+ with that subtitle track selected. Otherwise, use the frontend
+ settings to decide which captions/subtitles (if any) to enable at
+ startup.
+
+ Background on the mythtv-users mailing list -
+
http://www.gossamer-threads.com/lists/mythtv/users/532845 .
+ (cherry picked from commit 64a3cd08752a07ea7928df2d1c713f75a8181f58)
+
+commit b45c98aded5223ab77de7a2be3603878f7f6cec1
+Author: Paul Harrison <pharrison(a)mythtv.org>
+Date: Thu Nov 1 21:34:11 2012 +0000
+
+ mythmusic: Fix streaming radio not being able to connect to some streams
+
+ This fixes a couple of errors with creating the stream GET request header.
+ If the path part of the the URI is empty the HTTP/1.1 spec says it should be
+ specified as "/" and not be empty and the Host request-header field should
+ contain the port if it is non standard.
+
+ Fixes #11214
+
+ Signed-off-by: Stuart Morgan <smorgan(a)mythtv.org>
+ (cherry picked from commit fe22adc5c485b8b19969b0e1804a84f652227577)
+
+commit 17c0c77ddbb2e6f085be6b08bac31a9361b682ab
+Author: Stuart Morgan <smorgan(a)mythtv.org>
+Date: Wed Nov 21 14:05:54 2012 +0000
+
+ Fix Audio Description and Commentary track filtering when auto-selecting audio track
+
+ Fixes #9878
+ Fixes #3260
+ Fixes #10963
+ (cherry picked from commit ee375344e4ac309917fb85f51c9e05ca2b4761c2)
+
+commit b0a1d7298b3d26a805de2535957eab2c80e87f3c
+Author: Stuart Morgan <smorgan(a)mythtv.org>
+Date: Mon Nov 19 13:29:52 2012 +0000
+
+ Have EDIT open the metadata editor in the CD ripping screen
+ (cherry picked from commit 0e281107a8254c77317f9997625b6e3c04097742)
+
+commit 340b5d4099068fc1fe72548e2d98ac4733c51e55
+Author: Richard <peper03(a)yahoo.com>
+Date: Sat Nov 17 14:38:36 2012 +0100
+
+ Changed DVD angle handling to be 1-based throughout (as they are on DVDs). This also
affects the SWITCHTOANGLE action via the Services API.
+
+ Signed-off-by: Stuart Morgan <smorgan(a)mythtv.org>
+ (cherry picked from commit 3e01436a867332ae2aaa24b89b1c5b8ec35480e0)
+
+commit 8c68560fd05ed4c9f99b207f22bb58306cb6ce2d
+Author: Stuart Morgan <smorgan(a)mythtv.org>
+Date: Fri Nov 16 18:37:07 2012 +0000
+
+ Don't treat unknown text display modes as audio tracks. Fixes
+ TOGGLE_SUBTITLES not working with DVDs after leaving a menu, although a better fix
specifically for this problem may be added later.
+ (cherry picked from commit 2653de8643929aeaaaae3dd5e2a8aa3b86220c47)
+
+commit 81e8fa5175436ab2487944cc66de95c509e8cbc5
+Author: David Engel <dengel(a)mythtv.org>
+Date: Tue Nov 13 10:31:05 2012 -0600
+
+ Reschedule when a recording is undeleted.
+
+ Note: an unwitting user could unintentionally bypass this change by
+ changing the recording group directly from "Deleted" to something
+ else. Possibly fix this in the future by moving all releated fixups
+ into RecordingInfo::ApplyRecordRecGroupChange() instead of having
+ every caller do them.
+
+ Refs #11224
+ (cherry picked from commit 5e1c14e8c295fb00a3f2e359021be026104863db)
+
+commit c57b92740ac15e708bd8a68eb767b484d8b26f4a
+Author: David Engel <dengel(a)mythtv.org>
+Date: Tue Nov 13 09:47:48 2012 -0600
+
+ Fix a possible reace condition when a recording finishes.
+
+ There was a slight, albeit very unlikely, possibility the scheduler
+ could run before the recorded table was updated. This avoids it by
+ updating the database before notifying the scheduler.
+
+ Refs #11224
+ (cherry picked from commit 729e3d56d3e984d35b4fecd249da7c3e1bdcbfb9)
+
+commit 1618035441204b0a0f58e8b1f87f369c04df5527
+Author: David Engel <dengel(a)mythtv.org>
+Date: Tue Nov 13 09:44:38 2012 -0600
+
+ Fix multiple database bindings issue in Scheduler::ResetDuplicates().
+
+ This causesd the duplicate status of programs without programids or
+ findids to not get updated properly.
+
+ Fixes #11224
+ (cherry picked from commit 6a147ecf09aea985f95d8dcbe4edacc9e18f4a38)
+
+commit 5d8e8e17df880b362ed2305b65fd5d1cd18c426f
+Author: Richard <peper03(a)yahoo.com>
+Date: Mon Nov 12 00:28:05 2012 +0100
+
+ When processing frames from DVD/Blu-ray ringbuffer, menu frames are now buffered as
necessary to ensure stutter-free playback.
+
+ Refs #11233
+
+ Signed-off-by: Stuart Morgan <smorgan(a)mythtv.org>
+ (cherry picked from commit 62816805dbbce996bd8ee61da3bdfca1bb1bcef9)
+
+ Signed-off-by: Stuart Morgan <smorgan(a)mythtv.org>
+
+commit cd2e061f999d336a87fad9c3eace6fd3c0d01dd4
+Author: Raymond Wagner <rwagner(a)mythtv.org>
+Date: Wed Nov 7 09:49:33 2012 -0500
+
+ Bump internal bindings versions.
+
+commit d988d0fc496b7ebfb5c5dedf1f3cc3f6607b030c
+Author: R.D. Vaughan <r.d.vaughan(a)rogers.com>
+Date: Mon Nov 5 12:18:27 2012 -0500
+
+ Fix timezone issue with custom SQL queries.
+
+ Signed-off-by: Raymond Wagner <rwagner(a)mythtv.org>
+ (cherry picked from commit ee42f13d12721b7566bbb0ec013abff1938f48aa)
+
+commit bcd34da31f2cd6c5a3a489b942c5ded0414d9aa5
+Author: Raymond Wagner <rwagner(a)mythtv.org>
+Date: Mon Nov 5 00:06:20 2012 -0500
+
+ Use translated title rather than original title for results, if available.
+ (cherry picked from commit e13600c833eff1919479ecefca5ad18945777c70)
+
commit e3087dda66175a6b7308ad5a5e80a35ff7d72fd3
Author: Jonatan Lindblad <jlindblad(a)mythtv.org>
Date: Sun Oct 28 21:59:38 2012 +0100
mythtv-0.26-fixes.patch:
README.rst | 1
mythplugins/mytharchive/i18n/mytharchive_es_es.qm |binary
mythplugins/mytharchive/i18n/mytharchive_es_es.ts | 45
mythplugins/mythgallery/i18n/mythgallery_es_es.ts | 4
mythplugins/mythgame/i18n/mythgame_es_es.ts | 4
mythplugins/mythmusic/i18n/mythmusic_es_es.ts | 68
mythplugins/mythmusic/i18n/mythmusic_it.qm |binary
mythplugins/mythmusic/i18n/mythmusic_it.ts | 3790
+++++++---
mythplugins/mythmusic/mythmusic/cddb.cpp | 6
mythplugins/mythmusic/mythmusic/cdrip.cpp | 2
mythplugins/mythmusic/mythmusic/shoutcast.cpp | 20
mythplugins/mythweather/i18n/mythweather_es_es.qm |binary
mythplugins/mythweather/i18n/mythweather_es_es.ts | 3
mythplugins/mythweather/i18n/mythweather_pl.qm |binary
mythplugins/mythweather/i18n/mythweather_pl.ts | 3
mythtv/bindings/perl/Makefile.PL | 1
mythtv/bindings/perl/MythTV.pm | 20
mythtv/bindings/python/MythTV/altdict.py | 2
mythtv/bindings/python/MythTV/dataheap.py | 58
mythtv/bindings/python/MythTV/static.py | 2
mythtv/bindings/python/MythTV/system.py | 4
mythtv/bindings/python/setup.py | 2
mythtv/contrib/imports/mirobridge/mirobridge.py | 101
mythtv/external/FFmpeg/libavcodec/pcm.c | 5
mythtv/external/FFmpeg/libavformat/avidec.c | 9
mythtv/i18n/mythfrontend_es_es.qm |binary
mythtv/i18n/mythfrontend_es_es.ts | 2180
+++--
mythtv/i18n/mythfrontend_pl.qm |binary
mythtv/i18n/mythfrontend_pl.ts | 2733
+++----
mythtv/libs/libmyth/mythcontext.cpp | 2
mythtv/libs/libmyth/mythmediamonitor.cpp | 2
mythtv/libs/libmyth/programinfo.cpp | 20
mythtv/libs/libmythbase/signalhandling.cpp | 8
mythtv/libs/libmythtv/AirPlay/mythraopconnection.cpp | 153
mythtv/libs/libmythtv/Bluray/bdringbuffer.h | 6
mythtv/libs/libmythtv/Bluray/mythbdplayer.cpp | 4
mythtv/libs/libmythtv/DVD/dvdringbuffer.cpp | 8
mythtv/libs/libmythtv/DVD/dvdringbuffer.h | 6
mythtv/libs/libmythtv/DVD/mythdvdplayer.cpp | 8
mythtv/libs/libmythtv/DeviceReadBuffer.cpp | 7
mythtv/libs/libmythtv/ThreadedFileWriter.cpp | 2
mythtv/libs/libmythtv/avformatdecoder.cpp | 117
mythtv/libs/libmythtv/decoderbase.h | 3
mythtv/libs/libmythtv/mythplayer.cpp | 41
mythtv/libs/libmythtv/ringbuffer.h | 4
mythtv/libs/libmythtv/tv_play.cpp | 11
mythtv/libs/libmythtv/tv_rec.cpp | 6
mythtv/libs/libmythui/libmythui.pro | 1
mythtv/libs/libmythui/mythscreenstack.cpp | 2
mythtv/libs/libmythui/mythuibuttonlist.cpp | 2
mythtv/libs/libmythui/mythuieditbar.cpp | 1
mythtv/libs/libmythui/mythuiimage.cpp | 3
mythtv/libs/libmythui/mythuitype.cpp | 11
mythtv/libs/libmythui/mythuiwebbrowser.cpp | 10
mythtv/programs/mythavtest/main.cpp | 5
mythtv/programs/mythbackend/autoexpire.cpp | 4
mythtv/programs/mythbackend/autoexpire.h | 1
mythtv/programs/mythbackend/main.cpp | 5
mythtv/programs/mythbackend/main_helpers.cpp | 4
mythtv/programs/mythbackend/mainserver.cpp | 18
mythtv/programs/mythbackend/scheduler.cpp | 14
mythtv/programs/mythccextractor/main.cpp | 5
mythtv/programs/mythcommflag/main.cpp | 5
mythtv/programs/mythfilldatabase/main.cpp | 5
mythtv/programs/mythfrontend/guidegrid.cpp | 17
mythtv/programs/mythfrontend/main.cpp | 5
mythtv/programs/mythfrontend/playbackbox.cpp | 4
mythtv/programs/mythfrontend/services/frontend.cpp | 2
mythtv/programs/mythjobqueue/main.cpp | 5
mythtv/programs/mythlcdserver/main.cpp | 5
mythtv/programs/mythlogserver/main.cpp | 5
mythtv/programs/mythmediaserver/main.cpp | 5
mythtv/programs/mythmetadatalookup/main.cpp | 5
mythtv/programs/mythpreviewgen/main.cpp | 5
mythtv/programs/mythshutdown/commandlineparser.cpp | 14
mythtv/programs/mythshutdown/main.cpp | 55
mythtv/programs/mythtranscode/main.cpp | 5
mythtv/programs/mythtv-setup/backendsettings.cpp | 6
mythtv/programs/mythtv-setup/main.cpp | 5
mythtv/programs/mythutil/main.cpp | 6
mythtv/programs/mythwelcome/main.cpp | 5
mythtv/programs/scripts/hardwareprofile/distros/mythtv_data/data_mythtv.py | 20
mythtv/programs/scripts/internetcontent/nv_python_libs/youtube/youtube_api.py | 27
mythtv/programs/scripts/metadata/Movie/tmdb3.py | 107
84 files changed, 6245 insertions(+), 3630 deletions(-)
Index: mythtv-0.26-fixes.patch
===================================================================
RCS file: /cvs/free/rpms/mythtv/devel/mythtv-0.26-fixes.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- mythtv-0.26-fixes.patch 4 Dec 2012 19:48:04 -0000 1.2
+++ mythtv-0.26-fixes.patch 22 Dec 2012 22:45:07 -0000 1.3
@@ -6,41 +6,55 @@
mythplugins/mythmusic/i18n/mythmusic_es_es.ts | 68 +-
mythplugins/mythmusic/i18n/mythmusic_it.qm | Bin 55341 -> 67158 bytes
mythplugins/mythmusic/i18n/mythmusic_it.ts | 3790 +++++++++++++++-----
+ mythplugins/mythmusic/mythmusic/cddb.cpp | 6 +-
mythplugins/mythmusic/mythmusic/cdrip.cpp | 2 +-
mythplugins/mythmusic/mythmusic/shoutcast.cpp | 20 +-
mythplugins/mythweather/i18n/mythweather_es_es.qm | Bin 23630 -> 23631 bytes
mythplugins/mythweather/i18n/mythweather_es_es.ts | 3 +-
mythplugins/mythweather/i18n/mythweather_pl.qm | Bin 23846 -> 23847 bytes
mythplugins/mythweather/i18n/mythweather_pl.ts | 3 +-
+ mythtv/bindings/perl/Makefile.PL | 1 -
+ mythtv/bindings/perl/MythTV.pm | 20 +-
mythtv/bindings/python/MythTV/altdict.py | 2 +-
mythtv/bindings/python/MythTV/dataheap.py | 58 +-
mythtv/bindings/python/MythTV/static.py | 2 +-
mythtv/bindings/python/MythTV/system.py | 4 +-
mythtv/bindings/python/setup.py | 2 +-
mythtv/contrib/imports/mirobridge/mirobridge.py | 101 +-
+ mythtv/external/FFmpeg/libavcodec/pcm.c | 5 +-
+ mythtv/external/FFmpeg/libavformat/avidec.c | 9 +
mythtv/i18n/mythfrontend_es_es.qm | Bin 669897 -> 672530 bytes
mythtv/i18n/mythfrontend_es_es.ts | 2180 +++++------
mythtv/i18n/mythfrontend_pl.qm | Bin 350611 -> 354449 bytes
mythtv/i18n/mythfrontend_pl.ts | 2733 +++++++-------
mythtv/libs/libmyth/mythcontext.cpp | 2 +-
+ mythtv/libs/libmyth/mythmediamonitor.cpp | 2 +-
+ mythtv/libs/libmyth/programinfo.cpp | 20 +-
mythtv/libs/libmythbase/signalhandling.cpp | 8 +-
+ .../libs/libmythtv/AirPlay/mythraopconnection.cpp | 153 +-
mythtv/libs/libmythtv/Bluray/bdringbuffer.h | 6 +-
mythtv/libs/libmythtv/Bluray/mythbdplayer.cpp | 4 +-
+ mythtv/libs/libmythtv/DVD/dvdringbuffer.cpp | 8 +
mythtv/libs/libmythtv/DVD/dvdringbuffer.h | 6 +-
mythtv/libs/libmythtv/DVD/mythdvdplayer.cpp | 8 +-
+ mythtv/libs/libmythtv/DeviceReadBuffer.cpp | 7 +-
mythtv/libs/libmythtv/ThreadedFileWriter.cpp | 2 +-
- mythtv/libs/libmythtv/avformatdecoder.cpp | 99 +-
+ mythtv/libs/libmythtv/avformatdecoder.cpp | 117 +-
mythtv/libs/libmythtv/decoderbase.h | 3 +-
- mythtv/libs/libmythtv/mythplayer.cpp | 33 +-
+ mythtv/libs/libmythtv/mythplayer.cpp | 41 +-
mythtv/libs/libmythtv/ringbuffer.h | 4 +-
mythtv/libs/libmythtv/tv_play.cpp | 11 +-
mythtv/libs/libmythtv/tv_rec.cpp | 6 +-
+ mythtv/libs/libmythui/libmythui.pro | 1 +
mythtv/libs/libmythui/mythscreenstack.cpp | 2 +-
mythtv/libs/libmythui/mythuibuttonlist.cpp | 2 +-
+ mythtv/libs/libmythui/mythuieditbar.cpp | 1 +
mythtv/libs/libmythui/mythuiimage.cpp | 3 +-
- mythtv/libs/libmythui/mythuitype.cpp | 7 +-
+ mythtv/libs/libmythui/mythuitype.cpp | 11 +-
mythtv/libs/libmythui/mythuiwebbrowser.cpp | 10 +-
mythtv/programs/mythavtest/main.cpp | 5 +-
+ mythtv/programs/mythbackend/autoexpire.cpp | 4 +-
+ mythtv/programs/mythbackend/autoexpire.h | 1 -
mythtv/programs/mythbackend/main.cpp | 5 +-
mythtv/programs/mythbackend/main_helpers.cpp | 4 +-
mythtv/programs/mythbackend/mainserver.cpp | 18 +-
@@ -50,13 +64,16 @@
mythtv/programs/mythfilldatabase/main.cpp | 5 +-
mythtv/programs/mythfrontend/guidegrid.cpp | 17 +-
mythtv/programs/mythfrontend/main.cpp | 5 +-
+ mythtv/programs/mythfrontend/playbackbox.cpp | 4 +-
+ mythtv/programs/mythfrontend/services/frontend.cpp | 2 +-
mythtv/programs/mythjobqueue/main.cpp | 5 +-
mythtv/programs/mythlcdserver/main.cpp | 5 +-
mythtv/programs/mythlogserver/main.cpp | 5 +-
mythtv/programs/mythmediaserver/main.cpp | 5 +-
mythtv/programs/mythmetadatalookup/main.cpp | 5 +-
mythtv/programs/mythpreviewgen/main.cpp | 5 +-
- mythtv/programs/mythshutdown/main.cpp | 5 +-
+ mythtv/programs/mythshutdown/commandlineparser.cpp | 14 +-
+ mythtv/programs/mythshutdown/main.cpp | 55 +-
mythtv/programs/mythtranscode/main.cpp | 5 +-
mythtv/programs/mythtv-setup/backendsettings.cpp | 6 +-
mythtv/programs/mythtv-setup/main.cpp | 5 +-
@@ -65,7 +82,7 @@
.../distros/mythtv_data/data_mythtv.py | 20 +-
.../nv_python_libs/youtube/youtube_api.py | 27 +-
mythtv/programs/scripts/metadata/Movie/tmdb3.py | 107 +-
- 67 files changed, 6056 insertions(+), 3481 deletions(-)
+ 84 files changed, 6245 insertions(+), 3630 deletions(-)
diff --git a/README.rst b/README.rst
index a151d89..576e0dc 100644
@@ -5877,6 +5894,24 @@
</message>
</context>
</TS>
+diff --git a/mythplugins/mythmusic/mythmusic/cddb.cpp
b/mythplugins/mythmusic/mythmusic/cddb.cpp
+index e08e33d..f7657d6 100644
+--- a/mythplugins/mythmusic/mythmusic/cddb.cpp
++++ b/mythplugins/mythmusic/mythmusic/cddb.cpp
+@@ -310,10 +310,10 @@ Cddb::Album& Cddb::Album::operator =(const QString& rhs)
+ submitter = "MythTV " MYTH_BINARY_VERSION;
+ rev = 1;
+ isCompilation = false;
+- tracks.empty();
+- toc.empty();
++ tracks.clear();
++ toc.clear();
+ extd.clear();
+- ext.empty();
++ ext.clear();
+
+ enum { kNorm, kToc } eState = kNorm;
+
diff --git a/mythplugins/mythmusic/mythmusic/cdrip.cpp
b/mythplugins/mythmusic/mythmusic/cdrip.cpp
index b1d1231..c04c38d 100644
--- a/mythplugins/mythmusic/mythmusic/cdrip.cpp
@@ -5970,6 +6005,72 @@
<translation>Wiatr:</translation>
</message>
<message>
+diff --git a/mythtv/bindings/perl/Makefile.PL b/mythtv/bindings/perl/Makefile.PL
+index d072d29..49c4930 100644
+--- a/mythtv/bindings/perl/Makefile.PL
++++ b/mythtv/bindings/perl/Makefile.PL
+@@ -18,7 +18,6 @@ WriteMakefile(
+ 'Config' => 0,
+ 'DBI' => 0,
+ 'DBD::mysql' => 0,
+- 'Date::Manip' => 0,
+ 'Fcntl' => 0,
+ 'File::Copy' => 0,
+ 'HTTP::Request' => 0,
+diff --git a/mythtv/bindings/perl/MythTV.pm b/mythtv/bindings/perl/MythTV.pm
+index cb0d055..fae7b77 100644
+--- a/mythtv/bindings/perl/MythTV.pm
++++ b/mythtv/bindings/perl/MythTV.pm
+@@ -23,7 +23,7 @@ package MythTV;
+ use DBI;
+ use HTTP::Request;
+ use LWP::UserAgent;
+- use Time::Local;
++ use POSIX;
+
+ # Load the UPNP libraries if we have them, but die nicely if we don't.
+ BEGIN {
+@@ -372,6 +372,8 @@ EOF
+ $self->{'db_user'},
+ $self->{'db_pass'})
+ or die "Cannot connect to database: $!\n\n";
++ $self->{'dbh'}->do("SET time_zone = 'UTC'")
++ or die "Can't set timezone: $!\n\n";
+
+ # Check for supported schema version
+ $self->{'schema_version'} =
$self->backend_setting('DBSchemaVer');
+@@ -798,26 +800,20 @@ EOF
+ if ($time =~ /^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/) {
+ return "$1-$2-${3}T$4:$5:$6";
+ }
+- # Otherwise, format it as necessary. We have to use MySQL here because
+- # Date::Manip is not aware of DST differences. Yay. Blech.
+- my $sh = $self->{'dbh'}->prepare('SELECT
FROM_UNIXTIME(?)');
+- $sh->execute($time); # Assumed to be a correct epoch time (in GMT)
+- ($time) = $sh->fetchrow_array();
+- $time =~ s/\s/T/;
+- return $time;
++ # Otherwise, format it as necessary.
++ return POSIX::strftime("%Y-%m-%dT%H:%M:%S", gmtime($time));
+ }
+
+ # Format a MythTV timestamp into a unix timestamp. This function is exported.
+-# We have to use MySQL here because Date::Manip is not aware of DST.
++# We have to use MySQL here because it was used historically, and so the
++# formats that MySQL supports is effectively the API...
+ sub myth_to_unix_time {
+ my $self = (ref $_[0] ? shift : $MythTV::last);
+ my $time = shift;
+ my $sh = $self->{'dbh'}->prepare('SELECT
UNIX_TIMESTAMP(?)');
+ $sh->execute($time);
+ ($time) = $sh->fetchrow_array();
+- my @t = localtime(time);
+- my $offset = timegm(@t) - timelocal(@t);
+- return $time - $offset;
++ return $time;
+ }
+
+ # Create a new MythTV::Program object
diff --git a/mythtv/bindings/python/MythTV/altdict.py
b/mythtv/bindings/python/MythTV/altdict.py
index b90192c..0b326d7 100644
--- a/mythtv/bindings/python/MythTV/altdict.py
@@ -6337,6 +6438,49 @@
except Exception, e:
pass
statistics[u'Total_Miro_MythVideos']-=1
+diff --git a/mythtv/external/FFmpeg/libavcodec/pcm.c
b/mythtv/external/FFmpeg/libavcodec/pcm.c
+index b0cca03..7376c79 100644
+--- a/mythtv/external/FFmpeg/libavcodec/pcm.c
++++ b/mythtv/external/FFmpeg/libavcodec/pcm.c
+@@ -207,7 +207,10 @@ static av_cold int pcm_decode_init(AVCodecContext *avctx)
+ PCMDecode *s = avctx->priv_data;
+ int i;
+
+- if (avctx->channels <= 0 || avctx->channels > MAX_CHANNELS) {
++// Breaks playback of some DVDs which feature an empty audio stream
++//
++// if (avctx->channels <= 0 || avctx->channels > MAX_CHANNELS) {
++ if (avctx->channels < 0 || avctx->channels > MAX_CHANNELS) {
+ av_log(avctx, AV_LOG_ERROR, "PCM channels out of bounds\n");
+ return AVERROR(EINVAL);
+ }
+diff --git a/mythtv/external/FFmpeg/libavformat/avidec.c
b/mythtv/external/FFmpeg/libavformat/avidec.c
+index 24aacd0..008cd60 100644
+--- a/mythtv/external/FFmpeg/libavformat/avidec.c
++++ b/mythtv/external/FFmpeg/libavformat/avidec.c
+@@ -1334,6 +1334,12 @@ static int guess_ni_flag(AVFormatContext *s){
+ first_end= st->index_entries[n-1].pos;
+ }
+ avio_seek(s->pb, oldpos, SEEK_SET);
++
++ return (last_start > first_end);
++
++/* myth
++
++
+ if (last_start > first_end)
+ return 1;
+ idx= av_mallocz(sizeof(*idx) * s->nb_streams);
+@@ -1360,6 +1366,9 @@ static int guess_ni_flag(AVFormatContext *s){
+ }
+ av_free(idx);
+ return 0;
++
++
++*/
+ }
+
+ static int avi_load_index(AVFormatContext *s)
diff --git a/mythtv/i18n/mythfrontend_es_es.qm b/mythtv/i18n/mythfrontend_es_es.qm
index 535f1d0..8a61686 100644
Binary files a/mythtv/i18n/mythfrontend_es_es.qm and b/mythtv/i18n/mythfrontend_es_es.qm
differ
@@ -20478,6 +20622,74 @@
m_DBparams.dbHostName = m_pConfig->GetValue(kDefaultDB + "Host",
"");
m_DBparams.dbUserName = m_pConfig->GetValue(kDefaultDB + "UserName",
"");
m_DBparams.dbPassword = m_pConfig->GetValue(kDefaultDB + "Password",
"");
+diff --git a/mythtv/libs/libmyth/mythmediamonitor.cpp
b/mythtv/libs/libmyth/mythmediamonitor.cpp
+index e0b9389..542c3b7 100644
+--- a/mythtv/libs/libmyth/mythmediamonitor.cpp
++++ b/mythtv/libs/libmyth/mythmediamonitor.cpp
+@@ -380,9 +380,9 @@ bool MediaMonitor::RemoveDevice(const QString &dev)
+ {
+ if (m_UseCount[*it] == 0)
+ {
++ m_UseCount.remove(*it);
+ (*it)->deleteLater();
+ m_Devices.erase(it);
+- m_UseCount.remove(*it);
+ }
+ else
+ {
+diff --git a/mythtv/libs/libmyth/programinfo.cpp b/mythtv/libs/libmyth/programinfo.cpp
+index 3bf35ea..6816f72 100644
+--- a/mythtv/libs/libmyth/programinfo.cpp
++++ b/mythtv/libs/libmyth/programinfo.cpp
+@@ -4530,8 +4530,9 @@ static bool FromProgramQuery(
+ const QString &sql, const MSqlBindings &bindings, MSqlQuery &query)
+ {
+ QString querystr = QString(
++ "SELECT program.description, sub.* FROM program, ("
+ "SELECT DISTINCT program.chanid, program.starttime, program.endtime,
"
+- " program.title, program.subtitle, program.description, "
++ " program.title, program.subtitle, "
+ " program.category, channel.channum, channel.callsign, "
+ " channel.name, program.previouslyshown, channel.commmethod, "
+ " channel.outputfilters, program.seriesid, program.programid, "
+@@ -4565,6 +4566,7 @@ static bool FromProgramQuery(
+ if (!sql.contains(" LIMIT "))
+ querystr += " LIMIT 20000 ";
+
++ querystr += " ) AS sub WHERE program.chanid=sub.chanid AND
program.starttime=sub.starttime";
+ query.prepare(querystr);
+ MSqlBindings::const_iterator it;
+ for (it = bindings.begin(); it != bindings.end(); ++it)
+@@ -4597,21 +4599,21 @@ bool LoadFromProgram(
+ {
+ destination.push_back(
+ new ProgramInfo(
+- query.value(3).toString(), // title
+- query.value(4).toString(), // subtitle
+- query.value(5).toString(), // description
++ query.value(4).toString(), // title
++ query.value(5).toString(), // subtitle
++ query.value(0).toString(), // description
+ query.value(6).toString(), // category
+
+- query.value(0).toUInt(), // chanid
++ query.value(1).toUInt(), // chanid
+ query.value(7).toString(), // channum
+ query.value(8).toString(), // chansign
+ query.value(9).toString(), // channame
+ query.value(12).toString(), // chanplaybackfilters
+
+- MythDate::as_utc(query.value(1).toDateTime()), // startts
+- MythDate::as_utc(query.value(2).toDateTime()), // endts
+- MythDate::as_utc(query.value(1).toDateTime()), // recstartts
+- MythDate::as_utc(query.value(2).toDateTime()), // recendts
++ MythDate::as_utc(query.value(2).toDateTime()), // startts
++ MythDate::as_utc(query.value(3).toDateTime()), // endts
++ MythDate::as_utc(query.value(2).toDateTime()), // recstartts
++ MythDate::as_utc(query.value(3).toDateTime()), // recendts
+
+ query.value(13).toString(), // seriesid
+ query.value(14).toString(), // programid
diff --git a/mythtv/libs/libmythbase/signalhandling.cpp
b/mythtv/libs/libmythbase/signalhandling.cpp
index 004d0fe..53f5bb1 100644
--- a/mythtv/libs/libmythbase/signalhandling.cpp
@@ -20511,6 +20723,178 @@
switch (signum)
{
+diff --git a/mythtv/libs/libmythtv/AirPlay/mythraopconnection.cpp
b/mythtv/libs/libmythtv/AirPlay/mythraopconnection.cpp
+index db683c5..ecae527 100644
+--- a/mythtv/libs/libmythtv/AirPlay/mythraopconnection.cpp
++++ b/mythtv/libs/libmythtv/AirPlay/mythraopconnection.cpp
+@@ -931,90 +931,91 @@ void MythRAOPConnection::ProcessRequest(const QStringList
&header,
+ }
+ *m_textStream << "RTSP/1.0 200 OK\r\n";
+
+- if (option == "OPTIONS")
++ if (tags.contains("Apple-Challenge"))
+ {
+- if (tags.contains("Apple-Challenge"))
++ LOG(VB_GENERAL, LOG_DEBUG, LOC + QString("Received
Apple-Challenge"));
++
++ *m_textStream << "Apple-Response: ";
++ if (!LoadKey())
++ return;
++ int tosize = RSA_size(LoadKey());
++ uint8_t *to = new uint8_t[tosize];
++
++ QByteArray challenge =
++ QByteArray::fromBase64(tags["Apple-Challenge"].toAscii());
++ int challenge_size = challenge.size();
++ if (challenge_size != 16)
+ {
+- LOG(VB_GENERAL, LOG_DEBUG, LOC + QString("Received
Apple-Challenge"));
+-
+- *m_textStream << "Apple-Response: ";
+- if (!LoadKey())
+- return;
+- int tosize = RSA_size(LoadKey());
+- uint8_t *to = new uint8_t[tosize];
+-
+- QByteArray challenge =
+- QByteArray::fromBase64(tags["Apple-Challenge"].toAscii());
+- int challenge_size = challenge.size();
+- if (challenge_size != 16)
+- {
+- LOG(VB_GENERAL, LOG_ERR, LOC +
+- QString("Decoded challenge size %1, expected 16")
+- .arg(challenge_size));
+- if (challenge_size > 16)
+- challenge_size = 16;
+- }
+-
+- int i = 0;
+- unsigned char from[38];
+- memcpy(from, challenge.constData(), challenge_size);
+- i += challenge_size;
+- if (m_socket->localAddress().protocol() ==
+- QAbstractSocket::IPv4Protocol)
++ LOG(VB_GENERAL, LOG_ERR, LOC +
++ QString("Decoded challenge size %1, expected 16")
++ .arg(challenge_size));
++ if (challenge_size > 16)
++ challenge_size = 16;
++ }
++
++ int i = 0;
++ unsigned char from[38];
++ memcpy(from, challenge.constData(), challenge_size);
++ i += challenge_size;
++ if (m_socket->localAddress().protocol() ==
++ QAbstractSocket::IPv4Protocol)
++ {
++ uint32_t ip = m_socket->localAddress().toIPv4Address();
++ ip = qToBigEndian(ip);
++ memcpy(from + i, &ip, 4);
++ i += 4;
++ }
++ else if (m_socket->localAddress().protocol() ==
++ QAbstractSocket::IPv6Protocol)
++ {
++ Q_IPV6ADDR ip = m_socket->localAddress().toIPv6Address();
++ if(memcmp(&ip,
++ "\x00\x00\x00\x00" "\x00\x00\x00\x00"
"\x00\x00\xff\xff",
++ 12) == 0)
+ {
+- uint32_t ip = m_socket->localAddress().toIPv4Address();
+- ip = qToBigEndian(ip);
+- memcpy(from + i, &ip, 4);
++ memcpy(from + i, &ip[12], 4);
+ i += 4;
+ }
+- else if (m_socket->localAddress().protocol() ==
+- QAbstractSocket::IPv6Protocol)
+- {
+- Q_IPV6ADDR ip = m_socket->localAddress().toIPv6Address();
+- if(memcmp(&ip,
+- "\x00\x00\x00\x00" "\x00\x00\x00\x00"
"\x00\x00\xff\xff",
+- 12) == 0)
+- {
+- memcpy(from + i, &ip[12], 4);
+- i += 4;
+- }
+- else
+- {
+- memcpy(from + i, &ip, 16);
+- i += 16;
+- }
+- }
+- memcpy(from + i, m_hardwareId.constData(), AIRPLAY_HARDWARE_ID_SIZE);
+- i += AIRPLAY_HARDWARE_ID_SIZE;
+-
+- int pad = 32 - i;
+- if (pad > 0)
+- {
+- memset(from + i, 0, pad);
+- i += pad;
+- }
+-
+- LOG(VB_GENERAL, LOG_DEBUG, LOC +
+- QString("Full base64 response: '%1' size %2")
+- .arg(QByteArray((const char *)from, i).toBase64().constData())
+- .arg(i));
+-
+- RSA_private_encrypt(i, from, to, LoadKey(), RSA_PKCS1_PADDING);
+-
+- QByteArray base64 = QByteArray((const char *)to, tosize).toBase64();
+- delete[] to;
+-
+- for (int pos = base64.size() - 1; pos > 0; pos--)
++ else
+ {
+- if (base64[pos] == '=')
+- base64[pos] = ' ';
+- else
+- break;
++ memcpy(from + i, &ip, 16);
++ i += 16;
+ }
+- LOG(VB_GENERAL, LOG_DEBUG, QString("tSize=%1 tLen=%2
tResponse=%3")
+- .arg(tosize).arg(base64.size()).arg(base64.constData()));
+- *m_textStream << base64.trimmed() << "\r\n";
+ }
++ memcpy(from + i, m_hardwareId.constData(), AIRPLAY_HARDWARE_ID_SIZE);
++ i += AIRPLAY_HARDWARE_ID_SIZE;
++
++ int pad = 32 - i;
++ if (pad > 0)
++ {
++ memset(from + i, 0, pad);
++ i += pad;
++ }
++
++ LOG(VB_GENERAL, LOG_DEBUG, LOC +
++ QString("Full base64 response: '%1' size %2")
++ .arg(QByteArray((const char *)from, i).toBase64().constData())
++ .arg(i));
++
++ RSA_private_encrypt(i, from, to, LoadKey(), RSA_PKCS1_PADDING);
++
++ QByteArray base64 = QByteArray((const char *)to, tosize).toBase64();
++ delete[] to;
++
++ for (int pos = base64.size() - 1; pos > 0; pos--)
++ {
++ if (base64[pos] == '=')
++ base64[pos] = ' ';
++ else
++ break;
++ }
++ LOG(VB_GENERAL, LOG_DEBUG, QString("tSize=%1 tLen=%2 tResponse=%3")
++ .arg(tosize).arg(base64.size()).arg(base64.constData()));
++ *m_textStream << base64.trimmed() << "\r\n";
++ }
++
++ if (option == "OPTIONS")
++ {
+ *m_textStream << "Public: ANNOUNCE, SETUP, RECORD, PAUSE, FLUSH,
"
+ "TEARDOWN, OPTIONS, GET_PARAMETER, SET_PARAMETER, POST, GET\r\n";
+ }
diff --git a/mythtv/libs/libmythtv/Bluray/bdringbuffer.h
b/mythtv/libs/libmythtv/Bluray/bdringbuffer.h
index a41ed1a..8c77a90 100644
--- a/mythtv/libs/libmythtv/Bluray/bdringbuffer.h
@@ -20544,6 +20928,25 @@
return name;
}
return QString();
+diff --git a/mythtv/libs/libmythtv/DVD/dvdringbuffer.cpp
b/mythtv/libs/libmythtv/DVD/dvdringbuffer.cpp
+index 11ecffd..0913fe2 100644
+--- a/mythtv/libs/libmythtv/DVD/dvdringbuffer.cpp
++++ b/mythtv/libs/libmythtv/DVD/dvdringbuffer.cpp
+@@ -1483,6 +1483,14 @@ bool DVDRingBuffer::DVDButtonUpdate(bool b_mode)
+ m_button_color[i] = 0xf & (hl.palette >> (16+4 *i ));
+ }
+
++ // If the button overlay has already been decoded, make sure
++ // the correct palette for the current highlight is set
++ if (m_dvdMenuButton.rects && (m_dvdMenuButton.num_rects > 1))
++ {
++ guess_palette((uint32_t*)m_dvdMenuButton.rects[1]->pict.data[1],
++ m_button_color, m_button_alpha);
++ }
++
+ m_hl_button.setCoords(hl.sx, hl.sy, hl.ex, hl.ey);
+
+ if (((hl.sx + hl.sy) > 0) &&
diff --git a/mythtv/libs/libmythtv/DVD/dvdringbuffer.h
b/mythtv/libs/libmythtv/DVD/dvdringbuffer.h
index 17c44aa..3a31c1b 100644
--- a/mythtv/libs/libmythtv/DVD/dvdringbuffer.h
@@ -20600,6 +21003,24 @@
return player_ctx->buffer->DVD()->SwitchAngle(angle);
}
+diff --git a/mythtv/libs/libmythtv/DeviceReadBuffer.cpp
b/mythtv/libs/libmythtv/DeviceReadBuffer.cpp
+index 0004437..871597b 100644
+--- a/mythtv/libs/libmythtv/DeviceReadBuffer.cpp
++++ b/mythtv/libs/libmythtv/DeviceReadBuffer.cpp
+@@ -455,7 +455,12 @@ bool DeviceReadBuffer::Poll(void) const
+
+ int ret = poll(polls, poll_cnt, timeout);
+
+- if (polls[0].revents & (POLLHUP | POLLNVAL))
++ if (polls[0].revents & POLLHUP)
++ {
++ LOG(VB_GENERAL, LOG_ERR, LOC + "poll eof (POLLHUP)");
++ break;
++ }
++ else if (polls[0].revents & POLLNVAL)
+ {
+ LOG(VB_GENERAL, LOG_ERR, LOC + "poll error");
+ error = true;
diff --git a/mythtv/libs/libmythtv/ThreadedFileWriter.cpp
b/mythtv/libs/libmythtv/ThreadedFileWriter.cpp
index e6ca088..3b24d58 100644
--- a/mythtv/libs/libmythtv/ThreadedFileWriter.cpp
@@ -20614,7 +21035,7 @@
}
diff --git a/mythtv/libs/libmythtv/avformatdecoder.cpp
b/mythtv/libs/libmythtv/avformatdecoder.cpp
-index 9439d39..82c5548 100644
+index 9439d39..a3fbfac 100644
--- a/mythtv/libs/libmythtv/avformatdecoder.cpp
+++ b/mythtv/libs/libmythtv/avformatdecoder.cpp
@@ -1687,14 +1687,16 @@ void AvFormatDecoder::ScanRawTextCaptions(int av_stream_index)
@@ -20637,7 +21058,53 @@
tracks[kTrackTypeRawText].push_back(si);
}
-@@ -3653,6 +3655,7 @@ QString AvFormatDecoder::GetTrackDesc(uint type, uint trackNo)
const
+@@ -1816,8 +1818,6 @@ int AvFormatDecoder::ScanStreams(bool novideo)
+ continue;
+ }
+
+- codec_is_mpeg = CODEC_IS_FFMPEG_MPEG(enc->codec_id);
+-
+ // ffmpeg does not return a bitrate for several codecs and
+ // formats. Forcing it to 500000 ensures the ringbuffer does not
+ // use optimisations for low bitrate (audio and data) streams.
+@@ -1833,6 +1833,15 @@ int AvFormatDecoder::ScanStreams(bool novideo)
+ if (novideo)
+ break;
+
++ // Set the default stream to the stream
++ // that is found first in the PMT
++ if (selectedTrack[kTrackTypeVideo].av_stream_index < 0)
++ selectedTrack[kTrackTypeVideo] = si;
++ else
++ break;
++
++ codec_is_mpeg = CODEC_IS_FFMPEG_MPEG(enc->codec_id);
++
+ delete private_dec;
+ private_dec = NULL;
+ m_h264_parser->Reset();
+@@ -1942,11 +1951,6 @@ int AvFormatDecoder::ScanStreams(bool novideo)
+ .arg(ff_codec_type_string(enc->codec_type)));
+ }
+
+- // Set the default stream to the stream
+- // that is found first in the PMT
+- if (selectedTrack[kTrackTypeVideo].av_stream_index < 0)
+- selectedTrack[kTrackTypeVideo] = si;
+-
+ // Use a PrivateDecoder if allowed in playerFlags AND matched
+ // via the decoder name
+ if (selectedTrack[kTrackTypeVideo].av_stream_index == (int) i)
+@@ -1970,7 +1974,7 @@ int AvFormatDecoder::ScanStreams(bool novideo)
+ enc->thread_count = thread_count;
+
+ InitVideoCodec(ic->streams[i], enc,
+- selectedTrack[kTrackTypeVideo].av_stream_index == (int) i);
++ (selectedTrack[kTrackTypeVideo].av_stream_index == (int) i));
+
+ ScanATSCCaptionStreams(i);
+ UpdateATSCCaptionTracks();
+@@ -3653,6 +3657,7 @@ QString AvFormatDecoder::GetTrackDesc(uint type, uint trackNo)
const
bool forced = tracks[type][trackNo].forced;
int lang_key = tracks[type][trackNo].language;
@@ -20645,7 +21112,7 @@
if (kTrackTypeAudio == type)
{
if (ringBuffer->IsDVD())
-@@ -3706,7 +3709,11 @@ QString AvFormatDecoder::GetTrackDesc(uint type, uint trackNo)
const
+@@ -3706,7 +3711,11 @@ QString AvFormatDecoder::GetTrackDesc(uint type, uint trackNo)
const
return QObject::tr("Subtitle") + QString(" %1: %2%3")
.arg(trackNo + 1).arg(iso639_key_toName(lang_key))
@@ -20658,7 +21125,7 @@
}
else
{
-@@ -3799,25 +3806,29 @@ int AvFormatDecoder::AutoSelectTrack(uint type)
+@@ -3799,25 +3808,29 @@ int AvFormatDecoder::AutoSelectTrack(uint type)
return DecoderBase::AutoSelectTrack(type);
}
@@ -20695,7 +21162,7 @@
}
return ret;
-@@ -3981,12 +3992,14 @@ int AvFormatDecoder::AutoSelectAudioTrack(void)
+@@ -3981,12 +3994,14 @@ int AvFormatDecoder::AutoSelectAudioTrack(void)
LOG(VB_AUDIO, LOG_INFO, LOC + "Trying to select audio track
(w/lang)");
// Filter out commentary and audio description tracks
@@ -20714,7 +21181,7 @@
}
// try to get the language track matching the frontend language.
-@@ -3994,28 +4007,28 @@ int AvFormatDecoder::AutoSelectAudioTrack(void)
+@@ -3994,28 +4009,28 @@ int AvFormatDecoder::AutoSelectAudioTrack(void)
uint language_key = iso639_str3_to_key(language_key_convert);
uint canonical_key = iso639_key_to_canonical_key(language_key);
@@ -20751,7 +21218,7 @@
// try to get best track for most preferred language
// Set by the "Guide Data" language prefs in Appearance.
-@@ -4024,31 +4037,31 @@ int AvFormatDecoder::AutoSelectAudioTrack(void)
+@@ -4024,31 +4039,31 @@ int AvFormatDecoder::AutoSelectAudioTrack(void)
vector<int>::const_iterator it = languagePreference.begin();
for (; it != languagePreference.end() && selTrack < 0; ++it)
{
@@ -20791,7 +21258,7 @@
}
}
// try to get best track for any language
-@@ -4056,29 +4069,29 @@ int AvFormatDecoder::AutoSelectAudioTrack(void)
+@@ -4056,29 +4071,29 @@ int AvFormatDecoder::AutoSelectAudioTrack(void)
{
LOG(VB_AUDIO, LOG_INFO, LOC +
"Trying to select audio track (wo/lang)");
@@ -20829,7 +21296,7 @@
}
}
-@@ -4328,7 +4341,7 @@ bool AvFormatDecoder::ProcessAudioPacket(AVStream *curstream,
AVPacket *pkt,
+@@ -4328,7 +4343,7 @@ bool AvFormatDecoder::ProcessAudioPacket(AVStream *curstream,
AVPacket *pkt,
LOG(VB_TIMESTAMP, LOG_INFO, LOC + QString("audio timecode %1 %2 %3
%4")
.arg(pkt->pts).arg(pkt->dts).arg(temppts).arg(lastapts));
@@ -20838,7 +21305,7 @@
m_audio->IsBufferAlmostFull();
tmp_pkt.data += ret;
-@@ -4445,9 +4458,9 @@ bool AvFormatDecoder::GetFrame(DecodeType decodetype)
+@@ -4445,9 +4460,9 @@ bool AvFormatDecoder::GetFrame(DecodeType decodetype)
continue;
}
else if (lowbuffers && ((decodetype & kDecodeAV) == kDecodeAV)
&&
@@ -20866,7 +21333,7 @@
kTrackTypeSubtitle,
kTrackTypeCC608,
diff --git a/mythtv/libs/libmythtv/mythplayer.cpp b/mythtv/libs/libmythtv/mythplayer.cpp
-index 9538e9b..c380876 100644
+index 9538e9b..ae54fe5 100644
--- a/mythtv/libs/libmythtv/mythplayer.cpp
+++ b/mythtv/libs/libmythtv/mythplayer.cpp
@@ -129,7 +129,7 @@ static int toTrackType(int type)
@@ -20878,7 +21345,36 @@
}
MythPlayer::MythPlayer(PlayerFlags flags)
-@@ -2266,7 +2266,32 @@ void MythPlayer::VideoStart(void)
+@@ -243,7 +243,6 @@ MythPlayer::MythPlayer(PlayerFlags flags)
+ endExitPrompt =
gCoreContext->GetNumSetting("EndOfRecordingExitPrompt");
+ pip_default_loc =
(PIPLocation)gCoreContext->GetNumSetting("PIPLocation", kPIPTopLeft);
+ tc_wrap[TC_AUDIO] = gCoreContext->GetNumSetting("AudioSyncOffset",
0);
+- allowForcedSubtitles =
gCoreContext->GetNumSetting("AllowForcedSubtitles", 1);
+
+ // Get VBI page number
+ QString mypage = gCoreContext->GetSetting("VBIpageNr",
"888");
+@@ -813,6 +812,8 @@ void MythPlayer::SetVideoParams(int width, int height, double fps,
+
+ video_dim = QSize((width + 15) & ~0xf, (height + 15) & ~0xf);
+ video_disp_dim = QSize(width, height);
++ if (height)
++ video_aspect = (float)width / height;
+
+ if (fps > 0.0f && fps < 121.0f)
+ {
+@@ -1577,11 +1578,6 @@ void MythPlayer::SetAllowForcedSubtitles(bool allow)
+ tr("Forced Subtitles On") :
+ tr("Forced Subtitles Off"),
+ kOSDTimeout_Med);
+- if (old != allowForcedSubtitles)
+- {
+- gCoreContext->SaveSetting("AllowForcedSubtitles",
+- allowForcedSubtitles);
+- }
+ }
+
+ void MythPlayer::DoDisableForcedSubtitles(void)
+@@ -2266,7 +2262,32 @@ void MythPlayer::VideoStart(void)
}
#endif // USING_MHEG
@@ -20912,7 +21408,7 @@
osdLock.unlock();
}
-@@ -2373,7 +2398,7 @@ bool MythPlayer::FastForward(float seconds)
+@@ -2373,7 +2394,7 @@ bool MythPlayer::FastForward(float seconds)
return false;
if (fftime <= 0)
@@ -20921,7 +21417,7 @@
return fftime > CalcMaxFFTime(fftime, false);
}
-@@ -2383,7 +2408,7 @@ bool MythPlayer::Rewind(float seconds)
+@@ -2383,7 +2404,7 @@ bool MythPlayer::Rewind(float seconds)
return false;
if (rewindtime <= 0)
@@ -20982,7 +21478,7 @@
QString angleIdx = QString("%1").arg(i, 3, 10, QChar(48));
QString desc = GetAngleName(ctx, i);
diff --git a/mythtv/libs/libmythtv/tv_rec.cpp b/mythtv/libs/libmythtv/tv_rec.cpp
-index 5387ce5..721c513 100644
+index 5387ce5a..721c513 100644
--- a/mythtv/libs/libmythtv/tv_rec.cpp
+++ b/mythtv/libs/libmythtv/tv_rec.cpp
@@ -918,6 +918,9 @@ void TVRec::FinishedRecording(RecordingInfo *curRec, RecordingQuality
*recq)
@@ -21005,6 +21501,18 @@
// send out REC_FINISHED message
SendMythSystemRecEvent("REC_FINISHED", curRec);
+diff --git a/mythtv/libs/libmythui/libmythui.pro b/mythtv/libs/libmythui/libmythui.pro
+index 4560bb2..fd2ce18 100644
+--- a/mythtv/libs/libmythui/libmythui.pro
++++ b/mythtv/libs/libmythui/libmythui.pro
+@@ -97,6 +97,7 @@ using_x11 {
+ macx {
+ HEADERS += screensaver-osx.h DisplayResOSX.h util-osx.h
+ SOURCES += screensaver-osx.cpp DisplayResOSX.cpp util-osx.cpp
++ QMAKE_OBJECTIVE_CFLAGS += $$QMAKE_CXXFLAGS
+ QMAKE_OBJECTIVE_CXXFLAGS += $$QMAKE_CXXFLAGS
+ OBJECTIVE_HEADERS += util-osx-cocoa.h
+ OBJECTIVE_SOURCES += util-osx-cocoa.mm
diff --git a/mythtv/libs/libmythui/mythscreenstack.cpp
b/mythtv/libs/libmythui/mythscreenstack.cpp
index 9331024..15e9129 100644
--- a/mythtv/libs/libmythui/mythscreenstack.cpp
@@ -21031,6 +21539,18 @@
LOG(VB_GENERAL, LOG_INFO,
QString("Build background buttonlist item %1").arg(cur));
emit itemLoaded(GetItemAt(cur));
+diff --git a/mythtv/libs/libmythui/mythuieditbar.cpp
b/mythtv/libs/libmythui/mythuieditbar.cpp
+index ae2a842..b4ad7b2 100644
+--- a/mythtv/libs/libmythui/mythuieditbar.cpp
++++ b/mythtv/libs/libmythui/mythuieditbar.cpp
+@@ -296,6 +296,7 @@ void MythUIEditBar::ClearImages(void)
+ {
+ while (m_images.size())
+ DeleteChild(m_images.takeFirst());
++ SetRedraw();
+ }
+
+ /**
diff --git a/mythtv/libs/libmythui/mythuiimage.cpp
b/mythtv/libs/libmythui/mythuiimage.cpp
index 474cf94..ac748c3 100644
--- a/mythtv/libs/libmythui/mythuiimage.cpp
@@ -21046,7 +21566,7 @@
delete animationFrames;
diff --git a/mythtv/libs/libmythui/mythuitype.cpp b/mythtv/libs/libmythui/mythuitype.cpp
-index 5341e4b..ebd5235 100644
+index 5341e4b..754af0d 100644
--- a/mythtv/libs/libmythui/mythuitype.cpp
+++ b/mythtv/libs/libmythui/mythuitype.cpp
@@ -478,7 +478,10 @@ void MythUIType::DrawSelf(MythPainter *, int, int, int, QRect)
@@ -21061,6 +21581,24 @@
if (!m_Visible || m_Vanished)
return;
+@@ -639,7 +642,7 @@ void MythUIType::AdjustMinArea(int delta_x, int delta_y,
+ if (bounded.x() + bounded.width() > m_Area.x() + m_Area.width())
+ bounded.moveRight(m_Area.x() + m_Area.width());
+ if (bounded.y() + bounded.height() > m_Area.y() + m_Area.height())
+- bounded.moveBottom(m_Area.x() + m_Area.height());
++ bounded.moveBottom(m_Area.y() + m_Area.height());
+ if (bounded.x() < m_Area.x())
+ {
+ bounded.moveLeft(m_Area.x());
+@@ -825,7 +828,7 @@ void MythUIType::SetMinArea(const MythRect &rect)
+ if (bounded.x() + bounded.width() > m_Area.x() + m_Area.width())
+ bounded.moveRight(m_Area.x() + m_Area.width());
+ if (bounded.y() + bounded.height() > m_Area.y() + m_Area.height())
+- bounded.moveBottom(m_Area.x() + m_Area.height());
++ bounded.moveBottom(m_Area.y() + m_Area.height());
+ if (bounded.x() < m_Area.x())
+ {
+ bounded.moveLeft(m_Area.x());
@@ -1406,4 +1409,4 @@ void MythUIType::ConnectDependants(bool recurse)
(*it)->ConnectDependants(recurse);
}
@@ -21112,6 +21650,40 @@
SignalHandler::Init(signallist);
signal(SIGHUP, SIG_IGN);
#endif
+diff --git a/mythtv/programs/mythbackend/autoexpire.cpp
b/mythtv/programs/mythbackend/autoexpire.cpp
+index b085cad..80dea44 100644
+--- a/mythtv/programs/mythbackend/autoexpire.cpp
++++ b/mythtv/programs/mythbackend/autoexpire.cpp
+@@ -645,8 +645,6 @@ void AutoExpire::SendDeleteMessages(pginfolist_t &deleteList)
+ .arg((*it)->GetRecordingStartTime(MythDate::ISODate)));
+ gCoreContext->dispatch(me);
+
+- deleted_set.insert((*it)->MakeUniqueKey());
+-
+ ++it; // move on to next program
+ }
+ }
+@@ -1104,7 +1102,7 @@ void AutoExpire::Update(int encoder, int fsID, bool immediately)
+
+ void AutoExpire::UpdateDontExpireSet(void)
+ {
+- dont_expire_set = deleted_set;
++ dont_expire_set.clear();
+
+ MSqlQuery query(MSqlQuery::InitCon());
+ query.prepare(
+diff --git a/mythtv/programs/mythbackend/autoexpire.h
b/mythtv/programs/mythbackend/autoexpire.h
+index 8939f38..d47ff86 100644
+--- a/mythtv/programs/mythbackend/autoexpire.h
++++ b/mythtv/programs/mythbackend/autoexpire.h
+@@ -113,7 +113,6 @@ class AutoExpire : public QObject
+
+ // main expire info
+ QSet<QString> dont_expire_set;
+- QSet<QString> deleted_set;
+ ExpireThread *expire_thread; // protected by instance_lock
+ uint desired_freq; // protected by instance_lock
+ bool expire_thread_run; // protected by instance_lock
diff --git a/mythtv/programs/mythbackend/main.cpp b/mythtv/programs/mythbackend/main.cpp
index 22820bf..5e30d28 100644
--- a/mythtv/programs/mythbackend/main.cpp
@@ -21341,6 +21913,41 @@
SignalHandler::Init(signallist);
SignalHandler::SetHandler(SIGUSR1, handleSIGUSR1);
SignalHandler::SetHandler(SIGUSR2, handleSIGUSR2);
+diff --git a/mythtv/programs/mythfrontend/playbackbox.cpp
b/mythtv/programs/mythfrontend/playbackbox.cpp
+index 734cce1..d6f428f 100644
+--- a/mythtv/programs/mythfrontend/playbackbox.cpp
++++ b/mythtv/programs/mythfrontend/playbackbox.cpp
+@@ -1333,7 +1333,7 @@ void PlaybackBox::UpdateUIGroupList(const QStringList
&groupPreferences)
+ QStringList::iterator it;
+ for (it = m_titleList.begin(); it != m_titleList.end(); ++it)
+ {
+- QString groupname = (*it).simplified();
++ QString groupname = (*it);
+
+ MythUIButtonListItem *item =
+ new MythUIButtonListItem(
+@@ -1690,7 +1690,7 @@ bool PlaybackBox::UpdateUILists(void)
+ sTitle = construct_sort_title(
+ p->GetTitle(), m_viewMask, titleSort,
+ p->GetRecordingPriority(), m_prefixes);
+- sTitle = sTitle.toLower().simplified();
++ sTitle = sTitle.toLower();
+
+ if (!sortedList.contains(sTitle))
+ sortedList[sTitle] = p->GetTitle();
+diff --git a/mythtv/programs/mythfrontend/services/frontend.cpp
b/mythtv/programs/mythfrontend/services/frontend.cpp
+index 168a1f9..0426615 100644
+--- a/mythtv/programs/mythfrontend/services/frontend.cpp
++++ b/mythtv/programs/mythfrontend/services/frontend.cpp
+@@ -133,7 +133,7 @@ bool Frontend::PlayRecording(int ChanID, const QDateTime
&StartTime)
+
+ QString message = QString("NETWORK_CONTROL PLAY PROGRAM %1 %2 %3")
+ .arg(ChanID)
+- .arg(starttime.toLocalTime().toString("yyyyMMddhhmmss"))
++ .arg(starttime.toString("yyyyMMddhhmmss"))
+ .arg("12345");
+
+ MythEvent me(message);
diff --git a/mythtv/programs/mythjobqueue/main.cpp
b/mythtv/programs/mythjobqueue/main.cpp
index bd9c638..42a5c76 100644
--- a/mythtv/programs/mythjobqueue/main.cpp
@@ -21437,11 +22044,87 @@
SignalHandler::Init(signallist);
signal(SIGHUP, SIG_IGN);
#endif
+diff --git a/mythtv/programs/mythshutdown/commandlineparser.cpp
b/mythtv/programs/mythshutdown/commandlineparser.cpp
+index d1cb383..e30d38e 100644
+--- a/mythtv/programs/mythshutdown/commandlineparser.cpp
++++ b/mythtv/programs/mythshutdown/commandlineparser.cpp
+@@ -22,7 +22,8 @@ void MythShutdownCommandLineParser::LoadArguments(void)
+ CommandLineArg::AllowOneOf( QList<CommandLineArg*>()
+ << add(QStringList( QStringList() << "-w" <<
"--setwakeup" ),
+ "setwakeup", "",
+- "Set the wakeup time (yyyy-MM-ddThh:mm:ss)", "")
++ "Set the wakeup time (yyyy-MM-ddThh:mm:ss) "
++ "default is in local time", "")
+ << add(QStringList( QStringList() << "-t" <<
"--setscheduledwakeup" ),
+ "setschedwakeup", false,
+ "Set wakeup time to the next scheduled recording",
"")
+@@ -66,5 +67,16 @@ void MythShutdownCommandLineParser::LoadArguments(void)
+ " 64 - In daily wakeup/shutdown period\n"
+ " 128 - Less than 15 minutes to next wakeup period\n"
+ " 255 - Setup is running") );
++
++ // The localtime command line parameter exists solely to make scripts
++ // using this executable self documenting.
++
++ CommandLineArg::AllowOneOf( QList<CommandLineArg*>()
++ << add("--utc",
++ "utc", false,
++ "Specify that the wakeup time is in utc", "")
++ << add("--localtime",
++ "localtime", false,
++ "Specify that the wakeup time is in local time", "")
);
+ }
+
diff --git a/mythtv/programs/mythshutdown/main.cpp
b/mythtv/programs/mythshutdown/main.cpp
-index 1505924..cf369d9 100644
+index 1505924..3988580 100644
--- a/mythtv/programs/mythshutdown/main.cpp
+++ b/mythtv/programs/mythshutdown/main.cpp
-@@ -787,7 +787,10 @@ int main(int argc, char **argv)
+@@ -375,31 +375,16 @@ static int checkOKShutdown(bool bWantRecStatus)
+ return res;
+ }
+
+-static int setWakeupTime(QString sWakeupTime)
++static void setWakeupTime(const QDateTime &wakeupTime)
+ {
+ LOG(VB_GENERAL, LOG_INFO, "Mythshutdown: --setwakeup");
+
+ LOG(VB_GENERAL, LOG_NOTICE,
+- QString("Mythshutdown: wakeup time given is: %1").arg(sWakeupTime));
+-
+- // check time given is valid
+- QDateTime dtWakeupTime;
+- dtWakeupTime = MythDate::fromString(sWakeupTime);
+-
+- if (!dtWakeupTime.isValid())
+- {
+- LOG(VB_GENERAL, LOG_ERR,
+- QString("Mythshutdown: --setwakeup invalid date "
+- "format (%1)\n\t\t\t"
+- "must be yyyy-MM-ddThh:mm:ss")
+- .arg(sWakeupTime));
+- return 1;
+- }
++ QString("Mythshutdown: wakeup time given is: %1 (local time)")
++ .arg(MythDate::toString(wakeupTime)));
+
+ setGlobalSetting("MythShutdownNextScheduled",
+- MythDate::toString(dtWakeupTime, MythDate::kDatabase));
+-
+- return 0;
++ MythDate::toString(wakeupTime, MythDate::kDatabase));
+ }
+
+ static int setScheduledWakeupTime()
+@@ -432,7 +417,7 @@ static int setScheduledWakeupTime()
+ if (add)
+ restarttime = restarttime.addSecs((-1) * add);
+
+- setWakeupTime(restarttime.toString(Qt::ISODate));
++ setWakeupTime(restarttime);
+
+ return 0;
+ }
+@@ -787,7 +772,10 @@ int main(int argc, char **argv)
#ifndef _WIN32
QList<int> signallist;
signallist << SIGINT << SIGTERM << SIGSEGV << SIGABRT
<< SIGBUS << SIGFPE
@@ -21453,6 +22136,38 @@
SignalHandler::Init(signallist);
signal(SIGHUP, SIG_IGN);
#endif
+@@ -818,7 +806,30 @@ int main(int argc, char **argv)
+ else if (cmdline.toBool("status"))
+ res = getStatus((bool)(cmdline.toInt("status") == 1));
+ else if (cmdline.toBool("setwakeup"))
+- res = setWakeupTime(cmdline.toString("setwakeup"));
++ {
++ // only one of --utc or --localtime can be passed per
++ // CommandLineArg::AllowOneOf() in commandlineparser.cpp
++ bool utc = cmdline.toBool("utc");
++ QString tmp = cmdline.toString("setwakeup");
++
++ QDateTime wakeuptime = (utc) ?
++ MythDate::fromString(tmp) :
++ QDateTime::fromString(tmp, Qt::ISODate).toUTC();
++
++ if (!wakeuptime.isValid())
++ {
++ cerr << qPrintable(
++ QObject::tr("mythshutdown: --setwakeup invalid date "
++ "format (%1)\n\t\t\t"
++ "must be yyyy-MM-ddThh:mm:ss")
++ .arg(tmp)) << endl;
++ res = 1;
++ }
++ else
++ {
++ setWakeupTime(wakeuptime);
++ }
++ }
+ else if (cmdline.toBool("safeshutdown"))
+ {
+ res = checkOKShutdown(true);
diff --git a/mythtv/programs/mythtranscode/main.cpp
b/mythtv/programs/mythtranscode/main.cpp
index 49a1a7a..13d572b 100644
--- a/mythtv/programs/mythtranscode/main.cpp
Index: mythtv.spec
===================================================================
RCS file: /cvs/free/rpms/mythtv/devel/mythtv.spec,v
retrieving revision 1.114
retrieving revision 1.115
diff -u -r1.114 -r1.115
--- mythtv.spec 4 Dec 2012 21:33:57 -0000 1.114
+++ mythtv.spec 22 Dec 2012 22:45:07 -0000 1.115
@@ -58,7 +58,7 @@
%define desktop_vendor RPMFusion
# Git revision and branch ID
-%define _gitrev v0.26.0-42-g10479af
+%define _gitrev v0.26.0-64-g637d6d8
%define branch fixes/0.26
# Mythtv and plugins from
github.com
@@ -78,7 +78,7 @@
%if "%{branch}" == "master"
Release: 0.1.git.%{_gitrev}%{?dist}
%else
-Release: 3%{?dist}
+Release: 4%{?dist}
%endif
# The primary license is GPLv2+, but bits are borrowed from a number of
@@ -215,7 +215,6 @@
BuildRequires: xvidcore-devel >= 0.9.1
# Audio framework support
-BuildRequires: SDL-devel
BuildRequires: sox-devel
BuildRequires: alsa-lib-devel
BuildRequires: jack-audio-connection-kit-devel
@@ -1451,6 +1450,9 @@
%changelog
+* Sat Dec 22 2012 Richard Shaw <hobbes1069(a)gmail.com> - 0.26.0-4
+- Update to latest upstream release.
+
* Tue Dec 4 2012 Richard Shaw <hobbes1069(a)gmail.com> - 0.26.0-3
- Update to latest upstream release.