diff --git a/src/devices/cddadevice.cpp b/src/devices/cddadevice.cpp index 8e10a3c9d..18b818ae3 100644 --- a/src/devices/cddadevice.cpp +++ b/src/devices/cddadevice.cpp @@ -55,6 +55,8 @@ void CddaDevice::Init() { LoadSongs(); } void CddaDevice::Refresh() {} +CddaSongLoader* CddaDevice::loader() { return &cdda_song_loader_; } + 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 c60bb3179..e828ec38e 100644 --- a/src/devices/cddadevice.h +++ b/src/devices/cddadevice.h @@ -42,6 +42,7 @@ class CddaDevice : public ConnectedDevice { void Refresh(); bool CopyToStorage(const MusicStorage::CopyJob&) { return false; } bool DeleteFromStorage(const MusicStorage::DeleteJob&) { return false; } + CddaSongLoader* loader(); void WatchForDiscChanges(bool watch); static const int kDiscChangePollingIntervalMs; diff --git a/src/ripper/ripcddialog.cpp b/src/ripper/ripcddialog.cpp index 32f4e2b86..ce13c44f9 100644 --- a/src/ripper/ripcddialog.cpp +++ b/src/ripper/ripcddialog.cpp @@ -58,10 +58,9 @@ RipCDDialog::RipCDDialog(std::shared_ptr cdda_device, ui_(new Ui_RipCDDialog), ripper_(new Ripper(this)), working_(false), - loader_(nullptr), - cdda_device_(std::move(cdda_device)) { + cdda_device_(std::move(cdda_device)), + loader_(cdda_device_->loader()) { Q_ASSERT(cdda_device_); - loader_ = new CddaSongLoader(cdda_device_->url(), this); // Init ui_->setupUi(this); diff --git a/src/ripper/ripcddialog.h b/src/ripper/ripcddialog.h index 9e29fc8ac..8bc659f28 100644 --- a/src/ripper/ripcddialog.h +++ b/src/ripper/ripcddialog.h @@ -90,7 +90,7 @@ class RipCDDialog : public QDialog { std::unique_ptr ui_; Ripper* ripper_; bool working_; - CddaSongLoader* loader_; std::shared_ptr cdda_device_; + CddaSongLoader* loader_; }; #endif // SRC_RIPPER_RIPCDDIALOG_H_