rpms/mythtv/F-10 mythplugins-0.21-svnfixes.patch, 1.9, 1.10 mythtv-0.21-svnfixes.patch, 1.8, 1.9 mythtv.spec, 1.18, 1.19

Jarod Wilson jarod at rpmfusion.org
Thu Jun 4 06:02:21 CEST 2009


Author: jarod

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

Modified Files:
	mythplugins-0.21-svnfixes.patch mythtv-0.21-svnfixes.patch 
	mythtv.spec 
Log Message:
* Wed Jun 03 2009 Jarod Wilson <jarod at wilsonet.com> - 0.21-19
- Update to release-0-21-fixes patches (r20668)


mythplugins-0.21-svnfixes.patch:

Index: mythplugins-0.21-svnfixes.patch
===================================================================
RCS file: /cvs/free/rpms/mythtv/F-10/mythplugins-0.21-svnfixes.patch,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- mythplugins-0.21-svnfixes.patch	14 Apr 2009 02:53:13 -0000	1.9
+++ mythplugins-0.21-svnfixes.patch	4 Jun 2009 04:02:20 -0000	1.10
@@ -4120,11 +4120,177 @@
  
  #include "aacdecoder.h"
  #include "constants.h"
+Index: mythplugins/mythmusic/mythmusic/globalsettings.cpp
+===================================================================
+--- mythplugins/mythmusic/mythmusic/globalsettings.cpp	(revision 16468)
++++ mythplugins/mythmusic/mythmusic/globalsettings.cpp	(working copy)
+@@ -58,20 +58,11 @@
+     return gc;
+ };
+ 
+-static HostComboBox *CDDevice()
++static HostLineEdit *CDDevice()
+ {
+-    HostComboBox *gc = new HostComboBox("CDDevice", true);
++    HostLineEdit *gc = new HostLineEdit("CDDevice", true);
+     gc->setLabel(QObject::tr("CD device"));
+-    QDir dev("/dev", "cdrom*", QDir::Name, QDir::System);
+-    gc->fillSelectionsFromDir(dev);
+-    dev.setNameFilter("scd*");
+-    gc->fillSelectionsFromDir(dev);
+-    dev.setNameFilter("hd*");
+-    gc->fillSelectionsFromDir(dev);
+-
+-    dev.setNameFilter("cdrom*");
+-    dev.setPath("/dev/cdroms");
+-    gc->fillSelectionsFromDir(dev);
++    gc->setValue("default");
+     gc->setHelpText(QObject::tr("CDRom device used for ripping/playback."));
+     return gc;
+ };
+@@ -472,85 +463,14 @@
+     return gc;
+ };
+ 
+-static HostComboBox *CDWriterDevice()
++static HostLineEdit *CDWriterDevice()
+ {
+-    HostComboBox *gc = new HostComboBox("CDWriterDevice");
+-
+-    QString argadd[3]  = { "", "-dev=ATA", "-dev=ATAPI" };
+-    QString prepend[3] = { "", "ATA:", "ATAPI:" };
+-
+-    for (int i = 0; i < 3; i++)
+-    {
+-        QStringList args;
+-        QStringList result;
+-
+-        args = "cdrecord";
+-        args += "--scanbus";
+-
+-        if (argadd[i].length() > 1)
+-            args += argadd[i];
+-
+-        QString  cmd = args.join(" ");
+-        QProcess proc(args);
+-
+-        MythTimer totaltimer;
+-    
+-        if (proc.start())
+-        {
+-            totaltimer.start();
+-
+-            while (1)
+-            {
+-                while (proc.canReadLineStdout())
+-                    result += proc.readLineStdout();
+-                if (proc.isRunning())
+-                {
+-                    qApp->processEvents();
+-                    usleep(10000);
+-                }
+-                else
+-                {
+-                    if (!proc.normalExit())
+-                        VERBOSE(VB_GENERAL,
+-                                QString("Failed to run '%1'").arg(cmd));
+-                    break;
+-                }
+-
+-                if (totaltimer.elapsed() > 1500)
+-                {
+-                    //VERBOSE(VB_GENERAL, QString("Killed '%1' after %2ms")
+-                    //                    .arg(cmd).arg(totaltimer.elapsed()));
+-                    proc.kill();
+-                }
+-            }
+-        }
+-        else
+-            VERBOSE(VB_GENERAL, QString("Failed to run '%1'").arg(cmd));
+-
+-        while (proc.canReadLineStdout())
+-            result += proc.readLineStdout();
+-
+-        for (QStringList::Iterator it = result.begin(); it != result.end();
+-             ++it)
+-        {
+-            QString line = *it;
+-            if (line.length() > 12)
+-            {
+-                if (line[10] == ')' && line[12] != '*')
+-                {
+-                    QString dev  = prepend[i] + line.mid(1, 5);
+-                    QString name = line.mid(24, 16);
+-
+-                    gc->addSelection(name, dev);
+-                    VERBOSE(VB_GENERAL, "MythMusic adding CD-Writer: "
+-                                        + dev + " -- " + name);
+-                }
+-            }
+-        }
+-    }
+-    
++    HostLineEdit *gc = new HostLineEdit("CDWriterDevice");
++    gc->setValue("default");
+     gc->setLabel(QObject::tr("CD-Writer Device"));
+-    gc->setHelpText(QObject::tr("Select the SCSI or IDE Device for CD Writing."));
++    gc->setHelpText(QObject::tr("Select the SCSI or IDE Device for CD Writing.")
++                    + QObject::tr(" 'default' will let the "
++                                  "MediaMonitor choose a device."));
+     return gc;
+ };
+ 
+Index: mythplugins/mythmusic/mythmusic/playlist.cpp
+===================================================================
+--- mythplugins/mythmusic/mythmusic/playlist.cpp	(revision 16468)
++++ mythplugins/mythmusic/mythmusic/playlist.cpp	(working copy)
+@@ -10,6 +10,7 @@
+ #include "smartplaylist.h"
+ #include <mythtv/mythdbcon.h>
+ #include <mythtv/compat.h>
++#include <mythtv/mythmediamonitor.h>
+ 
+ #include <qfileinfo.h>
+ #include <qprocess.h>
+@@ -1664,7 +1665,7 @@
+         return 1;
+     }
+ 
+-    QString scsidev = gContext->GetSetting("CDWriterDevice");
++    QString scsidev = MediaMonitor::defaultCDWriter();
+     if (scsidev.isEmpty() || scsidev.isNull()) 
+     {
+         VERBOSE(VB_GENERAL, "No CD Writer device defined.");
 Index: mythplugins/mythmusic/mythmusic/databasebox.cpp
 ===================================================================
 --- mythplugins/mythmusic/mythmusic/databasebox.cpp	(revision 16468)
 +++ mythplugins/mythmusic/mythmusic/databasebox.cpp	(working copy)
-@@ -875,9 +875,15 @@
+@@ -17,6 +17,7 @@
+ #include <mythtv/lcddevice.h>
+ #include <mythtv/uitypes.h>
+ #include <mythtv/uilistbtntype.h>
++#include <mythtv/mythmediamonitor.h>
+ 
+ // mythmusic
+ #include "metadata.h"
+@@ -421,12 +422,13 @@
+         return;
+     }
+ 
+-    QString scsidev = gContext->GetSetting("CDWriterDevice");
+-    if (scsidev.length()==0) 
++    QString scsidev = MediaMonitor::defaultCDWriter();
++    if (scsidev.isEmpty() || scsidev.isNull())
+     {
+-        VERBOSE(VB_GENERAL, "We don't have SCSI devices");
++        VERBOSE(VB_GENERAL, "No CD Writer device defined.");
+         return;
+     }
++
+     // Begin Blanking
+     MythProgressDialog *record_progress;
+     record_progress = new MythProgressDialog(tr("CD-RW Blanking Progress"), 10);
+@@ -875,9 +877,15 @@
  
      if (cdwriter)
      {
@@ -4140,7 +4306,7 @@
  
          cdmp3b = active_popup->addButton(tr("Create MP3 CD from Playlist"),
                                           this, SLOT(CreateCDMP3()));
-@@ -920,8 +926,12 @@
+@@ -920,8 +928,12 @@
          active_popup->addLabel(label2);
  
          cdmp3b->setEnabled((ratio_MB <= 100.0));
@@ -6286,7 +6452,54 @@
 ===================================================================
 --- mythplugins/mytharchive/mytharchivehelper/main.cpp	(revision 16468)
 +++ mythplugins/mytharchive/mytharchivehelper/main.cpp	(working copy)
-@@ -2068,6 +2068,7 @@
+@@ -176,23 +176,27 @@
+     QString dvdDrive = gContext->GetSetting("MythArchiveDVDLocation", "/dev/dvd");
+     VERBOSE(VB_JOBQUEUE, "Burning ISO image to " + dvdDrive);
+ 
++    int     driveSpeed    = gContext->GetNumSetting("MythArchiveDriveSpeed");
+     QString tempDirectory = getTempDirectory();
+ 
+     tempDirectory += "work/";
+ 
+-    QString growisofs = gContext->GetSetting("MythArchiveGrowisofsCmd", "growisofs");
+-    QString command;
++    QString command = gContext->GetSetting("MythArchiveGrowisofsCmd",
++                                           "growisofs");
+ 
++    if (driveSpeed)
++        command += " -speed=" + QString::number(driveSpeed);
++
+     if (nativeFormat)
+     {
+         if (mediaType == AD_DVD_RW && bEraseDVDRW == true)
+         {
+-            command = growisofs + " -use-the-force-luke -Z " + dvdDrive;
++            command += " -use-the-force-luke -Z " + dvdDrive;
+             command += " -V 'MythTV Archive' -R -J " + tempDirectory;
+         }
+         else
+         {
+-            command = growisofs + " -Z " + dvdDrive; 
++            command += " -Z " + dvdDrive;
+             command += " -V 'MythTV Archive' -R -J " + tempDirectory;
+         }
+     }
+@@ -200,12 +204,12 @@
+     {
+         if (mediaType == AD_DVD_RW && bEraseDVDRW == true)
+         {
+-            command = growisofs + " -dvd-compat -use-the-force-luke -Z " + dvdDrive;
++            command += " -dvd-compat -use-the-force-luke -Z " + dvdDrive;
+             command += " -dvd-video -V 'MythTV DVD' " + tempDirectory + "/dvd";
+         }
+         else
+         {
+-            command = growisofs + " -dvd-compat -Z " + dvdDrive; 
++            command += " -dvd-compat -Z " + dvdDrive;
+             command += " -dvd-video -V 'MythTV DVD' " + tempDirectory + "/dvd";
+         }
+     }
+@@ -2068,6 +2072,7 @@
      root.appendChild(streams);
      streams.setAttribute("count", inputFC->nb_streams);
      int ffmpegIndex = 0;
@@ -6294,7 +6507,7 @@
  
      for (uint i = 0; i < inputFC->nb_streams; i++)
      {
-@@ -2124,56 +2125,60 @@
+@@ -2124,56 +2129,60 @@
  
                  streams.appendChild(stream);
  
@@ -6396,7 +6609,7 @@
                  break;
              }
  
-@@ -2185,7 +2190,14 @@
+@@ -2185,7 +2194,14 @@
                  QDomElement stream = doc.createElement("audio");
                  stream.setAttribute("streamindex", i);
                  stream.setAttribute("ffmpegindex", ffmpegIndex++);
@@ -6421,7 +6634,7 @@
  
  # version of script - change after each update
 -VERSION="0.1.20080127-1"
-+VERSION="0.1.20080726-1-fixes"
++VERSION="0.1.20090515-1-fixes"
  
  # keep all temporary files for debugging purposes
  # set this to True before a first run through when testing
@@ -6595,7 +6808,17 @@
  
      write("Finished creating ISO image")
  
-@@ -2575,7 +2600,7 @@
+@@ -2570,12 +2595,17 @@
+         os.close(f);
+ 
+         if drivestatus == CDROM.CDS_DISC_OK or drivestatus == CDROM.CDS_NO_INFO:
++
++            # If the frontend has a previously burnt DVD+RW mounted,
++            # growisofs will fail to burn it, so try to pumount it first...
++            runCommand("pumount " + dvddrivepath);
++
+             if mediatype == DVD_RW and erasedvdrw == True:
+                 command = path_growisofs[0] + " -dvd-compat "
                  if drivespeed != 0:
                      command += "-speed=%d " % drivespeed
                  command += " -use-the-force-luke -Z " + dvddrivepath 
@@ -6604,7 +6827,7 @@
                  command += os.path.join(getTempPath(),'dvd')
              else:
                  command = path_growisofs[0] + " -dvd-compat "
-@@ -2954,7 +2979,8 @@
+@@ -2954,7 +2984,8 @@
              dvdauthor_element.appendChild(titleset)
  
              #Comment XML file with title of video
@@ -6614,7 +6837,7 @@
  
              menus= dvddom.createElement("menus")
              titleset.appendChild(menus)
-@@ -4585,23 +4611,23 @@
+@@ -4585,23 +4616,23 @@
  # process a single file ready for burning using either
  # mythtranscode/mythreplex or ProjectX as the cutter/demuxer
  
@@ -6643,7 +6866,7 @@
      write( "*************************************************************")
  
      #As part of this routine we need to pre-process the video this MAY mean:
-@@ -4642,7 +4668,7 @@
+@@ -4642,7 +4673,7 @@
                      localfile = file.attributes["localfilename"].value
                  else:
                      localfile = ""
@@ -6652,7 +6875,7 @@
                  chanid = getText(infoDOM.getElementsByTagName("chanid")[0])
                  starttime = getText(infoDOM.getElementsByTagName("starttime")[0])
                  if runMythtranscode(chanid, starttime, os.path.join(folder,'newfile.mpg'), True, localfile):
-@@ -4665,7 +4691,7 @@
+@@ -4665,7 +4696,7 @@
                      if runMythtranscode(chanid, starttime, os.path.join(folder, 'newfile.mpg'), False, localfile):
                          mediafile = os.path.join(folder, 'newfile.mpg')
                      else:
@@ -6661,7 +6884,7 @@
      else:
          #does the user always want to run mpeg2 files through mythtranscode?
          #may help to fix any errors in the file 
-@@ -4685,7 +4711,7 @@
+@@ -4685,7 +4716,7 @@
              if runMythtranscode(chanid, starttime, os.path.join(folder, 'newfile.mpg'), False, localfile):
                  mediafile = os.path.join(folder, 'newfile.mpg')
              else:
@@ -6670,7 +6893,7 @@
  
      #do we need to re-encode the file to make it DVD compliant?
      if not isFileOkayForDVD(file, folder):
-@@ -4801,7 +4827,7 @@
+@@ -4801,7 +4832,7 @@
              extractVideoFrame(os.path.join(folder, "stream.mv2"), titleImage, thumboffset)
  
      write( "*************************************************************")
@@ -6679,7 +6902,7 @@
      write( "*************************************************************")
  
  
-@@ -4809,11 +4835,11 @@
+@@ -4809,11 +4840,11 @@
  # process a single file ready for burning using projectX to
  # cut and demux
  
@@ -6693,7 +6916,7 @@
      write( "*************************************************************")
  
      #As part of this routine we need to pre-process the video this MAY mean:
-@@ -4970,7 +4996,7 @@
+@@ -4970,7 +5001,7 @@
              extractVideoFrame(os.path.join(folder, "stream.mv2"), titleImage, thumboffset)
  
      write( "*************************************************************")
@@ -6702,7 +6925,7 @@
      write( "*************************************************************")
  
  #############################################################
-@@ -5102,7 +5128,7 @@
+@@ -5102,7 +5133,7 @@
                          os.rmdir (folder)
                      os.makedirs(folder)
                  #Do the pre-process work
@@ -6711,7 +6934,7 @@
  
              if debug_secondrunthrough==False:
                  #Loop through all the files again but this time do more serious work!
-@@ -5112,7 +5138,7 @@
+@@ -5112,7 +5143,7 @@
                      folder=getItemTempPath(filecount)
  
                      #Process this file
@@ -6720,7 +6943,7 @@
  
              #We can only create the menus after the videos have been processed
              #and the commercials cut out so we get the correct run time length
-@@ -5185,6 +5211,9 @@
+@@ -5185,6 +5216,9 @@
              if infoDOM.documentElement.tagName != "fileinfo":
                  fatalError("The info.xml file (%s) doesn't look right" % os.path.join(folder,"info.xml"))
              title = expandItemText(infoDOM,"%title",1,0,0,0,0)
@@ -10122,6 +10345,44 @@
      </message>
  </context>
  <context>
+Index: mythplugins/mythgallery/mythgallery/iconview.cpp
+===================================================================
+--- mythplugins/mythgallery/mythgallery/iconview.cpp	(revision 16468)
++++ mythplugins/mythgallery/mythgallery/iconview.cpp	(working copy)
+@@ -1215,6 +1215,9 @@
+     item = new UIListBtnTypeItem(m_submenuType, tr("Show Devices"));
+     item->setData(new MenuAction(&IconView::HandleShowDevices));
+ 
++    item = new UIListBtnTypeItem(m_submenuType, tr("Eject"));
++    item->setData(new MenuAction(&IconView::HandleEject));
++
+     item = new UIListBtnTypeItem(m_submenuType, tr("Import"));
+     item->setData(new MenuAction(&IconView::HandleImport));
+ 
+@@ -1327,6 +1330,11 @@
+     }
+ }
+ 
++void IconView::HandleEject(void)
++{
++    myth_eject();
++}
++
+ void IconView::HandleImport(void)
+ {
+     QFileInfo path;
+Index: mythplugins/mythgallery/mythgallery/iconview.h
+===================================================================
+--- mythplugins/mythgallery/mythgallery/iconview.h	(revision 16468)
++++ mythplugins/mythgallery/mythgallery/iconview.h	(working copy)
+@@ -91,6 +91,7 @@
+     void HandleSlideShow(void);
+     void HandleRandomShow(void);
+     void HandleSettings(void);
++    void HandleEject(void);
+     void HandleImport(void);
+     void HandleShowDevices(void);
+     void HandleCopyHere(void);
 Index: mythplugins/mythmovies/ignyte/ignytegrabber.cpp
 ===================================================================
 --- mythplugins/mythmovies/ignyte/ignytegrabber.cpp	(revision 16468)
@@ -12712,15 +12973,39 @@
 ===================================================================
 --- mythplugins/mythvideo/mythvideo/globalsettings.cpp	(revision 16468)
 +++ mythplugins/mythvideo/mythvideo/globalsettings.cpp	(working copy)
-@@ -322,6 +322,8 @@
+@@ -309,10 +309,12 @@
+ {
+     HostLineEdit *gc = new HostLineEdit("VCDDeviceLocation");
+     gc->setLabel(QObject::tr("Location of VCD device"));
+-    gc->setValue("/dev/cdrom");
++    gc->setValue("default");
+     gc->setHelpText(QObject::tr("This device must exist, and the user "
+                     "running MythDVD needs to have read permission "
+-                    "on the device."));
++                    "on the device.")
++                    + QObject::tr(" 'default' will let the "
++                                  "MediaMonitor choose a device."));
+     return gc;
+ }
+ 
+@@ -320,14 +322,12 @@
+ {
+     HostLineEdit *gc = new HostLineEdit("DVDDeviceLocation");
      gc->setLabel(QObject::tr("Location of DVD device"));
- #ifdef Q_WS_MACX
+-#ifdef Q_WS_MACX
      gc->setValue("default");
-+#elif defined(_WIN32) 
-+    gc->setValue("D:\\");
- #else
-     gc->setValue("/dev/dvd");
- #endif
+-#else
+-    gc->setValue("/dev/dvd");
+-#endif
+     gc->setHelpText(QObject::tr("This device must exist, and the user "
+                     "running MythDVD needs to have read permission "
+-                    "on the device."));
++                    "on the device.")
++                    + QObject::tr(" 'default' will let the "
++                                  "MediaMonitor choose a device."));
+     return gc;
+ }
+ 
 Index: mythplugins/mythvideo/mythvideo/main.cpp
 ===================================================================
 --- mythplugins/mythvideo/mythvideo/main.cpp	(revision 16468)
