[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdemultimedia/kioslave/audiocd
From: Albert Astals Cid <tsdgeos () terra ! es>
Date: 2009-12-26 23:26:21
Message-ID: 1261869981.960741.19399.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1066390 by aacid:
If TOCs are different we need to call setDevice again so the disc info is \
refreshed More or less fixes bug 188284, now you can refresh the disc info \
by pressing the Reload/F5 action Though if you go to the url bar and enter \
audiocd:/ again it is not refreshed since the ioslave is not called, \
probably hitting some cache somewhere, will see if we can \
fix this too
BUGS: 188284
M +27 -1 audiocd.cpp
--- trunk/KDE/kdemultimedia/kioslave/audiocd/audiocd.cpp #1066389:1066390
@@ -116,6 +116,28 @@
req_track = -1;
cddbUserChoice = -1;
}
+
+ bool tocsAreDifferent(struct cdrom_drive *drive)
+ {
+ if (tracks != (uint)drive->tracks) return true;
+ for (int i = 0; i < drive->tracks; ++i)
+ {
+ if (disc_toc[i].dwStartSector != drive->disc_toc[i].dwStartSector ||
+ disc_toc[i].bFlags != drive->disc_toc[i].bFlags ||
+ disc_toc[i].bTrack != drive->disc_toc[i].bTrack) return true;
+ }
+ return false;
+ }
+
+ void setToc(struct cdrom_drive *drive)
+ {
+ for (int i = 0; i < drive->tracks; ++i)
+ {
+ disc_toc[i].dwStartSector = drive->disc_toc[i].dwStartSector;
+ disc_toc[i].bFlags = drive->disc_toc[i].bFlags;
+ disc_toc[i].bTrack = drive->disc_toc[i].bTrack;
+ }
+ }
// The type/which of request
bool req_allTracks;
@@ -134,6 +156,7 @@
QString s_fullCD;
// Current CD
+ TOC disc_toc[MAXTRK];
unsigned discid;
unsigned tracks;
bool trackIsAudio[100];
@@ -216,8 +239,11 @@
// Update our knowledge of the disc
#if defined(HAVE_CDDA_IOCTL_DEVICE)
- if (d->cd.deviceName() != drive->ioctl_device_name)
+ if (d->cd.deviceName() != drive->ioctl_device_name || \
d->tocsAreDifferent(drive)) + {
d->cd.setDevice(drive->ioctl_device_name, 50, false);
+ d->setToc(drive);
+ }
#elif defined(__FreeBSD__) || defined(__DragonFly__)
// FreeBSD's cdparanoia as of january 5th 2006 has rather broken
// support for non-SCSI devices. Although it finds ATA cdroms just
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic