summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUwe Klotz <uklotz@mixxx.org>2020-09-27 22:24:21 +0200
committerUwe Klotz <uklotz@mixxx.org>2020-09-28 01:41:55 +0200
commit119f3f2f0acd006e7aac800de6ea55ef71d6f3a2 (patch)
tree42da11eff214c1e28973631023b19736095c6d28
parentcdc5d213daed22d28026ea78d42dd59066639ea2 (diff)
Externalize forward declarations for Track object
...to reduce compile time dependencies
-rw-r--r--src/library/externaltrackcollection.h4
-rw-r--r--src/mixxx.h2
-rw-r--r--src/sources/audiosourcetrackproxy.h2
-rw-r--r--src/sources/soundsourceproxy.h5
-rw-r--r--src/test/beatgridtest.cpp2
-rw-r--r--src/test/beatmaptest.cpp4
-rw-r--r--src/test/globaltrackcache_test.cpp7
-rw-r--r--src/test/soundproxy_test.cpp2
-rw-r--r--src/track/beatfactory.h2
-rw-r--r--src/track/beatgrid.cpp4
-rw-r--r--src/track/beatgrid.h4
-rw-r--r--src/track/beatmap.cpp8
-rw-r--r--src/track/beatmap.h4
-rw-r--r--src/track/cue.h2
-rw-r--r--src/track/globaltrackcache.cpp1
-rw-r--r--src/track/globaltrackcache.h4
-rw-r--r--src/track/keyfactory.h6
-rw-r--r--src/track/track.h17
-rw-r--r--src/track/track_decl.h21
-rw-r--r--src/track/trackiterator.h3
-rw-r--r--src/util/dnd.h3
-rw-r--r--src/util/itemiterator.h1
-rw-r--r--src/waveform/renderers/glvsynctestrenderer.cpp3
-rw-r--r--src/waveform/renderers/glwaveformrendererrgb.cpp7
-rw-r--r--src/waveform/renderers/glwaveformrenderersimplesignal.cpp1
-rw-r--r--src/waveform/renderers/qtvsynctestrenderer.cpp5
-rw-r--r--src/waveform/renderers/waveformwidgetrenderer.cpp1
-rw-r--r--src/waveform/renderers/waveformwidgetrenderer.h3
-rw-r--r--src/widget/wtrackmenu.h2
29 files changed, 77 insertions, 53 deletions
diff --git a/src/library/externaltrackcollection.h b/src/library/externaltrackcollection.h
index 92b24ae6b0..64aaa794b4 100644
--- a/src/library/externaltrackcollection.h
+++ b/src/library/externaltrackcollection.h
@@ -4,12 +4,12 @@
#include <QList>
#include <QString>
-#include "preferences/usersettings.h"
#include "library/relocatedtrack.h"
+#include "preferences/usersettings.h"
+#include "track/track_decl.h"
class Library;
class LibraryFeature;
-class Track;
// This interface and base class enable to synchronize external
// track collections with Mixxx. It provides methods that will
diff --git a/src/mixxx.h b/src/mixxx.h
index 7fb3c2a683..dea2bc6bfa 100644
--- a/src/mixxx.h
+++ b/src/mixxx.h
@@ -9,7 +9,7 @@
#include "preferences/constants.h"
#include "preferences/usersettings.h"
#include "soundio/sounddeviceerror.h"
-#include "track/track.h"
+#include "track/track_decl.h"
#include "util/cmdlineargs.h"
#include "util/db/dbconnectionpool.h"
#include "util/parented_ptr.h"
diff --git a/src/sources/audiosourcetrackproxy.h b/src/sources/audiosourcetrackproxy.h
index 766cdcf9f1..dca3f58b49 100644
--- a/src/sources/audiosourcetrackproxy.h
+++ b/src/sources/audiosourcetrackproxy.h
@@ -1,7 +1,7 @@
#pragma once
#include "sources/audiosourceproxy.h"
-#include "track/track.h"
+#include "track/track_decl.h"
namespace mixxx {
diff --git a/src/sources/soundsourceproxy.h b/src/sources/soundsourceproxy.h
index 43d2dc5b97..10f14d53a9 100644
--- a/src/sources/soundsourceproxy.h
+++ b/src/sources/soundsourceproxy.h
@@ -1,8 +1,9 @@
#pragma once
-#include "track/track.h"
-
#include "sources/soundsourceproviderregistry.h"
+#include "track/track_decl.h"
+#include "track/trackfile.h"
+#include "util/sandbox.h"
// Creates sound sources for tracks. Only intended to be used
// in a narrow scope and not shareable between multiple threads!
diff --git a/src/test/beatgridtest.cpp b/src/test/beatgridtest.cpp
index d8c1f88c48..780aeb11b9 100644
--- a/src/test/beatgridtest.cpp
+++ b/src/test/beatgridtest.cpp
@@ -1,7 +1,9 @@
#include <gtest/gtest.h>
+
#include <QtDebug>
#include "track/beatgrid.h"
+#include "track/track.h"
#include "util/memory.h"
using namespace mixxx;
diff --git a/src/test/beatmaptest.cpp b/src/test/beatmaptest.cpp
index 4692fc191d..5cbafa71d3 100644
--- a/src/test/beatmaptest.cpp
+++ b/src/test/beatmaptest.cpp
@@ -1,8 +1,10 @@
#include <gtest/gtest.h>
+#include <memory.h>
+
#include <QtDebug>
#include "track/beatmap.h"
-#include "util/memory.h"
+#include "track/track.h"
using namespace mixxx;
diff --git a/src/test/globaltrackcache_test.cpp b/src/test/globaltrackcache_test.cpp
index fb7e7ceec0..7e98b4bae9 100644
--- a/src/test/globaltrackcache_test.cpp
+++ b/src/test/globaltrackcache_test.cpp
@@ -1,12 +1,11 @@
+#include "track/globaltrackcache.h"
+
#include <QThread>
#include <QtDebug>
-
#include <atomic>
#include "test/mixxxtest.h"
-
-#include "track/globaltrackcache.h"
-
+#include "track/track.h"
namespace {
diff --git a/src/test/soundproxy_test.cpp b/src/test/soundproxy_test.cpp
index e6eb9b79e2..9511d28f8d 100644
--- a/src/test/soundproxy_test.cpp
+++ b/src/test/soundproxy_test.cpp
@@ -4,7 +4,7 @@
#include "sources/audiosourcestereoproxy.h"
#include "sources/soundsourceproxy.h"
#include "test/mixxxtest.h"
-#include "track/trackmetadata.h"
+#include "track/track.h"
#include "util/samplebuffer.h"
namespace {
diff --git a/src/track/beatfactory.h b/src/track/beatfactory.h
index cb25021f19..20ac6fe71e 100644
--- a/src/track/beatfactory.h
+++ b/src/track/beatfactory.h
@@ -4,7 +4,7 @@
#include <QHash>
#include "track/beats.h"
-#include "track/track.h"
+#include "track/track_decl.h"
class BeatFactory {
public:
diff --git a/src/track/beatgrid.cpp b/src/track/beatgrid.cpp
index 815314f736..230cd3ce86 100644
--- a/src/track/beatgrid.cpp
+++ b/src/track/beatgrid.cpp
@@ -1,7 +1,9 @@
+#include "track/beatgrid.h"
+
#include <QMutexLocker>
#include <QtDebug>
-#include "track/beatgrid.h"
+#include "track/track.h"
#include "util/math.h"
static const int kFrameSize = 2;
diff --git a/src/track/beatgrid.h b/src/track/beatgrid.h
index f1f09faf28..f379decc49 100644
--- a/src/track/beatgrid.h
+++ b/src/track/beatgrid.h
@@ -3,9 +3,9 @@
#include <QMutex>
-#include "track/track.h"
-#include "track/beats.h"
#include "proto/beats.pb.h"
+#include "track/beats.h"
+#include "track/track_decl.h"
#define BEAT_GRID_1_VERSION "BeatGrid-1.0"
#define BEAT_GRID_2_VERSION "BeatGrid-2.0"
diff --git a/src/track/beatmap.cpp b/src/track/beatmap.cpp
index 661f79e9f9..89437441ad 100644
--- a/src/track/beatmap.cpp
+++ b/src/track/beatmap.cpp
@@ -5,13 +5,15 @@
* Author: vittorio
*/
-#include <algorithm>
+#include "track/beatmap.h"
+
+#include <QMutexLocker>
#include <QtDebug>
#include <QtGlobal>
-#include <QMutexLocker>
+#include <algorithm>
-#include "track/beatmap.h"
#include "track/beatutils.h"
+#include "track/track.h"
#include "util/math.h"
using mixxx::track::io::Beat;
diff --git a/src/track/beatmap.h b/src/track/beatmap.h
index 5d1ce7df57..7f85b449bb 100644
--- a/src/track/beatmap.h
+++ b/src/track/beatmap.h
@@ -10,9 +10,9 @@
#include <QMutex>
-#include "track/track.h"
-#include "track/beats.h"
#include "proto/beats.pb.h"
+#include "track/beats.h"
+#include "track/track_decl.h"
#define BEAT_MAP_VERSION "BeatMap-1.0"
diff --git a/src/track/cue.h b/src/track/cue.h
index d7c6d36f9a..d4a8fbb497 100644
--- a/src/track/cue.h
+++ b/src/track/cue.h
@@ -6,13 +6,13 @@
#include "audio/types.h"
#include "track/cueinfo.h"
+#include "track/track_decl.h"
#include "track/trackid.h"
#include "util/color/rgbcolor.h"
#include "util/memory.h"
class CuePosition;
class CueDAO;
-class Track;
class Cue : public QObject {
Q_OBJECT
diff --git a/src/track/globaltrackcache.cpp b/src/track/globaltrackcache.cpp
index e2da4c0456..58637ffbcd 100644
--- a/src/track/globaltrackcache.cpp
+++ b/src/track/globaltrackcache.cpp
@@ -2,6 +2,7 @@
#include <QCoreApplication>
+#include "track/track.h"
#include "util/assert.h"
#include "util/logger.h"
#include "util/thread_affinity.h"
diff --git a/src/track/globaltrackcache.h b/src/track/globaltrackcache.h
index 6266a230ee..d66c7f3a54 100644
--- a/src/track/globaltrackcache.h
+++ b/src/track/globaltrackcache.h
@@ -4,9 +4,9 @@
#include <map>
#include <unordered_map>
-#include "track/track.h"
+#include "track/track_decl.h"
#include "track/trackref.h"
-
+#include "util/sandbox.h"
// forward declaration(s)
class GlobalTrackCache;
diff --git a/src/track/keyfactory.h b/src/track/keyfactory.h
index fbd64bee66..36811dc593 100644
--- a/src/track/keyfactory.h
+++ b/src/track/keyfactory.h
@@ -2,12 +2,12 @@
#define KEYFACTORY_H
#include <QHash>
-#include <QVector>
#include <QString>
+#include <QVector>
-#include "track/keys.h"
#include "proto/keys.pb.h"
-#include "track/track.h"
+#include "track/keys.h"
+#include "track/track_decl.h"
class KeyFactory {
public:
diff --git a/src/track/track.h b/src/track/track.h
index 2a3af32469..6cf9905d34 100644
--- a/src/track/track.h
+++ b/src/track/track.h
@@ -10,27 +10,12 @@
#include "track/beats.h"
#include "track/cue.h"
#include "track/cueinfoimporter.h"
+#include "track/track_decl.h"
#include "track/trackfile.h"
#include "track/trackrecord.h"
-#include "util/memory.h"
#include "util/sandbox.h"
#include "waveform/waveform.h"
-// forward declaration(s)
-class Track;
-
-typedef std::shared_ptr<Track> TrackPointer;
-typedef std::weak_ptr<Track> TrackWeakPointer;
-typedef QList<TrackPointer> TrackPointerList;
-
-Q_DECLARE_METATYPE(TrackPointer);
-
-enum class ExportTrackMetadataResult {
- Succeeded,
- Failed,
- Skipped,
-};
-
class Track : public QObject {
Q_OBJECT
diff --git a/src/track/track_decl.h b/src/track/track_decl.h
new file mode 100644
index 0000000000..12a03187cc
--- /dev/null
+++ b/src/track/track_decl.h
@@ -0,0 +1,21 @@
+#pragma once
+
+/// Forward declarations for Track objects and their pointers
+
+#include <QList>
+#include <QMetaType>
+#include <memory>
+
+class Track;
+
+typedef std::shared_ptr<Track> TrackPointer;
+typedef std::weak_ptr<Track> TrackWeakPointer;
+typedef QList<TrackPointer> TrackPointerList;
+
+enum class ExportTrackMetadataResult {
+ Succeeded,
+ Failed,
+ Skipped,
+};
+
+Q_DECLARE_METATYPE(TrackPointer);
diff --git a/src/track/trackiterator.h b/src/track/trackiterator.h
index f95c5e6efd..9d6bc6fec1 100644
--- a/src/track/trackiterator.h
+++ b/src/track/trackiterator.h
@@ -5,7 +5,8 @@
#include <QModelIndex>
-#include "track/track.h"
+#include "track/track_decl.h"
+#include "track/trackid.h"
#include "util/itemiterator.h"
namespace mixxx {
diff --git a/src/util/dnd.h b/src/util/dnd.h
index b437ab3652..77d2b5a077 100644
--- a/src/util/dnd.h
+++ b/src/util/dnd.h
@@ -8,7 +8,8 @@
#include <QUrl>
#include "preferences/usersettings.h"
-#include "track/track.h"
+#include "track/track_decl.h"
+#include "track/trackfile.h"
#include "widget/trackdroptarget.h"
class DragAndDropHelper final {
diff --git a/src/util/itemiterator.h b/src/util/itemiterator.h
index 5fa0825b63..c43b675d75 100644
--- a/src/util/itemiterator.h
+++ b/src/util/itemiterator.h
@@ -7,6 +7,7 @@
#include <QVector>
#include "util/assert.h"
+#include "util/optional.h"
namespace mixxx {
diff --git a/src/waveform/renderers/glvsynctestrenderer.cpp b/src/waveform/renderers/glvsynctestrenderer.cpp
index d1f06be01b..dc5e42e966 100644
--- a/src/waveform/renderers/glvsynctestrenderer.cpp
+++ b/src/waveform/renderers/glvsynctestrenderer.cpp
@@ -1,10 +1,11 @@
#include "waveform/renderers/glvsynctestrenderer.h"
#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+#include "track/track.h"
+#include "util/performancetimer.h"
#include "waveform/renderers/waveformwidgetrenderer.h"
#include "waveform/waveform.h"
#include "waveform/waveformwidgetfactory.h"
-#include "util/performancetimer.h"
GLVSyncTestRenderer::GLVSyncTestRenderer(
WaveformWidgetRenderer* waveformWidgetRenderer)
diff --git a/src/waveform/renderers/glwaveformrendererrgb.cpp b/src/waveform/renderers/glwaveformrendererrgb.cpp
index 7620dae200..52a206eb4c 100644
--- a/src/waveform/renderers/glwaveformrendererrgb.cpp
+++ b/src/waveform/renderers/glwaveformrendererrgb.cpp
@@ -1,12 +1,13 @@
#include "waveform/renderers/glwaveformrendererrgb.h"
#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
-#include "waveformwidgetrenderer.h"
+#include "track/track.h"
+#include "util/math.h"
#include "waveform/waveform.h"
#include "waveform/waveformwidgetfactory.h"
-#include "widget/wwidget.h"
+#include "waveformwidgetrenderer.h"
#include "widget/wskincolor.h"
-#include "util/math.h"
+#include "widget/wwidget.h"
GLWaveformRendererRGB::GLWaveformRendererRGB(
WaveformWidgetRenderer* waveformWidgetRenderer)
diff --git a/src/waveform/renderers/glwaveformrenderersimplesignal.cpp b/src/waveform/renderers/glwaveformrenderersimplesignal.cpp
index 3a161f74f9..370b35c5b9 100644
--- a/src/waveform/renderers/glwaveformrenderersimplesignal.cpp
+++ b/src/waveform/renderers/glwaveformrenderersimplesignal.cpp
@@ -1,6 +1,7 @@
#include "waveform/renderers/glwaveformrenderersimplesignal.h"
#if !defined(QT_NO_OPENGL) && !defined(QT_OPENGL_ES_2)
+#include "track/track.h"
#include "util/math.h"
#include "waveform/waveform.h"
#include "waveform/waveformwidgetfactory.h"
diff --git a/src/waveform/renderers/qtvsynctestrenderer.cpp b/src/waveform/renderers/qtvsynctestrenderer.cpp
index 8357703613..340a3f63b5 100644
--- a/src/waveform/renderers/qtvsynctestrenderer.cpp
+++ b/src/waveform/renderers/qtvsynctestrenderer.cpp
@@ -1,10 +1,11 @@
#include "waveform/renderers/qtvsynctestrenderer.h"
+#include "track/track.h"
+#include "util/painterscope.h"
+#include "util/performancetimer.h"
#include "waveform/renderers/waveformwidgetrenderer.h"
#include "waveform/waveform.h"
#include "waveform/waveformwidgetfactory.h"
-#include "util/painterscope.h"
-#include "util/performancetimer.h"
QtVSyncTestRenderer::QtVSyncTestRenderer(
WaveformWidgetRenderer* waveformWidgetRenderer)
diff --git a/src/waveform/renderers/waveformwidgetrenderer.cpp b/src/waveform/renderers/waveformwidgetrenderer.cpp
index 6483c23914..323c962a84 100644
--- a/src/waveform/renderers/waveformwidgetrenderer.cpp
+++ b/src/waveform/renderers/waveformwidgetrenderer.cpp
@@ -5,6 +5,7 @@
#include "control/controlobject.h"
#include "control/controlproxy.h"
+#include "track/track.h"
#include "util/math.h"
#include "util/performancetimer.h"
#include "waveform/visualplayposition.h"
diff --git a/src/waveform/renderers/waveformwidgetrenderer.h b/src/waveform/renderers/waveformwidgetrenderer.h
index 6be11dca9d..0f28a12fe6 100644
--- a/src/waveform/renderers/waveformwidgetrenderer.h
+++ b/src/waveform/renderers/waveformwidgetrenderer.h
@@ -6,7 +6,7 @@
#include <QVector>
#include <QtDebug>
-#include "track/track.h"
+#include "track/track_decl.h"
#include "util/class.h"
#include "util/performancetimer.h"
#include "waveform/renderers/waveformmark.h"
@@ -15,7 +15,6 @@
//#define WAVEFORMWIDGETRENDERER_DEBUG
-class Track;
class ControlProxy;
class VisualPlayPosition;
class VSyncThread;
diff --git a/src/widget/wtrackmenu.h b/src/widget/wtrackmenu.h
index a822804516..cd898fa5c1 100644
--- a/src/widget/wtrackmenu.h
+++ b/src/widget/wtrackmenu.h
@@ -5,10 +5,12 @@
#include <QPointer>
#include <memory>
+#include "library/coverart.h"
#include "library/dao/playlistdao.h"
#include "library/trackprocessing.h"
#include "preferences/usersettings.h"
#include "track/trackref.h"
+#include "util/color/rgbcolor.h"
class ControlProxy;
class DlgTagFetcher;