@@ -15303,90 +15588,197 @@
 ===================================================================
 --- mythplugins/mythnews/mythnews/news-sites.xml	(revision 16468)
 +++ mythplugins/mythnews/mythnews/news-sites.xml	(working copy)
-@@ -725,85 +725,75 @@
+@@ -29,7 +29,7 @@
+ 
+     <item> 
+         <title>Scotsman.com Entertainment News</title> 
+-        <url>http://news.scotsman.com/entertainment.cfm?format=rss</url> 
++        <url>http://news.scotsman.com/getFeed.aspx?Format=rss&amp;sectionid=7010</url> 
+         <ico>http://www.scotsman.com/favicon.ico</ico> 
+     </item> 
+ 
+@@ -456,73 +456,73 @@
+ 
+     <item>
+         <title>G4TV Attack of the Show Daily Video Podcast</title>
+-        <url>http://www.g4tv.com/attackoftheshow/podcasts/5/Attack_of_the_Show_Daily_Video_Podcast.xml</url>
+-        <ico>http://www.g4tv.com/favicon.ico</ico>
++        <url>http://g4tv.com/attackoftheshow/podcasts/5/Attack_of_the_Show_Daily_Video_Podcast.xml</url>
++        <ico>http://g4tv.com/favicon.ico</ico>
+     </item> 
+ 
+     <item>
+         <title>G4TV Cheat! Video Podcast</title>
+-        <url>http://www.g4tv.com/cheat/podcasts/7/Cheat_Video_Podcast.xml</url>
+-        <ico>http://www.g4tv.com/favicon.ico</ico>
++        <url>http://g4tv.com/cheat/podcasts/7/Cheat_Video_Podcast.xml</url>
++        <ico>http://g4tv.com/favicon.ico</ico>
+     </item> 
+ 
+     <item>
+         <title>G4TV Cinematech: Nocturnal Emissions Video Podcast</title>
+-        <url>http://www.g4tv.com/cinematechnocturnalemissions/podcasts/9/Cinematech_Nocturnal_Emissions_Video_Podcast.xml</url>
+-        <ico>http://www.g4tv.com/favicon.ico</ico>
++        <url>http://g4tv.com/cinematechnocturnalemissions/podcasts/9/Cinematech_Nocturnal_Emissions_Video_Podcast.xml</url>
++        <ico>http://g4tv.com/favicon.ico</ico>
+     </item> 
+     <item>
+         <title>G4TV Cinematech Video Podcast</title>
+-        <url>http://www.g4tv.com/cinematech/podcasts/8/Cinematech_Video_Podcast.xml</url>
+-        <ico>http://www.g4tv.com/favicon.ico</ico>
++        <url>http://g4tv.com/cinematech/podcasts/8/Cinematech_Video_Podcast.xml</url>
++        <ico>http://g4tv.com/favicon.ico</ico>
+     </item> 
+ 
+     <item>
+         <title>G4TV ICONS Video Podcast</title>
+-        <url>http://www.g4tv.com/icons/podcasts/17/ICONS_Video_Podcast.xml</url>
+-        <ico>http://www.g4tv.com/favicon.ico</ico>
++        <url>http://g4tv.com/icons/podcasts/17/ICONS_Video_Podcast.xml</url>
++        <ico>http://g4tv.com/favicon.ico</ico>
+     </item> 
+ 
+     <item>
+         <title>G4TV Filter Video Podcast</title>
+-        <url>http://www.g4tv.com/filter/podcasts/10/Filter_Video_Podcast.xml</url>
+-        <ico>http://www.g4tv.com/favicon.ico</ico>
++        <url>http://g4tv.com/filter/podcasts/10/Filter_Video_Podcast.xml</url>
++        <ico>http://g4tv.com/favicon.ico</ico>
+     </item>
+  
+     <item>
+         <title>G4TV Formula D Video Podcast</title>
+-        <url>http://www.g4tv.com/formulad/podcasts/18/Formula_D_Video_Podcast.xml</url>
+-        <ico>http://www.g4tv.com/favicon.ico</ico>
++        <url>http://g4tv.com/formulad/podcasts/18/Formula_D_Video_Podcast.xml</url>
++        <ico>http://g4tv.com/favicon.ico</ico>
+     </item> 
+ 
+     <item>
+         <title>G4TV Street Fury Video Podcast</title>
+-        <url>http://www.g4tv.com/streetfury/podcasts/11/Street_Fury_Video_Podcast.xml</url>
+-        <ico>http://www.g4tv.com/favicon.ico</ico>
++        <url>http://g4tv.com/streetfury/podcasts/11/Street_Fury_Video_Podcast.xml</url>
++        <ico>http://g4tv.com/favicon.ico</ico>
+     </item> 
+ 
+     <item>
+         <title>G4TV The Daily Feed Video Podcast</title>
+-        <url>http://www.g4tv.com/thefeed/podcasts/19/The_Daily_Feed_Video_Podcast.xml</url>
+-        <ico>http://www.g4tv.com/favicon.ico</ico>
++        <url>http://g4tv.com/thefeed/podcasts/19/The_Daily_Feed_Video_Podcast.xml</url>
++        <ico>http://g4tv.com/favicon.ico</ico>
+     </item> 
+ 
+     <item>
+         <title>G4TV The Daily Nut</title>
+-        <url>http://www.g4tv.com/dailynut/podcasts/15/The_Daily_Nut.xml</url>
+-        <ico>http://www.g4tv.com/favicon.ico</ico>
++        <url>http://g4tv.com/dailynut/podcasts/15/The_Daily_Nut.xml</url>
++        <ico>http://g4tv.com/favicon.ico</ico>
+     </item> 
+ 
+     <item>
+         <title>G4TV The Man Show Video Podcast</title>
+-        <url>http://www.g4tv.com/themanshow/podcasts/14/The_Man_Show_Video_Podcast.xml</url>
+-        <ico>http://www.g4tv.com/favicon.ico</ico>
++        <url>http://g4tv.com/themanshow/podcasts/14/The_Man_Show_Video_Podcast.xml</url>
++        <ico>http://g4tv.com/favicon.ico</ico>
+     </item> 
+ 
+     <item>
+         <title>G4TV X-Play Daily Video Podcast</title>
+-        <url>http://www.g4tv.com/xplay/podcasts/6/XPlay_Daily_Video_Podcast.xml</url>
+-        <ico>http://www.g4tv.com/favicon.ico</ico>
++        <url>http://g4tv.com/xplay/podcasts/6/XPlay_Daily_Video_Podcast.xml</url>
++        <ico>http://g4tv.com/favicon.ico</ico>
+     </item>
+ 
+ </category>
+@@ -639,7 +639,7 @@
+ 
+     <item>
+         <title>Scotsman.com International News</title>
+-        <url>http://news.scotsman.com/international.cfm?format=rss</url>
++        <url>http://news.scotsman.com/getFeed.aspx?Format=rss&amp;sectionid=7000</url>
+         <ico>http://www.scotsman.com/favicon.ico</ico>
+     </item>
+ 
+@@ -725,85 +725,55 @@
      </item>
  
      <item>
 -        <title>Digital Spy - Broadcasting</title>
 -        <url>http://syndication.digitalspy.co.uk/xmlcache/dsbroadcast.xml</url>
-+        <title>Digital Spy - News Headlines</title>
-+        <url>http://syndication.digitalspy.co.uk/rss_news/dsall.xml</url>
++        <title>Digital Spy - Media Headlines</title>
++        <url>http://www.digitalspy.co.uk/rss/zones/gb/media.xml</url>
      </item>
  
      <item>
 -        <title>Digital Spy - Cable</title>
 -        <url>http://syndication.digitalspy.co.uk/xmlcache/dscable.xml</url>
-+        <title>Digital Spy - Entertainment Headlines</title>
-+        <url>http://syndication.digitalspy.co.uk/rss_news/dsentertainmentnews.xml</url>
++        <title>Digital Spy - Big Brother</title>
++        <url>http://www.digitalspy.co.uk/rss/categories/gb/bigbrother.xml</url>
      </item>
  
      <item>
--        <title>Digital Spy - Cult</title>
+         <title>Digital Spy - Cult</title>
 -        <url>http://syndication.digitalspy.co.uk/xmlcache/dscult.xml</url>
-+        <title>Digital Spy - Media Headlines</title>
-+        <url>http://syndication.digitalspy.co.uk/rss_news/dsmedianews.xml</url>
++        <url>http://www.digitalspy.co.uk/rss/categories/gb/cult.xml</url>
      </item>
  
      <item>
 -        <title>Digital Spy - Entertainment Headlines</title>
 -        <url>http://syndication.digitalspy.co.uk/xmlcache/dseznews.xml</url>
