[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: extragear/multimedia/kaffeine/src/dvb
From: Christoph Pfister <christophpfister () gmail ! com>
Date: 2009-04-03 13:47:15
Message-ID: 1238766435.223449.3848.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 948664 by pfister:
fix channel search regression
the channels had no source assigned, causing trouble when you want to use them
M +2 -7 dvbchannel.cpp
M +1 -2 dvbchannel.h
M +1 -1 dvbdevice.cpp
M +4 -3 dvbmanager.cpp
M +2 -1 dvbmanager.h
M +1 -1 dvbrecording.cpp
M +6 -4 dvbscan.cpp
M +5 -2 dvbscan.h
M +3 -3 dvbscandialog.cpp
M +1 -1 dvbtab.cpp
--- trunk/extragear/multimedia/kaffeine/src/dvb/dvbchannel.cpp #948663:948664
@@ -105,7 +105,6 @@
const DvbCTransponder *dvbCTransponder = transponder->getDvbCTransponder();
return (dvbCTransponder != NULL) &&
- (dvbCTransponder->source == source) &&
(qAbs(dvbCTransponder->frequency - frequency) <= 2000000);
}
@@ -139,7 +138,6 @@
const DvbSTransponder *dvbSTransponder = transponder->getDvbSTransponder();
return (dvbSTransponder != NULL) &&
- (dvbSTransponder->source == source) &&
(dvbSTransponder->polarization == polarization) &&
(qAbs(dvbSTransponder->frequency - frequency) <= 2000);
}
@@ -178,7 +176,6 @@
const DvbTTransponder *dvbTTransponder = transponder->getDvbTTransponder();
return (dvbTTransponder != NULL) &&
- (dvbTTransponder->source == source) &&
(qAbs(dvbTTransponder->frequency - frequency) <= 2000000);
}
@@ -214,7 +211,6 @@
const AtscTransponder *atscTransponder = transponder->getAtscTransponder();
return (atscTransponder != NULL) &&
- (atscTransponder->source == source) &&
(qAbs(atscTransponder->frequency - frequency) <= 2000000);
}
@@ -233,7 +229,7 @@
channel->name = readString();
channel->number = readInt();
- QString source = readString();
+ channel->source = readString();
channel->networkId = readInt(true);
channel->transportStreamId = readInt();
channel->serviceId = readInt();
@@ -271,7 +267,6 @@
return NULL;
}
- transponder->source = source;
channel->transponder = DvbTransponder(transponder);
return channel;
@@ -286,7 +281,7 @@
writeString(channel->name);
writeInt(channel->number);
- writeString(channel->transponder->source);
+ writeString(channel->source);
writeInt(channel->networkId);
writeInt(channel->transportStreamId);
writeInt(channel->serviceId);
--- trunk/extragear/multimedia/kaffeine/src/dvb/dvbchannel.h #948663:948664
@@ -89,8 +89,6 @@
*/
virtual bool corresponds(const DvbTransponder &transponder) const = 0;
-
- QString source;
};
class DvbCTransponder : public DvbTransponderBase
@@ -273,6 +271,7 @@
QString name;
int number;
+ QString source;
int networkId; // may be -1 (not present)
int transportStreamId;
int serviceId;
--- trunk/extragear/multimedia/kaffeine/src/dvb/dvbdevice.cpp #948663:948664
@@ -669,7 +669,7 @@
}
case DvbConfigBase::UsalsRotor: {
- QString source = transponder->source;
+ QString source = config->scanSource;
source.remove(0, source.lastIndexOf('-') + 1);
bool ok = false;
--- trunk/extragear/multimedia/kaffeine/src/dvb/dvbmanager.cpp #948663:948664
@@ -301,7 +301,7 @@
return deviceManager->getDevices();
}
-DvbDevice *DvbManager::requestDevice(const DvbTransponder &transponder)
+DvbDevice *DvbManager::requestDevice(const QString &source, const DvbTransponder &transponder)
{
// first try to find a device that is already tuned to the selected transponder
@@ -312,7 +312,7 @@
continue;
}
- if (it.transponder->corresponds(transponder)) {
+ if ((it.source == source) && it.transponder->corresponds(transponder)) {
++deviceConfigs[i].useCount;
return it.device;
}
@@ -326,12 +326,13 @@
}
foreach (const DvbConfig &config, it.configs) {
- if (config->name == transponder->source) {
+ if (config->name == source) {
if (!it.device->checkUsable()) {
break;
}
++deviceConfigs[i].useCount;
+ deviceConfigs[i].source = source;
deviceConfigs[i].transponder = transponder;
DvbDevice *device = it.device;
--- trunk/extragear/multimedia/kaffeine/src/dvb/dvbmanager.h #948663:948664
@@ -48,6 +48,7 @@
DvbDevice *device;
QList<DvbConfig> configs;
int useCount; // -1 means exlusive use
+ QString source;
DvbTransponder transponder;
};
@@ -83,7 +84,7 @@
}
QList<DvbDevice *> getDevices() const;
- DvbDevice *requestDevice(const DvbTransponder &transponder);
+ DvbDevice *requestDevice(const QString &source, const DvbTransponder &transponder);
// exclusive = you can freely tune() and stop(), because the device isn't shared
DvbDevice *requestExclusiveDevice(const QString &source);
void releaseDevice(DvbDevice *device);
--- trunk/extragear/multimedia/kaffeine/src/dvb/dvbrecording.cpp #948663:948664
@@ -129,7 +129,7 @@
if (device == NULL) {
// assign device
- device = manager->requestDevice(channel->transponder);
+ device = manager->requestDevice(channel->source, channel->transponder);
if (device == NULL) {
// FIXME error message
--- trunk/extragear/multimedia/kaffeine/src/dvb/dvbscan.cpp #948663:948664
@@ -272,14 +272,15 @@
scan->filterFinished(this);
}
-DvbScan::DvbScan(DvbDevice *device_, const DvbTransponder &transponder_) : device(device_),
- transponder(transponder_), isLive(true), transponderIndex(-1), state(ScanPat), patIndex(0),
- activeFilters(0)
+DvbScan::DvbScan(DvbDevice *device_, const QString &source_, const DvbTransponder &transponder_) :
+ device(device_), source(source_), transponder(transponder_), isLive(true),
+ transponderIndex(-1), state(ScanPat), patIndex(0), activeFilters(0)
{
init();
}
-DvbScan::DvbScan(DvbDevice *device_, const QList<DvbTransponder> &transponders_) : device(device_),
+DvbScan::DvbScan(DvbDevice *device_, const QString &source_,
+ const QList<DvbTransponder> &transponders_) : device(device_), source(source_),
isLive(false), transponders(transponders_), transponderIndex(0), state(ScanTune),
patIndex(0), activeFilters(0)
{
@@ -503,6 +504,7 @@
}
if ((channel.videoPid != -1) || !channel.audioPids.isEmpty()) {
+ channel.source = source;
channel.transportStreamId = transportStreamId;
channel.serviceId = section.programNumber();
channel.pmtPid = pid;
--- trunk/extragear/multimedia/kaffeine/src/dvb/dvbscan.h #948663:948664
@@ -49,6 +49,7 @@
* assigned when reading PMT
*/
+ // QString source;
// int transportStreamId;
// int serviceId;
// int pmtPid;
@@ -79,8 +80,9 @@
friend class DvbScanFilter;
Q_OBJECT
public:
- DvbScan(DvbDevice *device_, const DvbTransponder &transponder_);
- DvbScan(DvbDevice *device_, const QList<DvbTransponder> &transponders_);
+ DvbScan(DvbDevice *device_, const QString &source_, const DvbTransponder &transponder_);
+ DvbScan(DvbDevice *device_, const QString &source_,
+ const QList<DvbTransponder> &transponders_);
~DvbScan();
signals:
@@ -123,6 +125,7 @@
void filterFinished(DvbScanFilter *filter);
DvbDevice *device;
+ QString source;
DvbTransponder transponder;
bool isLive;
--- trunk/extragear/multimedia/kaffeine/src/dvb/dvbscandialog.cpp #948663:948664
@@ -211,13 +211,13 @@
if (isLive) {
const DvbChannel *channel = dvbTab->getLiveChannel();
- internal = new DvbScan(device, channel->transponder);
+ internal = new DvbScan(device, channel->source, channel->transponder);
} else {
QString source = ui->sourceList->currentText();
setDevice(manager->requestExclusiveDevice(source));
if (device != NULL) {
- internal = new DvbScan(device, manager->getTransponders(source));
+ internal = new DvbScan(device, source, manager->getTransponders(source));
} else {
ui->scanButton->setChecked(false);
KMessageBox::sorry(this, i18n("No suitable device found."));
@@ -346,7 +346,7 @@
for (it = channels.constBegin(); it != channels.constEnd(); ++it) {
// FIXME - algorithmic complexity is quite high
- if ((currentChannel->transponder->source == (*it)->transponder->source) &&
+ if ((currentChannel->source == (*it)->source) &&
(currentChannel->networkId == (*it)->networkId) &&
(currentChannel->transportStreamId == (*it)->transportStreamId) &&
(currentChannel->serviceId == (*it)->serviceId)) {
--- trunk/extragear/multimedia/kaffeine/src/dvb/dvbtab.cpp #948663:948664
@@ -200,7 +200,7 @@
return;
}
- liveDevice = dvbManager->requestDevice(channel->transponder);
+ liveDevice = dvbManager->requestDevice(channel->source, channel->transponder);
if (liveDevice == NULL) {
KMessageBox::sorry(this, i18n("No suitable device found."));
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic