mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Added a Query parameter to cDevice::GetDevice(), so that devices can be queried without side effects when zapping
This commit is contained in:
parent
28bc34b245
commit
c8808a854b
2
HISTORY
2
HISTORY
@ -6944,3 +6944,5 @@ Video Disk Recorder Revision History
|
||||
attached to the device. Its boolean parameter has no meaning any more.
|
||||
+ The default value for the Priority parameter of the function cDevice::ProvidesChannel()
|
||||
has been changed to IDLEPRIORITY.
|
||||
- Added a Query parameter to cDevice::GetDevice(), so that devices can be queried
|
||||
without side effects when zapping.
|
||||
|
8
device.c
8
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.52 2012/03/02 10:18:44 kls Exp $
|
||||
* $Id: device.c 2.53 2012/03/02 10:33:35 kls Exp $
|
||||
*/
|
||||
|
||||
#include "device.h"
|
||||
@ -226,7 +226,7 @@ static int GetClippedNumProvidedSystems(int AvailableBits, cDevice *Device)
|
||||
return NumProvidedSystems;
|
||||
}
|
||||
|
||||
cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool LiveView)
|
||||
cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool LiveView, bool Query)
|
||||
{
|
||||
cDevice *AvoidDevice = avoidDevice;
|
||||
avoidDevice = NULL;
|
||||
@ -301,7 +301,7 @@ cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool LiveView
|
||||
if (!NumUsableSlots)
|
||||
break; // no CAM necessary, so just one loop over the devices
|
||||
}
|
||||
if (d) {
|
||||
if (d && !Query) {
|
||||
if (NeedsDetachReceivers)
|
||||
d->DetachAllReceivers();
|
||||
if (s) {
|
||||
@ -687,7 +687,7 @@ bool cDevice::SwitchChannel(int Direction)
|
||||
cChannel *channel;
|
||||
while ((channel = Channels.GetByNumber(n, Direction)) != NULL) {
|
||||
// try only channels which are currently available
|
||||
if (GetDevice(channel, LIVEPRIORITY, true))
|
||||
if (GetDevice(channel, LIVEPRIORITY, true, true))
|
||||
break;
|
||||
n = channel->Number() + Direction;
|
||||
}
|
||||
|
8
device.h
8
device.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: device.h 2.35 2012/02/29 12:19:28 kls Exp $
|
||||
* $Id: device.h 2.36 2012/03/02 10:23:13 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __DEVICE_H
|
||||
@ -139,7 +139,7 @@ public:
|
||||
///< Gets the device with the given Index.
|
||||
///< \param Index must be in the range 0..numDevices-1.
|
||||
///< \return A pointer to the device, or NULL if the Index was invalid.
|
||||
static cDevice *GetDevice(const cChannel *Channel, int Priority, bool LiveView);
|
||||
static cDevice *GetDevice(const cChannel *Channel, int Priority, bool LiveView, bool Query = false);
|
||||
///< Returns a device that is able to receive the given Channel at the
|
||||
///< given Priority, with the least impact on active recordings and
|
||||
///< live viewing. The LiveView parameter tells whether the device will
|
||||
@ -153,6 +153,10 @@ public:
|
||||
///< after detaching any receivers because the channel can't be decrypted,
|
||||
///< this device/CAM combination will be skipped in the next call to
|
||||
///< GetDevice().
|
||||
///< If Query is true, no actual CAM assignments or receiver detachments will
|
||||
///< be done, so that this function can be called without any side effects
|
||||
///< in order to just determine whether a device is available for the given
|
||||
///< Channel.
|
||||
///< See also ProvidesChannel().
|
||||
static void SetAvoidDevice(cDevice *Device) { avoidDevice = Device; }
|
||||
///< Sets the given Device to be temporarily avoided in the next call to
|
||||
|
4
menu.c
4
menu.c
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: menu.c 2.38 2012/02/25 13:50:49 kls Exp $
|
||||
* $Id: menu.c 2.39 2012/03/02 10:33:17 kls Exp $
|
||||
*/
|
||||
|
||||
#include "menu.h"
|
||||
@ -3653,7 +3653,7 @@ cChannel *cDisplayChannel::NextAvailableChannel(cChannel *Channel, int Direction
|
||||
Channel = Direction > 0 ? Channels.Next(Channel) : Channels.Prev(Channel);
|
||||
if (!Channel && Setup.ChannelsWrap)
|
||||
Channel = Direction > 0 ? Channels.First() : Channels.Last();
|
||||
if (Channel && !Channel->GroupSep() && cDevice::GetDevice(Channel, LIVEPRIORITY, true))
|
||||
if (Channel && !Channel->GroupSep() && cDevice::GetDevice(Channel, LIVEPRIORITY, true, true))
|
||||
return Channel;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user