Make visualisations optional.

Update issue #394
Status: Fixed
There's now an ENABLE_VISUALISATIONS option that you can set to cmake with cmake -DENABLE_VISUALISATIONS=OFF, or with ccmake or cmake-gui.
This commit is contained in:
David Sansome 2010-06-10 22:48:23 +00:00
parent 15df3b90a3
commit 76f0803b81
6 changed files with 72 additions and 49 deletions

View File

@ -7,36 +7,27 @@ include(CheckCXXCompilerFlag)
cmake_policy(SET CMP0005 OLD)
OPTION (USE_DEVIL "Use devIL for image loading rather than the builtin SOIL library" OFF)
OPTION (USE_FBO "Use Framebuffer Objects for increased rendering quality. Disable this for OpenGL ES 1.x or if you are experiencing problems on older or poorly supported hardware." ON)
OPTION(USE_FTGL "Use FTGL for on-screen fonts (found on your system)" OFF)
OPTION (USE_GLES1 "Use OpenGL ES 1.x" OFF)
OPTION (USE_THREADS "Use threads for parallelization" OFF)
OPTION (USE_OPENMP "Use OpenMP and OMPTL for multi-core parallelization" ON)
OPTION (USE_NATIVE_GLEW "Use projectM's native implemention of GLEW." OFF)
OPTION (USE_CG "Use Cg for Pixel Shader support" OFF)
OPTION (BUILD_PROJECTM_STATIC "Build the projectM target library in the platform's native static (NOT shared) format." ON)
OPTION (DISABLE_NATIVE_PRESETS "Turn off support for native (C++ style) presets" OFF)
OPTION (DISABLE_MILKDROP_PRESETS "Turn off support for Milkdrop (.milk / .prjm) presets" OFF)
set(USE_DEVIL OFF)
set(USE_FBO ON)
set(USE_FTGL OFF)
set(USE_GLES1 OFF)
set(USE_THREADS OFF)
set(USE_OPENMP ON)
set(USE_NATIVE_GLEW OFF)
set(USE_CG OFF)
set(BUILD_PROJECTM_STATIC ON)
set(DISABLE_NATIVE_PRESETS OFF)
set(DISABLE_MILKDROP_PRESETS OFF)
ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="\\\"${CMAKE_INSTALL_PREFIX}\\\"")
if (USE_NATIVE_GLEW)
ADD_DEFINITIONS(-DUSE_NATIVE_GLEW)
SET(GLEW_SOURCES glew.h glew.c)
SET(GLEW_LINK_TARGETS )
SET(GLEW_LIBRARIES )
else(USE_NATIVE_GLEW)
SET(GLEW_SOURCES )
find_library(GLEW_LINK_TARGETS NAMES glew GLEW glew32)
find_library(GLEW_LIBRARIES NAMES glew GLEW glew32)
endif(USE_NATIVE_GLEW)
SET(projectM_SOURCES projectM.cpp PCM.cpp Preset.cpp fftsg.cpp KeyHandler.cpp
@ -150,10 +141,10 @@ else(MSVC)
endif(MSVC)
if(BUILD_PROJECTM_STATIC)
TARGET_LINK_LIBRARIES(projectM ${GLEW_LINK_TARGETS} ${MATH_LIBRARIES} ${FTGL_LINK_TARGETS} ${OPENGL_LIBRARIES} ${IMAGE_LINK_TARGETS} ${CG_LINK_TARGETS} ${PRESET_FACTORY_LINK_TARGETS})
TARGET_LINK_LIBRARIES(projectM ${GLEW_LIBRARIES} ${MATH_LIBRARIES} ${FTGL_LINK_TARGETS} ${OPENGL_LIBRARIES} ${IMAGE_LINK_TARGETS} ${CG_LINK_TARGETS} ${PRESET_FACTORY_LINK_TARGETS})
else(BUILD_PROJECTM_STATIC)
TARGET_LINK_LIBRARIES(projectM ${GLEW_LINK_TARGETS} ${MATH_LIBRARIES} ${FTGL_LINK_TARGETS} ${OPENGL_LIBRARIES} ${IMAGE_LINK_TARGETS} ${CG_LINK_TARGETS} ${PRESET_FACTORY_LINK_TARGETS})
TARGET_LINK_LIBRARIES(projectM ${GLEW_LIBRARIES} ${MATH_LIBRARIES} ${FTGL_LINK_TARGETS} ${OPENGL_LIBRARIES} ${IMAGE_LINK_TARGETS} ${CG_LINK_TARGETS} ${PRESET_FACTORY_LINK_TARGETS})
endif(BUILD_PROJECTM_STATIC)

View File

@ -107,6 +107,12 @@ if(NOT GETTEXT_XGETTEXT_EXECUTABLE)
message(FATAL_ERROR "Could not find xgettext executable")
endif(NOT GETTEXT_XGETTEXT_EXECUTABLE)
# Optional bits
option(ENABLE_VISUALISATIONS "Use libprojectm visualisations" ON)
if(ENABLE_VISUALISATIONS)
add_subdirectory(3rdparty/libprojectm)
endif(ENABLE_VISUALISATIONS)
# Subdirectories
add_subdirectory(3rdparty/qtsingleapplication)
add_subdirectory(3rdparty/qtiocompressor)
@ -115,7 +121,6 @@ if (NOT APPLE)
add_subdirectory(3rdparty/qxt)
endif (NOT APPLE)
add_subdirectory(3rdparty/universalchardet)
add_subdirectory(3rdparty/libprojectm)
add_subdirectory(tests)
add_subdirectory(dist)

View File

@ -113,12 +113,6 @@ set(SOURCES
ui/settingsdialog.cpp
ui/systemtrayicon.cpp
visualisations/projectmpresetmodel.cpp
visualisations/projectmvisualisation.cpp
visualisations/visualisationcontainer.cpp
visualisations/visualisationoverlay.cpp
visualisations/visualisationselector.cpp
widgets/autoexpandingtreeview.cpp
widgets/busyindicator.cpp
widgets/equalizerslider.cpp
@ -215,12 +209,6 @@ set(HEADERS
ui/settingsdialog.h
ui/systemtrayicon.h
visualisations/projectmpresetmodel.h
visualisations/projectmvisualisation.h
visualisations/visualisationcontainer.h
visualisations/visualisationoverlay.h
visualisations/visualisationselector.h
widgets/autoexpandingtreeview.h
widgets/busyindicator.h
widgets/equalizerslider.h
@ -265,9 +253,6 @@ set(UI
ui/mainwindow.ui
ui/settingsdialog.ui
visualisations/visualisationoverlay.ui
visualisations/visualisationselector.ui
widgets/equalizerslider.ui
widgets/errordialog.ui
widgets/fileview.ui
@ -321,6 +306,28 @@ add_engine(xine LIBXINE "${XINE_ENGINE_SRC}" "${XINE_ENGINE_MOC}" OFF)
add_engine(qt-phonon QT_PHONON engines/phononengine.cpp engines/phononengine.h OFF)
print_engines()
# Visualisations
if(ENABLE_VISUALISATIONS)
list(APPEND SOURCES
visualisations/projectmpresetmodel.cpp
visualisations/projectmvisualisation.cpp
visualisations/visualisationcontainer.cpp
visualisations/visualisationoverlay.cpp
visualisations/visualisationselector.cpp
)
list(APPEND HEADERS
visualisations/projectmpresetmodel.h
visualisations/projectmvisualisation.h
visualisations/visualisationcontainer.h
visualisations/visualisationoverlay.h
visualisations/visualisationselector.h
)
list(APPEND UI
visualisations/visualisationoverlay.ui
visualisations/visualisationselector.ui
)
endif(ENABLE_VISUALISATIONS)
# OSDs
if(APPLE)
list(APPEND SOURCES widgets/osd_mac.mm)
@ -390,7 +397,6 @@ target_link_libraries(clementine_lib
qtsingleapplication
qtiocompressor
chardet
projectM
${GOBJECT_LIBRARIES}
${GLIB_LIBRARIES}
${TAGLIB_LIBRARIES}
@ -399,6 +405,10 @@ target_link_libraries(clementine_lib
${LASTFM_LIBRARIES}
)
if(ENABLE_VISUALISATIONS)
target_link_libraries(clementine_lib projectM)
endif(ENABLE_VISUALISATIONS)
if (APPLE)
target_link_libraries(clementine_lib
${GROWL}

View File

@ -25,6 +25,8 @@
#define CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}"
#cmakedefine ENABLE_VISUALISATIONS
#cmakedefine HAVE_GSTREAMER
#cmakedefine HAVE_LIBVLC
#cmakedefine HAVE_LIBXINE

View File

@ -14,7 +14,6 @@
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
*/
#include "config.h"
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "core/commandlineoptions.h"
@ -50,7 +49,6 @@
#include "ui/iconloader.h"
#include "ui/settingsdialog.h"
#include "ui/systemtrayicon.h"
#include "visualisations/visualisationcontainer.h"
#include "widgets/errordialog.h"
#include "widgets/multiloadingindicator.h"
#include "widgets/osd.h"
@ -60,6 +58,10 @@
# include "engines/gstengine.h"
#endif
#ifdef ENABLE_VISUALISATIONS
# include "visualisations/visualisationcontainer.h"
#endif
#include <QFileSystemModel>
#include <QSortFilterProxyModel>
#include <QUndoStack>
@ -118,7 +120,9 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
transcode_dialog_(new TranscodeDialog),
global_shortcuts_dialog_(new GlobalShortcutsDialog(global_shortcuts_)),
error_dialog_(new ErrorDialog),
#ifdef ENABLE_VISUALISATIONS
visualisation_(new VisualisationContainer),
#endif
playlist_menu_(new QMenu(this)),
library_sort_model_(new QSortFilterProxyModel(this)),
track_position_timer_(new QTimer(this)),
@ -155,9 +159,11 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
#ifdef HAVE_GSTREAMER
if (GstEngine* engine = qobject_cast<GstEngine*>(player_->GetEngine())) {
settings_dialog_->SetGstEngine(engine);
visualisation_->SetEngine(engine);
# ifdef ENABLE_VISUALISATIONS
visualisation_->SetEngine(engine);
# endif
}
#endif
#endif // HAVE_GSTREAMER
// Models
library_sort_model_->setSourceModel(library_->model());
@ -237,7 +243,6 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
connect(ui_->action_configure_global_shortcuts, SIGNAL(triggered()), global_shortcuts_dialog_.get(), SLOT(show()));
connect(ui_->action_jump, SIGNAL(triggered()), ui_->playlist->view(), SLOT(JumpToCurrentlyPlayingTrack()));
connect(ui_->action_update_library, SIGNAL(triggered()), library_, SLOT(IncrementalScan()));
connect(ui_->action_visualisations, SIGNAL(triggered()), visualisation_.get(), SLOT(show()));
// Give actions to buttons
ui_->forward_button->setDefaultAction(ui_->action_next_track);
@ -249,8 +254,17 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
ui_->clear_playlist_button->setDefaultAction(ui_->action_clear_playlist);
ui_->playlist->SetActions(ui_->action_new_playlist, ui_->action_save_playlist,
ui_->action_load_playlist);
#ifdef ENABLE_VISUALISATIONS
visualisation_->SetActions(ui_->action_previous_track, ui_->action_play_pause,
ui_->action_stop, ui_->action_next_track);
connect(ui_->action_visualisations, SIGNAL(triggered()), visualisation_.get(), SLOT(show()));
connect(player_, SIGNAL(Stopped()), visualisation_.get(), SLOT(Stopped()));
connect(player_, SIGNAL(ForceShowOSD(Song)), visualisation_.get(), SLOT(SongMetadataChanged(Song)));
connect(playlists_, SIGNAL(CurrentSongChanged(Song)), visualisation_.get(), SLOT(SongMetadataChanged(Song)));
#else
ui_->action_visualisations->setEnabled(false);
#endif
// Add the shuffle and repeat action groups to the menu
ui_->action_shuffle_mode->setMenu(playlist_sequence_->shuffle_menu());
@ -283,15 +297,12 @@ MainWindow::MainWindow(NetworkAccessManager* network, Engine::Type engine, QWidg
connect(player_, SIGNAL(Paused()), osd_, SLOT(Paused()));
connect(player_, SIGNAL(Stopped()), osd_, SLOT(Stopped()));
connect(player_, SIGNAL(Stopped()), visualisation_.get(), SLOT(Stopped()));
connect(player_, SIGNAL(PlaylistFinished()), osd_, SLOT(PlaylistFinished()));
connect(player_, SIGNAL(VolumeChanged(int)), osd_, SLOT(VolumeChanged(int)));
connect(player_, SIGNAL(VolumeChanged(int)), ui_->volume, SLOT(setValue(int)));
connect(player_, SIGNAL(ForceShowOSD(Song)), SLOT(ForceShowOSD(Song)));
connect(player_, SIGNAL(ForceShowOSD(Song)), visualisation_.get(), SLOT(SongMetadataChanged(Song)));
connect(playlists_, SIGNAL(CurrentSongChanged(Song)), osd_, SLOT(SongChanged(Song)));
connect(playlists_, SIGNAL(CurrentSongChanged(Song)), player_, SLOT(CurrentMetadataChanged(Song)));
connect(playlists_, SIGNAL(CurrentSongChanged(Song)), visualisation_.get(), SLOT(SongMetadataChanged(Song)));
connect(playlists_, SIGNAL(PlaylistChanged()), player_, SLOT(PlaylistChanged()));
connect(playlists_, SIGNAL(EditingFinished(QModelIndex)), SLOT(PlaylistEditFinished(QModelIndex)));
connect(playlists_, SIGNAL(Error(QString)), error_dialog_.get(), SLOT(ShowMessage(QString)));

View File

@ -23,6 +23,7 @@
#include <QSettings>
#include <QSystemTrayIcon>
#include "config.h"
#include "engines/engine_fwd.h"
#include "library/librarymodel.h"
#include "playlist/playlistitem.h"
@ -177,7 +178,10 @@ class MainWindow : public QMainWindow {
boost::scoped_ptr<TranscodeDialog> transcode_dialog_;
boost::scoped_ptr<GlobalShortcutsDialog> global_shortcuts_dialog_;
boost::scoped_ptr<ErrorDialog> error_dialog_;
#ifdef ENABLE_VISUALISATIONS
boost::scoped_ptr<VisualisationContainer> visualisation_;
#endif
QMenu* playlist_menu_;
QAction* playlist_play_pause_;