-+        <title>Digital Spy - Digital TV</title>
-+        <url>http://syndication.digitalspy.co.uk/rss_news/dsdigitaltv.xml</url>
-     </item>
- 
-     <item>
+-    </item>
+-
+-    <item>
 -        <title>Digital Spy - Gaydar</title>
 -        <url>http://syndication.digitalspy.co.uk/xmlcache/dsgaydar.xml</url>
-+        <title>Digital Spy - Broadcasting</title>
-+        <url>http://syndication.digitalspy.co.uk/rss_news/dsbroadcasting.xml</url>
-     </item>
- 
-     <item>
+-    </item>
+-
+-    <item>
 -        <title>Digital Spy - Headlines</title>
 -        <url>http://syndication.digitalspy.co.uk/xmlcache/dsukstd.xml</url>
-+        <title>Digital Spy - Cult</title>
-+        <url>http://syndication.digitalspy.co.uk/rss_news/dscult.xml</url>
-     </item>
- 
-     <item>
+-    </item>
+-
+-    <item>
 -        <title>Digital Spy - Media Headlines</title>
 -        <url>http://syndication.digitalspy.co.uk/xmlcache/dsmznews.xml</url>
-+        <title>Digital Spy - Gay Spy</title>
-+        <url>http://syndication.digitalspy.co.uk/rss_news/dsgayspy.xml</url>
-     </item>
- 
-     <item>
+-    </item>
+-
+-    <item>
          <title>Digital Spy - Movies</title>
 -        <url>http://syndication.digitalspy.co.uk/xmlcache/dsfilm.xml</url>
-+        <url>http://syndication.digitalspy.co.uk/rss_news/dsmovies.xml</url>
++        <url>http://www.digitalspy.co.uk/rss/categories/gb/movies.xml</url>
      </item>
  
      <item>
 -        <title>Digital Spy - Programming</title>
 -        <url>http://syndication.digitalspy.co.uk/xmlcache/dsprogramming.xml</url>
 +        <title>Digital Spy - Music</title>
-+        <url>http://syndication.digitalspy.co.uk/rss_news/dsmusic.xml</url>
++        <url>http://www.digitalspy.co.uk/rss/categories/gb/music.xml</url>
      </item>
  
      <item>
 -        <title>Digital Spy - Radio</title>
 -        <url>http://syndication.digitalspy.co.uk/xmlcache/dsradio.xml</url>
 +        <title>Digital Spy - Reality</title>
-+        <url>http://syndication.digitalspy.co.uk/rss_news/dsrealitytv.xml</url>
++        <url>http://www.digitalspy.co.uk/rss/categories/gb/realitytv.xml</url>
      </item>
  
      <item>
 -        <title>Digital Spy - Reality TV</title>
 -        <url>http://syndication.digitalspy.co.uk/xmlcache/dsreality.xml</url>
 +        <title>Digital Spy - Showbiz</title>
-+        <url>http://syndication.digitalspy.co.uk/rss_news/dsshowbiz.xml</url>
++        <url>http://www.digitalspy.co.uk/rss/categories/gb/showbiz.xml</url>
      </item>
  
      <item>
 -        <title>Digital Spy - Satellite</title>
 -        <url>http://syndication.digitalspy.co.uk/xmlcache/dssatellite.xml</url>
 +        <title>Digital Spy - Soaps</title>
-+        <url>http://syndication.digitalspy.co.uk/rss_news/dssoaps.xml</url>
++        <url>http://www.digitalspy.co.uk/rss/categories/gb/soaps.xml</url>
      </item>
  
      <item>
@@ -15397,14 +15789,14 @@
 -    <item>
          <title>Digital Spy - Television</title>
 -        <url>http://syndication.digitalspy.co.uk/xmlcache/dstv.xml</url>
-+        <url>http://syndication.digitalspy.co.uk/rss_news/dstv.xml</url>
++        <url>http://www.digitalspy.co.uk/rss/categories/gb/tv.xml</url>
      </item>
  
      <item>
 -        <title>Digital Spy - Terrestrial</title>
 -        <url>http://syndication.digitalspy.co.uk/xmlcache/dsterrestrial.xml</url>
 +        <title>Digital Spy - US TV</title>
-+        <url>http://syndication.digitalspy.co.uk/rss_news/dsustv.xml</url>
++        <url>http://www.digitalspy.co.uk/rss/categories/gb/ustv.xml</url>
      </item>
  
 -    <item>
@@ -15415,7 +15807,7 @@
  </category>
  
  <category name="MythTV">
-@@ -840,7 +830,7 @@
+@@ -840,7 +810,7 @@
  
      <item>
          <title>MythTV - Wiki Recent Changes</title>
@@ -15424,15 +15816,41 @@
      </item>
    
  </category>
-@@ -986,6 +976,11 @@
+@@ -1019,7 +989,7 @@
+ 
+     <item>
+         <title>Scotsman.com Opinion</title>
+-        <url>http://news.scotsman.com/opinion.cfm?format=rss</url>
++        <url>http://news.scotsman.com/getFeed.aspx?Format=rss&amp;sectionid=7074</url>
+         <ico>http://www.scotsman.com/favicon.ico</ico>
      </item>
+     
+@@ -1115,18 +1085,25 @@
  
      <item>
-+        <title>Digital Spy - Odd Section</title>
-+        <url>http://syndication.digitalspy.co.uk/rss_news/dsodd.xml</url>
+         <title>Helsingin Sanomat (FI)</title>
+-        <url>http://siirto.helsinginsanomat.fi/aukio/HS-Tuoreet-RSS.xml</url>
++        <url>http://www.hs.fi/uutiset/rss/</url>
++        <ico>http://www.hs.fi/static/hs/img/favicon.ico</ico>
+     </item>
+ 
+     <item>
++        <title>YLE (FI)</title>
++        <url>http://www.yle.fi/uutiset/rss/paauutiset.xml</url>
++        <ico>http://www.yle.fi/favicon.ico</ico>
 +    </item>
-+
++    
 +    <item>
-         <title>Fark</title>
-         <url>http://feeds.feedburner.com/fark</url>
-         <ico>http://www.fark.com/favicon.ico</ico>
+         <title>Scotsman.com Headlines</title>
+-        <url>http://news.scotsman.com/index.cfm?format=rss</url>
++        <url>http://news.scotsman.com/getFeed.aspx?Format=rss&amp;sectionid=4068</url>
+         <ico>http://www.scotsman.com/favicon.ico</ico>
+     </item>
+ 
+     <item>
+         <title>Scotsman.com UK News</title>
+-        <url>http://news.scotsman.com/uk.cfm?format=rss</url>
++        <url>http://news.scotsman.com/getFeed.aspx?Format=rss&amp;sectionid=7071</url>
+         <ico>http://www.scotsman.com/favicon.ico</ico>
+     </item>
+ 

mythtv-0.21-svnfixes.patch:

Index: mythtv-0.21-svnfixes.patch
===================================================================
RCS file: /cvs/free/rpms/mythtv/F-10/mythtv-0.21-svnfixes.patch,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- mythtv-0.21-svnfixes.patch	14 Apr 2009 02:53:13 -0000	1.8
+++ mythtv-0.21-svnfixes.patch	4 Jun 2009 04:02:20 -0000	1.9
@@ -25167,7 +25167,7 @@
    echo "  --with-bindings=LIST     install the bindings specified in the"
    echo "                           comma-separated list"
    echo "                           Supported bindings: perl, python"
-@@ -904,6 +907,7 @@
+@@ -904,9 +907,11 @@
      xvmc_vld
      dvdv
      fribidi
@@ -25175,7 +25175,20 @@
  '
  
  MYTHTV_LIST='
-@@ -1178,6 +1182,7 @@
++    audio_pulse
+     audio_alsa
+     audio_arts
+     audio_jack
+@@ -1156,6 +1161,8 @@
+ CONFIG_DEFINES=""
+ CONFIG_INCLUDEPATH=""
+ PROFILEFLAGS=""
++audio_pulse="default"
++audio_pulse_libs="-lpulse"
+ audio_alsa="default"
+ audio_alsa_libs="-lasound"
+ audio_arts="default"
+@@ -1178,6 +1185,7 @@
  joystick_menu="default"
  lamemp3="yes"
  lirc="yes"
@@ -25183,7 +25196,7 @@
  opengl="yes"
  v4l="yes"
  x11="yes"
-@@ -1186,9 +1191,9 @@
+@@ -1186,9 +1194,9 @@
  xv="yes"
  xvmc="yes"
  xvmc_lib=""
@@ -25194,7 +25207,7 @@
  
  # libraries
  enable zlib
-@@ -1353,6 +1358,10 @@
+@@ -1353,6 +1361,10 @@
    ;;
    --xvmc-lib=*) xvmc_lib="$optval"
    ;;
@@ -25205,7 +25218,7 @@
    --enable-mac-accel) dvdv="yes"
    ;;
    --disable-mac-accel) dvdv="no"
-@@ -1382,6 +1391,10 @@
+@@ -1382,6 +1394,10 @@
  # disabled due to abuse in Gentoo ebuild
    --disable-backend)
    ;;
@@ -25216,7 +25229,7 @@
    --previous|--prev)
        echo "No history of previous configure parameters."
    ;;
-@@ -1475,6 +1488,7 @@
+@@ -1475,6 +1491,7 @@
        fi
      fi
      cmov="yes"
@@ -25224,7 +25237,7 @@
    ;;
    # armv4l is a subset of armv[567]*l
    arm|armv[4567]*l)
-@@ -1586,6 +1600,7 @@
+@@ -1586,6 +1603,7 @@
      ;;
    freebsd)
      append CCONFIG "freebsd"
@@ -25232,7 +25245,7 @@
      disable need_memalign
      backend="yes"
      ;;
-@@ -1599,10 +1614,13 @@
+@@ -1599,10 +1617,13 @@
      enable  darwin
      disable dvb
      disable ivtv
@@ -25241,7 +25254,7 @@
 -    if [ ${osxver} = "9" ]; then 
 -      disable mmx 
 -    fi
-+    if [[ ${ldver%.*} -lt "82" && ${osxver} = "9" && ${arch} = "x86_32" ]]; then
++    if [[ ${ldver%%.*} -lt "82" && ${osxver} = "9" && ${arch} = "x86_32" ]]; then
 +        disable mmx
 +        echo "You have a broken ld. Playback of HD videos may be very poor."
 +        echo "See http://svn.mythtv.org/trac/ticket/4200 for intelleopardmmx.patch"
@@ -25249,7 +25262,7 @@
      disable need_memalign
      disable opengl_video
      disable opengl_vsync
-@@ -1619,9 +1637,23 @@
+@@ -1619,9 +1640,23 @@
      FFSERVERLDFLAGS=-Wl,-bind_at_load
      ;;
    mingw32*)
@@ -25275,7 +25288,7 @@
      shlibdir="$bindir"
      VHOOKSHFLAGS='-shared -L$(BUILD_ROOT)/libavformat -L$(BUILD_ROOT)/libavcodec -L$(BUILD_ROOT)/libavutil'
      VHOOKLIBS='-lavformat$(BUILDSUF) -lavcodec$(BUILDSUF) -lavutil$(BUILDSUF) $(EXTRALIBS)'
-@@ -1629,17 +1661,7 @@
+@@ -1629,17 +1664,7 @@
          VHOOKSHFLAGS="$VHOOKSHFLAGS -L\$(BUILD_ROOT)/libswscale"
          VHOOKLIBS="$VHOOKLIBS -lswscale\$(BUILDSUF)"
      fi
@@ -25293,7 +25306,7 @@
      SLIBPREF="lib"
      SLIBSUF=".dll"
      EXESUF=".exe"
-@@ -2034,6 +2056,8 @@
+@@ -2034,6 +2059,8 @@
  # EM64T era Intel Xeon
     if expr "$processor" : ".*Intel(R) Xeon(R) CPU.*5110" > /dev/null ; then
         ARCHFLAGS="-march=k8" # this would be pentium4 on 32 bit systems
@@ -25302,7 +25315,20 @@
  # Various Intel Duo processors (EMT64T capable)
     elif expr "$processor" : ".*Intel(R).*Core(TM)2.*CPU" > /dev/null ; then
         ARCHFLAGS="-march=k8" # this would be pentium4 on 32 bit systems
-@@ -2691,6 +2715,9 @@
+@@ -2528,6 +2555,12 @@
+ check_header sys/soundcard.h
+ check_header soundcard.h
+ 
++# PulseAudio probe
++! disabled audio_pulse &&
++    check_lib pulse/version.h pa_get_library_version $audio_pulse_libs &&
++    enable  audio_pulse ||
++    disable audio_pulse
++
+ # ALSA probe
+ ! disabled audio_alsa &&
+     check_lib alsa/asoundlib.h snd_asoundlib_version $audio_alsa_libs &&
+@@ -2691,6 +2724,9 @@
      fi
  fi
  
@@ -25312,7 +25338,7 @@
  enabled x11 && has_library libX11 || disable x11
  enabled xrandr && has_header X11/extensions/Xrandr.h || disable xrandr
  enabled xv && has_library libXv || disable xv
-@@ -2702,38 +2729,38 @@
+@@ -2702,38 +2738,38 @@
  check_header X11/extensions/XvMClib.h
  has_library libXvMCW || disable xvmcw
  check_header X11/extensions/vldXvMC.h
@@ -25368,7 +25394,7 @@
  
  
  # Can only do Mac accel on Mac platform
-@@ -2838,6 +2865,9 @@
+@@ -2838,6 +2874,9 @@
      libdir="${PREFIX}/${libdir_name}"
  fi
  
@@ -25378,7 +25404,7 @@
  
  echo "# Basic Settings"
  echo "Compile type              $compile_type"
-@@ -2848,6 +2878,7 @@
+@@ -2848,6 +2887,7 @@
  echo "Compiler cache            $ccache$ccache_txt"
  echo "DistCC                    $distcc$distcc_txt"
  echo "install prefix            $PREFIX"
@@ -25386,7 +25412,15 @@
  <<BLOCK_QUOTE
  echo "source path               $source_path"
  echo "C compiler                $cc"
