rpms/mythtv/F-10 mythplugins-0.22-svnfixes.patch, 1.1, 1.2 mythtv-0.22-svnfixes.patch, 1.1, 1.2 mythtv.spec, 1.25, 1.26

Jarod Wilson jarod at rpmfusion.org
Tue Feb 2 03:58:38 CET 2010


Author: jarod

Update of /cvs/free/rpms/mythtv/F-10
In directory se02.es.rpmfusion.net:/tmp/cvs-serv3119

Modified Files:
	mythplugins-0.22-svnfixes.patch mythtv-0.22-svnfixes.patch 
	mythtv.spec 
Log Message:
* Mon Feb 01 2010 Jarod Wilson <jarod at wilsonet.com> 0.22-5
- Update to release-0-22-fixes branch, svn revision 23433
- Fix mythtv user creation (rpm fusion bz#1027)


mythplugins-0.22-svnfixes.patch:
 mythgallery/mythgallery/imageview.cpp                 |    2 
 mythmovies/ignyte/ignytegrabber.cpp                   |    2 
 mythmusic/mythmusic/main.cpp                          |   11 
 mythnews/mythnews/mythnews.cpp                        |   75 -
 mythnews/mythnews/newssite.cpp                        |   12 
 mythvideo/mtd/dvdprobe.cpp                            |   56 
 mythvideo/mythvideo/main.cpp                          |    1 
 mythvideo/mythvideo/playercommand.cpp                 |    9 
 mythvideo/mythvideo/scripts/jamu-example.conf         |  176 +-
 mythvideo/mythvideo/scripts/jamu.py                   | 1307 +++++++++++-------
 mythvideo/mythvideo/scripts/ttvdb.py                  |   51 
 mythvideo/mythvideo/videodlg.cpp                      |   26 
 mythvideo/mythvideo/videolist.cpp                     |    4 
 mythweather/mythweather/main.cpp                      |    4 
 mythweather/mythweather/scripts/uk_bbc/BBCLocation.pm |   27 
 15 files changed, 1100 insertions(+), 663 deletions(-)

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.1 -r 1.2 mythplugins-0.22-svnfixes.patch
Index: mythplugins-0.22-svnfixes.patch
===================================================================
RCS file: /cvs/free/rpms/mythtv/F-10/mythplugins-0.22-svnfixes.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- mythplugins-0.22-svnfixes.patch	22 Nov 2009 05:48:26 -0000	1.1
+++ mythplugins-0.22-svnfixes.patch	2 Feb 2010 02:58:37 -0000	1.2
@@ -1,3 +1,211 @@
+Index: mythplugins/mythweather/mythweather/scripts/uk_bbc/BBCLocation.pm
+===================================================================
+--- mythplugins/mythweather/mythweather/scripts/uk_bbc/BBCLocation.pm	(revision 22751)
++++ mythplugins/mythweather/mythweather/scripts/uk_bbc/BBCLocation.pm	(working copy)
+@@ -12,19 +12,17 @@
+ 
+ sub Search {
+ 
+-    my $base_url       = 'http://news.bbc.co.uk/weather/forecast/';
+-    my $world_base_url = $base_url . '?lowgraphics=true&search=';
+-    my $local_base_url = $base_url . '?lowgraphics=true&type=county_state&search=';
++    my $base_url       = 'http://news.bbc.co.uk/weather/util/search/Search.xhtml?';
++    my $world_base_url = $base_url . 'lowgraphics=true&region=world&search=';
++    my $local_base_url = $base_url . 'lowgraphics=true&region=uk&search=';
+ 
+     my $search_string = shift;
+ 
+     my $world_response = get $world_base_url . $search_string;
+-    die unless defined $world_response;
+     my $local_response = get $local_base_url . $search_string;
+-    die unless defined $local_response;
+ 
+-    &parseResults($world_response);
+-    &parseResults($local_response);
++    &parseResults($world_response) if defined($world_response);
++    &parseResults($local_response) if defined($local_response);
+ 
+     if ( ($resultcount > 0 ) && ($#searchresults < 0) ) {
+         foreach my $url (@resulturl) {
+@@ -40,8 +38,6 @@
+ sub parseResults {
+     my $response = shift;
+     my $isresults = 0;
+-    my $havename = 0;
+-    my $haveid = 0;
+     my $resultline = "";
+ 
+     foreach (split("\n", $response)) {
+@@ -59,14 +55,14 @@
+             $resultcount = $1 if (/<strong>There \w{2,3} (\d*) forecasts? matching/);
+ 
+             # Collect result URLs
+-            if (/<a id=\"result_\d*\" href \=\"?.*search\=.*/) {
++            if (/<a id=\"result_\d*\" .* href \=\"?.*search\=.*/) {
+                 $url = $_;
+                 $url =~ s/.*href \=\"(.*)\".*/$1/s;
+                 push (@resulturl, $url);
+             }
+ 
+             # Collect location IDs and location names
+-            elsif (/<a id=\"result_\d*\" href \=\"\/weather\/forecast\//) {
++            elsif (/<a id=\"result_\d*\" .* href \=\"\/weather\/forecast\//) {
+                 $locid = $_;
+                 $locid =~ s/.*\/weather\/forecast\/(\d{0,5})\?.*/$1/s;
+         
+@@ -74,14 +70,11 @@
+                 $locname =~ s/.*<a id=\"result_\d*\".*>(.*)<\/a>.*/$1/s;
+ 
+                 $resultline = $locid . "::" . $locname;
+-                push (@searchresults, $resultline);
++                if (! grep(/^$locid/, @searchresults)) {
++                    push (@searchresults, $resultline);
++                }
+             }
+         }
+-
+-        if ($havename && $haveid) {
+-            push (@searchresults, $resultline);
+-            last;
+-        }
+     }
+ 
+     return @searchresults;
+Index: mythplugins/mythweather/mythweather/main.cpp
+===================================================================
+--- mythplugins/mythweather/mythweather/main.cpp	(revision 23433)
++++ mythplugins/mythweather/mythweather/main.cpp	(working copy)
+@@ -142,8 +142,10 @@
+     menu->setKillable();
+     if (menu->foundTheme())
+     {
+-        if (LCD *lcd = LCD::Get())
++        if (LCD *lcd = LCD::Get()) {
++            lcd->setFunctionLEDs(FUNC_NEWS, false);
+             lcd->switchToTime();
++        }
+ 
+         GetMythMainWindow()->GetMainStack()->AddScreen(menu);
+         return 0;
+Index: mythplugins/mythmovies/ignyte/ignytegrabber.cpp
+===================================================================
+--- mythplugins/mythmovies/ignyte/ignytegrabber.cpp	(revision 22751)
++++ mythplugins/mythmovies/ignyte/ignytegrabber.cpp	(working copy)
+@@ -19,7 +19,7 @@
+             "</tns:GetTheatersAndMovies>\n"
+             "</soap:Body>\n"
+             "</soap:Envelope>\n");
+-    QString server("ignyte.com");
++    QString server("www.ignyte.com");
+     QString path("/webservices/ignyte.whatsshowing.webservice/moviefunctions.asmx");
+     QString soapAction("http://www.ignyte.com/whatsshowing/GetTheatersAndMovies");
+     ms->doSoapRequest(server, path, soapAction, fields);
+Index: mythplugins/mythvideo/mtd/dvdprobe.cpp
+===================================================================
+--- mythplugins/mythvideo/mtd/dvdprobe.cpp	(revision 22751)
++++ mythplugins/mythvideo/mtd/dvdprobe.cpp	(working copy)
+@@ -47,6 +47,10 @@
+     }
+ }
+ 
++#define LOC_ERR  QString("dvdprobe.cpp, Error: ")
++#define LOC_WARN QString("dvdprobe.cpp, Warning: ")
++#define LOC      QString("dvdprobe.cpp: ")
++
+ DVDSubTitle::DVDSubTitle(int subtitle_id, const QString &a_language) :
+     id(subtitle_id), language(a_language.toUtf8())
+ {
+@@ -431,25 +435,47 @@
+     //  Before touching libdvdread stuff
+     //  (below), see if there's actually
+     //  a drive with media in it
+-    QFile dvdDevice(device);
+-    if (!dvdDevice.exists())
+     {
+-        //  Device doesn't exist. Silly user
+-        Reset();
+-        return false;
++        QFile dvdDevice(device);
++        if (!dvdDevice.exists())
++        {
++            //  Device doesn't exist. Silly user
++            Reset();
++            return false;
++        }
+     }
+ 
+-    if (!dvdDevice.open(QIODevice::ReadOnly))
++    // On UNIX like file systems O_NONBLOCK should be used to
++    // indicate we don't want to do reading or writing, we
++    // just want to issue some ioctls. This will prevent the
++    // OS from helping out and shearing the fingers off any
++    // person's attempting to place a DVD in the drive when
++    // we call open.
++    int flags = O_RDONLY;
++#ifdef O_NONBLOCK
++    flags |= O_NONBLOCK;
++#endif
++
++    // Ideally we can open with exclusive flag.
++#ifdef O_EXCL
++    flags |= O_EXCL;
++#endif
++    
++    int drive_handle = open(device.toLocal8Bit().constData(), flags);
++
++#ifdef O_EXCL
++    // If this failed with exclusive, try without.
++    if (drive_handle < 0)
+     {
+-        // Can't open device.
+-        Reset();
+-        return false;
++        flags &= ~O_EXCL;
++        drive_handle = open(device.toLocal8Bit().constData(), flags);
+     }
++#endif
+ 
+-    int drive_handle = dvdDevice.handle();
+-
+-    if (drive_handle == -1)
++    if (drive_handle < 0)
+     {
++        VERBOSE(VB_IMPORTANT, LOC +
++                "Failed to open file descriptor for DVD." + ENO);
+         Reset();
+         return false;
+     }
+@@ -470,6 +496,7 @@
+     if (status < 0)
+     {
+         Reset();
++        close(drive_handle);
+         return false;
+     }
+ 
+@@ -483,6 +510,7 @@
+         //  3 = not ready
+         //
+         Reset();
++        close(drive_handle);
+         return false;
[...2630 lines suppressed...]
+-# The type of data is specified by the key value. 
++# The type of data is specified by the key value.
+ # Valid keys are:
+ # poster   - This is also know as a cover art or a cover image
+ # fanart
+@@ -485,32 +500,31 @@
+ # metadate - The video file's text description e.g. plot, director ... etc
+ #
+ # NOTE: At this time there is no TV Secondary source scripts available unless you write your own.
+-#       
++#
+ [movies-secondary-sources]
+ #poster: /usr/local/share/mythtv/mythvideo/scripts/fetch_poster.py -P %%(imdb)s
+-#fanart: 
++#fanart:
+ #metadata: /usr/local/share/mythtv/mythvideo/scripts/imdbpy.py -D %%(imdb)s
+ 
+ [tv-secondary-sources]
+ #poster:
+-#fanart: 
++#fanart:
+ #banner:
+ #metadata:
+ # END   Secondary sources section--------------------------------------------------------------------
+ 
+ # START regex section------------------------------------------------------------------------------
+-# NOTE: If you do not understand regex expressions DO NOT USE this section. 
++# NOTE: If you do not understand regex expressions DO NOT USE this section.
+ # This section adds to the default regex strings used to parse file names when extracting
+ # the following: series name, season number, episode number
+ # NOTE: The "% (self.config['valid_filename_chars_regex'])" part of the string is assumed
+ # NOTE: ANY % percent sign in the expression must be doubled (e.g. a % must be changed to %% )
+ # NOTE: The key value (e.g. "regex01") must be unique for each value.
+ # NOTE: DO NOT surround the regex pattern string with the traditional ''' three single quotes
+-#       
+-[regex] 
++#
++[regex]
+ # This is an example video file name "foo_S01_12" where:
+ # series name is "foo", season number starts at "S" and episode number starts after '_'
+ # foo_S01_12
+ #regex01: ^(.+?)[ \._\-][Ss]([0-9]+)_([0-9]+)[^\\/]*$
+ # END   regex section------------------------------------------------------------------------------
+-
 Index: mythplugins/mythvideo/mythvideo/scripts/ttvdb.py
 ===================================================================
 --- mythplugins/mythvideo/mythvideo/scripts/ttvdb.py	(revision 22751)
@@ -3097,9 +4120,24 @@
                  if (!host.isEmpty())
                  {
                      QString combFileName = QString("%1.%2").arg(title)
+Index: mythplugins/mythvideo/mythvideo/videolist.cpp
+===================================================================
+--- mythplugins/mythvideo/mythvideo/videolist.cpp	(revision 22751)
++++ mythplugins/mythvideo/mythvideo/videolist.cpp	(working copy)
+@@ -1231,6 +1231,10 @@
+     prefix_to_node_map ptnm;
+ 
+     QStringList dirs = GetVideoDirs();
++
++    if (!dirs.size())
++        return;
++
+     QString test_prefix(dirs[0]);
+ 
+     meta_dir_node *video_root = &m_metadata_tree;
 Index: mythplugins/mythvideo/mythvideo/main.cpp
 ===================================================================
---- mythplugins/mythvideo/mythvideo/main.cpp	(revision 22880)
+--- mythplugins/mythvideo/mythvideo/main.cpp	(revision 23433)
 +++ mythplugins/mythvideo/mythvideo/main.cpp	(working copy)
 @@ -517,6 +517,7 @@
          {
@@ -3111,7 +4149,7 @@
              GetMythMainWindow()->GetMainStack()->AddScreen(diag);
 Index: mythplugins/mythvideo/mythvideo/playercommand.cpp
 ===================================================================
---- mythplugins/mythvideo/mythvideo/playercommand.cpp	(revision 22880)
+--- mythplugins/mythvideo/mythvideo/playercommand.cpp	(revision 23433)
 +++ mythplugins/mythvideo/mythvideo/playercommand.cpp	(working copy)
 @@ -5,6 +5,7 @@
  #include <mythtv/libmythui/mythmainwindow.h>
@@ -3141,6 +4179,44 @@
  }
  
  QString VideoPlayerCommand::GetCommandDisplayName() const
+Index: mythplugins/mythnews/mythnews/newssite.cpp
+===================================================================
+--- mythplugins/mythnews/mythnews/newssite.cpp	(revision 22751)
++++ mythplugins/mythnews/mythnews/newssite.cpp	(working copy)
+@@ -314,6 +314,7 @@
+         QDomNode enclosureNode = itemNode.namedItem("enclosure");
+         QString enclosure = QString::null;
+         QString enclosure_type = QString::null;
++        QString thumbnail = QString::null;
+         if (!enclosureNode.isNull())
+         {
+             QDomAttr enclosureURL = enclosureNode.toElement()
+@@ -324,8 +325,16 @@
+ 
+             QDomAttr enclosureType = enclosureNode.toElement()
+                 .attributeNode("type");
+-            if (!enclosureType.isNull())
++            if (!enclosureType.isNull()) 
++            {
+                 enclosure_type  = enclosureType.value();
++
++                if (enclosure_type == "image/jpeg")
++                {
++                    thumbnail = enclosure;
++                    enclosure = QString::null;
++                }
++            }
+         }
+ 
+         //////////////////////////////////////////////////////////////
+@@ -341,7 +350,6 @@
+             itemNode = mediaGroup;
+ 
+         QDomNode thumbNode = itemNode.namedItem("media:thumbnail");
+-        QString thumbnail = QString::null;
+         if (!thumbNode.isNull())
+         {
+             QDomAttr thumburl = thumbNode.toElement().attributeNode("url");
 Index: mythplugins/mythnews/mythnews/mythnews.cpp
 ===================================================================
 --- mythplugins/mythnews/mythnews/mythnews.cpp	(revision 22751)
@@ -3192,7 +4268,17 @@
      if (m_thumbnailImage)
          m_thumbnailImage->Hide();
  }
-@@ -352,31 +359,43 @@
+@@ -315,6 +322,9 @@
+             }
+             else
+             {
++                if (m_thumbnailImage)
++                    m_thumbnailImage->Hide();
++
+                 if (!site->imageURL().isEmpty())
+                 {
+                     QString fileprefix = GetConfDir();
+@@ -352,31 +362,43 @@
                  }
              }
  
@@ -3250,7 +4336,7 @@
          if (site)
          {
              if (m_titleText)
-@@ -388,7 +407,7 @@
+@@ -388,7 +410,7 @@
              if (m_thumbnailImage && m_thumbnailImage->IsVisible())
                  m_thumbnailImage->Hide();
  
@@ -3259,7 +4345,7 @@
                  m_podcastImage->Show();
  
              if (!site->imageURL().isEmpty())
-@@ -715,7 +734,8 @@
+@@ -715,7 +737,8 @@
                          .arg(formatSize(progress, 2))
                          .arg(formatSize(total, 2))
                          .arg(floor(fProgress*100));
@@ -3271,7 +4357,7 @@
              usleep(100000);
 Index: mythplugins/mythmusic/mythmusic/main.cpp
 ===================================================================
---- mythplugins/mythmusic/mythmusic/main.cpp	(revision 22880)
+--- mythplugins/mythmusic/mythmusic/main.cpp	(revision 23433)
 +++ mythplugins/mythmusic/mythmusic/main.cpp	(working copy)
 @@ -21,6 +21,7 @@
  #include <mythtv/compat.h>
@@ -3305,25 +4391,9 @@
  }
  
  int mythplugin_run(void)
-Index: mythplugins/mythweather/mythweather/main.cpp
-===================================================================
---- mythplugins/mythweather/mythweather/main.cpp	(revision 22880)
-+++ mythplugins/mythweather/mythweather/main.cpp	(working copy)
-@@ -142,8 +142,10 @@
-     menu->setKillable();
-     if (menu->foundTheme())
-     {
--        if (LCD *lcd = LCD::Get())
-+        if (LCD *lcd = LCD::Get()) {
-+            lcd->setFunctionLEDs(FUNC_NEWS, false);
-             lcd->switchToTime();
-+        }
- 
-         GetMythMainWindow()->GetMainStack()->AddScreen(menu);
-         return 0;
 Index: mythplugins/mythgallery/mythgallery/imageview.cpp
 ===================================================================
---- mythplugins/mythgallery/mythgallery/imageview.cpp	(revision 22880)
+--- mythplugins/mythgallery/mythgallery/imageview.cpp	(revision 23433)
 +++ mythplugins/mythgallery/mythgallery/imageview.cpp	(working copy)
 @@ -152,9 +152,11 @@
  

mythtv-0.22-svnfixes.patch:
 bindings/python/MythTV/MythTV.py                              |   26 
 configure                                                     |    5 
 contrib/channel_changers/6200ch/6200ch.c                      |    2 
 contrib/imports/mirobridge/mirobridge.py                      |  657 +++++-----
 contrib/imports/mirobridge/mirobridge/mirobridge-example.conf |  105 -
 docs/index.html                                               |    2 
 docs/mythtv-HOWTO-11.html                                     |   22 
 docs/mythtv-HOWTO-23.html                                     |    8 
 docs/mythtv-HOWTO-5.html                                      |    8 
 docs/mythtv-HOWTO-singlehtml.html                             |   40 
 docs/mythtv-HOWTO.html                                        |    2 
 docs/mythtv-HOWTO.sgml                                        |   61 
 docs/mythtv-HOWTO.txt                                         |  152 +-
 keys.txt                                                      |   27 
 libs/libmyth/audiooutputbase.cpp                              |    6 
 libs/libmyth/mythcontext.cpp                                  |    5 
 libs/libmyth/mythdialogs.h                                    |   10 
 libs/libmyth/programlist.cpp                                  |    4 
 libs/libmyth/uilistbtntype.cpp                                |    3 
 libs/libmythdb/lcddevice.cpp                                  |   90 +
 libs/libmythdb/lcddevice.h                                    |   86 +
 libs/libmythdvdnav/dvdnav/dvdnav.c                            |   21 
 libs/libmythdvdnav/dvdnav/dvdnav.h                            |    5 
 libs/libmythdvdnav/dvdnav/vm/vm.c                             |   35 
 libs/libmythdvdnav/dvdnav/vm/vm.h                             |    1 
 libs/libmythtv/DVDRingBuffer.cpp                              |   46 
 libs/libmythtv/DVDRingBuffer.h                                |    7 
 libs/libmythtv/NuppelVideoPlayer.cpp                          |   46 
 libs/libmythtv/NuppelVideoPlayer.h                            |    3 
 libs/libmythtv/avformatdecoder.cpp                            |  133 +-
 libs/libmythtv/firewiredevice.cpp                             |    3 
 libs/libmythtv/hdhrstreamhandler.cpp                          |    6 
 libs/libmythtv/mpeg/dvbdescriptors.h                          |   11 
 libs/libmythtv/osd.cpp                                        |    2 
 libs/libmythtv/playercontext.cpp                              |   35 
 libs/libmythtv/recordinglist.cpp                              |    4 
 libs/libmythtv/recordingrule.cpp                              |    2 
 libs/libmythtv/tv_play.cpp                                    |   21 
 libs/libmythtv/tv_rec.cpp                                     |    5 
 libs/libmythtv/util-vdpau.cpp                                 |   27 
 libs/libmythtv/videodisplayprofile.cpp                        |   27 
 libs/libmythtv/videodisplayprofile.h                          |    1 
 libs/libmythtv/videoout_xv.cpp                                |    2 
 libs/libmythui/DisplayResScreen.cpp                           |   19 
 libs/libmythui/mythmainwindow.cpp                             |   21 
 libs/libmythui/mythuibuttontree.cpp                           |    2 
 libs/libmythui/mythuihelper.cpp                               |    2 
 programs/mythbackend/main.cpp                                 |    9 
 programs/mythbackend/scheduler.cpp                            |   10 
 programs/mythfilldatabase/main.cpp                            |    6 
 programs/mythfrontend/globalsettings.cpp                      |   54 
 programs/mythfrontend/guidegrid.cpp                           |   25 
 programs/mythfrontend/playbackbox.cpp                         |    1 
 programs/mythfrontend/statusbox.cpp                           |    4 
 programs/scripts/database/mythconverg_backup.pl               |    4 
 programs/scripts/database/mythconverg_restore.pl              |   34 
 themes/default-wide/recordings-ui.xml                         |    2 
 themes/default-wide/schedule-ui.xml                           |    6 
 themes/default/base.xml                                       |    6 
 themes/default/recordings-ui.xml                              |    2 
 themes/default/schedule-ui.xml                                |    6 
 61 files changed, 1279 insertions(+), 698 deletions(-)

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.1 -r 1.2 mythtv-0.22-svnfixes.patch
Index: mythtv-0.22-svnfixes.patch
===================================================================
RCS file: /cvs/free/rpms/mythtv/F-10/mythtv-0.22-svnfixes.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- mythtv-0.22-svnfixes.patch	22 Nov 2009 05:48:26 -0000	1.1
+++ mythtv-0.22-svnfixes.patch	2 Feb 2010 02:58:37 -0000	1.2
@@ -65,6 +65,33 @@
          </textarea>
  
          <imagetype name="preview">
+Index: mythtv/themes/default/base.xml
+===================================================================
+--- mythtv/themes/default/base.xml	(revision 22751)
++++ mythtv/themes/default/base.xml	(working copy)
+@@ -49,11 +49,11 @@
+     </font>
+ 
+     <font name="basesmallblue" from="basesmall">
+-        <color>#0492A7</color>
++        <color>#54d6e9</color>
+     </font>
+ 
+     <font name="basesmallred" from="basesmall">
+-        <color>#800900</color>
++        <color>#ff6b48</color>
+     </font>
+ 
+     <font name="basemediumgrey" from="basemedium">
+@@ -65,7 +65,7 @@
+     </font>
+ 
+     <font name="basemediumred" from="basemedium">
+-        <color>#800900</color>
++        <color>#ff6b48</color>
+     </font>
+ 
+     <font name="basemediumyellow" from="basemedium">
 Index: mythtv/themes/default-wide/schedule-ui.xml
 ===================================================================
 --- mythtv/themes/default-wide/schedule-ui.xml	(revision 22751)
@@ -950,6 +977,580 @@
      delete the selected view.
  
  Program Finder
+Index: mythtv/libs/libmythtv/NuppelVideoPlayer.cpp
+===================================================================
+--- mythtv/libs/libmythtv/NuppelVideoPlayer.cpp	(revision 22751)
++++ mythtv/libs/libmythtv/NuppelVideoPlayer.cpp	(working copy)
+@@ -183,7 +183,7 @@
+       video_frame_rate(29.97f), video_aspect(4.0f / 3.0f),
+       forced_video_aspect(-1),
+       m_scan(kScan_Interlaced),     m_scan_locked(false),
+-      m_scan_tracker(0),
++      m_scan_tracker(0),            m_scan_initialized(false),
+       keyframedist(30),
+       // Prebuffering (RingBuffer) control
+       prebuffering(false), prebuffer_tries(0), prebuffer_tries_total(0),
+@@ -244,7 +244,8 @@
+       decoder_lock(QMutex::Recursive),
+       next_play_speed(1.0f),        next_normal_speed(true),
+       play_speed(1.0f),             normal_speed(true),
+-      frame_interval((int)(1000000.0f / 30)), ffrew_skip(1),
++      frame_interval((int)(1000000.0f / 30)), m_frame_interval(0),
++      ffrew_skip(1),
+       // Audio and video synchronization stuff
+       videosync(NULL),              delay(0),
+       vsynctol(30/4),               avsync_delay(0),
+@@ -544,6 +545,7 @@
+     audio_lock.lock();
+     if (audioOutput && unpauseaudio)
+         audio_paused = false;
++    
+     audio_lock.unlock();
+     if (player_ctx->buffer)
+         player_ctx->buffer->Unpause();
+@@ -577,9 +579,11 @@
+ void NuppelVideoPlayer::PauseVideo(bool wait)
+ {
+     QMutexLocker locker(&pauseUnpauseLock);
+-    video_actually_paused = false;
++    
++    if (wait)
++        video_actually_paused = false;
+     pausevideo = true;
+-
++    
+     for (uint i = 0; wait && !video_actually_paused; i++)
+     {
+         videoThreadPaused.wait(&pauseUnpauseLock, 250);
+@@ -607,6 +611,9 @@
+         if ((i % 10) == 9)
+             VERBOSE(VB_IMPORTANT, "Waited too long for video out to unpause");
+     }
++
++    if (videoOutput)
++        videoOutput->ExposeEvent();
+ }
+ 
+ void NuppelVideoPlayer::SetVideoActuallyPaused(bool val)
+@@ -1071,15 +1078,21 @@
+     if (!videoOutput || !videosync)
+         return; // hopefully this will be called again later...
+ 
++    if (m_scan_initialized &&
++        m_scan == scan &&
++        m_frame_interval == frame_interval)
++        return;
++
+     m_scan_locked = (scan != kScan_Detect);
+ 
+-    if (scan == m_scan)
+-        return;
++    m_scan_initialized = true;
++    m_frame_interval = frame_interval;
+ 
+     bool interlaced = is_interlaced(scan);
+     if (interlaced && !m_deint_possible)
+     {
+         m_scan = scan;
++        videosync->SetFrameInterval(frame_interval, false);
+         return;
+     }
+ 
+@@ -1113,11 +1126,8 @@
+         if (kScan_Progressive == scan)
+         {
+             m_double_process = false;
+-            if (m_double_framerate)
+-            {
+-                m_double_framerate = false;
+-                videosync->SetFrameInterval(frame_interval, false);
+-            }
++            m_double_framerate = false;
++            videosync->SetFrameInterval(frame_interval, false);
+             videoOutput->SetDeinterlacingEnabled(false);
+             VERBOSE(VB_PLAYBACK, "Disabled deinterlacing");
+         }
+@@ -2587,9 +2597,11 @@
+                         "\t\t\tdoubling video frame interval to slow down.").arg(diverge));
+     }
+ 
++    audio_lock.lock();
+     if (audioOutput && normal_speed)
+     {
+         long long currentaudiotime = audioOutput->GetAudiotime();
++        audio_lock.unlock();
+ #if 0
+         VERBOSE(VB_PLAYBACK+VB_TIMESTAMP, QString(
+                     "A/V timecodes audio %1 video %2 frameinterval %3 "
+@@ -2652,7 +2664,9 @@
+             avsync_avg = 0;
+             avsync_oldavg = 0;
+         }
+-    }
++    } 
++    else
++        audio_lock.unlock();
+ }
+ 
+ void NuppelVideoPlayer::ShutdownAVSync(void)
+@@ -3073,7 +3087,7 @@
+                         continue;
+                     }
+ 
+-                    if (!pausevideo && nbframes == 1)
++                    if (!video_actually_paused && nbframes == 1)
+                     {
+                         dvd_stillframe_showing = true;
+                         PauseVideo(false);
+@@ -6848,8 +6862,12 @@
+         QString msg = "";
+ 
+         if (decoder)
++        {
+             msg = decoder->GetTrackDesc(type, GetTrack(type));
+-
++            
++            if (player_ctx->buffer->isDVD())
++                player_ctx->buffer->DVD()->SetTrack(type, trackNo);
++        }
+         if (osd)
+             osd->SetSettingsText(msg, 3);
+     }
+Index: mythtv/libs/libmythtv/util-vdpau.cpp
+===================================================================
+--- mythtv/libs/libmythtv/util-vdpau.cpp	(revision 22751)
++++ mythtv/libs/libmythtv/util-vdpau.cpp	(working copy)
+@@ -28,14 +28,35 @@
+ 
+ #define ARSIZE(x) (sizeof(x) / sizeof((x)[0]))
+ 
++static const QString kVDPAUWarning =
++"WARNING - please read the following carefully:-\n\n"
++"* The VDPAU device has reported that you have run out of video memory.   *\n"
++"* MythTV requires at least 512Mb of video memory for full functionality. *\n"
++"* If you are using an integrated GPU, please ensure you have allocated   *\n"
++"* the maximum amount of shared memory in the BIOS settings.              *\n"
++"* Systems with only 256Mb of video memory are not supported.             *\n\n"
[...2873 lines suppressed...]
++			dirpath2 = u"%s%s" % (copy_dir, u'folder.png')
  			if os.path.isfile(dirpath) or os.path.isfile(dirpath2): # See if a folder cover already exists
  				pass
  			else:
@@ -3062,7 +4772,23 @@
  				else:
  					try:	# Miro Channel icon copy for the new subdirectory
  						useImageMagick(u'convert "%s" "%s"' % (video[u'channel_icon'], dirpath))
-@@ -2655,7 +2697,7 @@
+@@ -2641,21 +2728,21 @@
+ 						# Gracefully close the Miro database and shutdown the Miro Front and Back ends
+ 						app.controller.shutdown()
+ 						time.sleep(5) # Let the shutdown processing complete
+-						sys.exit(False)
++						sys.exit(1)
+ 
+ 		# Copy the Miro video file
+ 		save_video_filename = video[u'videoFilename'] # This filename is needed later for deleting in Miro
+ 		ext = getExtention(video[u'videoFilename'])
+ 		if ext.lower() == u'm4v':
+ 			ext = u'mpg'
+-		filepath = u"%s%s - %s.%s" % (channels_to_copy[dir_key], video[u'channelTitle'], video[u'title'], ext)
++		filepath = u"%s%s - %s.%s" % (copy_dir, sanitiseFileName(video[u'channelTitle']), sanitiseFileName(video[u'title']), ext)
+ 		if simulation:
+ 			logger.info(u"Simulation: Copying the Miro video (%s) to the MythVideo directory (%s)." % (video[u'videoFilename'], filepath))
+ 		else:
  			try:	# Miro video copied into a MythVideo directory
  				shutil.copy2(video[u'videoFilename'], filepath)
  				statistics[u'Miros_MythVideos_copied']+=1
@@ -3071,7 +4797,13 @@
  					video[u'videoFilename'] = filepath.replace(storagegroups[u'mythvideo'], u'')
  				else:
  					video[u'videoFilename'] = filepath
-@@ -2669,7 +2711,7 @@
+@@ -2664,51 +2751,51 @@
+ 				# Gracefully close the Miro database and shutdown the Miro Front and Back ends
+ 				app.controller.shutdown()
+ 				time.sleep(5) # Let the shutdown processing complete
+-				sys.exit(False)
++				sys.exit(1)
+ 
  		# Copy the Channel or item's icon
  		if video[u'channel_icon'] and not video[u'channelTitle'].lower() in channel_icon_override:
  			pass
@@ -3080,33 +4812,75 @@
  			if video[u'item_icon']:
  				video[u'channel_icon'] = video[u'item_icon']
  		if video[u'channel_icon']:
-@@ -2689,7 +2731,7 @@
- 					except OSError:
- 						pass
- 					shutil.copy2(video[u'channel_icon'], filepath)
+ 			ext = getExtention(video[u'channel_icon'])
+ 			if video[u'channelTitle'].lower() in channel_icon_override:
+-				filepath = u"%s%s - %s%s.%s" % (vid_graphics_dirs[u'posterdir'], video[u'channelTitle'], video[u'title'], graphic_suffix[u'posterdir'], ext)
++				filepath = u"%s%s - %s%s.%s" % (vid_graphics_dirs[u'posterdir'], sanitiseFileName(video[u'channelTitle']), sanitiseFileName(video[u'title']), graphic_suffix[u'posterdir'], ext)
+ 			else:
+-				filepath = u"%s%s%s.%s" % (vid_graphics_dirs[u'posterdir'], video[u'channelTitle'], graphic_suffix[u'posterdir'], ext)
+-		# There may already be a Channel icon available or it is a symlink which needs to be replaced
+-		if not os.path.isfile(filepath) or os.path.islink(filepath):
+-			if simulation:
+-				logger.info(u"Simulation: Copying the Channel Icon (%s) to the poster directory (%s)." % (video[u'channel_icon'], filepath))
++				filepath = u"%s%s%s.%s" % (vid_graphics_dirs[u'posterdir'], sanitiseFileName(video[u'channelTitle']), graphic_suffix[u'posterdir'], ext)
++			# There may already be a Channel icon available or it is a symlink which needs to be replaced
++			if not os.path.isfile(filepath) or os.path.islink(filepath):
++				if simulation:
++					logger.info(u"Simulation: Copying the Channel Icon (%s) to the poster directory (%s)." % (video[u'channel_icon'], filepath))
++				else:
++					try:	# Miro Channel icon copied into a MythVideo directory
++						try: # Remove any old symlink file
++							os.remove(filepath)
++						except OSError:
++							pass
++						shutil.copy2(video[u'channel_icon'], filepath)
++						if u'posterdir' in storagegroups.keys() and not local_only:
++							video[u'channel_icon'] = filepath.replace(storagegroups[u'posterdir'], u'')
++						else:
++							video[u'channel_icon'] = filepath
++					except:
++						logger.critical(u"Copying the Channel Icon (%s) to the poster directory (%s).\n         This maybe a permissions error (mirobridge.py does not have permission to write to the directory)." % (video[u'channel_icon'], filepath))
++						# Gracefully close the Miro database and shutdown the Miro Front and Back ends
++						app.controller.shutdown()
++						time.sleep(5) # Let the shutdown processing complete
++						sys.exit(1)
+ 			else:
+-				try:	# Miro Channel icon copied into a MythVideo directory
+-					try: # Remove any old symlink file
+-						os.remove(filepath)
+-					except OSError:
+-						pass
+-					shutil.copy2(video[u'channel_icon'], filepath)
 -					if u'posterdir' in storagegroups.keys():
-+					if u'posterdir' in storagegroups.keys() and not local_only:
- 						video[u'channel_icon'] = filepath.replace(storagegroups[u'posterdir'], u'')
- 					else:
- 						video[u'channel_icon'] = filepath
-@@ -2700,14 +2742,14 @@
- 					time.sleep(5) # Let the shutdown processing complete
- 					sys.exit(False)
- 		else:
+-						video[u'channel_icon'] = filepath.replace(storagegroups[u'posterdir'], u'')
+-					else:
+-						video[u'channel_icon'] = filepath
+-				except:
+-					logger.critical(u"Copying the Channel Icon (%s) to the poster directory (%s).\n         This maybe a permissions error (mirobridge.py does not have permission to write to the directory)." % (video[u'channel_icon'], filepath))
+-					# Gracefully close the Miro database and shutdown the Miro Front and Back ends
+-					app.controller.shutdown()
+-					time.sleep(5) # Let the shutdown processing complete
+-					sys.exit(False)
+-		else:
 -			if u'posterdir' in storagegroups.keys():
-+			if u'posterdir' in storagegroups.keys() and not local_only:
- 				video[u'channel_icon'] = filepath.replace(storagegroups[u'posterdir'], u'')
- 			else:
- 				video[u'channel_icon'] = filepath
+-				video[u'channel_icon'] = filepath.replace(storagegroups[u'posterdir'], u'')
+-			else:
+-				video[u'channel_icon'] = filepath
++				if u'posterdir' in storagegroups.keys() and not local_only:
++					video[u'channel_icon'] = filepath.replace(storagegroups[u'posterdir'], u'')
++				else:
++					video[u'channel_icon'] = filepath
  
  		# There may already be a Screenshot available or it is a symlink which needs to be replaced
  		if video[u'screenshot']:
 -			ext = getExtention(video[u'screenshot']) 
+-			filepath = u"%s%s - %s%s.%s" % (vid_graphics_dirs[u'episodeimagedir'], video[u'channelTitle'], video[u'title'], graphic_suffix[u'episodeimagedir'], ext)
 +			ext = getExtention(video[u'screenshot'])
- 			filepath = u"%s%s - %s%s.%s" % (vid_graphics_dirs[u'episodeimagedir'], video[u'channelTitle'], video[u'title'], graphic_suffix[u'episodeimagedir'], ext)
++			filepath = u"%s%s - %s%s.%s" % (vid_graphics_dirs[u'episodeimagedir'], sanitiseFileName(video[u'channelTitle']), sanitiseFileName(video[u'title']), graphic_suffix[u'episodeimagedir'], ext)
  		else:
  			filepath = u''
-@@ -2724,7 +2766,7 @@
+ 
+@@ -2724,7 +2811,7 @@
  							pass
  						shutil.copy2(video[u'screenshot'], filepath)
  						displayMessage(u"Copied Miro screenshot file (%s) to MythVideo (%s)" % (video[u'screenshot'], filepath))
@@ -3115,9 +4889,12 @@
  							video[u'screenshot'] = filepath.replace(storagegroups[u'episodeimagedir'], u'')
  						else:
  							video[u'screenshot'] = filepath
-@@ -2735,17 +2777,16 @@
+@@ -2733,19 +2820,18 @@
+ 						# Gracefully close the Miro database and shutdown the Miro Front and Back ends
+ 						app.controller.shutdown()
  						time.sleep(5) # Let the shutdown processing complete
- 						sys.exit(False)
+-						sys.exit(False)
++						sys.exit(1)
  		elif video[u'screenshot']:
 -			if u'episodeimagedir' in storagegroups.keys():
 +			if u'episodeimagedir' in storagegroups.keys() and not local_only:
@@ -3136,7 +4913,7 @@
  	# Gracefully close the Miro database and shutdown the Miro Front and Back ends
  	app.controller.shutdown()
  	time.sleep(5) # Let the shutdown processing complete
-@@ -2756,7 +2797,7 @@
+@@ -2756,7 +2842,7 @@
  	#
  
  	# Check if the user does not want any channels Added to the "Watch Recordings" screen
@@ -3145,7 +4922,13 @@
  		for video in unwatched:
  			watched.append(video)
  		unwatched = []
-@@ -2780,7 +2821,7 @@
+@@ -2775,12 +2861,12 @@
+ 		displayMessage(u"There are no Miro unwatched video items to add as MythTV Recorded videos.")
+ 	if not updateMythRecorded(unwatched):
+ 		logger.critical(u"Updating MythTV Recording with Miro video files failed." % str(base_video_dir))
+-		sys.exit(False)
++		sys.exit(1)
+ 
  	#
  	# Add and delete MythVideo records for played Miro Videos
  	# Add and delete symbolic links to Miro Videos and subdirectories
@@ -3154,7 +4937,21 @@
  	#
  	if len(channel_watch_only): # If the user does not want any channels moved to MythVideo exit
  		if channel_watch_only[0].lower() == u'all':
-@@ -2808,4 +2849,3 @@
+@@ -2791,7 +2877,7 @@
+ 		displayMessage(u"There are no Miro watched items to add to MythVideo")
+ 	if not updateMythVideo(watched):
+ 		logger.critical(u"Updating MythVideo with Miro video files failed.")
+-		sys.exit(False)
++		sys.exit(1)
+ 
+ 	printStatistics()
+ 	return True
+@@ -2804,8 +2890,7 @@
+ 	#
+ 	if myapp.alreadyrunning():
+ 		print u'\nMiro Bridge is already running only one instance can run at a time\n\n'
+-		sys.exit(False)
++		sys.exit(1)
  
  	main()
  	displayMessage(u"Miro Bridge Processing completed")


Index: mythtv.spec
===================================================================
RCS file: /cvs/free/rpms/mythtv/F-10/mythtv.spec,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- mythtv.spec	22 Nov 2009 05:48:26 -0000	1.25
+++ mythtv.spec	2 Feb 2010 02:58:37 -0000	1.26
@@ -65,7 +65,7 @@
 %define desktop_vendor  RPMFusion
 
 # SVN Revision number and branch ID
-%define _svnrev r22880
+%define _svnrev r23433
 %define branch release
 
 #
@@ -81,7 +81,7 @@
 %if "%{branch}" == "trunk"
 Release: 0.1.svn.%{_svnrev}%{?dist}
 %else
-Release: 2%{?dist}
+Release: 5%{?dist}
 %endif
 
 # The primary license is GPLv2+, but bits are borrowed from a number of
@@ -1205,7 +1205,7 @@
 %pre backend
 # Add the "mythtv" user, with membership in the video group
 /usr/sbin/useradd -c "mythtvbackend User" \
-    -s /sbin/nologin -r -d %{_varlibdir}/mythtv -G video mythtv 2> /dev/null || :
+    -s /sbin/nologin -r -d %{_localstatedir}/lib/mythtv -G video mythtv 2> /dev/null || :
 
 %post backend
 /sbin/chkconfig --add mythbackend
@@ -1485,6 +1485,17 @@
 ################################################################################
 
 %changelog
+* Mon Feb 01 2010 Jarod Wilson <jarod at wilsonet.com> 0.22-5
+- Update to release-0-22-fixes branch, svn revision 23433
+- Fix mythtv user creation (rpm fusion bz#1027)
+
+* Mon Jan 04 2010 Jarod Wilson <jarod at wilsonet.com> 0.22-4
+- Update to release-0-22-fixes branch, svn revision 23074
+
+* Fri Dec 18 2009 Jarod Wilson <jarod at wilsonet.com> 0.22-3
+- Update to release-0-22-fixes branch, svn revision 22981
+- Contains targeted fixes for DVD playback, among other things
+
 * Sat Nov 21 2009 Jarod Wilson <jarod at wilsonet.com> 0.22-2
 - Update to release-0-22-fixes branch, svn revision 22880
 



More information about the rpmfusion-commits mailing list