mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
The primary device no longer starts unnecessary threads if it doesn't have a decoder
This commit is contained in:
parent
824c495d33
commit
bfa25d6276
@ -2565,6 +2565,8 @@ Markus Ehrnsperger <markus.ehrnsperger@googlemail.com>
|
||||
for adding the move constructor to cString for better performance
|
||||
for fixing handling primary device on headless systems
|
||||
for adding a 15 second grace period before actually stopping a VPS timer
|
||||
for making the primary device no longer start unnecessary threads if it doesn't have
|
||||
a decoder
|
||||
|
||||
Werner Färber <w.faerber@gmx.de>
|
||||
for reporting a bug in handling the cPluginManager::Active() result when pressing
|
||||
|
4
HISTORY
4
HISTORY
@ -9887,7 +9887,7 @@ Video Disk Recorder Revision History
|
||||
- Fixed possible duplicate component entries in the info of an ongoing recording
|
||||
(reported by Christoph Haubrich).
|
||||
|
||||
2024-03-03:
|
||||
2024-03-04:
|
||||
|
||||
- Fixed the move assignment operator to check for self-assignment (suggested by
|
||||
Stefan Herdler).
|
||||
@ -9898,3 +9898,5 @@ Video Disk Recorder Revision History
|
||||
in cChannel.
|
||||
- Added a 15 second grace period before actually stopping a VPS timer (thanks to
|
||||
Markus Ehrnsperger).
|
||||
- The primary device no longer starts unnecessary threads if it doesn't have a decoder
|
||||
(thanks to Markus Ehrnsperger).
|
||||
|
37
device.c
37
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 5.10 2024/01/22 12:10:30 kls Exp $
|
||||
* $Id: device.c 5.11 2024/03/04 12:26:32 kls Exp $
|
||||
*/
|
||||
|
||||
#include "device.h"
|
||||
@ -923,23 +923,26 @@ eSetChannelResult cDevice::SetChannel(const cChannel *Channel, bool LiveView)
|
||||
}
|
||||
|
||||
if (Result == scrOk) {
|
||||
if (LiveView && IsPrimaryDevice(false)) {
|
||||
if (patFilter) // this is only for FF DVB cards!
|
||||
patFilter->Request(Channel->Sid());
|
||||
currentChannel = Channel->Number();
|
||||
// Set the available audio tracks:
|
||||
ClrAvailableTracks();
|
||||
for (int i = 0; i < MAXAPIDS; i++)
|
||||
SetAvailableTrack(ttAudio, i, Channel->Apid(i), Channel->Alang(i));
|
||||
if (Setup.UseDolbyDigital) {
|
||||
for (int i = 0; i < MAXDPIDS; i++)
|
||||
SetAvailableTrack(ttDolby, i, Channel->Dpid(i), Channel->Dlang(i));
|
||||
if (LiveView) {
|
||||
if (IsPrimaryDevice(false))
|
||||
currentChannel = Channel->Number();
|
||||
if (IsPrimaryDevice()) {
|
||||
if (patFilter) // this is only for FF DVB cards!
|
||||
patFilter->Request(Channel->Sid());
|
||||
// Set the available audio tracks:
|
||||
ClrAvailableTracks();
|
||||
for (int i = 0; i < MAXAPIDS; i++)
|
||||
SetAvailableTrack(ttAudio, i, Channel->Apid(i), Channel->Alang(i));
|
||||
if (Setup.UseDolbyDigital) {
|
||||
for (int i = 0; i < MAXDPIDS; i++)
|
||||
SetAvailableTrack(ttDolby, i, Channel->Dpid(i), Channel->Dlang(i));
|
||||
}
|
||||
for (int i = 0; i < MAXSPIDS; i++)
|
||||
SetAvailableTrack(ttSubtitle, i, Channel->Spid(i), Channel->Slang(i));
|
||||
if (!NeedsTransferMode)
|
||||
EnsureAudioTrack(true);
|
||||
EnsureSubtitleTrack();
|
||||
}
|
||||
for (int i = 0; i < MAXSPIDS; i++)
|
||||
SetAvailableTrack(ttSubtitle, i, Channel->Spid(i), Channel->Slang(i));
|
||||
if (!NeedsTransferMode)
|
||||
EnsureAudioTrack(true);
|
||||
EnsureSubtitleTrack();
|
||||
}
|
||||
cStatus::MsgChannelSwitch(this, Channel->Number(), LiveView); // only report status if channel switch successful
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user