-@@ -3032,7 +3063,9 @@
+@@ -2973,6 +3013,7 @@
+ if enabled frontend; then
+   echo
+   echo "# Sound Output Support"
++  echo "PulseAudio support        ${audio_pulse-no}"
+   echo "OSS support               ${audio_oss-no}"
+   echo "ALSA support              ${audio_alsa-no}"
+   echo "aRts support              ${audio_arts-no}"
+@@ -3032,7 +3073,9 @@
  echo "#define FFMPEG_CONFIG_H" >> $TMPH
  echo "#define FFMPEG_CONFIGURATION \"$FFMPEG_CONFIGURATION\"" >> $TMPH
  
@@ -25396,6 +25430,18 @@
  echo "LIBDIR=$libdir" >> $MYTH_CONFIG_MAK
  <<BLOCK_QUOTE
  echo "SHLIBDIR=\$(DESTDIR)$shlibdir" >> config.mak
+@@ -3151,6 +3194,11 @@
+   echo "CONFIG_AUDIO_ALSA_LIBS=$audio_alsa_libs" >> $MYTH_CONFIG_MAK
+ fi
+ 
++if enabled audio_pulse; then
++  append CCONFIG "using_pulse"
++  echo "CONFIG_AUDIO_PULSE_LIBS=$audio_pulse_libs" >> $MYTH_CONFIG_MAK
++fi
++
+ if enabled audio_arts; then
+     append CCONFIG "using_arts"
+   echo "CONFIG_AUDIO_ARTS_LIBS=$audio_arts_libs" >> $MYTH_CONFIG_MAK
 Index: mythtv/themes/themes.pro
 ===================================================================
 --- mythtv/themes/themes.pro	(revision 16468)
@@ -27183,7 +27229,7 @@
 Index: mythtv/libs/libs-targetfix.pro
 ===================================================================
 --- mythtv/libs/libs-targetfix.pro	(revision 0)
-+++ mythtv/libs/libs-targetfix.pro	(revision 20373)
++++ mythtv/libs/libs-targetfix.pro	(revision 20668)
 @@ -0,0 +1,20 @@
 +# Common project modifications to change the generated target.
 +
@@ -27205,6 +27251,19 @@
 +        target.path = $${PREFIX}/bin
 +    }
 +}
+Index: mythtv/libs/libmythtv/eit.cpp
+===================================================================
+--- mythtv/libs/libmythtv/eit.cpp	(revision 16468)
++++ mythtv/libs/libmythtv/eit.cpp	(working copy)
+@@ -239,7 +239,7 @@
+     }
+     score /= al.size();
+ 
+-    return max(1000, score);
++    return min(1000, score);
+ }
+ 
+ int DBEvent::GetMatch(const vector<DBEvent> &programs, int &bestmatch) const
 Index: mythtv/libs/libmythtv/NuppelVideoPlayer.cpp
 ===================================================================
 --- mythtv/libs/libmythtv/NuppelVideoPlayer.cpp	(revision 16468)
@@ -27584,15 +27643,84 @@
  
      if (is_mot && !alt_method)
      {
-@@ -444,6 +447,21 @@
+@@ -235,7 +238,7 @@
+             cmd.push_back(kAVCControlCommand);
+             cmd.push_back(kAVCSubunitTypePanel | m_subunitid);
+             cmd.push_back(kAVCPanelPassThrough);
+-            cmd.push_back(kAVCPanelKey0 + digit[i] | kAVCPanelKeyPress);
++            cmd.push_back((kAVCPanelKey0 + digit[i]) | kAVCPanelKeyPress);
+             cmd.push_back(0x00);
+             cmd.push_back(0x00);
+             cmd.push_back(0x00);
+@@ -399,8 +402,9 @@
+ 
+     const uint64_t sa_vendor_ids[] =
+     {
+-        0x11e6,    0x14f8,    0x1692,    0x1947,    0x0f21,    0x1ac3,
+-        0x0a73,
++        0x0a73,    0x0f21,    0x11e6,    0x14f8,    0x1692,    0x1868,
++        0x1947,    0x1ac3,    0x1bd7,    0x1cea,    0x1e6b,    0x21be,
++        0x223a,    0x22ce,    0x23be,    0x252e,
+     };
+     const uint sa_vendor_id_cnt =
+         sizeof(sa_vendor_ids) / sizeof(uint64_t);
+@@ -415,19 +419,29 @@
+     const uint64_t motorola_vendor_ids[] =
+     {
+         /* DCH-3200 */
+-        0x1c11,
+-        /* 3416 */
++        0x1c11,    0x1cfb,    0x1fc4,    0x23a3,
++        /* DCH-3416 */
++        0x1e46,
++        /* DCT-3416 */
+         0x1bdd,
+-        /* 3412 */
++        /* DCT-3412 */
+         0x159a,
+-        /* 6200, 3416 */
++        /* DCT-6200, DCT-3416 */
+         0x0ce5,    0x0e5c,    0x1225,    0x0f9f,    0x1180,
+         0x12c9,    0x11ae,    0x152f,    0x14e8,    0x16b5,    0x1371,
+-        0x19a6,    0x1aad,    0x0b06,    0x195e,
+-        /* 6212 */
++        0x19a6,    0x1aad,    0x0b06,    0x195e,    0x10dc,
++        /* DCT-6212 */
+         0x0f9f,    0x152f,
+-        /* 6216, 2224 */
++        /* DCT-6216, 2224 */
+         0x17ee,    0x1a66,
++        /* QIP 7100 */
++        0x2374,
++        /* unknown, see http://standards.ieee.org/regauth/oui/oui.txt */
++        0x04db,    0x0406,    0x0ce5,    0x111a,    0x1225,    0x1404,
++        0x1626,    0x18c0,    0x1ade,    0x1cfb,    0x2040,    0x211e,
++        0x2180,    0x2210,    0x230b,    0x2375,    0x2395,    0x23a2,
++        0x23ed,    0x23ee,    0x23a0,    0x23a1,
++
+     };
+     const uint motorola_vendor_id_cnt =
+         sizeof(motorola_vendor_ids) / sizeof(uint64_t);
+@@ -435,6 +449,7 @@
+     for (uint i = 0; i < motorola_vendor_id_cnt; i++)
+     {
+         id_to_model[motorola_vendor_ids[i] << 32 | 0xd330] = "DCH-3200";
++        id_to_model[motorola_vendor_ids[i] << 32 | 0xb630] = "DCH-3416";
+         id_to_model[motorola_vendor_ids[i] << 32 | 0x34cb] = "DCT-3412";
+         id_to_model[motorola_vendor_ids[i] << 32 | 0x346b] = "DCT-3416";
+         id_to_model[motorola_vendor_ids[i] << 32 | 0xb630] = "DCT-3416";
+@@ -443,13 +458,31 @@
+         id_to_model[motorola_vendor_ids[i] << 32 | 0x64ca] = "DCT-6212";
          id_to_model[motorola_vendor_ids[i] << 32 | 0x64cb] = "DCT-6212";
          id_to_model[motorola_vendor_ids[i] << 32 | 0x646b] = "DCT-6216";
++        id_to_model[motorola_vendor_ids[i] << 32 | 0x8100] = "QIP-7100";
++        id_to_model[motorola_vendor_ids[i] << 32 | 0x0001] = "QIP-7100";
      }
 +
 +    const uint64_t pace_vendor_ids[] =
 +    {
 +        /* PACE 550-HD & 779 */
-+        0x5094,
++        0x1cc3, 0x5094,
 +    };
 +
 +    const uint pace_vendor_id_cnt =
@@ -27606,12 +27734,20 @@
  }
  
  bool FirewireDevice::IsSTBSupported(const QString &panel_model)
-@@ -458,6 +476,8 @@
+ {
+     QString model = panel_model.upper();
+     return ((model == "DCH-3200") ||
++            (model == "DCH-3416") ||
+             (model == "DCT-3412") ||
+             (model == "DCT-3416") ||
+             (model == "DCT-6200") ||
+@@ -458,6 +491,9 @@
              (model == "SA3250HD") ||
              (model == "SA4200HD") ||
              (model == "SA4250HDC") ||
 +            (model == "PACE-550") ||
 +            (model == "PACE-779") ||
++            (model == "QIP-7100") ||
              (model == "GENERIC"));
  }
  
@@ -28619,6 +28755,19 @@
      }
  
      QString frequency(void)  const { return pfrequency->getValue();  }
+Index: mythtv/libs/libmythtv/eitfixup.cpp
+===================================================================
+--- mythtv/libs/libmythtv/eitfixup.cpp	(revision 16468)
++++ mythtv/libs/libmythtv/eitfixup.cpp	(working copy)
+@@ -71,7 +71,7 @@
+       m_mcaCC(",?\\s(HI|English) Subtitles\\.?"),
+       m_mcaDD(",?\\sDD\\.?"),
+       m_RTLrepeat("(\\(|\\s)?Wiederholung.+vo[m|n].+((?:\\d{2}\\.\\d{2}\\.\\d{4})|(?:\\d{2}[:\\.]\\d{2}\\sUhr))\\)?"),
+-      m_RTLSubtitle("([^\\.]+)\\.\\s+(.+)"),
++      m_RTLSubtitle("^([^\\.]{3,})\\.\\s+(.+)"),
+       m_RTLSubtitle1("^Folge\\s(\\d{1,4})\\s*:\\s+'(.*)'(?:\\.\\s*|$)"),
+       m_RTLSubtitle2("^Folge\\s(\\d{1,4})\\s+(.{,5}[^\\.]{,120})[\\?!\\.]\\s*"),
+       m_RTLSubtitle3("^(?:Folge\\s)?(\\d{1,4}(?:\\/[IVX]+)?)\\s+(.{,5}[^\\.]{,120})[\\?!\\.]\\s*"),
 Index: mythtv/libs/libmythtv/diseqc.h
 ===================================================================
 --- mythtv/libs/libmythtv/diseqc.h	(revision 16468)
@@ -28803,7 +28952,40 @@
 ===================================================================
 --- mythtv/libs/libmythtv/eithelper.cpp	(revision 16468)
 +++ mythtv/libs/libmythtv/eithelper.cpp	(working copy)
