mirror of
https://github.com/dguglielmi/sunny-overlay.git
synced 2025-12-07 00:42:37 +01:00
- media-sound/mixxx: re-add mixxx to fix Qt5 issues
Mixxx is compiled with Qt5 in ~gx86 and some core features are broken with Qt5, so we need to backport those following patches. - https://github.com/mixxxdj/mixxx/pull/845/commits - https://github.com/mixxxdj/mixxx/pull/848/commits
This commit is contained in:
@@ -0,0 +1,271 @@
|
||||
diff -dNur a/src/analyserwaveform.cpp b/src/analyserwaveform.cpp
|
||||
--- a/src/analyserwaveform.cpp 2017-02-04 21:14:33.266016824 +0100
|
||||
+++ b/src/analyserwaveform.cpp 2017-02-04 21:19:09.205671982 +0100
|
||||
@@ -11,8 +11,8 @@
|
||||
|
||||
AnalyserWaveform::AnalyserWaveform(ConfigObject<ConfigValue>* pConfig) :
|
||||
m_skipProcessing(false),
|
||||
- m_waveformData(NULL),
|
||||
- m_waveformSummaryData(NULL),
|
||||
+ m_waveformData(nullptr),
|
||||
+ m_waveformSummaryData(nullptr),
|
||||
m_stride(0, 0),
|
||||
m_currentStride(0),
|
||||
m_currentSummaryStride(0) {
|
||||
@@ -37,14 +37,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
- m_analysisDao = new AnalysisDao(m_database, pConfig);
|
||||
+ m_pAnalysisDao = std::make_unique<AnalysisDao>(m_database, pConfig);
|
||||
}
|
||||
|
||||
AnalyserWaveform::~AnalyserWaveform() {
|
||||
qDebug() << "AnalyserWaveform::~AnalyserWaveform()";
|
||||
destroyFilters();
|
||||
m_database.close();
|
||||
- delete m_analysisDao;
|
||||
}
|
||||
|
||||
bool AnalyserWaveform::initialise(TrackPointer tio, int sampleRate, int totalSamples) {
|
||||
@@ -115,7 +114,7 @@
|
||||
|
||||
if (trackId != -1 && (missingWaveform || missingWavesummary)) {
|
||||
QList<AnalysisDao::AnalysisInfo> analyses =
|
||||
- m_analysisDao->getAnalysesForTrack(trackId);
|
||||
+ m_pAnalysisDao->getAnalysesForTrack(trackId);
|
||||
|
||||
QListIterator<AnalysisDao::AnalysisInfo> it(analyses);
|
||||
while (it.hasNext()) {
|
||||
@@ -130,7 +129,7 @@
|
||||
missingWaveform = false;
|
||||
} else if (vc != WaveformFactory::VC_KEEP) {
|
||||
// remove all other Analysis except that one we should keep
|
||||
- m_analysisDao->deleteAnalysis(analysis.analysisId);
|
||||
+ m_pAnalysisDao->deleteAnalysis(analysis.analysisId);
|
||||
}
|
||||
} if (analysis.type == AnalysisDao::TYPE_WAVESUMMARY) {
|
||||
vc = WaveformFactory::waveformSummaryVersionToVersionClass(analysis.version);
|
||||
@@ -140,7 +139,7 @@
|
||||
missingWavesummary = false;
|
||||
} else if (vc != WaveformFactory::VC_KEEP) {
|
||||
// remove all other Analysis except that one we should keep
|
||||
- m_analysisDao->deleteAnalysis(analysis.analysisId);
|
||||
+ m_pAnalysisDao->deleteAnalysis(analysis.analysisId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -273,13 +272,13 @@
|
||||
tio->setWaveform(ConstWaveformPointer());
|
||||
// Since clear() could delete the waveform, clear our pointer to the
|
||||
// waveform's vector data first.
|
||||
- m_waveformData = NULL;
|
||||
+ m_waveformData = nullptr;
|
||||
m_waveform.clear();
|
||||
|
||||
tio->setWaveformSummary(ConstWaveformPointer());
|
||||
// Since clear() could delete the waveform, clear our pointer to the
|
||||
// waveform's vector data first.
|
||||
- m_waveformSummaryData = NULL;
|
||||
+ m_waveformSummaryData = nullptr;
|
||||
m_waveformSummary.clear();
|
||||
}
|
||||
|
||||
@@ -295,7 +294,7 @@
|
||||
m_waveform->setDescription(WaveformFactory::currentWaveformDescription());
|
||||
// Since clear() could delete the waveform, clear our pointer to the
|
||||
// waveform's vector data first.
|
||||
- m_waveformData = NULL;
|
||||
+ m_waveformData = nullptr;
|
||||
m_waveform.clear();
|
||||
}
|
||||
|
||||
@@ -306,7 +305,7 @@
|
||||
m_waveformSummary->setDescription(WaveformFactory::currentWaveformSummaryDescription());
|
||||
// Since clear() could delete the waveform, clear our pointer to the
|
||||
// waveform's vector data first.
|
||||
- m_waveformSummaryData = NULL;
|
||||
+ m_waveformSummaryData = nullptr;
|
||||
m_waveformSummary.clear();
|
||||
}
|
||||
|
||||
diff -dNur a/src/analyserwaveform.h b/src/analyserwaveform.h
|
||||
--- a/src/analyserwaveform.h 2017-02-04 21:14:33.266016824 +0100
|
||||
+++ b/src/analyserwaveform.h 2017-02-04 21:20:17.308598419 +0100
|
||||
@@ -4,12 +4,14 @@
|
||||
#include <QTime>
|
||||
#include <QImage>
|
||||
#include <QSqlDatabase>
|
||||
+
|
||||
#include <limits>
|
||||
|
||||
#include "configobject.h"
|
||||
#include "analyser.h"
|
||||
#include "waveform/waveform.h"
|
||||
#include "util/math.h"
|
||||
+#include "util/memory.h"
|
||||
|
||||
//NOTS vrince some test to segment sound, to apply color in the waveform
|
||||
//#define TEST_HEAT_MAP
|
||||
@@ -173,7 +175,7 @@
|
||||
|
||||
QTime m_timer;
|
||||
QSqlDatabase m_database;
|
||||
- AnalysisDao* m_analysisDao;
|
||||
+ std::unique_ptr<AnalysisDao> m_pAnalysisDao;
|
||||
|
||||
#ifdef TEST_HEAT_MAP
|
||||
QImage* test_heatMap;
|
||||
diff -dNur a/src/util/memory.h b/src/util/memory.h
|
||||
--- a/src/util/memory.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ b/src/util/memory.h 2017-02-04 22:19:41.846922929 +0100
|
||||
@@ -0,0 +1,149 @@
|
||||
+// Taken from https://github.com/bstreiff/cppbits
|
||||
+// Thank you Brandon Streiff!
|
||||
+
|
||||
+// Implementation of C++14's make_unique for C++11 compilers.
|
||||
+//
|
||||
+// This has been tested with:
|
||||
+// - MSVC 11.0 (Visual Studio 2012)
|
||||
+// - gcc 4.6.3
|
||||
+// - Xcode 4.4 (with clang "4.0")
|
||||
+//
|
||||
+// It is based off an implementation proposed by Stephan T. Lavavej for
|
||||
+// inclusion in the C++14 standard:
|
||||
+// http://isocpp.org/files/papers/N3656.txt
|
||||
+// Where appropriate, it borrows the use of MSVC's _VARIADIC_EXPAND_0X macro
|
||||
+// machinery to compensate for lack of variadic templates.
|
||||
+//
|
||||
+// This file injects make_unique into the std namespace, which I acknowledge is
|
||||
+// technically forbidden ([C++11: 17.6.4.2.2.1/1]), but is necessary in order
|
||||
+// to have syntax compatibility with C++14.
|
||||
+//
|
||||
+// I perform compiler version checking for MSVC, gcc, and clang to ensure that
|
||||
+// we don't add make_unique if it is already there (instead, we include
|
||||
+// <memory> to get the compiler-provided one). You can override the compiler
|
||||
+// version checking by defining the symbol COMPILER_SUPPORTS_MAKE_UNIQUE.
|
||||
+//
|
||||
+//
|
||||
+// ===============================================================================
|
||||
+// This file is released into the public domain. See LICENCE for more information.
|
||||
+// ===============================================================================
|
||||
+
|
||||
+#ifndef MIXXX_UTIL_MEMORY_H
|
||||
+#define MIXXX_UTIL_MEMORY_H
|
||||
+
|
||||
+// If user hasn't specified COMPILER_SUPPORTS_MAKE_UNIQUE then try to figure out
|
||||
+// based on compiler version if std::make_unique is provided.
|
||||
+#if !defined(COMPILER_SUPPORTS_MAKE_UNIQUE)
|
||||
+ // Compiling with -std=c++11 sets __cplusplus=201103L and disables
|
||||
+ // std::make_unique() from C++14! We need to take this into account.
|
||||
+ #define CPLUSPLUS_SUPPORTS_MAKE_UNIQUE (__cplusplus > 201103L)
|
||||
+ #if defined(_MSC_VER)
|
||||
+ // std::make_unique was added in MSVC 12.0
|
||||
+ #if _MSC_VER >= 1800 // MSVC 12.0 (Visual Studio 2013)
|
||||
+ #define COMPILER_SUPPORTS_MAKE_UNIQUE
|
||||
+ #endif
|
||||
+ #elif defined(__clang__)
|
||||
+ // std::make_unique was added in clang 3.4, but not until Xcode 6.
|
||||
+ // Annoyingly, Apple makes the clang version defines match the version
|
||||
+ // of Xcode, not the version of clang.
|
||||
+ #define CLANG_VERSION (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__)
|
||||
+ #if defined(__APPLE__) && CLANG_VERSION >= 60000 && CPLUSPLUS_SUPPORTS_MAKE_UNIQUE
|
||||
+ #define COMPILER_SUPPORTS_MAKE_UNIQUE
|
||||
+ #elif !defined(__APPLE__) && CLANG_VERSION >= 30400 && CPLUSPLUS_SUPPORTS_MAKE_UNIQUE
|
||||
+ #define COMPILER_SUPPORTS_MAKE_UNIQUE
|
||||
+ #endif
|
||||
+ #elif defined(__GNUC__)
|
||||
+ // std::make_unique was added in gcc 4.9
|
||||
+ #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
|
||||
+ #if GCC_VERSION >= 40900 && CPLUSPLUS_SUPPORTS_MAKE_UNIQUE
|
||||
+ #define COMPILER_SUPPORTS_MAKE_UNIQUE
|
||||
+ #endif
|
||||
+ #endif
|
||||
+#endif
|
||||
+
|
||||
+#if defined(COMPILER_SUPPORTS_MAKE_UNIQUE)
|
||||
+
|
||||
+// If the compiler supports std::make_unique, then pull in <memory> to get it.
|
||||
+#include <memory>
|
||||
+
|
||||
+#else
|
||||
+
|
||||
+// Otherwise, the compiler doesn't provide it, so implement it ourselves.
|
||||
+
|
||||
+#include <cstddef>
|
||||
+#include <memory>
|
||||
+#include <type_traits>
|
||||
+#include <utility>
|
||||
+
|
||||
+namespace std {
|
||||
+
|
||||
+template<class _Ty> struct _Unique_if {
|
||||
+ typedef unique_ptr<_Ty> _Single_object;
|
||||
+};
|
||||
+
|
||||
+template<class _Ty> struct _Unique_if<_Ty[]> {
|
||||
+ typedef unique_ptr<_Ty[]> _Unknown_bound;
|
||||
+};
|
||||
+
|
||||
+template<class _Ty, size_t N> struct _Unique_if<_Ty[N]> {
|
||||
+ typedef void _Known_bound;
|
||||
+};
|
||||
+
|
||||
+//
|
||||
+// template< class T, class... Args >
|
||||
+// unique_ptr<T> make_unique( Args&&... args);
|
||||
+//
|
||||
+
|
||||
+#if defined(_MSC_VER) && (_MSC_VER < 1800)
|
||||
+
|
||||
+// Macro machinery because MSVC 11.0 doesn't support variadic templates.
|
||||
+// The _VARIADIC_EXPAND_0X stuff is defined in <xstddef>
|
||||
+#define _MAKE_UNIQUE( \
|
||||
+ TEMPLATE_LIST, PADDING_LIST, LIST, COMMA, X1, X2, X3, X4) \
|
||||
+ template<class _Ty COMMA LIST(_CLASS_TYPE)> inline \
|
||||
+ typename _Unique_if<_Ty>::_Single_object make_unique(LIST(_TYPE_REFREF_ARG)) \
|
||||
+ { \
|
||||
+ return unique_ptr<_Ty>(new _Ty(LIST(_FORWARD_ARG))); \
|
||||
+ } \
|
||||
+
|
||||
+_VARIADIC_EXPAND_0X(_MAKE_UNIQUE, , , , )
|
||||
+#undef _MAKE_UNIQUE
|
||||
+
|
||||
+#else // not MSVC 11.0 or earlier
|
||||
+
|
||||
+template<class _Ty, class... Args>
|
||||
+ typename _Unique_if<_Ty>::_Single_object
|
||||
+ make_unique(Args&&... args) {
|
||||
+ return unique_ptr<_Ty>(new _Ty(std::forward<Args>(args)...));
|
||||
+ }
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
+// template< class T >
|
||||
+// unique_ptr<T> make_unique( std::size_t size );
|
||||
+
|
||||
+template<class _Ty>
|
||||
+ typename _Unique_if<_Ty>::_Unknown_bound
|
||||
+ make_unique(size_t n) {
|
||||
+ typedef typename remove_extent<_Ty>::type U;
|
||||
+ return unique_ptr<_Ty>(new U[n]());
|
||||
+ }
|
||||
+
|
||||
+// template< class T, class... Args >
|
||||
+// /* unspecified */ make_unique( Args&&... args ) = delete;
|
||||
+
|
||||
+// MSVC 11.0 doesn't support deleted functions, so the best we can do
|
||||
+// is simply not define the function.
|
||||
+#if !(defined(_MSC_VER) && (_MSC_VER < 1800))
|
||||
+
|
||||
+template<class T, class... Args>
|
||||
+ typename _Unique_if<T>::_Known_bound
|
||||
+ make_unique(Args&&...) = delete;
|
||||
+
|
||||
+#endif
|
||||
+
|
||||
+} // namespace std
|
||||
+
|
||||
+#endif // !COMPILER_SUPPORTS_MAKE_UNIQUE
|
||||
+
|
||||
+#endif /* MIXXX_UTIL_MEMORY_H */
|
||||
Reference in New Issue
Block a user