diff --git a/CMakeLists.txt b/CMakeLists.txt
index e4ed90a09..11d4a92ea 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -185,6 +185,7 @@ option(ENABLE_LIBGPOD "iPod classic support" ON)
option(ENABLE_IMOBILEDEVICE "iPod Touch, iPhone, iPad support" ON)
option(ENABLE_LIBMTP "MTP support" ON)
option(ENABLE_GIO "GIO backend" ON)
+option(ENABLE_AUDIOCD "Audio CD support" ON)
option(ENABLE_VISUALISATIONS "Use libprojectm visualisations" ON)
option(BUNDLE_PROJECTM_PRESETS "Install Clementine's own copies of libprojectm presets - disable this if you want to use a system package instead" ON)
option(ENABLE_SOUNDMENU "Add Clementine to the Gnome sound menu" ON)
@@ -207,6 +208,10 @@ if(ENABLE_GIO AND GIO_FOUND AND NOT APPLE)
set(HAVE_GIO ON)
endif(ENABLE_GIO AND GIO_FOUND AND NOT APPLE)
+if(ENABLE_AUDIOCD AND CDIO_FOUND)
+ set(HAVE_AUDIOCD ON)
+endif(ENABLE_AUDIOCD AND CDIO_FOUND)
+
if(ENABLE_IMOBILEDEVICE AND IMOBILEDEVICE_FOUND AND PLIST_FOUND AND HAVE_LIBGPOD AND USBMUXD_FOUND)
set(HAVE_IMOBILEDEVICE ON)
endif(ENABLE_IMOBILEDEVICE AND IMOBILEDEVICE_FOUND AND PLIST_FOUND AND HAVE_LIBGPOD AND USBMUXD_FOUND)
@@ -396,6 +401,7 @@ add_custom_target(uninstall
# Show a summary of what we have enabled
summary_add("Crash reporting" HAVE_BREAKPAD)
summary_add("D-Bus support" HAVE_DBUS)
+summary_add("Devices: Audio CD support" HAVE_AUDIOCD)
summary_add("Devices: DeviceKit backend" HAVE_DEVICEKIT)
summary_add("Devices: iPod classic support" HAVE_LIBGPOD)
summary_add("Devices: iPod Touch, iPhone, iPad support" HAVE_IMOBILEDEVICE)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 8b1e920ca..b45f5d659 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -101,8 +101,6 @@ set(SOURCES
covers/coversearchstatisticsdialog.cpp
covers/kittenloader.cpp
- devices/cddalister.cpp
- devices/cddadevice.cpp
devices/connecteddevice.cpp
devices/devicedatabasebackend.cpp
devices/devicelister.cpp
@@ -327,8 +325,6 @@ set(HEADERS
covers/coversearchstatisticsdialog.h
covers/kittenloader.h
- devices/cddalister.h
- devices/cddadevice.h
devices/connecteddevice.h
devices/devicedatabasebackend.h
devices/devicelister.h
@@ -776,6 +772,15 @@ if(HAVE_GIO)
list(APPEND HEADERS devices/giolister.h)
endif(HAVE_GIO)
+# CDIO backend and device
+if(HAVE_AUDIOCD)
+ list(APPEND SOURCES devices/cddadevice.cpp)
+ list(APPEND SOURCES devices/cddalister.cpp)
+
+ list(APPEND HEADERS devices/cddadevice.h)
+ list(APPEND HEADERS devices/cddalister.h)
+endif(HAVE_AUDIOCD)
+
# libimobiledevice backend and device
if(HAVE_IMOBILEDEVICE)
include_directories(${IMOBILEDEVICE_INCLUDE_DIRS})
@@ -870,6 +875,10 @@ list(APPEND OTHER_SOURCES
devices/afcfile.h
devices/afctransfer.cpp
devices/afctransfer.h
+ devices/cddadevice.cpp
+ devices/cddadevice.h
+ devices/cddalister.cpp
+ devices/cddalister.h
devices/devicekitlister.h
devices/devicekitlister.cpp
devices/gpoddevice.cpp
@@ -967,13 +976,11 @@ target_link_libraries(clementine_lib
${GSTREAMER_BASE_LIBRARIES}
${GSTREAMER_LIBRARIES}
${GSTREAMER_APP_LIBRARIES}
- ${GSTREAMER_CDDA_LIBRARIES}
${GSTREAMER_TAG_LIBRARIES}
${QTSINGLEAPPLICATION_LIBRARIES}
${QTSINGLECOREAPPLICATION_LIBRARIES}
${QTIOCOMPRESSOR_LIBRARIES}
${CMAKE_THREAD_LIBS_INIT}
- ${CDIO_LIBRARIES}
dl
z
)
@@ -994,6 +1001,11 @@ if(HAVE_GIO)
target_link_libraries(clementine_lib ${GIO_LIBRARIES})
endif(HAVE_GIO)
+if(HAVE_AUDIOCD)
+ target_link_libraries(clementine_lib ${CDIO_LIBRARIES})
+ target_link_libraries(clementine_lib ${GSTREAMER_CDDA_LIBRARIES})
+endif(HAVE_AUDIOCD)
+
if(HAVE_LIBARCHIVE)
target_link_libraries(clementine_lib ${ARCHIVE_LIBRARIES})
endif(HAVE_LIBARCHIVE)
diff --git a/src/config.h.in b/src/config.h.in
index 8c830cbfd..373cba287 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -21,6 +21,7 @@
#define CMAKE_EXECUTABLE_SUFFIX "${CMAKE_EXECUTABLE_SUFFIX}"
#cmakedefine ENABLE_VISUALISATIONS
+#cmakedefine HAVE_AUDIOCD
#cmakedefine HAVE_BREAKPAD
#cmakedefine HAVE_DBUS
#cmakedefine HAVE_DEVICEKIT
diff --git a/src/core/songloader.cpp b/src/core/songloader.cpp
index 7fc9d0ac5..15c24ffdf 100644
--- a/src/core/songloader.cpp
+++ b/src/core/songloader.cpp
@@ -15,6 +15,7 @@
along with Clementine. If not, see .
*/
+#include "config.h"
#include "songloader.h"
#include "core/logging.h"
#include "core/song.h"
@@ -35,7 +36,10 @@
#include
-#include
+#ifdef HAVE_AUDIOCD
+# include
+#endif
+
QSet SongLoader::sRawUriSchemes;
const int SongLoader::kDefaultTimeout = 5000;
@@ -102,6 +106,7 @@ SongLoader::Result SongLoader::LoadLocalPartial(const QString& filename) {
}
SongLoader::Result SongLoader::LoadAudioCD() {
+#ifdef HAVE_AUDIOCD
// Create gstreamer cdda element
GstElement* cdda = gst_element_make_from_uri (GST_URI_SRC, "cdda://", NULL);
if (cdda == NULL) {
@@ -176,7 +181,10 @@ SongLoader::Result SongLoader::LoadAudioCD() {
gst_object_unref(GST_OBJECT(msg));
gst_object_unref(GST_OBJECT(tags));
- return Success;
+ return Success;
+#else // HAVE_AUDIOCD
+ return Error;
+#endif
}
void SongLoader::AudioCDTagsLoaded(const QString& artist, const QString& album,
diff --git a/src/devices/devicemanager.cpp b/src/devices/devicemanager.cpp
index ff1958041..77a8e3925 100644
--- a/src/devices/devicemanager.cpp
+++ b/src/devices/devicemanager.cpp
@@ -27,8 +27,10 @@
#include "core/utilities.h"
#include "ui/iconloader.h"
-#include "cddalister.h"
-#include "cddadevice.h"
+#ifdef HAVE_AUDIOCD
+# include "cddalister.h"
+# include "cddadevice.h"
+#endif
#ifdef Q_OS_DARWIN
# include "macdevicelister.h"
@@ -186,7 +188,9 @@ DeviceManager::DeviceManager(BackgroundThread* database,
connected_devices_model_ = new DeviceStateFilterModel(this);
connected_devices_model_->setSourceModel(this);
+#ifdef HAVE_AUDIOCD
AddLister(new CddaLister);
+#endif
#ifdef HAVE_DEVICEKIT
AddLister(new DeviceKitLister);
#endif
@@ -205,9 +209,12 @@ DeviceManager::DeviceManager(BackgroundThread* database,
AddDeviceClass();
#endif
- AddDeviceClass();
AddDeviceClass();
+#ifdef HAVE_AUDIOCD
+ AddDeviceClass();
+#endif
+
#ifdef HAVE_LIBGPOD
AddDeviceClass();
#endif
@@ -310,8 +317,16 @@ QVariant DeviceManager::data(const QModelIndex& index, int role) const {
if (!info.device_) {
if (info.database_id_ == -1 &&
!info.BestBackend()->lister_->DeviceNeedsMount(info.BestBackend()->unique_id_)) {
- // Don't ask user if it is a CD device
- if (info.device_ && !dynamic_cast(info.device_.get())) {
+
+ bool prompt_connect = info.device_;
+
+ #ifdef HAVE_AUDIOCD
+ // Don't ask user if it is a CD device
+ prompt_connect = prompt_connect &&
+ !dynamic_cast(info.device_.get());
+ #endif
+
+ if (prompt_connect) {
boost::scoped_ptr dialog(new QMessageBox(
QMessageBox::Information, tr("Connect device"),
tr("This is the first time you have connected this device. Clementine will now scan the device to find music files - this may take some time."),