diff --git a/src/devices/cddadevice.cpp b/src/devices/cddadevice.cpp index 18b818ae3..baf452e03 100644 --- a/src/devices/cddadevice.cpp +++ b/src/devices/cddadevice.cpp @@ -57,6 +57,8 @@ void CddaDevice::Refresh() {} CddaSongLoader* CddaDevice::loader() { return &cdda_song_loader_; } +CdIo_t* CddaDevice::raw_cdio() { return cdio_; } + void CddaDevice::WatchForDiscChanges(bool watch) { if (watch && !disc_changed_timer_.isActive()) disc_changed_timer_.start(CddaDevice::kDiscChangePollingIntervalMs); diff --git a/src/devices/cddadevice.h b/src/devices/cddadevice.h index e828ec38e..b0da94fd1 100644 --- a/src/devices/cddadevice.h +++ b/src/devices/cddadevice.h @@ -43,6 +43,7 @@ class CddaDevice : public ConnectedDevice { bool CopyToStorage(const MusicStorage::CopyJob&) { return false; } bool DeleteFromStorage(const MusicStorage::DeleteJob&) { return false; } CddaSongLoader* loader(); + CdIo_t* raw_cdio(); // TODO: not ideal, but Ripper needs this currently void WatchForDiscChanges(bool watch); static const int kDiscChangePollingIntervalMs; diff --git a/src/ripper/ripcddialog.cpp b/src/ripper/ripcddialog.cpp index ce13c44f9..bc23ad2df 100644 --- a/src/ripper/ripcddialog.cpp +++ b/src/ripper/ripcddialog.cpp @@ -56,10 +56,10 @@ RipCDDialog::RipCDDialog(std::shared_ptr cdda_device, QWidget* parent) : QDialog(parent), ui_(new Ui_RipCDDialog), - ripper_(new Ripper(this)), working_(false), cdda_device_(std::move(cdda_device)), - loader_(cdda_device_->loader()) { + loader_(cdda_device_->loader()), + ripper_(new Ripper(cdda_device_->raw_cdio(), this)) { Q_ASSERT(cdda_device_); // Init ui_->setupUi(this); diff --git a/src/ripper/ripcddialog.h b/src/ripper/ripcddialog.h index 8bc659f28..2da0a1ee0 100644 --- a/src/ripper/ripcddialog.h +++ b/src/ripper/ripcddialog.h @@ -42,7 +42,6 @@ class RipCDDialog : public QDialog { explicit RipCDDialog(std::shared_ptr cdda_device, QWidget* parent = nullptr); ~RipCDDialog(); - bool CheckCDIOIsValid(); protected: void closeEvent(QCloseEvent* event); @@ -88,9 +87,9 @@ class RipCDDialog : public QDialog { QPushButton* close_button_; QPushButton* rip_button_; std::unique_ptr ui_; - Ripper* ripper_; bool working_; std::shared_ptr cdda_device_; CddaSongLoader* loader_; + Ripper* ripper_; }; #endif // SRC_RIPPER_RIPCDDIALOG_H_ diff --git a/src/ripper/ripper.cpp b/src/ripper/ripper.cpp index 1dc523acb..a05f58413 100644 --- a/src/ripper/ripper.cpp +++ b/src/ripper/ripper.cpp @@ -38,15 +38,15 @@ const char kWavFileTypeFormatChunk[] = "WAVEfmt "; const char kWavDataString[] = "data"; } // namespace -Ripper::Ripper(QObject* parent) +Ripper::Ripper(CdIo_t* cdio, QObject* parent) : QObject(parent), + cdio_(cdio), transcoder_(new Transcoder(this)), cancel_requested_(false), finished_success_(0), finished_failed_(0), files_tagged_(0) { - cdio_ = cdio_open(NULL, DRIVER_UNKNOWN); - + Q_ASSERT(cdio_); // TODO: error handling connect(transcoder_, SIGNAL(JobComplete(QString, QString, bool)), SLOT(TranscodingJobComplete(QString, QString, bool))); connect(transcoder_, SIGNAL(AllJobsComplete()), @@ -54,7 +54,7 @@ Ripper::Ripper(QObject* parent) connect(transcoder_, SIGNAL(LogLine(QString)), SLOT(LogLine(QString))); } -Ripper::~Ripper() { cdio_destroy(cdio_); } +Ripper::~Ripper() {} void Ripper::AddTrack(int track_number, const QString& title, const QString& transcoded_filename, @@ -89,23 +89,6 @@ int Ripper::AddedTracks() const { return tracks_.length(); } void Ripper::ClearTracks() { tracks_.clear(); } -bool Ripper::CheckCDIOIsValid() { - if (cdio_) { - cdio_destroy(cdio_); - } - cdio_ = cdio_open(NULL, DRIVER_UNKNOWN); - // Refresh the status of the cd media. This will prevent unnecessary - // rebuilds of the track list table. - if (cdio_) { - cdio_get_media_changed(cdio_); - } - return cdio_; -} - -bool Ripper::MediaChanged() const { - return cdio_ && cdio_get_media_changed(cdio_); -} - void Ripper::Start() { { QMutexLocker l(&mutex_); diff --git a/src/ripper/ripper.h b/src/ripper/ripper.h index 2a356ff05..3bf8dd98f 100644 --- a/src/ripper/ripper.h +++ b/src/ripper/ripper.h @@ -40,7 +40,7 @@ class Ripper : public QObject { Q_OBJECT public: - explicit Ripper(QObject* parent = nullptr); + explicit Ripper(CdIo_t* cdio, QObject* parent = nullptr); ~Ripper(); // Adds a track to the rip list if the track number corresponds to a @@ -60,10 +60,6 @@ class Ripper : public QObject { int AddedTracks() const; // Clears the rip list. void ClearTracks(); - // Returns true if a cd device was successfully opened. - bool CheckCDIOIsValid(); - // Returns true if the cd media has changed. - bool MediaChanged() const; signals: void Finished();