-@@ -693,6 +693,20 @@
+@@ -393,7 +393,9 @@
+         }
+ 
+         QDateTime starttime = MythUTCToLocal(eit->StartTimeUTC(i));
+-        EITFixUp::TimeFix(starttime);
++        // fix starttime only if the duration is a multiple of a minute
++        if (!(eit->DurationInSeconds(i) % 60))
++            EITFixUp::TimeFix(starttime);
+         QDateTime endtime   = starttime.addSecs(eit->DurationInSeconds(i));
+ 
+         DBEvent *event = new DBEvent(chanid,
+@@ -495,7 +497,9 @@
+         for (uint k=0; k<transmission.TransmissionCount(); ++k)
+         {
+             QDateTime starttime = transmission.StartTimeUTC(k);
+-            EITFixUp::TimeFix(starttime);
++            // fix starttime only if the duration is a multiple of a minute
++            if (!(cit->DurationInSeconds() % 60))
++                EITFixUp::TimeFix(starttime);
+             QDateTime endtime   = starttime.addSecs(cit->DurationInSeconds());
+ 
+             DBEvent *event = new DBEvent(chanid,
+@@ -551,7 +555,9 @@
+         starttime.setTime_t(tmp - utc_offset, Qt::LocalTime);
+     }
+ 
+-    EITFixUp::TimeFix(starttime);
++    // fix starttime only if the duration is a multiple of a minute
++    if (!(event.length % 60))
++        EITFixUp::TimeFix(starttime);
+     QDateTime endtime = starttime.addSecs(event.length);
+ 
+     desc_list_t list = MPEGDescriptor::Parse(event.desc, event.desc_length);
+@@ -693,6 +699,20 @@
  
      // United Kingdom
      fix[ 9018U << 16] = EITFixUp::kFixUK;
@@ -28824,7 +29006,7 @@
  
      // ComHem Sweeden
      fix[40999U << 16       ] = EITFixUp::kFixComHem;
-@@ -814,20 +828,24 @@
+@@ -814,20 +834,24 @@
          EITFixUp::kEFixForceISO8859_15;
      // On transport 10008 only following channels need fixing:
      fix[    10008LL<<32 | 61441U << 16 | 53002] = // Tele 5
@@ -29086,7 +29268,7 @@
 Index: mythtv/libs/libmythtv/mpeg/freesat_huffman.h
 ===================================================================
 --- mythtv/libs/libmythtv/mpeg/freesat_huffman.h	(revision 0)
-+++ mythtv/libs/libmythtv/mpeg/freesat_huffman.h	(revision 20373)
++++ mythtv/libs/libmythtv/mpeg/freesat_huffman.h	(revision 20668)
 @@ -0,0 +1,12 @@
 +#ifndef _FREESAT_HUFFMAN_H_
 +#define _FREESAT_HUFFMAN_H_
@@ -29109,7 +29291,7 @@
 Index: mythtv/libs/libmythtv/mpeg/freesat_tables.h
 ===================================================================
 --- mythtv/libs/libmythtv/mpeg/freesat_tables.h	(revision 0)
-+++ mythtv/libs/libmythtv/mpeg/freesat_tables.h	(revision 20373)
++++ mythtv/libs/libmythtv/mpeg/freesat_tables.h	(revision 20668)
 @@ -0,0 +1,4370 @@
 +struct fsattab fsat_table[] = {
 +    { 0x00000000,  2, 'T'},
@@ -33490,7 +33672,7 @@
 Index: mythtv/libs/libmythtv/mpeg/freesat_huffman.cpp
 ===================================================================
 --- mythtv/libs/libmythtv/mpeg/freesat_huffman.cpp	(revision 0)
-+++ mythtv/libs/libmythtv/mpeg/freesat_huffman.cpp	(revision 20373)
++++ mythtv/libs/libmythtv/mpeg/freesat_huffman.cpp	(revision 20668)
 @@ -0,0 +1,107 @@
 +#include "freesat_huffman.h"
 +
@@ -34124,6 +34306,18 @@
  
      int get_nibble(const uint8_t *buf, int nibble_offset);
      int decode_rle(uint8_t *bitmap, int linesize, int w, int h,
+Index: mythtv/libs/libmythtv/vsync.cpp
+===================================================================
+--- mythtv/libs/libmythtv/vsync.cpp	(revision 16468)
++++ mythtv/libs/libmythtv/vsync.cpp	(working copy)
+@@ -16,6 +16,7 @@
+  * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+  */
+ 
++#include <cstdlib>
+ #include <cstdio>
+ #include <cerrno>
+ #include <cmath>
 Index: mythtv/libs/libmythtv/dvbtypes.h
 ===================================================================
 --- mythtv/libs/libmythtv/dvbtypes.h	(revision 16468)
@@ -34238,7 +34432,12 @@
 ===================================================================
 --- mythtv/libs/libmythtv/videooutbase.cpp	(revision 16468)
 +++ mythtv/libs/libmythtv/videooutbase.cpp	(working copy)
-@@ -510,7 +510,7 @@
+@@ -1,3 +1,4 @@
++#include <cstdlib>
+ #include <cmath>
+ 
+ #include "videooutbase.h"
+@@ -510,7 +511,7 @@
      SetupDeinterlace(true, db_vdisp_profile->GetFallbackDeinterlacer());
  }
  
@@ -34247,7 +34446,7 @@
   *  \brief Change to the best deinterlacing method.
   */
  void VideoOutput::BestDeint(void)
-@@ -611,6 +611,8 @@
+@@ -611,6 +612,8 @@
      db_vdisp_profile->SetInput(video_dim);
  
      SetVideoAspectRatio(aspect);
@@ -34713,6 +34912,29 @@
  }
  
  AnalogPane::AnalogPane() :
+Index: mythtv/libs/libmythtv/eitfixup.h
+===================================================================
+--- mythtv/libs/libmythtv/eitfixup.h	(revision 16468)
++++ mythtv/libs/libmythtv/eitfixup.h	(working copy)
+@@ -55,12 +55,16 @@
+ 
+     void Fix(DBEvent &event) const;
+ 
++    /** Corrects starttime to the multiple of a minute. 
++     *  Used for providers who fail to handle leap seconds timely. Changes the
++     *  starttime not more than 3 seconds. Sshould only be used if the
++     *  duration is the multiple of a minute. */
+     static void TimeFix(QDateTime &dt)
+     {
+         int secs = dt.time().second();
+-        if (secs < 5)
++        if (secs < 4)
+             dt = dt.addSecs(-secs);
+-        if (secs > 55)
++        if (secs > 56)
+             dt = dt.addSecs(60 - secs);
+     }
+ 
 Index: mythtv/libs/libmythtv/progfind.cpp
 ===================================================================
 --- mythtv/libs/libmythtv/progfind.cpp	(revision 16468)
@@ -35379,7 +35601,7 @@
 Index: mythtv/libs/libavcodec/rectangle.h
 ===================================================================
 --- mythtv/libs/libavcodec/rectangle.h	(revision 0)
-+++ mythtv/libs/libavcodec/rectangle.h	(revision 20373)
++++ mythtv/libs/libavcodec/rectangle.h	(revision 20668)
 @@ -0,0 +1,121 @@
 +/*
 + * rectangle filling function
@@ -35604,7 +35826,7 @@
 Index: mythtv/libs/libavcodec/i386/h264_i386.h
 ===================================================================
 --- mythtv/libs/libavcodec/i386/h264_i386.h	(revision 0)
-+++ mythtv/libs/libavcodec/i386/h264_i386.h	(revision 20373)
++++ mythtv/libs/libavcodec/i386/h264_i386.h	(revision 20668)
 @@ -0,0 +1,144 @@
 +/*
 + * H.26L/H.264/AVC/JVT/14496-10/... encoder/decoder
@@ -40410,6 +40632,405 @@
  mingw:SOURCES -= audio.c
 +
 +include ( ../libs-targetfix.pro )
+Index: mythtv/libs/libmyth/audiopulseutil.h
+===================================================================
+--- mythtv/libs/libmyth/audiopulseutil.h	(revision 0)
++++ mythtv/libs/libmyth/audiopulseutil.h	(revision 20668)
+@@ -0,0 +1,6 @@
++#include "mythexp.h"
++
++MPUBLIC bool pulseaudio_suspend(void);
++MPUBLIC bool pulseaudio_unsuspend(void);
++MPUBLIC int  pulseaudio_handle_startup(void);
++MPUBLIC int  pulseaudio_handle_teardown(void);
+Index: mythtv/libs/libmyth/audiopulseutil.cpp
+===================================================================
+--- mythtv/libs/libmyth/audiopulseutil.cpp	(revision 0)
++++ mythtv/libs/libmyth/audiopulseutil.cpp	(revision 20668)
+@@ -0,0 +1,383 @@
++/***
++ *   This file was part of PulseAudio, the license has been upgraded to GPL v2
++ *   or later as per the LGPL grant this was originally distributed under.
++ *
++ *   Copyright 2004-2006 Lennart Poettering
++ *
++ *   MythTV is free software; you can redistribute it and/or modify
++ *   it under the terms of the GNU General Public License as published by
++ *   the Free Software Foundation; either version 2 of the License, or
++ *   (at your option) any later version.
++ *
++ *   This program is distributed in the hope that it will be useful,
++ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
++ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ *   GNU General Public License for more details.
++ *
++ *   You should have received a copy of the GNU General Public License
++ *   along with this program; if not, write to the Free Software
++ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
++ */
++
++#include "audiopulseutil.h"
++#include "util.h" // for IsPulseAudioRunning()
++#include "exitcodes.h"
++#include "mythcontext.h"
++
++#ifdef USING_PULSE
++
++#include <sys/types.h>
++#include <sys/wait.h>
++
++#include <signal.h>
++#include <string.h>
++#include <errno.h>
++#include <unistd.h>
++#include <assert.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <limits.h>
++#include <getopt.h>
++#include <locale.h>
++
++#ifdef __linux__
++#include <sys/prctl.h>
++#endif
++
++#include <pulse/pulseaudio.h>
++
++#include <qthread.h>
++#include <qmutex.h>
++#include <qwaitcondition.h>
++
++#define BUFSIZE 1024
++
++#define LOC      QString("AudioPulseUtil: ")
++#define LOC_WARN QString("AudioPulseUtil, Warning: ")
++#define LOC_ERR  QString("AudioPulseUtil, Error: ")
++
++enum pa_values {
++    kPA_undefined                   = -1,
++    kPA_suspended                   = +0,
++    kPA_not_suspended_remote_server = +1,
++    kPA_not_suspended_error         = +2,
++    kPA_not_suspended_success       = +3,
++    kPA_unsuspended_error           = +4,
++    kPA_unsuspended_success         = +5,
++};
++
++static pa_context      *pau_context = NULL;
++static pa_mainloop_api *pau_mainloop_api = NULL;
++static QMutex           pau_lock;
++static QWaitCondition   pau_wait;
++static int              pau_value = kPA_undefined;
++
++static void pau_set_value(int new_value)
++{
++    QMutexLocker ml(&pau_lock);
++    pau_value = new_value;
++    pau_wait.wakeAll();
++}
++
++static void pau_quit(int ret)
++{
++    if (pau_mainloop_api)
++        pau_mainloop_api->quit(pau_mainloop_api, ret);
++}
++
++static void pau_context_drain_complete(pa_context *c, void *userdata)
++{
++    if (c)
++        pa_context_disconnect(c);
++}
++
++static void pau_drain(void)
++{
++    if (!pau_context)
++        return;
++
++    pa_operation *operation = pa_context_drain(pau_context, pau_context_drain_complete, NULL);
++    if (!operation)
++        pa_context_disconnect(pau_context);
++    else
++        pa_operation_unref(operation);
++}
++
++static void pau_suspend_complete(pa_context *c, int success, void *userdata)
++{
++    if (!success)
++    {
++        if (!c)
++            return;
++
++        VERBOSE(VB_IMPORTANT, LOC_ERR + QString("Failure to suspend: %1")
++                .arg(pa_strerror(pa_context_errno(c))));
++
++        pau_set_value(kPA_not_suspended_error);
++
++        return;
++    }
++
++    {
++        QMutexLocker ml(&pau_lock);
++        if (kPA_suspended == pau_value)
++            return;
++    }
++
++    VERBOSE(VB_GENERAL, LOC + "Suspend Success");
++
++    pau_set_value(kPA_suspended);
++}
++
++static void pau_resume_complete(pa_context *c, int success, void *userdata)
++{
++    static int n = 0;
++
++    n++;
++
++    if (!success)
++    {
++        if (!c)
++            return;
++
++        VERBOSE(VB_IMPORTANT, LOC_ERR + QString("Failure to resume: %1")
++                .arg(pa_strerror(pa_context_errno(c))));
++
++        pau_set_value(kPA_unsuspended_error);
++
++        return;
++    }
++
++    if (n >= 2)
++        pau_drain(); /* drain and quit */
++
++    {
++        QMutexLocker ml(&pau_lock);
++        if (kPA_unsuspended_success == pau_value)
++            return;
++    }
++
++    VERBOSE(VB_GENERAL, LOC + "Resume Success");
++
++    pau_set_value(kPA_unsuspended_success);
++}
++
++static void pau_context_state_callback(pa_context *c, void *userdata)
++{
++    if (!c)
++        return;
++
++    switch (pa_context_get_state(c))
++    {
++        case PA_CONTEXT_CONNECTING:
++        case PA_CONTEXT_AUTHORIZING:
++        case PA_CONTEXT_SETTING_NAME:
++            break;
++
++        case PA_CONTEXT_READY:
++            if (pa_context_is_local(c))
++            {
++                pa_operation *operation_sink =
++                    pa_context_suspend_sink_by_index(
++                        c, PA_INVALID_INDEX, 1, pau_suspend_complete, NULL);
++                pa_operation_unref(operation_sink);
++
++                pa_operation *operation_source =
++                    pa_context_suspend_source_by_index(
++                        c, PA_INVALID_INDEX, 1, pau_suspend_complete, NULL);
++                pa_operation_unref(operation_source);
++            }
++            else
++            {
++                VERBOSE(VB_IMPORTANT, LOC_ERR +
++                        "Sound server is not local, can not suspend.");
++
++                pau_set_value(kPA_not_suspended_remote_server);
++            }
++
++            break;
++
++        case PA_CONTEXT_TERMINATED:
++            pau_quit(0);
++            break;
++
++        case PA_CONTEXT_FAILED:
++        default:
++            VERBOSE(VB_IMPORTANT, LOC_WARN +
++                    "Can not connect to sound server, can not suspend." +
++                    QString("\n\t\t\t%1")
++                    .arg(pa_strerror(pa_context_errno(c))));
++
++            pau_set_value(kPA_not_suspended_error);
++
++            if (pau_context)
++            {
++                pa_context_unref(pau_context);
++                pau_context = NULL;
++            }
++
++            break;
++    }
++}
++
++void pau_pulseaudio_suspend_internal(void)
++{
++    pa_mainloop* m = NULL;
++    int ret = 1;
++    char *server = NULL;
++    const char *bn = "mythtv";
++
++    if (!(m = pa_mainloop_new()))
++    {
++        VERBOSE(VB_IMPORTANT, LOC_ERR + "pa_mainloop_new() failed.");
++        goto quit;
++    }
++
++    pau_mainloop_api = pa_mainloop_get_api(m);
++    if (!pau_mainloop_api)
++        goto quit;
++
++    if (pa_signal_init(pau_mainloop_api) != 0)
++        goto quit;
++
++    if (!(pau_context = pa_context_new(pau_mainloop_api, bn)))
++    {
++        VERBOSE(VB_IMPORTANT, LOC_ERR + "pa_context_new() failed.");
++        goto quit;
++    }
++
++    pa_context_set_state_callback(pau_context, pau_context_state_callback, NULL);
++    pa_context_connect(pau_context, server, PA_CONTEXT_NOAUTOSPAWN, NULL);
++
++    if (pa_mainloop_run(m, &ret) < 0)
++    {
++        VERBOSE(VB_IMPORTANT, LOC_ERR + "pa_mainloop_run() failed.\n");
++        goto quit;
++    }
++
++quit:
++    if (pau_context)
++        pa_context_unref(pau_context);
++
++    if (m) {
++        pa_signal_done();
++        pa_mainloop_free(m);
++    }
++
++    pa_xfree(server);
++}
++
++class PAThread : public QThread
++{
++  public:
++    void run(void)
++    {
++        pau_pulseaudio_suspend_internal();
++    }
++};
++
++/// \returns true if successful
++bool pulseaudio_suspend(void)
++{
++    QThread *t = new PAThread();
++    t->start();
++
++    QMutexLocker ml(&pau_lock);
++    while (kPA_undefined == pau_value)
++        pau_wait.wait(&pau_lock);
++
++    return kPA_suspended == pau_value;
++}
++
++/// \returns true if successful
++bool pulseaudio_unsuspend(void)
++{
++    if (!pau_context)
++    {
++        pau_quit(0);
++        return false;
++    }
++
++    if (pa_context_is_local(pau_context))
++    {
++        pa_operation *operation_sink =
++            pa_context_suspend_sink_by_index(
++                pau_context, PA_INVALID_INDEX, 0, pau_resume_complete, NULL);
++        pa_operation_unref(operation_sink);
++
++        pa_operation *operation_source =
++            pa_context_suspend_source_by_index(
++                pau_context, PA_INVALID_INDEX, 0, pau_resume_complete, NULL);
++        pa_operation_unref(operation_source);
++
++        QMutexLocker ml(&pau_lock);
++        while ((kPA_unsuspended_error   != pau_value) &&
++               (kPA_unsuspended_success != pau_value))
++        {
++            pau_wait.wait(&pau_lock);
++        }
++
++        return kPA_unsuspended_success == pau_value;
++    }
++    else
++    {
++        pau_drain();
++    }
++
++    return false;
++}
++
++#endif // USING_PULSE
++
++int pulseaudio_handle_startup(void)
++{
++#ifdef USING_PULSE
++    if (getenv("EXPERIMENTALLY_ALLOW_PULSE_AUDIO"))
++    {
++        VERBOSE(VB_IMPORTANT, "WARNING: ");
++        VERBOSE(VB_IMPORTANT, "WARNING: ***Pulse Audio is running!!!!***");
++        VERBOSE(VB_IMPORTANT, "WARNING: ");
++        VERBOSE(VB_IMPORTANT, "WARNING: You have told MythTV to ignore it.");
++        VERBOSE(VB_IMPORTANT, "WARNING: ");
++    }
++    else if (IsPulseAudioRunning() && !pulseaudio_suspend())
++    {
++        VERBOSE(VB_IMPORTANT, "ERROR: ***Pulse Audio is running!!!!***");
++        VERBOSE(VB_IMPORTANT,
++                "ERROR: But MythTV was not able to suspend it. EXITING!");
++
++        return GENERIC_EXIT_NOT_OK;
++    }
++#else
++    if (IsPulseAudioRunning())
++    {
++        VERBOSE(VB_IMPORTANT, "ERROR: ***Pulse Audio is running!!!!***");
++        VERBOSE(VB_IMPORTANT, "ERROR: But MythTV has not been compiled "
++                "with Pulse Audio disabling support. EXITING!");
++        return GENERIC_EXIT_NOT_OK;
++    }
++#endif
++
++    return GENERIC_EXIT_OK;
++}
++
++int pulseaudio_handle_teardown(void)
++{
++#ifdef USING_PULSE
++    if (getenv("EXPERIMENTALLY_ALLOW_PULSE_AUDIO"))
++        return GENERIC_EXIT_OK;
++
++    {
++        QMutexLocker ml(&pau_lock);
++        if (kPA_suspended != pau_value)
++            return GENERIC_EXIT_OK;
++    }
++
++    if (!pulseaudio_unsuspend())
++    {
++        VERBOSE(VB_IMPORTANT, "ERROR: Encountered error re-enabling pulse audio");
++    }
++#endif
++
++    return GENERIC_EXIT_OK;
++}
 Index: mythtv/libs/libmyth/mythcdrom.cpp
 ===================================================================
 --- mythtv/libs/libmyth/mythcdrom.cpp	(revision 16468)
@@ -40556,6 +41177,20 @@
      QString aString;
      int mask = 0;
      if (0 && GetLEDMask)
+Index: mythtv/libs/libmyth/mythmediamonitor.h
+===================================================================
+--- mythtv/libs/libmyth/mythmediamonitor.h	(revision 16468)
++++ mythtv/libs/libmyth/mythmediamonitor.h	(working copy)
+@@ -75,7 +75,8 @@
+     static QString defaultCDdevice();
+     static QString defaultVCDdevice();
+     static QString defaultDVDdevice();
+-    static QString defaultWriter();
++    static QString defaultCDWriter();
++    static QString defaultDVDWriter();
+ 
+     virtual QStringList GetCDROMBlockDevices(void) = 0;
+ 
 Index: mythtv/libs/libmyth/mythcdrom.h
 ===================================================================
 --- mythtv/libs/libmyth/mythcdrom.h	(revision 16468)
@@ -40587,7 +41222,16 @@
  #   ifdef CONFIG_CYGWIN
  #     include <sys/statfs.h>
  #   else // if !CONFIG_CYGWIN
-@@ -293,10 +296,11 @@
+@@ -62,6 +65,8 @@
+ #include "jsmenuevent.h"
+ #endif
+ 
++#include "mythconfig.h" // for CONFIG_DARWIN
++
+ /** \fn mythCurrentDateTime()
+  *  \brief Returns the current QDateTime object, stripped of its msec component
+  */
+@@ -293,10 +298,11 @@
                      return GENERIC_EXIT_NOT_OK;
                  }
  
@@ -40600,6 +41244,25 @@
                  usleep(100000);
              }
          }
