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.
|
attached to the device. Its boolean parameter has no meaning any more.
|
||||||
+ The default value for the Priority parameter of the function cDevice::ProvidesChannel()
|
+ The default value for the Priority parameter of the function cDevice::ProvidesChannel()
|
||||||
has been changed to IDLEPRIORITY.
|
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
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* 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"
|
#include "device.h"
|
||||||
@ -226,7 +226,7 @@ static int GetClippedNumProvidedSystems(int AvailableBits, cDevice *Device)
|
|||||||
return NumProvidedSystems;
|
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;
|
cDevice *AvoidDevice = avoidDevice;
|
||||||
avoidDevice = NULL;
|
avoidDevice = NULL;
|
||||||
@ -301,7 +301,7 @@ cDevice *cDevice::GetDevice(const cChannel *Channel, int Priority, bool LiveView
|
|||||||
if (!NumUsableSlots)
|
if (!NumUsableSlots)
|
||||||
break; // no CAM necessary, so just one loop over the devices
|
break; // no CAM necessary, so just one loop over the devices
|
||||||
}
|
}
|
||||||
if (d) {
|
if (d && !Query) {
|
||||||
if (NeedsDetachReceivers)
|
if (NeedsDetachReceivers)
|
||||||
d->DetachAllReceivers();
|
d->DetachAllReceivers();
|
||||||
if (s) {
|
if (s) {
|
||||||
@ -687,7 +687,7 @@ bool cDevice::SwitchChannel(int Direction)
|
|||||||
cChannel *channel;
|
cChannel *channel;
|
||||||
while ((channel = Channels.GetByNumber(n, Direction)) != NULL) {
|
while ((channel = Channels.GetByNumber(n, Direction)) != NULL) {
|
||||||
// try only channels which are currently available
|
// try only channels which are currently available
|
||||||
if (GetDevice(channel, LIVEPRIORITY, true))
|
if (GetDevice(channel, LIVEPRIORITY, true, true))
|
||||||
break;
|
break;
|
||||||
n = channel->Number() + Direction;
|
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
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* 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
|
#ifndef __DEVICE_H
|
||||||
@ -139,7 +139,7 @@ public:
|
|||||||
///< Gets the device with the given Index.
|
///< Gets the device with the given Index.
|
||||||
///< \param Index must be in the range 0..numDevices-1.
|
///< \param Index must be in the range 0..numDevices-1.
|
||||||
///< \return A pointer to the device, or NULL if the Index was invalid.
|
///< \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
|
///< Returns a device that is able to receive the given Channel at the
|
||||||
///< given Priority, with the least impact on active recordings and
|
///< given Priority, with the least impact on active recordings and
|
||||||
///< live viewing. The LiveView parameter tells whether the device will
|
///< 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,
|
///< after detaching any receivers because the channel can't be decrypted,
|
||||||
///< this device/CAM combination will be skipped in the next call to
|
///< this device/CAM combination will be skipped in the next call to
|
||||||
///< GetDevice().
|
///< 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().
|
///< See also ProvidesChannel().
|
||||||
static void SetAvoidDevice(cDevice *Device) { avoidDevice = Device; }
|
static void SetAvoidDevice(cDevice *Device) { avoidDevice = Device; }
|
||||||
///< Sets the given Device to be temporarily avoided in the next call to
|
///< 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
|
* See the main source file 'vdr.c' for copyright information and
|
||||||
* how to reach the author.
|
* 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"
|
#include "menu.h"
|
||||||
@ -3653,7 +3653,7 @@ cChannel *cDisplayChannel::NextAvailableChannel(cChannel *Channel, int Direction
|
|||||||
Channel = Direction > 0 ? Channels.Next(Channel) : Channels.Prev(Channel);
|
Channel = Direction > 0 ? Channels.Next(Channel) : Channels.Prev(Channel);
|
||||||
if (!Channel && Setup.ChannelsWrap)
|
if (!Channel && Setup.ChannelsWrap)
|
||||||
Channel = Direction > 0 ? Channels.First() : Channels.Last();
|
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;
|
return Channel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user