Removing Ripper dependence on cdio

and therefore no longer exposing cdio through CddaDevice
This commit is contained in:
Lukas Prediger 2021-09-24 19:00:47 +03:00 committed by John Maguire
parent 0895297297
commit cefe81d0c1
5 changed files with 7 additions and 16 deletions

View File

@ -60,8 +60,6 @@ bool CddaDevice::Init() {
CddaSongLoader* CddaDevice::loader() { return &cdda_song_loader_; } CddaSongLoader* CddaDevice::loader() { return &cdda_song_loader_; }
CdIo_t* CddaDevice::raw_cdio() { return cdio_; }
bool CddaDevice::IsValid() const { return (cdio_ != nullptr); } bool CddaDevice::IsValid() const { return (cdio_ != nullptr); }
void CddaDevice::WatchForDiscChanges(bool watch) { void CddaDevice::WatchForDiscChanges(bool watch) {

View File

@ -49,8 +49,6 @@ class CddaDevice : public ConnectedDevice {
return false; return false;
} }
CddaSongLoader* loader(); CddaSongLoader* loader();
// Access to the raw cdio device handle.
CdIo_t* raw_cdio(); // TODO: not ideal, but Ripper needs this currently
// Check whether a valid device handle was opened. // Check whether a valid device handle was opened.
bool IsValid() const; bool IsValid() const;
void WatchForDiscChanges(bool watch); void WatchForDiscChanges(bool watch);

View File

@ -210,7 +210,7 @@ void RipCDDialog::ClickedRipButton() {
ui_->destination->itemData(ui_->destination->currentIndex()).toString()); ui_->destination->itemData(ui_->destination->currentIndex()).toString());
// create and connect Ripper instance for this task // create and connect Ripper instance for this task
Ripper* ripper = new Ripper(cdda_device_->raw_cdio(), this); Ripper* ripper = new Ripper(cdda_device_->song_count(), this);
connect(cancel_button_, SIGNAL(clicked()), ripper, SLOT(Cancel())); connect(cancel_button_, SIGNAL(clicked()), ripper, SLOT(Cancel()));
connect(ripper, &Ripper::Finished, this, connect(ripper, &Ripper::Finished, this,

View File

@ -40,15 +40,15 @@ const char kWavFileTypeFormatChunk[] = "WAVEfmt ";
const char kWavDataString[] = "data"; const char kWavDataString[] = "data";
} // namespace } // namespace
Ripper::Ripper(CdIo_t* cdio, QObject* parent) Ripper::Ripper(int track_count, QObject* parent)
: QObject(parent), : QObject(parent),
cdio_(cdio), track_count_(track_count),
transcoder_(new Transcoder(this)), transcoder_(new Transcoder(this)),
cancel_requested_(false), cancel_requested_(false),
finished_success_(0), finished_success_(0),
finished_failed_(0), finished_failed_(0),
files_tagged_(0) { files_tagged_(0) {
Q_ASSERT(cdio_); // TODO: error handling Q_ASSERT(track_count >= 0);
transcoder_->set_max_threads(1); // we want transcoder to read only one song transcoder_->set_max_threads(1); // we want transcoder to read only one song
// at once from disc to prevent seeking // at once from disc to prevent seeking
@ -84,12 +84,7 @@ void Ripper::SetAlbumInformation(const QString& album, const QString& artist,
album_.type = type; album_.type = type;
} }
int Ripper::TracksOnDisc() const { int Ripper::TracksOnDisc() const { return track_count_; }
int number_of_tracks = cdio_get_num_tracks(cdio_);
// Return zero tracks if there is an error, e.g. no medium found.
if (number_of_tracks == CDIO_INVALID_TRACK) number_of_tracks = 0;
return number_of_tracks;
}
int Ripper::AddedTracks() const { return tracks_.length(); } int Ripper::AddedTracks() const { return tracks_.length(); }

View File

@ -40,7 +40,7 @@ class Ripper : public QObject {
Q_OBJECT Q_OBJECT
public: public:
explicit Ripper(CdIo_t* cdio, QObject* parent = nullptr); explicit Ripper(int track_count, QObject* parent = nullptr);
~Ripper(); ~Ripper();
// Adds a track to the rip list if the track number corresponds to a // Adds a track to the rip list if the track number corresponds to a
@ -113,7 +113,7 @@ class Ripper : public QObject {
void UpdateProgress(); void UpdateProgress();
void TagFiles(); void TagFiles();
CdIo_t* cdio_; int track_count_;
Transcoder* transcoder_; Transcoder* transcoder_;
bool cancel_requested_; bool cancel_requested_;
QMutex mutex_; QMutex mutex_;