+@@ -955,3 +961,18 @@
+     return approx_size;
+ #endif
+ }
++
++bool IsPulseAudioRunning(void)
++{
++#if defined(CONFIG_DARWIN) || (__FreeBSD__) || defined(__OpenBSD__)
++    const char *command = "ps -ax | grep -i pulseaudio | grep -v grep > /dev/null";
++#else
++    const char *command = "ps -ae | grep pulseaudio > /dev/null";
++#endif
++    bool res = myth_system(command,
++                           MYTH_SYSTEM_DONT_BLOCK_LIRC |
++                           MYTH_SYSTEM_DONT_BLOCK_JOYSTICK_MENU);
++    return !res;
++}
++
++/* vim: set expandtab tabstop=4 shiftwidth=4: */
 Index: mythtv/libs/libmyth/compat.h
 ===================================================================
 --- mythtv/libs/libmyth/compat.h	(revision 16468)
@@ -41819,6 +42482,20 @@
  }
  
  MediaError MythMediaDevice::lock() 
+Index: mythtv/libs/libmyth/util.h
+===================================================================
+--- mythtv/libs/libmyth/util.h	(revision 16468)
++++ mythtv/libs/libmyth/util.h	(working copy)
+@@ -84,6 +84,9 @@
+ 
+ MPUBLIC double MythGetPixelAspectRatio(void);
+ 
++/// Is A/V Sync destruction daemon is running on this host?
++MPUBLIC bool IsPulseAudioRunning(void);
++
+ // CPU Tick timing function
+ #ifdef MMX
+ #ifdef _WIN32
 Index: mythtv/libs/libmyth/screensaver-x11.cpp
 ===================================================================
 --- mythtv/libs/libmyth/screensaver-x11.cpp	(revision 16468)
@@ -41867,7 +42544,23 @@
 ===================================================================
 --- mythtv/libs/libmyth/libmyth.pro	(revision 16468)
 +++ mythtv/libs/libmyth/libmyth.pro	(working copy)
-@@ -83,6 +83,10 @@
+@@ -26,6 +26,7 @@
+ HEADERS += volumebase.h volumecontrol.h virtualkeyboard.h visual.h xmlparse.h
+ HEADERS += mythhdd.h mythcdrom.h storagegroup.h dbutil.h
+ HEADERS += compat.h
++HEADERS += audiopulseutil.h
+ 
+ SOURCES += audiooutput.cpp audiooutputbase.cpp audiooutputnull.cpp
+ SOURCES += audiooutputdigitalencoder.cpp
+@@ -42,6 +43,7 @@
+ SOURCES += uilistbtntype.cpp uitypes.cpp util.cpp util-x11.cpp
+ SOURCES += volumebase.cpp volumecontrol.cpp virtualkeyboard.cpp xmlparse.cpp
+ SOURCES += mythhdd.cpp mythcdrom.cpp storagegroup.cpp dbutil.cpp
++SOURCES += audiopulseutil.cpp
+ 
+ INCLUDEPATH += ../libmythsamplerate ../libmythsoundtouch ../libmythfreesurround
+ INCLUDEPATH += ../libavcodec ../libavutil
+@@ -83,12 +85,21 @@
  inc2.files = $${inc.files}
  
  
@@ -41878,7 +42571,18 @@
  using_oss {
      DEFINES += USING_OSS
      SOURCES += audiooutputoss.cpp
-@@ -107,9 +111,6 @@
+     HEADERS += audiooutputoss.h
+ }
+ 
++using_pulse {
++    DEFINES += USING_PULSE
++    LIBS += $$PULSE_LIBS
++}
++
+ unix:!cygwin {
+     SOURCES += mediamonitor-unix.cpp
+     HEADERS += mediamonitor-unix.h
+@@ -107,9 +118,6 @@
  
      LIBS += -lpthread
  
@@ -41888,7 +42592,7 @@
      LIBS -= -lmythui-$$LIBVERSION  -lmythupnp-$$LIBVERSION 
      LIBS += -L. -lmythui-bootstrap -lmythupnp-bootstrap
      POST_TARGETDEPS += libmythui-bootstrap.a libmythupnp-bootstrap.a
-@@ -241,3 +242,5 @@
+@@ -241,3 +249,5 @@
  contains( CONFIG_LIBFFTW3, yes ) {
      LIBS += -lfftw3f
  }
@@ -41906,7 +42610,15 @@
  #include "mythcontext.h"
  #include "mythdialogs.h"
  #include "mythconfig.h"
-@@ -81,8 +82,13 @@
+@@ -74,15 +75,26 @@
+ void MediaMonitor::SetCDSpeed(const char *device, int speed)
+ {
+     MediaMonitor *mon = GetMediaMonitor();
+-    if (mon != NULL)
++    if (mon)
+     {
+         MythMediaDevice *pMedia = mon->GetMedia(device);
+         if (pMedia && mon->ValidateAndLock(pMedia))
          {
              pMedia->setSpeed(speed);
              mon->Unlock(pMedia);
@@ -41915,11 +42627,41 @@
      }
 +
 +    MythCDROM *cd = MythCDROM::get(NULL, device, false, false);
-+    cd->setSpeed(device, speed);
-+    delete cd;
++    if (cd)
++    {
++        cd->setSpeed(device, speed);
++        delete cd;
++    }
++
++    VERBOSE(VB_MEDIA, QString("MediaMonitor::setSpeed(%1) "
++                              "- Cannot find/create CDROM?") + device);
  }
  
  // When ejecting one of multiple devices, present a nice name to the user
+@@ -690,13 +702,22 @@
+                          tr("Select a DVD drive"), "/dev/dvd");
+ }
+ 
++/** 
++ * \brief CDWriterDeviceLocation, user-selected drive, or /dev/cdrom
++ */
++QString MediaMonitor::defaultCDWriter()
++{
++    return defaultDevice("CDWriterDeviceLocation",
++                         tr("Select a CD writer"), "/dev/cdrom");
++}
++
+ /**
+  * \brief MythArchiveDVDLocation, user-selected drive, or /dev/dvd
+  *
+  * This should also look for drives with blanks or RWs in them,
+  * but Nigel hasn't worked out how to do this tidily (yet).
+  */
+-QString MediaMonitor::defaultWriter()
++QString MediaMonitor::defaultDVDWriter()
+ {
+     QString device = defaultDevice("MythArchiveDVDLocation",
+                                    tr("Select a DVD writer"), "/dev/dvd");
 Index: mythtv/libs/libmyth/mythcdrom-linux.cpp
 ===================================================================
 --- mythtv/libs/libmyth/mythcdrom-linux.cpp	(revision 16468)
@@ -44274,6 +45016,98 @@
  }
 +
 +include ( ../libs-targetfix.pro )
