Sophie

Sophie

distrib > Mandriva > 2007.1 > x86_64 > by-pkgid > fdddaca718fdaac56c6bff726f3554dd > files > 18

vdr-1.4.7-9mdv2007.1.src.rpm

diff -Nru vdr-1.4.7-vanilla/config.h vdr-1.4.7-closefilter/config.h
--- vdr-1.4.7-vanilla/config.h	2007-10-27 01:08:39.000000000 +0300
+++ vdr-1.4.7-closefilter/config.h	2007-10-27 01:39:43.000000000 +0300
@@ -29,6 +29,8 @@
 #define APIVERSION  "1.4.5"
 #define APIVERSNUM   10405  // Version * 10000 + Major * 100 + Minor
 
+#define CLOSEFILTERPATCHVERSNUM 1
+
 // When loading plugins, VDR searches them by their APIVERSION, which
 // may be smaller than VDRVERSION in case there have been no changes to
 // VDR header files since the last APIVERSION. This allows compiled
diff -Nru vdr-1.4.7-vanilla/device.c vdr-1.4.7-closefilter/device.c
--- vdr-1.4.7-vanilla/device.c	2007-10-27 01:08:39.000000000 +0300
+++ vdr-1.4.7-closefilter/device.c	2007-10-27 01:37:34.000000000 +0300
@@ -509,6 +509,11 @@
   return -1;
 }
 
+void cDevice::CloseFilter(int Handle)
+{
+  close(Handle);
+}
+
 void cDevice::AttachFilter(cFilter *Filter)
 {
   if (sectionHandler)
diff -Nru vdr-1.4.7-vanilla/device.h vdr-1.4.7-closefilter/device.h
--- vdr-1.4.7-vanilla/device.h	2007-10-27 01:08:39.000000000 +0300
+++ vdr-1.4.7-closefilter/device.h	2007-10-27 01:37:19.000000000 +0300
@@ -302,6 +302,11 @@
        ///< Opens a file handle for the given filter data.
        ///< A derived device that provides section data must
        ///< implement this function.
+  virtual void CloseFilter(int Handle);
+       ///< Closes a file handle that has previously been opened
+       ///< by OpenFilter(). If this is as simple as calling close(Handle),
+       ///< a derived class need not implement this function, because this
+       ///< is done by the default implementation.
   void AttachFilter(cFilter *Filter);
        ///< Attaches the given filter to this device.
   void Detach(cFilter *Filter);
diff -Nru vdr-1.4.7-vanilla/dvbdevice.c vdr-1.4.7-closefilter/dvbdevice.c
--- vdr-1.4.7-vanilla/dvbdevice.c	2007-10-27 01:08:39.000000000 +0300
+++ vdr-1.4.7-closefilter/dvbdevice.c	2007-10-27 01:37:50.000000000 +0300
@@ -726,6 +726,11 @@
   return -1;
 }
 
+void cDvbDevice::CloseFilter(int Handle)
+{
+  close(Handle);
+}
+
 void cDvbDevice::TurnOffLiveMode(bool LiveView)
 {
   if (LiveView) {
diff -Nru vdr-1.4.7-vanilla/dvbdevice.h vdr-1.4.7-closefilter/dvbdevice.h
--- vdr-1.4.7-vanilla/dvbdevice.h	2007-10-27 01:08:39.000000000 +0300
+++ vdr-1.4.7-closefilter/dvbdevice.h	2007-10-27 01:37:59.000000000 +0300
@@ -79,6 +79,7 @@
 
 protected:
   virtual int OpenFilter(u_short Pid, u_char Tid, u_char Mask);
+  virtual void CloseFilter(int Handle);
 
 // Image Grab facilities
 
diff -Nru vdr-1.4.7-vanilla/sections.c vdr-1.4.7-closefilter/sections.c
--- vdr-1.4.7-vanilla/sections.c	2007-10-27 01:08:39.000000000 +0300
+++ vdr-1.4.7-closefilter/sections.c	2007-10-27 01:34:06.000000000 +0300
@@ -105,7 +105,7 @@
   for (fh = filterHandles.First(); fh; fh = filterHandles.Next(fh)) {
       if (fh->filterData.Is(FilterData->pid, FilterData->tid, FilterData->mask)) {
          if (--fh->used <= 0) {
-            close(fh->handle);
+            device->CloseFilter(fh->handle);
             filterHandles.Del(fh);
             break;
             }