diff -Nru kodi-visualization-projectm-2.2.0/CMakeLists.txt kodi-visualization-projectm-2.3.0/CMakeLists.txt --- kodi-visualization-projectm-2.2.0/CMakeLists.txt 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/CMakeLists.txt 2019-10-04 18:05:37.000000000 +0000 @@ -1,48 +1,44 @@ +cmake_minimum_required(VERSION 3.5) project(visualization.projectm) -cmake_minimum_required(VERSION 2.6) - set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}) if(PACKAGE_CONFIG_PATH) set(ENV{PKG_CONFIG_PATH} ${PACKAGE_CONFIG_PATH}) endif() find_package(Kodi REQUIRED) -find_package(p8-platform REQUIRED) - find_package(ProjectM REQUIRED) add_definitions(-DHAS_SDL_OPENGL) -set(INCLUDES ${KODI_INCLUDE_DIR} - ${p8-platform_INCLUDE_DIRS} - ${PROJECTM_INCLUDE_DIRS}) - -if(CORE_SYSTEM_NAME STREQUAL "linux") - set(DEPLIBS -Wl,--whole-archive ${PROJECTM_LIBS} -Wl,--no-whole-archive - ${extra_libs}) +if(APP_RENDER_SYSTEM STREQUAL "gl" OR NOT APP_RENDER_SYSTEM) + find_package(OpenGl REQUIRED) + set(DEPLIBS ${OPENGL_LIBRARIES}) + set(includes ${OPENGL_INCLUDE_DIR}) + add_definitions(${OPENGL_DEFINITIONS}) else() - set(DEPLIBS ${PROJECTM_LIBS} - ${extra_libs}) + find_package(OpenGLES REQUIRED) + set(DEPLIBS ${OPENGLES_LIBRARIES}) + set(includes ${OPENGLES_INCLUDE_DIR}) + add_definitions(${OPENGLES_DEFINITIONS}) endif() -if(APP_RENDER_SYSTEM STREQUAL "gl" OR NOT APP_RENDER_SYSTEM) - find_package(OpenGL REQUIRED) - set(DEPLIBS ${DEPLIBS} ${OPENGL_LIBRARIES}) - set(APP_RENDER_SYSTEM gl) -elseif(APP_RENDER_SYSTEM STREQUAL "gles") - find_package(OpenGLES REQUIRED) - set(DEPLIBS ${DEPLIBS} ${OPENGLES_LIBRARIES}) - set(APP_RENDER_SYSTEM gles) +include_directories(${includes} + ${PROJECTM_INCLUDE_DIRS} + ${KODI_INCLUDE_DIR}/..) # Hack way with "/..", need bigger Kodi cmake rework to match right include ways + +if(CORE_SYSTEM_NAME STREQUAL "linux") + list(APPEND DEPLIBS -Wl,--whole-archive ${PROJECTM_LIBS} -Wl,--no-whole-archive + ${extra_libs}) else() - message(FATAL_ERROR "APP_RENDER_SYSTEM ${APP_RENDER_SYSTEM} isn't supported.") + list(APPEND DEPLIBS ${PROJECTM_LIBS} + ${extra_libs}) endif() set(PM_SOURCES src/Main.cpp) - -include_directories(${INCLUDES}) - +set(PM_HEADERS src/Main.h) set(PM_CUSTOM_DATA ${PROJECTM_DATA}) + build_addon(visualization.projectm PM DEPLIBS) include(CPack) diff -Nru kodi-visualization-projectm-2.2.0/debian/changelog kodi-visualization-projectm-2.3.0/debian/changelog --- kodi-visualization-projectm-2.2.0/debian/changelog 2013-05-31 22:59:22.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/debian/changelog 2013-05-31 22:59:22.000000000 +0000 @@ -1,4 +1,4 @@ -kodi-visualization-projectm (2.2.0-1~xenial) xenial; urgency=low +kodi-visualization-projectm (2.3.0-1~xenial) xenial; urgency=low [ xbmc ] * autogenerated dummy changelog diff -Nru kodi-visualization-projectm-2.2.0/debian/control kodi-visualization-projectm-2.3.0/debian/control --- kodi-visualization-projectm-2.2.0/debian/control 2013-05-31 22:59:22.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/debian/control 2013-05-31 22:59:22.000000000 +0000 @@ -3,7 +3,7 @@ Maintainer: Team Kodi Uploaders: Arne Morten Kvarving , Wolfgang Schupp -Build-Depends: debhelper (>= 8.0.0), cmake, kodi-addon-dev, libp8-platform-dev, libprojectm-dev, +Build-Depends: debhelper (>= 8.0.0), cmake, kodi-addon-dev, libprojectm-dev, libgl1-mesa-dev, pkg-config Standards-Version: 3.9.5 Section: libs diff -Nru kodi-visualization-projectm-2.2.0/depends/android/glm/01-disable-shared.patch kodi-visualization-projectm-2.3.0/depends/android/glm/01-disable-shared.patch --- kodi-visualization-projectm-2.2.0/depends/android/glm/01-disable-shared.patch 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/depends/android/glm/01-disable-shared.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ ---- glm-0.9.9.2/glm/CMakeLists.txt.orig 2018-10-03 12:08:55.668231467 +0200 -+++ glm-0.9.9.2/glm/CMakeLists.txt 2018-10-03 12:09:02.700219548 +0200 -@@ -51,12 +51,3 @@ - ${GTC_SOURCE} ${GTC_INLINE} ${GTC_HEADER} - ${GTX_SOURCE} ${GTX_INLINE} ${GTX_HEADER} - ${SIMD_SOURCE} ${SIMD_INLINE} ${SIMD_HEADER}) -- --add_library(glm_shared SHARED ${ROOT_TEXT} ${ROOT_MD} ${ROOT_NAT} -- ${ROOT_SOURCE} ${ROOT_INLINE} ${ROOT_HEADER} -- ${CORE_SOURCE} ${CORE_INLINE} ${CORE_HEADER} -- ${EXT_SOURCE} ${EXT_INLINE} ${EXT_HEADER} -- ${GTC_SOURCE} ${GTC_INLINE} ${GTC_HEADER} -- ${GTX_SOURCE} ${GTX_INLINE} ${GTX_HEADER} -- ${SIMD_SOURCE} ${SIMD_INLINE} ${SIMD_HEADER}) -- diff -Nru kodi-visualization-projectm-2.2.0/depends/android/glm/flags.txt kodi-visualization-projectm-2.3.0/depends/android/glm/flags.txt --- kodi-visualization-projectm-2.2.0/depends/android/glm/flags.txt 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/depends/android/glm/flags.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ --DGLM_TEST_ENABLE_CXX_11=1 -DGLM_TEST_ENABLE=0 -DGLM_TEST_ENABLE_SIMD_SSE2=0 -DCMAKE_INSTALL_LIBDIR=lib diff -Nru kodi-visualization-projectm-2.2.0/depends/android/glm/glm.sha256 kodi-visualization-projectm-2.3.0/depends/android/glm/glm.sha256 --- kodi-visualization-projectm-2.2.0/depends/android/glm/glm.sha256 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/depends/android/glm/glm.sha256 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -39ed8d2fff3de053c98f1381dccfa9cee524a89c5b00d204d58dec56cf4ffb33 diff -Nru kodi-visualization-projectm-2.2.0/depends/android/glm/glm.txt kodi-visualization-projectm-2.3.0/depends/android/glm/glm.txt --- kodi-visualization-projectm-2.2.0/depends/android/glm/glm.txt 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/depends/android/glm/glm.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -glm https://github.com/g-truc/glm/archive/0.9.9.2.tar.gz diff -Nru kodi-visualization-projectm-2.2.0/depends/common/glm/01-disable-shared.patch kodi-visualization-projectm-2.3.0/depends/common/glm/01-disable-shared.patch --- kodi-visualization-projectm-2.2.0/depends/common/glm/01-disable-shared.patch 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/depends/common/glm/01-disable-shared.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ ---- glm-0.9.9.2/glm/CMakeLists.txt.orig 2018-10-03 12:08:55.668231467 +0200 -+++ glm-0.9.9.2/glm/CMakeLists.txt 2018-10-03 12:09:02.700219548 +0200 -@@ -51,12 +51,3 @@ - ${GTC_SOURCE} ${GTC_INLINE} ${GTC_HEADER} - ${GTX_SOURCE} ${GTX_INLINE} ${GTX_HEADER} - ${SIMD_SOURCE} ${SIMD_INLINE} ${SIMD_HEADER}) -- --add_library(glm_shared SHARED ${ROOT_TEXT} ${ROOT_MD} ${ROOT_NAT} -- ${ROOT_SOURCE} ${ROOT_INLINE} ${ROOT_HEADER} -- ${CORE_SOURCE} ${CORE_INLINE} ${CORE_HEADER} -- ${EXT_SOURCE} ${EXT_INLINE} ${EXT_HEADER} -- ${GTC_SOURCE} ${GTC_INLINE} ${GTC_HEADER} -- ${GTX_SOURCE} ${GTX_INLINE} ${GTX_HEADER} -- ${SIMD_SOURCE} ${SIMD_INLINE} ${SIMD_HEADER}) -- diff -Nru kodi-visualization-projectm-2.2.0/depends/common/glm/flags.txt kodi-visualization-projectm-2.3.0/depends/common/glm/flags.txt --- kodi-visualization-projectm-2.2.0/depends/common/glm/flags.txt 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/depends/common/glm/flags.txt 2019-10-04 18:05:37.000000000 +0000 @@ -1 +1 @@ --DGLM_TEST_ENABLE_CXX_11=1 -DGLM_TEST_ENABLE=0 -DGLM_TEST_ENABLE_SIMD_SSE2=1 -DCMAKE_INSTALL_LIBDIR=lib +-DGLM_TEST_ENABLE_CXX_11=1 -DGLM_TEST_ENABLE=0 -DGLM_TEST_ENABLE_SIMD_SSE2=0 -DCMAKE_INSTALL_LIBDIR=lib diff -Nru kodi-visualization-projectm-2.2.0/depends/common/glm/glm.sha256 kodi-visualization-projectm-2.3.0/depends/common/glm/glm.sha256 --- kodi-visualization-projectm-2.2.0/depends/common/glm/glm.sha256 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/depends/common/glm/glm.sha256 2019-10-04 18:05:37.000000000 +0000 @@ -1 +1 @@ -39ed8d2fff3de053c98f1381dccfa9cee524a89c5b00d204d58dec56cf4ffb33 +785211e3e5757f64bc20eff1c5dd89cfc35fc8aea8e06b4b189e4f3ea4865861 diff -Nru kodi-visualization-projectm-2.2.0/depends/common/glm/glm.txt kodi-visualization-projectm-2.3.0/depends/common/glm/glm.txt --- kodi-visualization-projectm-2.2.0/depends/common/glm/glm.txt 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/depends/common/glm/glm.txt 2019-10-04 18:05:37.000000000 +0000 @@ -1 +1 @@ -glm https://github.com/g-truc/glm/archive/0.9.9.2.tar.gz +glm https://github.com/g-truc/glm/releases/download/0.9.9.5/glm-0.9.9.5.7z diff -Nru kodi-visualization-projectm-2.2.0/depends/common/projectm/01-fix-qt-configure.patch kodi-visualization-projectm-2.3.0/depends/common/projectm/01-fix-qt-configure.patch --- kodi-visualization-projectm-2.2.0/depends/common/projectm/01-fix-qt-configure.patch 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/depends/common/projectm/01-fix-qt-configure.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -diff --git a/configure.ac b/configure.ac -index e182f1a5..c4ba201e 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -148,10 +148,12 @@ AX_CHECK_COMPILE_FLAG([-std=c++11], [ - CXXFLAGS="$CXXFLAGS -std=c++11"]) - - # Qt5 --AX_HAVE_QT # m4/qt.m4 - AC_ARG_ENABLE([qt], AS_HELP_STRING([--enable-qt], [Enable Qt: needed for pulseaudio and jack GUIs]), [], [enable_qt=check]) - AS_IF([test "$enable_qt" != "no"], -- [AS_IF([test "$have_qt" = "yes"], [ -+ [ -+ AX_HAVE_QT # m4/qt.m4 -+ -+ AS_IF([test "$have_qt" = "yes"], [ - # we have at least qt5 if $have_qt is true - enable_qt=yes - export QT_SELECT=qt5 diff -Nru kodi-visualization-projectm-2.2.0/depends/common/projectm/CMakeLists.txt kodi-visualization-projectm-2.3.0/depends/common/projectm/CMakeLists.txt --- kodi-visualization-projectm-2.2.0/depends/common/projectm/CMakeLists.txt 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/depends/common/projectm/CMakeLists.txt 2019-10-04 18:05:37.000000000 +0000 @@ -1,7 +1,6 @@ +cmake_minimum_required(VERSION 3.5) project(projectm) -cmake_minimum_required(VERSION 2.8) - if (APP_RENDER_SYSTEM STREQUAL "gles") set(PROJECTM_CONFIG "--enable-gles") endif() @@ -9,8 +8,13 @@ include(ExternalProject) externalproject_add(projectm SOURCE_DIR ${CMAKE_SOURCE_DIR} - CONFIGURE_COMMAND cd && autoreconf -vif && CXXFLAGS=-I${OUTPUT_DIR}/include CFLAGS=-I${OUTPUT_DIR}/include LDFLAGS=-L${OUTPUT_DIR}/lib ./configure --disable-shared --disable-qt --prefix=${OUTPUT_DIR} --with-pic ${PROJECTM_CONFIG} - BUILD_COMMAND make + UPDATE_COMMAND autoreconf -vif + CONFIGURE_COMMAND CXXFLAGS=-I${OUTPUT_DIR}/include CFLAGS=-I${OUTPUT_DIR}/include LDFLAGS=-L${OUTPUT_DIR}/lib ./configure + --disable-shared + --disable-qt + --disable-threading + --prefix=${OUTPUT_DIR} + --with-pic ${PROJECTM_CONFIG} INSTALL_COMMAND "" BUILD_IN_SOURCE 1) diff -Nru kodi-visualization-projectm-2.2.0/depends/common/projectm/projectm.sha256 kodi-visualization-projectm-2.3.0/depends/common/projectm/projectm.sha256 --- kodi-visualization-projectm-2.2.0/depends/common/projectm/projectm.sha256 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/depends/common/projectm/projectm.sha256 2019-10-04 18:05:37.000000000 +0000 @@ -1 +1 @@ -6801ec8c576bd97643be2f622abd801732e2337f692828a1010fb28e21825585 +d2755255735b0093a20171a52afb0e0cabc60058dab1994f08a7a4efdf84bb35 diff -Nru kodi-visualization-projectm-2.2.0/depends/common/projectm/projectm.txt kodi-visualization-projectm-2.3.0/depends/common/projectm/projectm.txt --- kodi-visualization-projectm-2.2.0/depends/common/projectm/projectm.txt 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/depends/common/projectm/projectm.txt 2019-10-04 18:05:37.000000000 +0000 @@ -1 +1 @@ -projectm https://github.com/projectM-visualizer/projectm/releases/download/v3.1.1-rc3/projectM-3.1.1-rc3.tar.gz +projectm https://github.com/projectM-visualizer/projectm/releases/download/3.1.1-rc4/projectM-3.1.1-rc4.tar.gz diff -Nru kodi-visualization-projectm-2.2.0/depends/linux/freetype/CMakeLists.txt kodi-visualization-projectm-2.3.0/depends/linux/freetype/CMakeLists.txt --- kodi-visualization-projectm-2.2.0/depends/linux/freetype/CMakeLists.txt 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/depends/linux/freetype/CMakeLists.txt 2019-10-04 18:05:37.000000000 +0000 @@ -1,7 +1,6 @@ +cmake_minimum_required(VERSION 3.5) project(freetype) -cmake_minimum_required(VERSION 2.8) - include(ExternalProject) externalproject_add(freetype SOURCE_DIR ${CMAKE_SOURCE_DIR} diff -Nru kodi-visualization-projectm-2.2.0/depends/linux/ftgl/CMakeLists.txt kodi-visualization-projectm-2.3.0/depends/linux/ftgl/CMakeLists.txt --- kodi-visualization-projectm-2.2.0/depends/linux/ftgl/CMakeLists.txt 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/depends/linux/ftgl/CMakeLists.txt 2019-10-04 18:05:37.000000000 +0000 @@ -1,14 +1,12 @@ +cmake_minimum_required(VERSION 3.5) project(ftgl) -cmake_minimum_required(VERSION 2.6) -enable_language(CXX) - include(ExternalProject) externalproject_add(ftgl SOURCE_DIR ${CMAKE_SOURCE_DIR} UPDATE_COMMAND /autogen.sh - CONFIGURE_COMMAND ./configure --prefix=${OUTPUT_DIR} --with-pic --disable-shared --enable-static + CONFIGURE_COMMAND ./configure --prefix=${OUTPUT_DIR} --with-pic --disable-shared --enable-static --with-ft-prefix=${OUTPUT_DIR} BUILD_COMMAND make -C src INSTALL_COMMAND "" BUILD_IN_SOURCE 1) diff -Nru kodi-visualization-projectm-2.2.0/FindOpenGl.cmake kodi-visualization-projectm-2.3.0/FindOpenGl.cmake --- kodi-visualization-projectm-2.2.0/FindOpenGl.cmake 1970-01-01 00:00:00.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/FindOpenGl.cmake 2019-10-04 18:05:37.000000000 +0000 @@ -0,0 +1,41 @@ +#.rst: +# FindOpenGl +# ---------- +# Finds the FindOpenGl library +# +# This will define the following variables:: +# +# OPENGL_FOUND - system has OpenGl +# OPENGL_INCLUDE_DIRS - the OpenGl include directory +# OPENGL_LIBRARIES - the OpenGl libraries +# OPENGL_DEFINITIONS - the OpenGl definitions + +if(PKG_CONFIG_FOUND) + pkg_check_modules(PC_OPENGL gl QUIET) +endif() + +if(NOT CORE_SYSTEM_NAME STREQUAL osx) + find_path(OPENGL_INCLUDE_DIR GL/gl.h + PATHS ${PC_OPENGL_gl_INCLUDEDIR}) + find_library(OPENGL_gl_LIBRARY NAMES GL + PATHS ${PC_OPENGL_gl_LIBDIR}) +else() + find_library(OPENGL_gl_LIBRARY NAMES OpenGL + PATHS ${CMAKE_OSX_SYSROOT}/System/Library + PATH_SUFFIXES Frameworks + NO_DEFAULT_PATH) + set(OPENGL_INCLUDE_DIR ${OPENGL_gl_LIBRARY}/Headers) +endif() + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(OpenGl + REQUIRED_VARS OPENGL_gl_LIBRARY OPENGL_INCLUDE_DIR) + +if(OPENGL_FOUND) + set(OPENGL_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR}) + set(OPENGL_LIBRARIES ${OPENGL_gl_LIBRARY}) + set(OPENGL_DEFINITIONS -DHAS_GL=1) +endif() + +mark_as_advanced(OPENGL_INCLUDE_DIR OPENGL_gl_LIBRARY) + diff -Nru kodi-visualization-projectm-2.2.0/FindOpenGLES.cmake kodi-visualization-projectm-2.3.0/FindOpenGLES.cmake --- kodi-visualization-projectm-2.2.0/FindOpenGLES.cmake 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/FindOpenGLES.cmake 2019-10-04 18:05:37.000000000 +0000 @@ -18,7 +18,7 @@ pkg_check_modules(PC_OPENGLES ${_brcmprefix}glesv2 QUIET) endif() -if(NOT CORE_SYSTEM_NAME STREQUAL ios) +if(NOT CORE_SYSTEM_NAME STREQUAL darwin_embedded AND NOT CORE_SYSTEM_NAME STREQUAL ios) find_path(OPENGLES_INCLUDE_DIR GLES2/gl2.h PATHS ${PC_OPENGLES_INCLUDEDIR}) find_library(OPENGLES_gl_LIBRARY NAMES ${_brcmprefix}GLESv2 @@ -31,13 +31,24 @@ set(OPENGLES_INCLUDE_DIR ${OPENGLES_gl_LIBRARY}/Headers) endif() +find_path(OPENGLES3_INCLUDE_DIR GLES3/gl3.h) + include(FindPackageHandleStandardArgs) find_package_handle_standard_args(OpenGLES REQUIRED_VARS OPENGLES_gl_LIBRARY OPENGLES_INCLUDE_DIR) +find_path(OPENGLES3_INCLUDE_DIR GLES3/gl3.h + PATHS ${PC_OPENGLES_INCLUDEDIR}) + if(OPENGLES_FOUND) set(OPENGLES_LIBRARIES ${OPENGLES_gl_LIBRARY}) - set(OPENGLES_INCLUDE_DIRS ${OPENGLES_INCLUDE_DIR}) - set(OPENGLES_DEFINITIONS -DHAS_GLES=2) - mark_as_advanced(OPENGLES_INCLUDE_DIR OPENGLES_gl_LIBRARY) + if(OPENGLES3_INCLUDE_DIR) + set(OPENGLES_INCLUDE_DIRS ${OPENGLES_INCLUDE_DIR} ${OPENGLES3_INCLUDE_DIR}) + set(OPENGLES_DEFINITIONS -DHAS_GLES=3) + mark_as_advanced(OPENGLES_INCLUDE_DIR OPENGLES3_INCLUDE_DIR OPENGLES_gl_LIBRARY) + else() + set(OPENGLES_INCLUDE_DIRS ${OPENGLES_INCLUDE_DIR}) + set(OPENGLES_DEFINITIONS -DHAS_GLES=2) + mark_as_advanced(OPENGLES_INCLUDE_DIR OPENGLES_gl_LIBRARY) + endif() endif() diff -Nru kodi-visualization-projectm-2.2.0/Jenkinsfile kodi-visualization-projectm-2.3.0/Jenkinsfile --- kodi-visualization-projectm-2.2.0/Jenkinsfile 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/Jenkinsfile 2019-10-04 18:05:37.000000000 +0000 @@ -1 +1 @@ -buildPlugin(platforms: ['osx-x86_64', 'ubuntu-ppa', 'android-armv7', 'android-aarch64']) +buildPlugin(version: "Leia", platforms: ['android-armv7', 'android-aarch64', 'osx-x86_64', 'ubuntu-ppa']) diff -Nru kodi-visualization-projectm-2.2.0/README.md kodi-visualization-projectm-2.3.0/README.md --- kodi-visualization-projectm-2.2.0/README.md 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/README.md 2019-10-04 18:05:37.000000000 +0000 @@ -15,7 +15,7 @@ The following instructions assume you will have built Kodi already in the `kodi-build` directory suggested by the README. -1. `git clone https://github.com/xbmc/xbmc.git` +1. `git clone --branch Leia https://github.com/xbmc/xbmc.git` 2. `git clone https://github.com/xbmc/visualization.projectm.git` 3. `cd visualization.projectm && mkdir build && cd build` 4. `cmake -DADDONS_TO_BUILD=visualization.projectm -DADDON_SRC_PREFIX=../.. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../../xbmc/kodi-build/addons -DPACKAGE_ZIP=1 ../../xbmc/cmake/addons` diff -Nru kodi-visualization-projectm-2.2.0/src/Main.cpp kodi-visualization-projectm-2.3.0/src/Main.cpp --- kodi-visualization-projectm-2.2.0/src/Main.cpp 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/src/Main.cpp 2019-10-04 18:05:37.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2007-2014 Team XBMC + * Copyright (C) 2007-2019 Team Kodi * http://kodi.tv * * This Program is free software; you can redistribute it and/or modify @@ -53,52 +53,7 @@ */ -#include -#include - -#include - -class ATTRIBUTE_HIDDEN CVisualizationProjectM - : public kodi::addon::CAddonBase, - public kodi::addon::CInstanceVisualization -{ -public: - CVisualizationProjectM(); - virtual ~CVisualizationProjectM(); - - virtual void Render() override; - virtual void AudioData(const float* audioData, int audioDataLength, float *freqData, int freqDataLength) override; - virtual bool GetPresets(std::vector& presets) override; - virtual bool LoadPreset(int select) override; - virtual bool PrevPreset(); - virtual bool NextPreset(); - virtual bool LockPreset(bool lockUnlock); - virtual int GetActivePreset() override; - virtual bool RandomPreset() override; - virtual bool IsLocked() override; - virtual ADDON_STATUS SetSetting(const std::string& settingName, const kodi::CSettingValue& settingValue) override; - -private: - bool InitProjectM(); - void ChoosePresetPack(int pvalue); - void ChooseUserPresetFolder(std::string pvalue); - - projectM *m_projectM; - projectM::Settings m_configPM; - P8PLATFORM::CMutex m_pmMutex; - bool m_UserPackFolder; - std::string m_lastPresetDir; - int m_lastPresetIdx; - unsigned int m_lastLoggedPresetIdx; - bool m_lastLockStatus; - bool m_shutdown = false; - - // some projectm globals - const static int maxSamples=512; - const static int texsize=512; - const static int gx=40,gy=30; - const static int fps=100; -}; +#include "Main.h" //-- Create ------------------------------------------------------------------- // Called once when the visualisation is created by XBMC. Do any setup here. @@ -114,9 +69,9 @@ m_configPM.windowHeight = Height(); m_configPM.aspectCorrection = true; m_configPM.easterEgg = 0.0; - m_configPM.titleFontURL = kodi::GetAddonPath() + "/resources/projectM/fonts/Vera.ttf"; - m_configPM.menuFontURL = kodi::GetAddonPath() + "/resources/projectM/fonts/VeraMono.ttf"; - m_configPM.datadir = kodi::GetAddonPath() + "/resources/projectM"; + m_configPM.titleFontURL = kodi::GetAddonPath("resources/projectM/fonts/Vera.ttf"); + m_configPM.menuFontURL = kodi::GetAddonPath("resources/projectM/fonts/VeraMono.ttf"); + m_configPM.datadir = kodi::GetAddonPath("resources/projectM"); m_lastPresetIdx = kodi::GetSettingInt("last_preset_idx"); m_lastLoggedPresetIdx = m_lastPresetIdx; @@ -156,9 +111,9 @@ //----------------------------------------------------------------------------- void CVisualizationProjectM::AudioData(const float* pAudioData, int iAudioDataLength, float *pFreqData, int iFreqDataLength) { - P8PLATFORM::CLockObject lock(m_pmMutex); + std::unique_lock lock(m_pmMutex); if (m_projectM) - m_projectM->pcm()->addPCMfloat(pAudioData, iAudioDataLength); + m_projectM->pcm()->addPCMfloat_2ch(pAudioData, iAudioDataLength); } //-- Render ------------------------------------------------------------------- @@ -166,7 +121,7 @@ //----------------------------------------------------------------------------- void CVisualizationProjectM::Render() { - P8PLATFORM::CLockObject lock(m_pmMutex); + std::unique_lock lock(m_pmMutex); if (m_projectM) { m_projectM->renderFrame(); @@ -180,14 +135,14 @@ bool CVisualizationProjectM::LoadPreset(int select) { - P8PLATFORM::CLockObject lock(m_pmMutex); + std::unique_lock lock(m_pmMutex); m_projectM->selectPreset(select); return true; } bool CVisualizationProjectM::PrevPreset() { - P8PLATFORM::CLockObject lock(m_pmMutex); + std::unique_lock lock(m_pmMutex); // switchPreset(ALPHA_PREVIOUS, SOFT_CUT); if (!m_projectM->isShuffleEnabled()) m_projectM->key_handler(PROJECTM_KEYDOWN, PROJECTM_K_p, PROJECTM_KMOD_CAPS); //ignore PROJECTM_KMOD_CAPS @@ -199,7 +154,7 @@ bool CVisualizationProjectM::NextPreset() { - P8PLATFORM::CLockObject lock(m_pmMutex); + std::unique_lock lock(m_pmMutex); // switchPreset(ALPHA_NEXT, SOFT_CUT); if (!m_projectM->isShuffleEnabled()) m_projectM->key_handler(PROJECTM_KEYDOWN, PROJECTM_K_n, PROJECTM_KMOD_CAPS); //ignore PROJECTM_KMOD_CAPS @@ -210,14 +165,14 @@ bool CVisualizationProjectM::RandomPreset() { - P8PLATFORM::CLockObject lock(m_pmMutex); + std::unique_lock lock(m_pmMutex); m_projectM->setShuffleEnabled(m_configPM.shuffleEnabled); return true; } bool CVisualizationProjectM::LockPreset(bool lockUnlock) { - P8PLATFORM::CLockObject lock(m_pmMutex); + std::unique_lock lock(m_pmMutex); m_projectM->setPresetLock(lockUnlock); unsigned preset; m_projectM->selectedPresetIndex(preset); @@ -230,7 +185,7 @@ //----------------------------------------------------------------------------- bool CVisualizationProjectM::GetPresets(std::vector& presets) { - P8PLATFORM::CLockObject lock(m_pmMutex); + std::unique_lock lock(m_pmMutex); int numPresets = m_projectM ? m_projectM->getPlaylistSize() : 0; if (numPresets > 0) { @@ -246,7 +201,7 @@ int CVisualizationProjectM::GetActivePreset() { unsigned preset; - P8PLATFORM::CLockObject lock(m_pmMutex); + std::unique_lock lock(m_pmMutex); if(m_projectM && m_projectM->selectedPresetIndex(preset)) return preset; @@ -258,7 +213,7 @@ //----------------------------------------------------------------------------- bool CVisualizationProjectM::IsLocked() { - P8PLATFORM::CLockObject lock(m_pmMutex); + std::unique_lock lock(m_pmMutex); if(m_projectM) return m_projectM->isPresetLocked(); else @@ -273,30 +228,31 @@ if (settingName.empty() || settingValue.empty()) return ADDON_STATUS_UNKNOWN; - P8PLATFORM::CLockObject lock(m_pmMutex); - - // It is now time to set the settings got from xmbc - if (settingName == "quality") - m_configPM.textureSize = settingValue.GetInt(); - else if (settingName == "shuffle") - m_configPM.shuffleEnabled = settingValue.GetBoolean(); - else if (settingName == "last_preset_idx") - m_lastPresetIdx = settingValue.GetInt(); - else if (settingName == "last_locked_status") - m_lastLockStatus = settingValue.GetBoolean(); - else if (settingName == "last_preset_folder") - m_lastPresetDir = settingValue.GetString(); - else if (settingName == "smooth_duration") - m_configPM.smoothPresetDuration = (settingValue.GetInt() * 5 + 5); - else if (settingName == "preset_duration") - m_configPM.presetDuration = (settingValue.GetInt() * 5 + 5); - else if (settingName == "preset_pack") - ChoosePresetPack(settingValue.GetInt()); - else if (settingName == "user_preset_folder") - ChooseUserPresetFolder(settingValue.GetString()); - else if (settingName == "beat_sens") - m_configPM.beatSensitivity = settingValue.GetInt() * 2; + { + std::unique_lock lock(m_pmMutex); + // It is now time to set the settings got from xmbc + if (settingName == "quality") + m_configPM.textureSize = settingValue.GetInt(); + else if (settingName == "shuffle") + m_configPM.shuffleEnabled = settingValue.GetBoolean(); + else if (settingName == "last_preset_idx") + m_lastPresetIdx = settingValue.GetInt(); + else if (settingName == "last_locked_status") + m_lastLockStatus = settingValue.GetBoolean(); + else if (settingName == "last_preset_folder") + m_lastPresetDir = settingValue.GetString(); + else if (settingName == "smooth_duration") + m_configPM.smoothPresetDuration = (settingValue.GetInt() * 5 + 5); + else if (settingName == "preset_duration") + m_configPM.presetDuration = (settingValue.GetInt() * 5 + 5); + else if (settingName == "preset_pack") + ChoosePresetPack(settingValue.GetInt()); + else if (settingName == "user_preset_folder") + ChooseUserPresetFolder(settingValue.GetString()); + else if (settingName == "beat_sens") + m_configPM.beatSensitivity = settingValue.GetInt() * 2; + } if (settingName == "beat_sens" && !m_shutdown) // becomes changed in future by a additional value on function { if (!InitProjectM()) //The last setting value is already set so we (re)initalize @@ -307,7 +263,7 @@ bool CVisualizationProjectM::InitProjectM() { - P8PLATFORM::CLockObject lock(m_pmMutex); + std::unique_lock lock(m_pmMutex); delete m_projectM; //We are re-initializing the engine try { @@ -347,7 +303,7 @@ } else { - m_configPM.presetURL = kodi::GetAddonPath() + "/resources/projectM/presets"; + m_configPM.presetURL = kodi::GetAddonPath("resources/projectM/presets"); } } diff -Nru kodi-visualization-projectm-2.2.0/src/Main.h kodi-visualization-projectm-2.3.0/src/Main.h --- kodi-visualization-projectm-2.2.0/src/Main.h 1970-01-01 00:00:00.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/src/Main.h 2019-10-04 18:05:37.000000000 +0000 @@ -0,0 +1,104 @@ +/* + * Copyright (C) 2007-2019 Team Kodi + * http://kodi.tv + * + * This Program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This Program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Kodi; see the file COPYING. If not, see + * . + * + */ + +/* +xmms-projectM v0.99 - xmms-projectm.sourceforge.net +-------------------------------------------------- + +Lead Developers: Carmelo Piccione (cep@andrew.cmu.edu) & + Peter Sperl (peter@sperl.com) + +We have also been advised by some professors at CMU, namely Roger B. Dannenberg. +http://www-2.cs.cmu.edu/~rbd/ + +The inspiration for this program was Milkdrop by Ryan Geiss. Obviously. + +This code is distributed under the GPL. + + +THANKS FOR THE CODE!!! +------------------------------------------------- +The base for this program was andy@nobugs.org's XMMS plugin tutorial +http://www.xmms.org/docs/vis-plugin.html + +We used some FFT code by Takuya OOURA instead of XMMS' built-in fft code +fftsg.c - http://momonga.t.u-tokyo.ac.jp/~ooura/fft.html + +For font rendering we used GLF by Roman Podobedov +glf.c - http://astronomy.swin.edu.au/~pbourke/opengl/glf/ + +and some beat detection code was inspired by Frederic Patin @ +www.gamedev.net/reference/programming/features/beatdetection/ +-- + +"ported" to XBMC by d4rk +d4rk@xbmc.org + +*/ + +#pragma once + +#include +#include + +#include + +class ATTRIBUTE_HIDDEN CVisualizationProjectM + : public kodi::addon::CAddonBase, + public kodi::addon::CInstanceVisualization +{ +public: + CVisualizationProjectM(); + ~CVisualizationProjectM() override; + + void Render() override; + void AudioData(const float* audioData, int audioDataLength, float *freqData, int freqDataLength) override; + bool GetPresets(std::vector& presets) override; + bool LoadPreset(int select) override; + bool PrevPreset() override; + bool NextPreset() override; + bool LockPreset(bool lockUnlock) override; + int GetActivePreset() override; + bool RandomPreset() override; + bool IsLocked() override; + ADDON_STATUS SetSetting(const std::string& settingName, const kodi::CSettingValue& settingValue) override; + +private: + bool InitProjectM(); + void ChoosePresetPack(int pvalue); + void ChooseUserPresetFolder(std::string pvalue); + + projectM* m_projectM; + projectM::Settings m_configPM; + std::mutex m_pmMutex; + bool m_UserPackFolder; + std::string m_lastPresetDir; + int m_lastPresetIdx; + unsigned int m_lastLoggedPresetIdx; + bool m_lastLockStatus; + bool m_shutdown = false; + + // some projectm globals + const static int maxSamples=512; + const static int texsize=512; + const static int gx=40,gy=30; + const static int fps=100; +}; + diff -Nru kodi-visualization-projectm-2.2.0/.travis.yml kodi-visualization-projectm-2.3.0/.travis.yml --- kodi-visualization-projectm-2.2.0/.travis.yml 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/.travis.yml 2019-10-04 18:05:37.000000000 +0000 @@ -40,7 +40,7 @@ # before_script: - cd $TRAVIS_BUILD_DIR/.. - - git clone --depth=1 https://github.com/xbmc/xbmc.git + - git clone --branch Leia --depth=1 https://github.com/xbmc/xbmc.git - cd ${app_id} && mkdir build && cd build - mkdir -p definition/${app_id} - echo ${app_id} $TRAVIS_BUILD_DIR $TRAVIS_COMMIT > definition/${app_id}/${app_id}.txt diff -Nru kodi-visualization-projectm-2.2.0/visualization.projectm/addon.xml.in kodi-visualization-projectm-2.3.0/visualization.projectm/addon.xml.in --- kodi-visualization-projectm-2.2.0/visualization.projectm/addon.xml.in 2019-03-06 09:37:34.000000000 +0000 +++ kodi-visualization-projectm-2.3.0/visualization.projectm/addon.xml.in 2019-10-04 18:05:37.000000000 +0000 @@ -1,7 +1,7 @@  @ADDON_DEPENDS@ @@ -120,6 +120,8 @@ projectM 是一个音乐可视化效果。它是 Unix 世界中最好的。它的伟大来自于社区的辛苦工作。使用者可以创建预设参数把音乐和难以置信的可视化效果连接起来。试试吧! projectM 可视化效果是用 OpenGL 按照 LGPL 协议对 Milkdrop 的重新实现 projectM 所要求的仅是一块有 3D 加速功能的显卡和你喜爱的音乐。 projectM是一個令人驚豔的音樂視覺效果。它是Unix世界中最好的。projectM的偉大成果來自於社群創作者的投入與心血。使用者可以創建把音樂和難以置信的視覺效果連接起來的預設值。快來嘗鮮一下吧! projectM視覺效果是用OpenGL按照LGPL協議對Milkdrop的重新實現 projectM所要求的僅是一張有3D加速功能的影像顯示卡和您喜愛的音樂。 @PLATFORM@ + GPL-2.0 + https://github.com/xbmc/visualization.projectm resources/icon.png resources/fanart.jpg