+Index: mythtv/programs/mythfrontend/playbackbox.cpp
+===================================================================
+--- mythtv/programs/mythfrontend/playbackbox.cpp	(revision 16468)
++++ mythtv/programs/mythfrontend/playbackbox.cpp	(working copy)
+@@ -1059,14 +1059,14 @@
+ 
+             // Centre preview in the y axis
+             if (temp.height() < blackholeBounds.height())
+-                pixmap_y = blackholeBounds.y() + 
++                pixmap_y = blackholeBounds.y() +
+                                 (blackholeBounds.height() - temp.height()) / 2;
+             else
+                 pixmap_y = blackholeBounds.y();
+ 
+             // Centre preview in the x axis
+             if (temp.width() < blackholeBounds.width())
+-                pixmap_x = blackholeBounds.x() + 
++                pixmap_x = blackholeBounds.x() +
+                                 (blackholeBounds.width() - temp.width()) / 2;
+             else
+                 pixmap_x = blackholeBounds.x();
+@@ -1191,14 +1191,14 @@
+ 
+         // Centre video in the y axis
+         if (img.height() < blackholeBounds.height())
+-            video_y = blackholeBounds.y() + 
++            video_y = blackholeBounds.y() +
+                             (blackholeBounds.height() - img.height()) / 2;
+         else
+             video_y = blackholeBounds.y();
+ 
+         // Centre video in the x axis
+         if (img.width() < blackholeBounds.width())
+-            video_x = blackholeBounds.x() + 
++            video_x = blackholeBounds.x() +
+                             (blackholeBounds.width() - img.width()) / 2;
+         else
+             video_x = blackholeBounds.x();
+@@ -1679,7 +1679,7 @@
+         paintSkipUpdate = false;
+         update(drawTotalBounds);
+     }
+-    else 
++    else
+     {
+         progIndex = 0;
+ 
+@@ -1701,7 +1701,7 @@
+         paintSkipUpdate = false;
+         update(drawTotalBounds);
+     }
+-    else 
++    else
+     {
+         int progCount = progLists[titleList[titleIndex].lower()].count();
+ 
+@@ -1721,7 +1721,7 @@
+ {
+     if (inTitle)
+         pageTop();
+-    else 
++    else
+     {
+         progIndex = progLists[titleList[titleIndex].lower()].count() - 1;
+ 
+@@ -2066,7 +2066,7 @@
+         }
+ 
+         ProgramInfo *p;
+-        p = progLists[watchGroupLabel].first(); 
++        p = progLists[watchGroupLabel].first();
+         while (p)
+         {
+             int recid = p->recordid;
+@@ -2703,7 +2703,7 @@
+         return false;
+     }
+ 
+-    if (rec->filesize == 0)
++    if ((rec->filesize == 0) && (rec->GetFilesize() == 0))
+     {
+         VERBOSE(VB_IMPORTANT,
+             QString("PlaybackBox::play(): Error, %1 is zero-bytes in size")
+@@ -3660,7 +3660,7 @@
+         return;
+ 
+     curitem->ForgetHistory();
+-}    
++}
+ 
+ void PlaybackBox::doJobQueueJob(int jobType, int jobFlags)
+ {
 Index: mythtv/programs/mythfrontend/media_settings.xml
 ===================================================================
 --- mythtv/programs/mythfrontend/media_settings.xml	(revision 16468)
@@ -44355,6 +45189,40 @@
        <action>TV_CUSTOM_RECORD</action>
     </button>
  
+Index: mythtv/programs/mythfrontend/main.cpp
+===================================================================
+--- mythtv/programs/mythfrontend/main.cpp	(revision 16468)
++++ mythtv/programs/mythfrontend/main.cpp	(working copy)
+@@ -58,6 +58,7 @@
+ #include "mythscreenstack.h"
+ #include "mythmainwindow.h"
+ #include "mythappearance.h"
++#include "audiopulseutil.h"
+ 
+ #define NO_EXIT  0
+ #define QUIT     1
+@@ -1321,6 +1322,10 @@
+         }
+     }
+ 
++    int pa_ret = pulseaudio_handle_startup();
++    if (pa_ret != GENERIC_EXIT_OK)
++        return pa_ret;
++
+     if (logfile != "")
+     {
+         if (log_rotate(1) < 0)
+@@ -1548,6 +1553,10 @@
+     VERBOSE(VB_GENERAL, "Deleting UPnP client...");
+     delete g_pUPnp;
+ 
++    pa_ret = pulseaudio_handle_teardown();
++    if (GENERIC_EXIT_OK != pa_ret)
++        return pa_ret;
++
+     return FRONTEND_EXIT_OK;
+ 
+ }
 Index: mythtv/programs/mythfrontend/mainmenu.xml
 ===================================================================
 --- mythtv/programs/mythfrontend/mainmenu.xml	(revision 16468)
@@ -44428,6 +45296,18 @@
        <action>PLUGIN mythzoneminder</action>
        <depends>mythzoneminder</depends>
   </button>
+Index: mythtv/programs/mythfrontend/mythfrontend.pro
+===================================================================
+--- mythtv/programs/mythfrontend/mythfrontend.pro	(revision 16468)
++++ mythtv/programs/mythfrontend/mythfrontend.pro	(working copy)
+@@ -61,6 +61,7 @@
+ using_xrandr:DEFINES += USING_XRANDR
+ using_opengl_vsync:DEFINES += USING_OPENGL_VSYNC
+ 
++using_pulse:DEFINES += USING_PULSE
+ using_alsa:DEFINES += USING_ALSA
+ using_arts:DEFINES += USING_ARTS
+ using_jack:DEFINES += USING_JACK
 Index: mythtv/programs/mythfrontend/recpriorities_settings.xml
 ===================================================================
 --- mythtv/programs/mythfrontend/recpriorities_settings.xml	(revision 16468)
@@ -44557,6 +45437,75 @@
  }
  
  enum MPFDisplayMask {
+Index: mythtv/programs/mythcommflag/main.cpp
+===================================================================
+--- mythtv/programs/mythcommflag/main.cpp	(revision 16468)
++++ mythtv/programs/mythcommflag/main.cpp	(working copy)
+@@ -59,7 +59,7 @@
+     program_info->recstartts = QDateTime::currentDateTime().addSecs( -180 * 60);
+     program_info->recendts = QDateTime::currentDateTime().addSecs(-1);
+     program_info->isVideo = true;
+-    program_info->pathname = filename;
++    program_info->pathname = QFileInfo(filename).absFilePath();
+ 
+     RingBuffer *tmprbuf = new RingBuffer(filename, false);
+     if (!tmprbuf)
+@@ -681,7 +681,7 @@
+                         "Missing or invalid parameters for --chanid option");
+                 return COMMFLAG_EXIT_INVALID_CHANID;
+             }
+-            
++
+             chanid += a.argv()[++argpos];
+         }
+         else if (!strcmp(a.argv()[argpos],"-s") ||
+@@ -694,7 +694,7 @@
+                         "Missing or invalid parameters for --starttime option");
+                 return COMMFLAG_EXIT_INVALID_STARTTIME;
+             }
+-            
++
+             starttime += a.argv()[++argpos];
+         }
+         else if (!strcmp(a.argv()[argpos],"-f") ||
+@@ -740,7 +740,7 @@
+                 cerr << "Missing or invalid parameter for --allstart\n";
+                 return COMMFLAG_EXIT_INVALID_STARTTIME;
+             }
+-            
++
+             allStart = a.argv()[++argpos];
+         }
+         else if (!strcmp(a.argv()[argpos], "--allend"))
+@@ -751,7 +751,7 @@
+                 cerr << "Missing or invalid parameter for --allend\n";
+                 return COMMFLAG_EXIT_INVALID_STARTTIME;
+             }
+-            
++
+             allEnd = a.argv()[++argpos];
+         }
+         else if (!strcmp(a.argv()[argpos], "--quiet"))
+@@ -849,8 +849,8 @@
+                     cerr << "Invalid or missing argument to "
+                             "-O/--override-setting option\n";
+                     return BACKEND_EXIT_INVALID_CMDLINE;
+-                } 
+- 
++                }
++
+                 QStringList pairs = QStringList::split(",", tmpArg);
+                 for (unsigned int index = 0; index < pairs.size(); ++index)
+                 {
+@@ -863,7 +863,7 @@
+                 }
+             }
+             else
+-            { 
++            {
+                 cerr << "Invalid or missing argument to -O/--override-setting "
+                         "option\n";
+                 return GENERIC_EXIT_INVALID_CMDLINE;
 Index: mythtv/programs/mythbackend/upnpcdsvideo.h
 ===================================================================
 --- mythtv/programs/mythbackend/upnpcdsvideo.h	(revision 16468)
@@ -44834,7 +45783,15 @@
 ===================================================================
 --- mythtv/programs/mythbackend/scheduler.cpp	(revision 16468)
 +++ mythtv/programs/mythbackend/scheduler.cpp	(working copy)
-@@ -1303,7 +1303,7 @@
+@@ -1242,6 +1242,7 @@
+         // Restore the old status for some select cases that won't record.
+         if (p->recstatus != rsWillRecord && 
+             p->oldrecstatus != rsUnknown &&
++            p->oldrecstatus != rsNotListed &&
+             !p->reactivate)
+             p->recstatus = p->oldrecstatus;
+ 
+@@ -1303,7 +1304,7 @@
              if (next_record == nextRecMap[recid])
                  continue;
  
@@ -44843,7 +45800,7 @@
              {
                  subquery.prepare("UPDATE record "
                                   "SET next_record = '0000-00-00T00:00:00' "
-@@ -2030,6 +2030,13 @@
+@@ -2030,6 +2031,13 @@
                                                       "be $time if command "
                                                       "set.\'");
  
@@ -44857,7 +45814,7 @@
          if (wakeup_timeformat == "time_t")
          {
              QString time_ts;
-@@ -2045,8 +2052,14 @@
+@@ -2045,8 +2053,14 @@
                                      setwakeup_cmd);
  
          // now run the command to set the wakeup time
@@ -44874,7 +45831,7 @@
      }
  
      // tell anyone who is listening the master server is going down now
-@@ -2065,7 +2078,10 @@
+@@ -2065,7 +2079,10 @@
                                      "this computer :-\n\t\t\t\t\t\t") + halt_cmd);
  
          // and now shutdown myself
@@ -44886,6 +45843,17 @@
      }
  
      // If we make it here then either the shutdown failed
+@@ -2795,7 +2812,9 @@
+         ProgramInfo *p = new ProgramInfo;
+         p->reactivate = result.value(38).toInt();
+         p->oldrecstatus = RecStatusType(result.value(37).toInt());
+-        if (p->oldrecstatus == rsAborted || p->reactivate)
++        if (p->oldrecstatus == rsAborted || 
++            p->oldrecstatus == rsNotListed ||
++            p->reactivate)
+             p->recstatus = rsUnknown;
+         else
+             p->recstatus = p->oldrecstatus;
 Index: mythtv/programs/mythbackend/upnpmedia.cpp
 ===================================================================
 --- mythtv/programs/mythbackend/upnpmedia.cpp	(revision 16468)
@@ -44913,6 +45881,47 @@
      for (QFileInfoListIterator it(*List); it; ++it)
      {
          QFileInfo Info(*it.current());
+Index: mythtv/programs/mythbackend/autoexpire.cpp
+===================================================================
+--- mythtv/programs/mythbackend/autoexpire.cpp	(revision 16468)
++++ mythtv/programs/mythbackend/autoexpire.cpp	(working copy)
+@@ -36,7 +36,8 @@
+ #include "backendutil.h"
+ #include "compat.h"
+ 
+-#define LOC QString("AutoExpire: ")
++#define LOC     QString("AutoExpire: ")
++#define LOC_ERR QString("AutoExpire Error: ")
+ 
+ extern AutoExpire *expirer;
+ 
+@@ -423,6 +424,26 @@
+                 .arg(fsit->usedSpaceKB / 1024.0 / 1024.0, 7, 'f', 1)
+                 .arg(fsit->freeSpaceKB / 1024.0 / 1024.0, 7, 'f', 1));
+ 
++        if ((fsit->totalSpaceKB == -1) || (fsit->usedSpaceKB == -1))
++        {
++            VERBOSE(VB_FILE, LOC_ERR + QString("fsID #%1 has invalid info, "
++                    "AutoExpire can not run for this filesystem.  "
++                    "Continuing on to next...").arg(fsit->fsID));
++            VERBOSE(VB_FILE, QString("Directories on filesystem ID %1:")
++                    .arg(fsit->fsID));
++            vector<FileSystemInfo>::iterator fsit2;
++            for (fsit2 = fsInfos.begin(); fsit2 != fsInfos.end(); fsit2++)
++            {
++                if (fsit2->fsID == fsit->fsID)
++                {
++                    VERBOSE(VB_FILE, QString("    %1:%2")
++                            .arg(fsit2->hostname).arg(fsit2->directory));
++                }
++            }
++
++            continue;
++        }
++
+         if (truncateMap.contains(fsit->fsID))
+         {
+             VERBOSE(VB_FILE, QString(
 Index: mythtv/programs/mythbackend/backendutil.cpp
 ===================================================================
 --- mythtv/programs/mythbackend/backendutil.cpp	(revision 16468)
@@ -45078,7 +46087,26 @@
 ===================================================================
 --- mythtv/programs/mythtv/main.cpp	(revision 16468)
 +++ mythtv/programs/mythtv/main.cpp	(working copy)
-@@ -287,7 +287,7 @@
+@@ -14,6 +14,7 @@
+ #include "libmyth/mythdbcon.h"
+ #include "libmyth/mythdialogs.h"
+ #include "libmyth/compat.h"
++#include "audiopulseutil.h"
+ 
+ #include <iostream>
+ using namespace std;
+@@ -251,6 +252,10 @@
+     
+     gContext->LoadQtConfig();
+ 
++    int pa_ret = pulseaudio_handle_startup();
++    if (pa_ret != GENERIC_EXIT_OK)
++        return pa_ret;
++
+ #if defined(Q_OS_MACX)
+     // Mac OS X doesn't define the AudioOutputDevice setting
+ #else
+@@ -287,7 +292,7 @@
          pginfo->isVideo = true;
  
          // RingBuffer doesn't like relative pathnames
@@ -45087,6 +46115,40 @@
              pginfo->pathname.prepend(QDir::currentDirPath() + '/');
      }
  
+@@ -303,6 +308,10 @@
+     }
+     delete gContext;
+ 
++    pa_ret = pulseaudio_handle_teardown();
++    if (GENERIC_EXIT_OK != pa_ret)
++        return pa_ret;
++
+     return TV_EXIT_OK;
+ }
+ 
+Index: mythtv/programs/mythtv/mythtv.pro
+===================================================================
+--- mythtv/programs/mythtv/mythtv.pro	(revision 16468)
++++ mythtv/programs/mythtv/mythtv.pro	(working copy)
+@@ -20,3 +20,18 @@
+ }
+ 
+ using_x11:DEFINES += USING_X11
++using_xv:DEFINES += USING_XV
++using_ivtv:DEFINES += USING_IVTV
++using_xvmc:DEFINES += USING_XVMC
++using_xvmc_vld:DEFINES += USING_XVMC_VLD
++using_xrandr:DEFINES += USING_XRANDR
++using_opengl_vsync:DEFINES += USING_OPENGL_VSYNC
++using_opengl_video:DEFINES += USING_OPENGL_VIDEO
++using_vdpau:DEFINES += USING_VDPAU
++
++using_pulse:DEFINES += USING_PULSE
++using_alsa:DEFINES += USING_ALSA
++using_arts:DEFINES += USING_ARTS
++using_jack:DEFINES += USING_JACK
++using_oss: DEFINES += USING_OSS
++macx:      DEFINES += USING_COREAUDIO
 Index: mythtv/programs/mythfilldatabase/filldata.cpp
 ===================================================================
 --- mythtv/programs/mythfilldatabase/filldata.cpp	(revision 16468)
@@ -45549,10 +46611,25 @@
  
  # construct linking path
  LOCAL_LIBDIR_X11 =
+@@ -109,6 +116,7 @@
+ EXTRA_LIBS += $$CONFIG_AUDIO_ALSA_LIBS
+ EXTRA_LIBS += $$CONFIG_AUDIO_ARTS_LIBS
+ EXTRA_LIBS += $$CONFIG_AUDIO_JACK_LIBS
++EXTRA_LIBS += $$CONFIG_AUDIO_PULSE_LIBS
+ EXTRA_LIBS += $$CONFIG_FIREWIRE_LIBS
+ EXTRA_LIBS += $$CONFIG_DIRECTFB_LIBS
+ 
+@@ -119,5 +127,6 @@
+ EXTRA_LIBS += $$CONFIG_XVMC_LIBS
+ EXTRA_LIBS += $$CONFIG_OPENGL_LIBS
+ EXTRA_LIBS += $$FRIBIDI_LIBS
++using_pulse:EXTRA_LIBS += $$PULSE_LIBS
+ 
+ LIRC_LIBS = $$CONFIG_LIRC_LIBS
 Index: mythtv/contrib/Win32/build/mythtvsetup.iss
 ===================================================================
 --- mythtv/contrib/Win32/build/mythtvsetup.iss	(revision 0)
-+++ mythtv/contrib/Win32/build/mythtvsetup.iss	(revision 20373)
++++ mythtv/contrib/Win32/build/mythtvsetup.iss	(revision 20668)
 @@ -0,0 +1,493 @@
 +; Script generated by the Inno Setup Script Wizard.
 +; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
@@ -46056,7 +47133,7 @@
 Index: mythtv/contrib/Win32/MythInstaller.bat
 ===================================================================
 --- mythtv/contrib/Win32/MythInstaller.bat	(revision 0)
-+++ mythtv/contrib/Win32/MythInstaller.bat	(revision 20373)
++++ mythtv/contrib/Win32/MythInstaller.bat	(revision 20668)
 @@ -0,0 +1,69 @@
 + at rem = '--*-Perl-*--
 + at rem
@@ -46138,7 +47215,7 @@
 Index: mythtv/contrib/Win32/run/mythfrontend.cmd
 ===================================================================
 --- mythtv/contrib/Win32/run/mythfrontend.cmd	(revision 0)
-+++ mythtv/contrib/Win32/run/mythfrontend.cmd	(revision 20373)
++++ mythtv/contrib/Win32/run/mythfrontend.cmd	(revision 20668)
 @@ -0,0 +1,57 @@
 + at Echo off
 +::
@@ -46200,7 +47277,7 @@
 Index: mythtv/contrib/Win32/run/mythbackend.cmd
 ===================================================================
 --- mythtv/contrib/Win32/run/mythbackend.cmd	(revision 0)
-+++ mythtv/contrib/Win32/run/mythbackend.cmd	(revision 20373)
++++ mythtv/contrib/Win32/run/mythbackend.cmd	(revision 20668)
 @@ -0,0 +1,58 @@
 + at Echo off
 +::
