From 378a05a96d797eb87be04dc9473a1e5562a32d4e Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 2 Sep 2012 09:35:31 +0200 Subject: [PATCH] Changed the semantics of the cReceiver::Activate() function (it is now called with 'false' *after* the receiver has been detached from the device --- HISTORY | 5 ++++- device.c | 4 ++-- receiver.h | 4 ++-- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/HISTORY b/HISTORY index 1f49b1a1..e1a11ab4 100644 --- a/HISTORY +++ b/HISTORY @@ -7191,7 +7191,7 @@ Video Disk Recorder Revision History turn on adding the source character to channel names whenever they are displayed (suggested by Ludi Kaleni). -2012-09-01: Version 1.7.30 +2012-09-02: Version 1.7.30 - Fixed sorting recordings in the top level video directory. - Fixed handling control characters in SI data in case of UTF-8 encoded strings @@ -7206,6 +7206,9 @@ Video Disk Recorder Revision History - Fixed detecting transfer mode on full featured DVB cards (thanks to Stefan Huelswitt for reporting a problem with updating CA descriptors in such cases). - Fixed a race condition when zapping in transfer mode (reported by Reinhard Nissl). + This involves a slight change in the semantics of the cReceiver::Activate() function, + which is now called with 'false' *after* the receiver has been detached from the + device. - The new function cDevice::ReadFilter() can be used by devices to implement their own way of retrieving section filter data (thanks to Deti Fliegl). - The new function cDevice::HasInternalCam() can be implemented by devices that diff --git a/device.c b/device.c index a5a0ec78..6518e820 100644 --- a/device.c +++ b/device.c @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: device.c 2.66 2012/08/31 11:02:24 kls Exp $ + * $Id: device.c 2.67 2012/09/02 09:26:36 kls Exp $ */ #include "device.h" @@ -1676,10 +1676,10 @@ void cDevice::Detach(cReceiver *Receiver) for (int i = 0; i < MAXRECEIVERS; i++) { if (receiver[i] == Receiver) { Lock(); - Receiver->Activate(false); receiver[i] = NULL; Receiver->device = NULL; Unlock(); + Receiver->Activate(false); for (int n = 0; n < Receiver->numPids; n++) DelPid(Receiver->pids[n]); } diff --git a/receiver.h b/receiver.h index eb2f32a7..775dabdf 100644 --- a/receiver.h +++ b/receiver.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: receiver.h 2.8 2012/06/02 13:20:44 kls Exp $ + * $Id: receiver.h 2.9 2012/09/02 09:27:20 kls Exp $ */ #ifndef __RECEIVER_H @@ -27,7 +27,7 @@ protected: void Detach(void); virtual void Activate(bool On) {} ///< This function is called just before the cReceiver gets attached to - ///< (On == true) or detached from (On == false) a cDevice. It can be used + ///< (On == true) and right after it gets detached from (On == false) a cDevice. It can be used ///< to do things like starting/stopping a thread. ///< It is guaranteed that Receive() will not be called before Activate(true). virtual void Receive(uchar *Data, int Length) = 0;