[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