@@ -46327,16 +47404,67 @@
 ===================================================================
 --- mythtv/contrib/channel_changers/6200ch.c	(revision 16468)
 +++ mythtv/contrib/channel_changers/6200ch.c	(working copy)
-@@ -76,13 +76,14 @@
+@@ -34,8 +34,14 @@
+ // WARNING: Please update firewiredevice.cpp when adding to this list.
+ 
+ #define DCH3200_VENDOR_ID1 0x00001c11
++#define DCH3200_VENDOR_ID2 0x00001cfb
++#define DCH3200_VENDOR_ID3 0x00001fc4
++#define DCH3200_VENDOR_ID4 0x000023a3
+ #define DCH3200_MODEL_ID1  0x0000d330
+ 
++#define DCH3416_VENDOR_ID1 0x00001e46
++#define DCH3416_MODEL_ID1  0x0000b630
++
+ #define DCT3412_VENDOR_ID1 0x0000159a
+ #define DCT3412_MODEL_ID1  0x000034cb
+ 
+@@ -62,6 +68,7 @@
+ #define DCT6200_VENDOR_ID13 0x00001aad
+ #define DCT6200_VENDOR_ID14 0x00000b06
+ #define DCT6200_VENDOR_ID15 0x0000195e
++#define DCT6200_VENDOR_ID16 0x000010dc
+ #define DCT6200_SPEC_ID    0x00005068
+ #define DCT6200_SW_VERSION 0x00010101
+ #define DCT6200_MODEL_ID1  0x0000620a
+@@ -76,13 +83,42 @@
  #define DCT6416_VENDOR_ID2 0x00001a66 
  #define DCT6416_MODEL_ID1  0x0000646b
  
 -#define AVC1394_SUBUNIT_TYPE_6200 (9 << 19)  /* uses a reserved subunit type */ 
++#define QIP7100_VENDOR_ID1 0x00002374
++#define QIP7100_MODEL_ID1  0x00008100
++#define QIP7100_MODEL_ID2  0x00000001
+ 
+-#define AVC1394_6200_COMMAND_CHANNEL 0x000007C00   /* 6200 subunit command */
++#define MOT_UNKNOWN_VENDOR_ID1 0x04db
++#define MOT_UNKNOWN_VENDOR_ID2 0x0406
++#define MOT_UNKNOWN_VENDOR_ID3 0x0ce5
++#define MOT_UNKNOWN_VENDOR_ID4 0x111a
++#define MOT_UNKNOWN_VENDOR_ID5 0x1225
++#define MOT_UNKNOWN_VENDOR_ID6 0x1404
++#define MOT_UNKNOWN_VENDOR_ID7 0x1626
++#define MOT_UNKNOWN_VENDOR_ID8 0x18c0
++#define MOT_UNKNOWN_VENDOR_ID9 0x1ade
++#define MOT_UNKNOWN_VENDOR_ID10 0x1cfb
++#define MOT_UNKNOWN_VENDOR_ID11 0x2040
++#define MOT_UNKNOWN_VENDOR_ID12 0x211e
++#define MOT_UNKNOWN_VENDOR_ID13 0x2180
++#define MOT_UNKNOWN_VENDOR_ID14 0x2210
++#define MOT_UNKNOWN_VENDOR_ID15 0x230b
++#define MOT_UNKNOWN_VENDOR_ID16 0x2375
++#define MOT_UNKNOWN_VENDOR_ID17 0x2395
++#define MOT_UNKNOWN_VENDOR_ID18 0x23a2
++#define MOT_UNKNOWN_VENDOR_ID19 0x23ed
++#define MOT_UNKNOWN_VENDOR_ID20 0x23ee
++#define MOT_UNKNOWN_VENDOR_ID21 0x23a0
++#define MOT_UNKNOWN_VENDOR_ID22 0x23a1
++
 +#define PACE_VENDOR_ID1    0x00005094 /* 550 & 779 */
++#define PACE_VENDOR_ID2    0x00005094 /* unknown */
 +#define PACE550_MODEL_ID1  0x00010551
 +#define PACE779_MODEL_ID1  0x00010755
- 
--#define AVC1394_6200_COMMAND_CHANNEL 0x000007C00   /* 6200 subunit command */
++
  #define AVC1394_6200_OPERAND_SET 0x20      /* 6200 subunit command operand */
  
 -#define CTL_CMD0 AVC1394_CTYPE_CONTROL | AVC1394_SUBUNIT_TYPE_6200 | \
@@ -46346,25 +47474,158 @@
          AVC1394_6200_OPERAND_SET
  
  #define STARTING_NODE 1  /* skip 1394 nodes to avoid error msgs */
-@@ -240,7 +241,8 @@
+@@ -171,7 +207,7 @@
+ 
+    if (!handle) {
+       if (!errno) {
+-         fprintf(stderr, "Not Compatable!\n");
++         fprintf(stderr, "Not Compatible!\n");
+       } else {
+          perror("Couldn't get 1394 handle");
+          fprintf(stderr, "Is ieee1394, driver, and raw1394 loaded?\n");
+@@ -218,9 +254,13 @@
+ 
+       // WARNING: Please update firewiredevice.cpp when adding to this list.
+       if ( ((dir.vendor_id == DCH3200_VENDOR_ID1) ||
+-            (dir.vendor_id == DCT3412_VENDOR_ID1) || 
+-            (dir.vendor_id == DCT3416_VENDOR_ID1) || 
+-            (dir.vendor_id == DCT3416_VENDOR_ID2) || 
++            (dir.vendor_id == DCH3200_VENDOR_ID2) ||
++            (dir.vendor_id == DCH3200_VENDOR_ID3) ||
++            (dir.vendor_id == DCH3200_VENDOR_ID4) ||
++            (dir.vendor_id == DCH3416_VENDOR_ID1) ||
++            (dir.vendor_id == DCT3412_VENDOR_ID1) ||
++            (dir.vendor_id == DCT3416_VENDOR_ID1) ||
++            (dir.vendor_id == DCT3416_VENDOR_ID2) ||
+             (dir.vendor_id == DCT5100_VENDOR_ID1) ||
+             (dir.vendor_id == DCT6200_VENDOR_ID1) ||
+             (dir.vendor_id == DCT6200_VENDOR_ID2) ||
+@@ -237,11 +277,38 @@
+             (dir.vendor_id == DCT6200_VENDOR_ID13) ||
+             (dir.vendor_id == DCT6200_VENDOR_ID14) ||
+             (dir.vendor_id == DCT6200_VENDOR_ID15) ||
++            (dir.vendor_id == DCT6200_VENDOR_ID16) ||
              (dir.vendor_id == DCT6412_VENDOR_ID1) ||
              (dir.vendor_id == DCT6412_VENDOR_ID2) ||
-             (dir.vendor_id == DCT6416_VENDOR_ID1) || 
+-            (dir.vendor_id == DCT6416_VENDOR_ID1) || 
 -            (dir.vendor_id == DCT6416_VENDOR_ID2)) &&
++            (dir.vendor_id == DCT6416_VENDOR_ID1) ||
 +            (dir.vendor_id == DCT6416_VENDOR_ID2) ||
-+            (dir.vendor_id == PACE_VENDOR_ID1)) &&
++            (dir.vendor_id == QIP7100_VENDOR_ID1) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID1) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID2) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID3) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID4) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID5) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID6) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID7) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID8) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID9) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID10) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID11) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID12) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID13) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID14) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID15) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID16) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID17) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID18) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID19) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID20) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID21) ||
++            (dir.vendor_id == MOT_UNKNOWN_VENDOR_ID22) ||
++            (dir.vendor_id == PACE_VENDOR_ID1) ||
++            (dir.vendor_id == PACE_VENDOR_ID2)) &&
             ((dir.model_id == DCH3200_MODEL_ID1) ||
++            (dir.model_id == DCH3416_MODEL_ID1) ||
              (dir.model_id == DCT3412_MODEL_ID1) ||
              (dir.model_id == DCT3416_MODEL_ID1) ||
-@@ -250,7 +252,10 @@
+             (dir.model_id == DCT3416_MODEL_ID2) ||
+@@ -250,7 +317,12 @@
              (dir.model_id == DCT6200_MODEL_ID2) ||
              (dir.model_id == DCT6412_MODEL_ID1) ||
              (dir.model_id == DCT6412_MODEL_ID2) ||
 -            (dir.model_id == DCT6416_MODEL_ID1)) ) {
 +            (dir.model_id == DCT6416_MODEL_ID1) ||
++            (dir.model_id == QIP7100_MODEL_ID1) ||
++            (dir.model_id == QIP7100_MODEL_ID2) ||
 +            (dir.model_id == PACE550_MODEL_ID1) ||
 +            (dir.model_id == PACE779_MODEL_ID1)) )
 +      {
              if (dir.unit_spec_id != DCT6200_SPEC_ID)
                 fprintf(stderr, "Warning: Unit Spec ID different.\n");
              if (dir.unit_sw_version != DCT6200_SW_VERSION)
+Index: mythtv/contrib/channel_changers/sa3250ch.c
+===================================================================
+--- mythtv/contrib/channel_changers/sa3250ch.c	(revision 16468)
++++ mythtv/contrib/channel_changers/sa3250ch.c	(working copy)
+@@ -32,13 +32,24 @@
+ 
+ /* SA3250HD IDs */
+ /* WARNING: Please update firewiredevice.cpp when adding to this list. */
+-#define SA_VENDOR_ID1           0x000011e6
+-#define SA_VENDOR_ID2           0x000014f8
+-#define SA_VENDOR_ID3           0x00001692
+-#define SA_VENDOR_ID4           0x00001947
+-#define SA_VENDOR_ID5           0x00000f21
+-#define SA_VENDOR_ID6           0x00001ac3
+-#define SA_VENDOR_ID7           0x00000a73
++
++#define SA_VENDOR_ID1           0x00000a73
++#define SA_VENDOR_ID2           0x00000f21
++#define SA_VENDOR_ID3           0x000011e6
++#define SA_VENDOR_ID4           0x000014f8
++#define SA_VENDOR_ID5           0x00001692
++#define SA_VENDOR_ID6           0x00001868
++#define SA_VENDOR_ID7           0x00001947
++#define SA_VENDOR_ID8           0x00001ac3
++#define SA_VENDOR_ID9           0x00001bd7
++#define SA_VENDOR_ID10          0x00001cea
++#define SA_VENDOR_ID11          0x00001e6b
++#define SA_VENDOR_ID12          0x000021be
++#define SA_VENDOR_ID13          0x0000223a
++#define SA_VENDOR_ID14          0x000022ce
++#define SA_VENDOR_ID15          0x000023be
++#define SA_VENDOR_ID16          0x0000252e
++
+ #define SA3250HD_MODEL_ID1      0x00000be0
+ #define SA4200HD_MODEL_ID1      0x00001072
+ #define SA4250HDC_MODEL_ID1     0x000010cc
+@@ -130,13 +141,22 @@
+                  i, dir.vendor_id, dir.model_id); 
+ 		
+       /* WARNING: Please update firewiredevice.cpp when adding to this list. */
+-      if (((dir.vendor_id == SA_VENDOR_ID1) ||
+-           (dir.vendor_id == SA_VENDOR_ID2) ||
+-           (dir.vendor_id == SA_VENDOR_ID3) ||
+-           (dir.vendor_id == SA_VENDOR_ID4) ||
+-           (dir.vendor_id == SA_VENDOR_ID5) ||
+-           (dir.vendor_id == SA_VENDOR_ID6) ||
+-           (dir.vendor_id == SA_VENDOR_ID7)) &&
++      if (((dir.vendor_id == SA_VENDOR_ID1)  ||
++           (dir.vendor_id == SA_VENDOR_ID2)  ||
++           (dir.vendor_id == SA_VENDOR_ID3)  ||
++           (dir.vendor_id == SA_VENDOR_ID4)  ||
++           (dir.vendor_id == SA_VENDOR_ID5)  ||
++           (dir.vendor_id == SA_VENDOR_ID6)  ||
++           (dir.vendor_id == SA_VENDOR_ID7)  ||
++           (dir.vendor_id == SA_VENDOR_ID8)  ||
++           (dir.vendor_id == SA_VENDOR_ID9)  ||
++           (dir.vendor_id == SA_VENDOR_ID10) ||
++           (dir.vendor_id == SA_VENDOR_ID11) ||
++           (dir.vendor_id == SA_VENDOR_ID12) ||
++           (dir.vendor_id == SA_VENDOR_ID13) ||
++           (dir.vendor_id == SA_VENDOR_ID14) ||
++           (dir.vendor_id == SA_VENDOR_ID15) ||
++           (dir.vendor_id == SA_VENDOR_ID16)) &&
+           ((dir.model_id == SA3250HD_MODEL_ID1)  ||
+            (dir.model_id == SA4200HD_MODEL_ID1)  ||
+            (dir.model_id == SA4250HDC_MODEL_ID1)))
+
+Property changes on: mythtv/contrib/channel_changers
+___________________________________________________________________
+Added: svn:ignore
+   + 6200ch
+sa3250ch
+
+


Index: mythtv.spec
===================================================================
RCS file: /cvs/free/rpms/mythtv/F-10/mythtv.spec,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- mythtv.spec	14 Apr 2009 02:53:14 -0000	1.18
+++ mythtv.spec	4 Jun 2009 04:02:20 -0000	1.19
@@ -1,5 +1,5 @@
 # svn revision number
-%define _svnver r20373
+%define _svnver r20668
 %define branch release-0-21-fixes
 # Nb: base 0.21 svn rev is r16468
 #define branch trunk
@@ -22,7 +22,7 @@
 %if "%{branch}" == "trunk"
 Release: 0.2.%{_svnver}%{?dist}
 %else
-Release: 18%{?dist}
+Release: 19%{?dist}
 %endif
 URL: http://www.mythtv.org/
 # The primary license is GPLv2+, but bits are borrowed from a number of
@@ -1026,6 +1026,9 @@
 %endif
 
 %changelog
+* Wed Jun 03 2009 Jarod Wilson <jarod at wilsonet.com> - 0.21-19
+- Update to release-0-21-fixes patches (r20668)
+
 * Mon Apr 13 2009 Jarod Wilson <jarod at wilsonet.com> - 0.21-18
 - Update release-0-21-fixes patches (r20373)
 - Slide Requires: wget into more appropriate places (rfbz#384)



More information about the rpmfusion-commits mailing list