diff -Nru kodi-screensaver-greynetic-2.1.0/appveyor.yml kodi-screensaver-greynetic-2.2.2/appveyor.yml --- kodi-screensaver-greynetic-2.1.0/appveyor.yml 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/appveyor.yml 2020-02-22 01:02:24.000000000 +0000 @@ -1,6 +1,6 @@ version: BuildNr.{build} -image: Visual Studio 2015 +image: Visual Studio 2017 shallow_clone: true @@ -10,18 +10,21 @@ app_id: screensaver.greynetic matrix: - - GENERATOR: "Visual Studio 14" + - GENERATOR: "Visual Studio 15" CONFIG: Release - - GENERATOR: "Visual Studio 14 Win64" + - GENERATOR: "Visual Studio 15 Win64" CONFIG: Release + - GENERATOR: "Visual Studio 15 Win64" + CONFIG: Release + WINSTORE: -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0.16299.0" build_script: - cd .. - - 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% %APPVEYOR_BUILD_FOLDER% %APPVEYOR_REPO_COMMIT% > definition\%app_id%\%app_id%.txt - - cmake -T host=x64 -G "%GENERATOR%" -DADDONS_TO_BUILD=%app_id% -DCMAKE_BUILD_TYPE=%CONFIG% -DADDONS_DEFINITION_DIR=%APPVEYOR_BUILD_FOLDER%/build/definition -DADDON_SRC_PREFIX=../.. -DCMAKE_INSTALL_PREFIX=../../xbmc/addons -DPACKAGE_ZIP=1 ../../xbmc/cmake/addons + - cmake -T host=x64 -G "%GENERATOR%" %WINSTORE% -DADDONS_TO_BUILD=%app_id% -DCMAKE_BUILD_TYPE=%CONFIG% -DADDONS_DEFINITION_DIR=%APPVEYOR_BUILD_FOLDER%/build/definition -DADDON_SRC_PREFIX=../.. -DCMAKE_INSTALL_PREFIX=../../xbmc/addons -DPACKAGE_ZIP=1 ../../xbmc/cmake/addons - cmake --build . --config %CONFIG% --target %app_id% diff -Nru kodi-screensaver-greynetic-2.1.0/azure-pipelines.yml kodi-screensaver-greynetic-2.2.2/azure-pipelines.yml --- kodi-screensaver-greynetic-2.1.0/azure-pipelines.yml 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/azure-pipelines.yml 2020-02-22 01:02:24.000000000 +0000 @@ -0,0 +1,65 @@ +variables: + app_id: 'screensaver.greynetic' + +trigger: + branches: + include: + - Leia + - releases/* + paths: + include: + - '*' + exclude: + - 'debian/*' + +jobs: + - job: Windows + + pool: + vmImage: 'VS2017-Win2016' + + strategy: + matrix: + Win32: + GENERATOR: "Visual Studio 15 2017" + ARCHITECTURE: Win32 + CONFIGURATION: Release + Win64: + GENERATOR: "Visual Studio 15 2017" + ARCHITECTURE: x64 + CONFIGURATION: Release + Win64-UWP: + GENERATOR: "Visual Studio 15 2017" + ARCHITECTURE: x64 + CONFIGURATION: Release + WINSTORE: -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0.16299.0" + ARM64-UWP: + GENERATOR: "Visual Studio 15 2017" + ARCHITECTURE: ARM64 + CONFIGURATION: Release + WINSTORE: -DCMAKE_SYSTEM_NAME=WindowsStore -DCMAKE_SYSTEM_VERSION="10.0.16299.0" + + workspace: + clean: all + + steps: + + - script: | + cd .. + git clone --branch Leia --depth=1 https://github.com/xbmc/xbmc.git kodi + cd $(Build.SourcesDirectory) + mkdir build + cd build + mkdir "definition/$(app_id)" + echo $(app_id) . . > definition/$(app_id)/$(app_id).txt + mklink /J "$(Pipeline.Workspace)/$(app_id)" "$(Build.SourcesDirectory)" + + - task: CMake@1 + inputs: + workingDirectory: 'build' + cmakeArgs: '-T host=x64 -G "$(GENERATOR)" -A $(ARCHITECTURE) $(WINSTORE) -DADDONS_TO_BUILD=$(app_id) -DCMAKE_BUILD_TYPE=$(CONFIGURATION) -DADDONS_DEFINITION_DIR=$(Pipeline.Workspace)/$(app_id)/build/definition -DADDON_SRC_PREFIX=../.. -DCMAKE_INSTALL_PREFIX=../../kodi/addons -DPACKAGE_ZIP=1 ../../kodi/cmake/addons' + + - task: CMake@1 + inputs: + workingDirectory: 'build' + cmakeArgs: '--build . --config $(CONFIGURATION) --target $(app_id)' diff -Nru kodi-screensaver-greynetic-2.1.0/CMakeLists.txt kodi-screensaver-greynetic-2.2.2/CMakeLists.txt --- kodi-screensaver-greynetic-2.1.0/CMakeLists.txt 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/CMakeLists.txt 2020-02-22 01:02:24.000000000 +0000 @@ -1,36 +1,37 @@ +cmake_minimum_required(VERSION 3.5) project(screensaver.greynetic) -cmake_minimum_required(VERSION 2.6) - set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}) -enable_language(CXX) - find_package(Kodi REQUIRED) -if(NOT WIN32 AND (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(-DHAS_OPENGL) -elseif(NOT WIN32 AND APP_RENDER_SYSTEM STREQUAL "gles") - find_package(OpenGLES2 REQUIRED) - set(DEPLIBS ${OPENGLES2_LIBRARIES}) - set(includes ${OPENGLES2_INCLUDE_DIR}) - add_definitions(-DHAS_GLES2) +if(NOT WIN32) + 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}) + elseif(APP_RENDER_SYSTEM STREQUAL "gles") + find_package(OpenGLES REQUIRED) + set(DEPLIBS ${OPENGLES_LIBRARIES}) + set(includes ${OPENGLES_INCLUDE_DIR}) + add_definitions(${OPENGLES_DEFINITIONS}) + endif() + + if(NOT OPENGL_FOUND AND NOT OPENGLES_FOUND) + message(FATAL_ERROR "No rendering API found. Bailing") + endif() + + find_package(glm REQUIRED) + list(APPEND DEPENDS glm) + list(APPEND includes ${GLM_INCLUDE_DIRS}) endif() -include_directories(${includes} ${KODI_INCLUDE_DIR}/..) # Hack way with "/..", need bigger Kodi cmake rework to match right include ways +include_directories(${includes} + ${KODI_INCLUDE_DIR}/.. # Hack way with "/..", need bigger Kodi cmake rework to match right include ways + ${PROJECT_SOURCE_DIR}/lib) set(GREYNETIC_SOURCES src/GreyNetic.cpp) -if(NOT WIN32) - list(APPEND GREYNETIC_SOURCES src/shaders/GUIShader.cpp - src/shaders/Matrix.cpp - src/shaders/Shader.cpp) - set(GREYNETIC_HEADERS src/shaders/GUIShader.h - src/shaders/Matrix.h - src/shaders/Shader.h) -endif() build_addon(screensaver.greynetic GREYNETIC DEPLIBS) diff -Nru kodi-screensaver-greynetic-2.1.0/debian/changelog kodi-screensaver-greynetic-2.2.2/debian/changelog --- kodi-screensaver-greynetic-2.1.0/debian/changelog 2018-11-26 14:40:19.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/debian/changelog 2013-05-31 22:59:22.000000000 +0000 @@ -1,4 +1,4 @@ -kodi-screensaver-greynetic (2.1.0-1~bionic) bionic; urgency=low +kodi-screensaver-greynetic (2.2.2-1~bionic) bionic; urgency=low [ kodi ] * autogenerated dummy changelog diff -Nru kodi-screensaver-greynetic-2.1.0/debian/compat kodi-screensaver-greynetic-2.2.2/debian/compat --- kodi-screensaver-greynetic-2.1.0/debian/compat 2018-11-25 19:30:33.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/debian/compat 2013-05-31 22:59:22.000000000 +0000 @@ -1 +1 @@ -8 +9 diff -Nru kodi-screensaver-greynetic-2.1.0/debian/control kodi-screensaver-greynetic-2.2.2/debian/control --- kodi-screensaver-greynetic-2.1.0/debian/control 2018-11-25 19:43:15.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/debian/control 2013-05-31 22:59:22.000000000 +0000 @@ -2,8 +2,9 @@ Priority: extra Maintainer: Nobody Build-Depends: debhelper (>= 9.0.0), cmake, kodi-addon-dev, - libgles2-mesa-dev [arm64 armhf], libgl1-mesa-dev [i386 amd64] -Standards-Version: 3.9.5 + libgles2-mesa-dev [arm64 armhf], libgl1-mesa-dev [i386 amd64], + libglm-dev +Standards-Version: 4.1.2 Section: libs Homepage: http://kodi.tv diff -Nru kodi-screensaver-greynetic-2.1.0/debian/copyright kodi-screensaver-greynetic-2.2.2/debian/copyright --- kodi-screensaver-greynetic-2.1.0/debian/copyright 2018-11-25 19:30:33.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/debian/copyright 2013-05-31 22:59:22.000000000 +0000 @@ -3,7 +3,7 @@ Source: https://github.com/xbmc/screensaver.greynetic Files: * -Copyright: 2005-2018 Team Kodi +Copyright: 2005-2019 Team Kodi License: GPL-2+ This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -Nru kodi-screensaver-greynetic-2.1.0/debian/kodi-screensaver-greynetic.install kodi-screensaver-greynetic-2.2.2/debian/kodi-screensaver-greynetic.install --- kodi-screensaver-greynetic-2.1.0/debian/kodi-screensaver-greynetic.install 2018-11-25 19:30:33.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/debian/kodi-screensaver-greynetic.install 2013-05-31 22:59:22.000000000 +0000 @@ -1,2 +1,2 @@ -usr/lib/*/kodi/addons/screensaver.greynetic/screensaver.greynetic.so* -usr/share/kodi/addons/screensaver.greynetic +usr/lib/* +usr/share/* diff -Nru kodi-screensaver-greynetic-2.1.0/depends/common/glm/flags.txt kodi-screensaver-greynetic-2.2.2/depends/common/glm/flags.txt --- kodi-screensaver-greynetic-2.1.0/depends/common/glm/flags.txt 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/depends/common/glm/flags.txt 2020-02-22 01:02:24.000000000 +0000 @@ -0,0 +1 @@ +-DGLM_TEST_ENABLE_CXX_11=1 -DGLM_TEST_ENABLE=0 -DGLM_TEST_ENABLE_SIMD_SSE2=0 -DCMAKE_INSTALL_LIBDIR=lib diff -Nru kodi-screensaver-greynetic-2.1.0/depends/common/glm/glm.sha256 kodi-screensaver-greynetic-2.2.2/depends/common/glm/glm.sha256 --- kodi-screensaver-greynetic-2.1.0/depends/common/glm/glm.sha256 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/depends/common/glm/glm.sha256 2020-02-22 01:02:24.000000000 +0000 @@ -0,0 +1 @@ +7f093f11c49877716bab96813c2e834db6839095281c8c0c65c60c8bdb9504a3 diff -Nru kodi-screensaver-greynetic-2.1.0/depends/common/glm/glm.txt kodi-screensaver-greynetic-2.2.2/depends/common/glm/glm.txt --- kodi-screensaver-greynetic-2.1.0/depends/common/glm/glm.txt 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/depends/common/glm/glm.txt 2020-02-22 01:02:24.000000000 +0000 @@ -0,0 +1 @@ +glm https://github.com/g-truc/glm/archive/47031aa4b7b079716e4cac496819e7f464b6a713.tar.gz diff -Nru kodi-screensaver-greynetic-2.1.0/depends/osx/glm/flags.txt kodi-screensaver-greynetic-2.2.2/depends/osx/glm/flags.txt --- kodi-screensaver-greynetic-2.1.0/depends/osx/glm/flags.txt 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/depends/osx/glm/flags.txt 2020-02-22 01:02:24.000000000 +0000 @@ -0,0 +1 @@ +-DGLM_TEST_ENABLE_CXX_11=1 -DGLM_TEST_ENABLE=0 -DGLM_TEST_ENABLE_SIMD_SSE2=1 -DCMAKE_INSTALL_LIBDIR=lib diff -Nru kodi-screensaver-greynetic-2.1.0/depends/osx/glm/glm.sha256 kodi-screensaver-greynetic-2.2.2/depends/osx/glm/glm.sha256 --- kodi-screensaver-greynetic-2.1.0/depends/osx/glm/glm.sha256 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/depends/osx/glm/glm.sha256 2020-02-22 01:02:24.000000000 +0000 @@ -0,0 +1 @@ +7f093f11c49877716bab96813c2e834db6839095281c8c0c65c60c8bdb9504a3 diff -Nru kodi-screensaver-greynetic-2.1.0/depends/osx/glm/glm.txt kodi-screensaver-greynetic-2.2.2/depends/osx/glm/glm.txt --- kodi-screensaver-greynetic-2.1.0/depends/osx/glm/glm.txt 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/depends/osx/glm/glm.txt 2020-02-22 01:02:24.000000000 +0000 @@ -0,0 +1 @@ +glm https://github.com/g-truc/glm/archive/47031aa4b7b079716e4cac496819e7f464b6a713.tar.gz diff -Nru kodi-screensaver-greynetic-2.1.0/FindOpenGl.cmake kodi-screensaver-greynetic-2.2.2/FindOpenGl.cmake --- kodi-screensaver-greynetic-2.1.0/FindOpenGl.cmake 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/FindOpenGl.cmake 2020-02-22 01:02:24.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-screensaver-greynetic-2.1.0/FindOpenGLES2.cmake kodi-screensaver-greynetic-2.2.2/FindOpenGLES2.cmake --- kodi-screensaver-greynetic-2.1.0/FindOpenGLES2.cmake 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/FindOpenGLES2.cmake 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -# - Try to find OpenGLES2 -# Once done this will define -# -# OPENGLES2_FOUND - system has OpenGLES2 -# OPENGLES2_INCLUDE_DIR - the GLES2 include directory -# OPENGLES2_LIBRARIES - Link these to use OpenGLES2 - -find_package(PkgConfig) -if(PKG_CONFIG_FOUND) - pkg_check_modules(OpenGLES2 glesv2) -endif(PKG_CONFIG_FOUND) - -if(NOT OPENGLES2_FOUND) - if("${CORE_SYSTEM_NAME}" STREQUAL "ios") - find_library(OPENGLES2_gl_LIBRARY NAMES OpenGLES PATHS ${CMAKE_OSX_SYSROOT}/System/Library PATH_SUFFIXES Frameworks NO_DEFAULT_PATH) - set(OPENGLES2_INCLUDE_DIRS ${OPENGLES2_gl_LIBRARY}/Headers) - set(OPENGLES2_egl_LIBRARY ${OPENGLES2_gl_LIBRARY}) - else() - find_path(OPENGLES2_INCLUDE_DIRS GLES2/gl2.h) - find_library(OPENGLES2_gl_LIBRARY NAMES GLESv2) - find_library(OPENGLES2_egl_LIBRARY NAMES EGL) - endif() - - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(OpenGLES2 DEFAULT_MSG - OPENGLES2_INCLUDE_DIRS OPENGLES2_gl_LIBRARY OPENGLES2_egl_LIBRARY) - - set(OPENGLES2_LIBRARIES ${OPENGLES2_gl_LIBRARY} ${OPENGLES2_egl_LIBRARY}) -endif(NOT OPENGLES2_FOUND) - -mark_as_advanced( - OPENGLES2_INCLUDE_DIRS - OPENGLES2_LIBRARIES - OPENGLES2_gl_LIBRARY - OPENGLES2_egl_LIBRARY -) diff -Nru kodi-screensaver-greynetic-2.1.0/FindOpenGLES.cmake kodi-screensaver-greynetic-2.2.2/FindOpenGLES.cmake --- kodi-screensaver-greynetic-2.1.0/FindOpenGLES.cmake 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/FindOpenGLES.cmake 2020-02-22 01:02:24.000000000 +0000 @@ -0,0 +1,54 @@ +#.rst: +# FindOpenGLES +# ------------ +# Finds the OpenGLES2 library +# +# This will define the following variables:: +# +# OPENGLES_FOUND - system has OpenGLES +# OPENGLES_INCLUDE_DIRS - the OpenGLES include directory +# OPENGLES_LIBRARIES - the OpenGLES libraries +# OPENGLES_DEFINITIONS - the OpenGLES definitions + +if(CORE_PLATFORM_NAME_LC STREQUAL rbpi) + set(_brcmprefix brcm) +endif() + +if(PKG_CONFIG_FOUND) + pkg_check_modules(PC_OPENGLES ${_brcmprefix}glesv2 QUIET) +endif() + +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 + PATHS ${PC_OPENGLES_LIBDIR}) +else() + find_library(OPENGLES_gl_LIBRARY NAMES OpenGLES + PATHS ${CMAKE_OSX_SYSROOT}/System/Library + PATH_SUFFIXES Frameworks + NO_DEFAULT_PATH) + 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}) + 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-screensaver-greynetic-2.1.0/.gitignore kodi-screensaver-greynetic-2.2.2/.gitignore --- kodi-screensaver-greynetic-2.1.0/.gitignore 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/.gitignore 2020-02-22 01:02:24.000000000 +0000 @@ -1,8 +1,17 @@ # build artifacts build/ -obj-x86_64-linux-gnu/ screensaver.*/addon.xml +# Debian build files +debian/changelog +debian/files +debian/*.log +debian/*.substvars +debian/.debhelper/ +debian/tmp/ +debian/kodi-screensaver-*/ +obj-x86_64-linux-gnu/ + # commonly used editors # vim *.swp @@ -25,6 +34,3 @@ # clion .idea/ - -# KDev -*.kdev4 \ No newline at end of file diff -Nru kodi-screensaver-greynetic-2.1.0/Jenkinsfile kodi-screensaver-greynetic-2.2.2/Jenkinsfile --- kodi-screensaver-greynetic-2.1.0/Jenkinsfile 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/Jenkinsfile 2020-02-22 01:02:24.000000000 +0000 @@ -1 +1 @@ -buildPlugin() +buildPlugin(version: "Leia") diff -Nru kodi-screensaver-greynetic-2.1.0/lib/kodi/gui/gl/GL.h kodi-screensaver-greynetic-2.2.2/lib/kodi/gui/gl/GL.h --- kodi-screensaver-greynetic-2.1.0/lib/kodi/gui/gl/GL.h 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/lib/kodi/gui/gl/GL.h 2020-02-22 01:02:24.000000000 +0000 @@ -0,0 +1,105 @@ +/* + * Copyright (C) 2005-2019 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +//============================================================================== +/// +/// \defgroup cpp_kodi_gui_gl Kodi OpenGL helpers +/// \ingroup cpp_kodi_gui +/// \brief Auxiliary functions for Open GL +/// +/// This group includes help for definitions, functions, and classes for +/// OpenGL. +/// +/// To use OpenGL for your system, add the \ref GL.h "#include ". +/// +/// +///----------------------------------------------------------------------------- +/// +/// The \ref HAS_GL is declared if Open GL is required and \ref HAS_GLES if Open GL +/// Embedded Systems (ES) is required, with ES the version is additionally given +/// in the definition, this can be "2" or "3". +/// +/// +///----------------------------------------------------------------------------- +/// +/// Following \ref GL_TYPE_STRING define can be used, for example, to manage +/// different folders for GL and GLES and make the selection easier. +/// This are on OpenGL **"`GL`"** and on Open GL|ES **"`GLES`"**. +/// **Example:** +/// ~~~~~~~~~~~~~~~~~{.cpp} +/// kodi::GetAddonPath("resources/shaders/" GL_TYPE_STRING "/frag.glsl"); +/// ~~~~~~~~~~~~~~~~~ +/// +/// +///---------------------------------------------------------------------------- +/// +/// In addition, \ref BUFFER_OFFSET is declared in it which can be used to give an +/// offset on the array to GL. +/// **Example:** +/// ~~~~~~~~~~~~~~~~~{.cpp} +/// const struct PackedVertex { +/// float position[3]; // Position x, y, z +/// float color[4]; // Color r, g, b, a +/// } vertices[3] = { +/// { { -0.5f, -0.5f, 0.0f }, { 1.0f, 0.0f, 0.0f, 1.0f } }, +/// { { 0.5f, -0.5f, 0.0f }, { 0.0f, 1.0f, 0.0f, 1.0f } }, +/// { { 0.0f, 0.5f, 0.0f }, { 0.0f, 0.0f, 1.0f, 1.0f } } +/// }; +/// +/// glVertexAttribPointer(m_aPosition, 3, GL_FLOAT, GL_FALSE, sizeof(PackedVertex), BUFFER_OFFSET(offsetof(PackedVertex, position))); +/// glEnableVertexAttribArray(m_aPosition); +/// +/// glVertexAttribPointer(m_aColor, 4, GL_FLOAT, GL_FALSE, sizeof(PackedVertex), BUFFER_OFFSET(offsetof(PackedVertex, color))); +/// glEnableVertexAttribArray(m_aColor); +/// ~~~~~~~~~~~~~~~~~ + +#if HAS_GL + #define GL_TYPE_STRING "GL" + // always define GL_GLEXT_PROTOTYPES before include gl headers + #if !defined(GL_GLEXT_PROTOTYPES) + #define GL_GLEXT_PROTOTYPES + #endif + #if defined(TARGET_LINUX) + #include + #include + #elif defined(TARGET_FREEBSD) + #include + #elif defined(TARGET_DARWIN) + #include + #include + #elif defined(WIN32) + #error Use of GL under Windows is not possible + #endif +#elif HAS_GLES >= 2 + #define GL_TYPE_STRING "GLES" + #if defined(WIN32) + #error Use of GLES under Windows is not possible + #elif defined(TARGET_DARWIN) + #if HAS_GLES == 3 + #include + #include + #else + #include + #include + #endif + #else + #if HAS_GLES == 3 + #include + #include + #else + #include + #include + #endif + #endif +#endif + +#ifndef BUFFER_OFFSET +#define BUFFER_OFFSET(i) ((char *)nullptr + (i)) +#endif diff -Nru kodi-screensaver-greynetic-2.1.0/lib/kodi/gui/gl/Shader.h kodi-screensaver-greynetic-2.2.2/lib/kodi/gui/gl/Shader.h --- kodi-screensaver-greynetic-2.1.0/lib/kodi/gui/gl/Shader.h 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/lib/kodi/gui/gl/Shader.h 2020-02-22 01:02:24.000000000 +0000 @@ -0,0 +1,353 @@ +/* + * Copyright (C) 2005-2019 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +#include "GL.h" + +#include +#include +#include + +#include +#include + +#define LOG_SIZE 1024 +#define GLchar char + +namespace kodi +{ + namespace gui + { + namespace gl + { + //======================================================================== + /// CShader - base class + class ATTRIBUTE_HIDDEN CShader + { + public: + CShader() = default; + virtual ~CShader() = default; + virtual bool Compile(const std::string& extraBegin = "", + const std::string& extraEnd = "") = 0; + virtual void Free() = 0; + virtual GLuint Handle() = 0; + + bool LoadSource(const std::string& file) + { + char buffer[16384]; + + kodi::vfs::CFile source; + if (!source.OpenFile(file)) + { + kodi::Log(ADDON_LOG_ERROR, "CShader::%s: Failed to open file '%s'", __FUNCTION__, file.c_str()); + return false; + } + size_t len = source.Read(buffer, sizeof(buffer)); + m_source.assign(buffer); + m_source[len] = 0; + source.Close(); + return true; + } + + bool OK() { return m_compiled; } + + protected: + std::string m_source; + std::string m_lastLog; + bool m_compiled = false; + }; + //------------------------------------------------------------------------ + + //======================================================================== + /// CVertexShader + class ATTRIBUTE_HIDDEN CVertexShader : public CShader + { + public: + CVertexShader() = default; + ~CVertexShader() override { Free(); } + + void Free() override + { + if (m_vertexShader) + glDeleteShader(m_vertexShader); + m_vertexShader = 0; + } + + bool Compile(const std::string& extraBegin = "", + const std::string& extraEnd = "") override + { + GLint params[4]; + + Free(); + + m_vertexShader = glCreateShader(GL_VERTEX_SHADER); + + GLsizei count = 0; + const char *sources[3]; + if (!extraBegin.empty()) + sources[count++] = extraBegin.c_str(); + if (!m_source.empty()) + sources[count++] = m_source.c_str(); + if (!extraEnd.empty()) + sources[count++] = extraEnd.c_str(); + + glShaderSource(m_vertexShader, count, sources, nullptr); + glCompileShader(m_vertexShader); + glGetShaderiv(m_vertexShader, GL_COMPILE_STATUS, params); + if (params[0] != GL_TRUE) + { + GLchar log[LOG_SIZE]; + glGetShaderInfoLog(m_vertexShader, LOG_SIZE, nullptr, log); + kodi::Log(ADDON_LOG_ERROR, "CVertexShader::%s: %s", __FUNCTION__, log); + fprintf(stderr, "CVertexShader::%s: %s\n", __FUNCTION__, log); + m_lastLog = log; + m_compiled = false; + } + else + { + GLchar log[LOG_SIZE]; + glGetShaderInfoLog(m_vertexShader, LOG_SIZE, nullptr, log); + m_lastLog = log; + m_compiled = true; + } + return m_compiled; + } + + GLuint Handle() override { return m_vertexShader; } + + protected: + GLuint m_vertexShader = 0; + }; + //------------------------------------------------------------------------ + + //======================================================================== + /// CPixelShader + class ATTRIBUTE_HIDDEN CPixelShader : public CShader + { + public: + CPixelShader() = default; + ~CPixelShader() { Free(); } + void Free() override + { + if (m_pixelShader) + glDeleteShader(m_pixelShader); + m_pixelShader = 0; + } + + bool Compile(const std::string& extraBegin = "", + const std::string& extraEnd = "") override + { + GLint params[4]; + + Free(); + + if (m_source.length()==0) + return true; + + m_pixelShader = glCreateShader(GL_FRAGMENT_SHADER); + + GLsizei count = 0; + const char *sources[3]; + if (!extraBegin.empty()) + sources[count++] = extraBegin.c_str(); + if (!m_source.empty()) + sources[count++] = m_source.c_str(); + if (!extraEnd.empty()) + sources[count++] = extraEnd.c_str(); + + glShaderSource(m_pixelShader, count, sources, 0); + glCompileShader(m_pixelShader); + glGetShaderiv(m_pixelShader, GL_COMPILE_STATUS, params); + if (params[0] != GL_TRUE) + { + GLchar log[LOG_SIZE]; + glGetShaderInfoLog(m_pixelShader, LOG_SIZE, nullptr, log); + kodi::Log(ADDON_LOG_ERROR, "CPixelShader::%s: %s", __FUNCTION__, log); + fprintf(stderr, "CPixelShader::%s: %s\n", __FUNCTION__, log); + m_lastLog = log; + m_compiled = false; + } + else + { + GLchar log[LOG_SIZE]; + glGetShaderInfoLog(m_pixelShader, LOG_SIZE, nullptr, log); + m_lastLog = log; + m_compiled = true; + } + return m_compiled; + } + + GLuint Handle() override { return m_pixelShader; } + + protected: + GLuint m_pixelShader = 0; + }; + //------------------------------------------------------------------------ + + //======================================================================== + /// CShaderProgram + class ATTRIBUTE_HIDDEN CShaderProgram + { + public: + CShaderProgram() = default; + CShaderProgram(const std::string &vert, const std::string &frag) + { + LoadShaderFiles(vert, frag); + } + + virtual ~CShaderProgram() + { + ShaderFree(); + } + + bool LoadShaderFiles(const std::string &vert, const std::string &frag) + { + if (!kodi::vfs::FileExists(vert) || !m_pVP.LoadSource(vert)) + { + kodi::Log(ADDON_LOG_ERROR, "%s: Failed to load '%s'", __func__, vert.c_str()); + return false; + } + + if (!kodi::vfs::FileExists(frag) || !m_pFP.LoadSource(frag)) + { + kodi::Log(ADDON_LOG_ERROR, "%s: Failed to load '%s'", __func__, frag.c_str()); + return false; + } + + return true; + } + + bool CompileAndLink(const std::string& vertexExtraBegin = "", + const std::string& vertexExtraEnd = "", + const std::string& fragmentExtraBegin = "", + const std::string& fragmentExtraEnd = "") + { + GLint params[4]; + + // free resources + ShaderFree(); + m_ok = false; + + // compiled vertex shader + if (!m_pVP.Compile(vertexExtraBegin, vertexExtraEnd)) + { + kodi::Log(ADDON_LOG_ERROR, "GL: Error compiling vertex shader"); + return false; + } + + // compile pixel shader + if (!m_pFP.Compile(fragmentExtraBegin, fragmentExtraEnd)) + { + m_pVP.Free(); + kodi::Log(ADDON_LOG_ERROR, "GL: Error compiling fragment shader"); + return false; + } + + // create program object + if (!(m_shaderProgram = glCreateProgram())) + { + kodi::Log(ADDON_LOG_ERROR, "CShaderProgram::%s: Failed to create GL program", __FUNCTION__); + ShaderFree(); + return false; + } + + // attach the vertex shader + glAttachShader(m_shaderProgram, m_pVP.Handle()); + glAttachShader(m_shaderProgram, m_pFP.Handle()); + + // link the program + glLinkProgram(m_shaderProgram); + glGetProgramiv(m_shaderProgram, GL_LINK_STATUS, params); + if (params[0] != GL_TRUE) + { + GLchar log[LOG_SIZE]; + glGetProgramInfoLog(m_shaderProgram, LOG_SIZE, nullptr, log); + kodi::Log(ADDON_LOG_ERROR, "CShaderProgram::%s: %s", __FUNCTION__, log); + fprintf(stderr, "CShaderProgram::%s: %s\n", __FUNCTION__, log); + ShaderFree(); + return false; + } + + m_validated = false; + m_ok = true; + OnCompiledAndLinked(); + return true; + } + + bool EnableShader() + { + if (ShaderOK()) + { + glUseProgram(m_shaderProgram); + if (OnEnabled()) + { + if (!m_validated) + { + // validate the program + GLint params[4]; + glValidateProgram(m_shaderProgram); + glGetProgramiv(m_shaderProgram, GL_VALIDATE_STATUS, params); + if (params[0] != GL_TRUE) + { + GLchar log[LOG_SIZE]; + glGetProgramInfoLog(m_shaderProgram, LOG_SIZE, nullptr, log); + kodi::Log(ADDON_LOG_ERROR, "CShaderProgram::%s: %s", __FUNCTION__, log); + fprintf(stderr, "CShaderProgram::%s: %s\n", __FUNCTION__, log); + } + m_validated = true; + } + return true; + } + else + { + glUseProgram(0); + return false; + } + return true; + } + return false; + } + + void DisableShader() + { + if (ShaderOK()) + { + glUseProgram(0); + OnDisabled(); + } + } + + ATTRIBUTE_FORCEINLINE bool ShaderOK() { return m_ok; } + ATTRIBUTE_FORCEINLINE CVertexShader& VertexShader() { return m_pVP; } + ATTRIBUTE_FORCEINLINE CPixelShader& PixelShader() { return m_pFP; } + ATTRIBUTE_FORCEINLINE GLuint ProgramHandle() { return m_shaderProgram; } + + virtual void OnCompiledAndLinked() {}; + virtual bool OnEnabled() { return false; }; + virtual void OnDisabled() {}; + + private: + void ShaderFree() + { + if (m_shaderProgram) + glDeleteProgram(m_shaderProgram); + m_shaderProgram = 0; + m_ok = false; + } + + CVertexShader m_pVP; + CPixelShader m_pFP; + GLuint m_shaderProgram = 0; + bool m_ok = false; + bool m_validated = false; + }; + //------------------------------------------------------------------------ + } /* namespace gl */ + } /* namespace gui */ +} /* namespace kodi */ diff -Nru kodi-screensaver-greynetic-2.1.0/lib/kodi/utils/Time.h kodi-screensaver-greynetic-2.2.2/lib/kodi/utils/Time.h --- kodi-screensaver-greynetic-2.1.0/lib/kodi/utils/Time.h 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/lib/kodi/utils/Time.h 2020-02-22 01:02:24.000000000 +0000 @@ -0,0 +1,91 @@ +#pragma once +/* + * Copyright (C) 2005-2019 Team Kodi + * Copyright (C) 2011-2012 Pulse-Eight Limited. + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#if defined(TARGET_DARWIN) +#include +#include +#elif defined(TARGET_WINDOWS) +#include +#include +#else +#include +#endif + +namespace kodi +{ + namespace time + { + + //========================================================================== + /// @brief Function to get current time in milliseconds + /// + /// @return Current time in milliseconds as a double value + /// + /// + /// ------------------------------------------------------------------------ + /// + /// **Example:** + /// ~~~~~~~~~~~~~{.cpp} + /// + /// #include + /// + /// ... + /// double time = kodi::time::GetTimeMs(); + /// ... + /// ~~~~~~~~~~~~~ + /// + inline double GetTimeMs() + { + #if defined(TARGET_DARWIN) + return (double) (CVGetCurrentHostTime() / (double)(CVGetHostClockFrequency() * 0.001)); + #elif defined(TARGET_WINDOWS) + LARGE_INTEGER tickPerSecond; + LARGE_INTEGER tick; + if (QueryPerformanceFrequency(&tickPerSecond)) + { + QueryPerformanceCounter(&tick); + return (double) (tick.QuadPart / (tickPerSecond.QuadPart / 1000.)); + } + return -1; + #else + timespec time; + clock_gettime(CLOCK_MONOTONIC, &time); + return (double)time.tv_sec * 1000.0 + time.tv_nsec / 1000000.0; + #endif + } + //-------------------------------------------------------------------------- + + //========================================================================== + /// @brief Function to get current time in seconds + /// + /// @return Current time in seconds with the value type defined in the template + /// + /// + /// ------------------------------------------------------------------------ + /// + /// **Example:** + /// ~~~~~~~~~~~~~{.cpp} + /// + /// #include + /// + /// ... + /// double time = kodi::time::GetTimeSec(); + /// ... + /// ~~~~~~~~~~~~~ + /// + template + inline T GetTimeSec() + { + return (T)GetTimeMs() / (T)1000.0; + } + //-------------------------------------------------------------------------- + + } /* namespace time */ +} /* namespace kodi */ diff -Nru kodi-screensaver-greynetic-2.1.0/README.md kodi-screensaver-greynetic-2.2.2/README.md --- kodi-screensaver-greynetic-2.1.0/README.md 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/README.md 2020-02-22 01:02:24.000000000 +0000 @@ -3,7 +3,8 @@ This is a [Kodi](http://kodi.tv) screensaver addon. [![Build Status](https://travis-ci.org/xbmc/screensaver.greynetic.svg?branch=master)](https://travis-ci.org/xbmc/screensaver.greynetic) -[![Build Status](https://ci.appveyor.com/api/projects/status/github/xbmc/screensaver.greynetic?svg=true)](https://ci.appveyor.com/project/xbmc/screensaver.greynetic) +[![Build Status](https://dev.azure.com/teamkodi/binary-addons/_apis/build/status/xbmc.screensaver.greynetic?branchName=Leia)](https://dev.azure.com/teamkodi/binary-addons/_build/latest?definitionId=44&branchName=Leia) + ## Build instructions @@ -16,7 +17,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/screensaver.greynetic.git` 3. `cd screensaver.greynetic && mkdir build && cd build` 4. `cmake -DADDONS_TO_BUILD=screensaver.greynetic -DADDON_SRC_PREFIX=../.. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../../xbmc/kodi-build/addons -DPACKAGE_ZIP=1 ../../xbmc/cmake/addons` diff -Nru kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/addon.xml.in kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/addon.xml.in --- kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/addon.xml.in 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/addon.xml.in 2020-02-22 01:02:24.000000000 +0000 @@ -1,7 +1,7 @@  @ADDON_DEPENDS@ @@ -9,8 +9,15 @@ point="xbmc.ui.screensaver" library_@PLATFORM@="@LIBRARY_FILENAME@"/> - Greynetic screensaver - Greynetic screensaver + Draw random color rectangles + Colored and transparent rectangles. @PLATFORM@ + + resources/icon.png + resources/fanart.png + resources/screenshot-01.png + resources/screenshot-02.jpg + resources/screenshot-03.png + Binary files /tmp/tmpTx5hYc/LxU4wRSKxn/kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/fanart.png and /tmp/tmpTx5hYc/10Lqr5KWGC/kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/fanart.png differ Binary files /tmp/tmpTx5hYc/LxU4wRSKxn/kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/icon.png and /tmp/tmpTx5hYc/10Lqr5KWGC/kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/icon.png differ diff -Nru kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/language/resource.language.en_gb/strings.po kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/language/resource.language.en_gb/strings.po --- kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/language/resource.language.en_gb/strings.po 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/language/resource.language.en_gb/strings.po 2020-02-22 01:02:24.000000000 +0000 @@ -1,77 +1,99 @@ +# Kodi Media Center language file +# Addon Name: Flocks +# Addon id: screensaver.greynetic +# Addon Provider: Team Kodi msgid "" msgstr "" -"Project-Id-Version: XBMC Main Translation Project (Frodo)\n" -"Report-Msgid-Bugs-To: http://trac.xbmc.org/\n" +"Project-Id-Version: KODI Main\n" +"Report-Msgid-Bugs-To: https://github.com/xbmc/screensaver.greynetic/issues/\n" "POT-Creation-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: XBMC Translation Team\n" -"Language-Team: English (http://www.transifex.com/projects/p/XBMC-Main-Frodo/language/en/)\n" +"Last-Translator: Kodi Translation Team\n" +"Language-Team: English (United Kingdom) (http://www.transifex.com/projects/p/kodi-main/language/en_GB/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: en\n" +"Language: en_GB\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" +#[Consistency] Make terms, settings names, brands and other minutiae, consistent throughout file. +#[Capitalization] Avoid capitalizing every second word. See http://grammarist.com/capitalization/ +#For example, prefer wording as "This new string" instead of "This New String". +#[Referencing] If a suitable string already exists, reuse it, making a note of where it's used! +#[Description / location] For example, "#. Description of some setting" used on "#: xbmc/addons/guidialogaddoninfo.cpp" +#When writing a description or setting, refer to a setting name in quotes. See existing entries for guidance. +#For example, "Press \"OK\" for \"All seasons\"" instead of "Press OK for All seasons" after first word. + +# Following strings used for addon settings dialog + msgctxt "#30000" -msgid "Number of boxes" +msgid "General" msgstr "" msgctxt "#30001" +msgid "Colors" +msgstr "" + +msgctxt "#30010" +msgid "Number of boxes" +msgstr "" + +msgctxt "#30011" msgid "Use squares" msgstr "" -msgctxt "#30002" +msgctxt "#30012" msgid "Maximum width" msgstr "" -msgctxt "#30003" +msgctxt "#30013" msgid "Minimum width" msgstr "" -msgctxt "#30004" +msgctxt "#30014" msgid "Maximum height" msgstr "" -msgctxt "#30005" +msgctxt "#30015" msgid "Minimum height" msgstr "" -msgctxt "#30006" +msgctxt "#30016" msgid "Maximum size" msgstr "" -msgctxt "#30007" +msgctxt "#30017" msgid "Minimum size" msgstr "" -msgctxt "#30008" +msgctxt "#30018" msgid "Minimum alpha" msgstr "" -msgctxt "#30009" +msgctxt "#30019" msgid "Maximum alpha" msgstr "" -msgctxt "#30010" +msgctxt "#30020" msgid "Minimum red" msgstr "" -msgctxt "#30011" +msgctxt "#30021" msgid "Maximum red" msgstr "" -msgctxt "#30012" +msgctxt "#30022" msgid "Minimum green" msgstr "" -msgctxt "#30013" +msgctxt "#30023" msgid "Maximum green" msgstr "" -msgctxt "#30014" +msgctxt "#30024" msgid "Minimum blue" msgstr "" -msgctxt "#30015" +msgctxt "#30025" msgid "Maximum blue" msgstr "" Binary files /tmp/tmpTx5hYc/LxU4wRSKxn/kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/screenshot-01.png and /tmp/tmpTx5hYc/10Lqr5KWGC/kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/screenshot-01.png differ Binary files /tmp/tmpTx5hYc/LxU4wRSKxn/kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/screenshot-02.jpg and /tmp/tmpTx5hYc/10Lqr5KWGC/kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/screenshot-02.jpg differ Binary files /tmp/tmpTx5hYc/LxU4wRSKxn/kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/screenshot-03.png and /tmp/tmpTx5hYc/10Lqr5KWGC/kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/screenshot-03.png differ diff -Nru kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/settings.xml kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/settings.xml --- kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/settings.xml 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/settings.xml 2020-02-22 01:02:24.000000000 +0000 @@ -1,18 +1,170 @@ - - - - - - - - - - - - - - - - - + + +
+ + + + 1000 + + 100 + 100 + 10000 + + + + + false + + + + 200 + + 10 + 10 + 300 + + + false + + + + + 0 + + 0 + 10 + 300 + + + false + + + + + 200 + + 10 + 10 + 300 + + + false + + + + + 0 + + 0 + 10 + 300 + + + false + + + + + 0 + + 0 + 10 + 300 + + + true + + + + + 200 + + 0 + 10 + 300 + + + true + + + + + + + + + 0 + + 0 + 1 + 255 + + + + + 255 + + 0 + 1 + 255 + + + + + 0 + + 0 + 1 + 255 + + + + + 255 + + 0 + 1 + 255 + + + + + 0 + + 0 + 1 + 255 + + + + + 255 + + 0 + 1 + 255 + + + + + 0 + + 0 + 1 + 255 + + + + + 255 + + 0 + 1 + 255 + + + + + +
diff -Nru kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/1.2/frag.glsl kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/1.2/frag.glsl --- kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/1.2/frag.glsl 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/1.2/frag.glsl 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -#ifndef GL_ES -#define lowp -#endif - -varying lowp vec4 m_col; - -void main () -{ - gl_FragColor = m_col; -} diff -Nru kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/1.2/vert.glsl kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/1.2/vert.glsl --- kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/1.2/vert.glsl 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/1.2/vert.glsl 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -attribute vec4 m_attrpos; -attribute vec4 m_attrcol; - -varying vec4 m_cord; -varying vec4 m_col; - -uniform mat4 m_proj; -uniform mat4 m_model; - -void main () -{ - mat4 mvp = m_proj * m_model; - gl_Position = mvp * m_attrpos; - m_col = m_attrcol; -} diff -Nru kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/1.5/frag.glsl kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/1.5/frag.glsl --- kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/1.5/frag.glsl 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/1.5/frag.glsl 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -#version 150 - -in vec4 m_col; -out vec4 fragColor; - -void main () -{ - fragColor = m_col; -} diff -Nru kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/1.5/vert.glsl kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/1.5/vert.glsl --- kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/1.5/vert.glsl 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/1.5/vert.glsl 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -#version 150 - -in vec4 m_attrpos; -in vec4 m_attrcol; - -out vec4 m_cord; -out vec4 m_col; - -uniform mat4 m_proj; -uniform mat4 m_model; - -void main () -{ - mat4 mvp = m_proj * m_model; - gl_Position = mvp * m_attrpos; - m_col = m_attrcol; -} diff -Nru kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/GL/frag.glsl kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/GL/frag.glsl --- kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/GL/frag.glsl 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/GL/frag.glsl 2020-02-22 01:02:24.000000000 +0000 @@ -0,0 +1,10 @@ +#version 150 + +in vec4 v_color; + +out vec4 fragColor; + +void main() +{ + fragColor = v_color; +} diff -Nru kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/GL/vert.glsl kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/GL/vert.glsl --- kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/GL/vert.glsl 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/GL/vert.glsl 2020-02-22 01:02:24.000000000 +0000 @@ -0,0 +1,14 @@ +#version 150 + +uniform mat4 u_projModelMat; + +in vec4 a_position; +in vec4 a_color; + +out vec4 v_color; + +void main () +{ + gl_Position = u_projModelMat * a_position; + v_color = a_color; +} diff -Nru kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/GLES/frag.glsl kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/GLES/frag.glsl --- kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/GLES/frag.glsl 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/GLES/frag.glsl 2020-02-22 01:02:24.000000000 +0000 @@ -0,0 +1,8 @@ +#version 100 + +varying lowp vec4 v_color; + +void main () +{ + gl_FragColor = v_color; +} diff -Nru kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/GLES/vert.glsl kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/GLES/vert.glsl --- kodi-screensaver-greynetic-2.1.0/screensaver.greynetic/resources/shaders/GLES/vert.glsl 1970-01-01 00:00:00.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/screensaver.greynetic/resources/shaders/GLES/vert.glsl 2020-02-22 01:02:24.000000000 +0000 @@ -0,0 +1,14 @@ +#version 100 + +uniform mat4 u_projModelMat; + +attribute vec4 a_position; +attribute vec4 a_color; + +varying vec4 v_color; + +void main () +{ + gl_Position = u_projModelMat * a_position; + v_color = a_color; +} diff -Nru kodi-screensaver-greynetic-2.1.0/src/GreyNetic.cpp kodi-screensaver-greynetic-2.2.2/src/GreyNetic.cpp --- kodi-screensaver-greynetic-2.1.0/src/GreyNetic.cpp 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/src/GreyNetic.cpp 2020-02-22 01:02:24.000000000 +0000 @@ -37,11 +37,12 @@ #ifdef WIN32 #include #else -#include "shaders/GUIShader.h" +#include +#include +#include +#include #endif -#define BUFFER_OFFSET(i) ((char *)NULL + (i)) - #define MAX_BOXES 10000 int NumberOfBoxes = MAX_BOXES; @@ -97,69 +98,69 @@ const BYTE PixelShader[] = { - 68, 88, 66, 67, 18, 124, - 182, 35, 30, 142, 196, 211, - 95, 130, 91, 204, 99, 13, - 249, 8, 1, 0, 0, 0, - 124, 1, 0, 0, 4, 0, - 0, 0, 48, 0, 0, 0, - 124, 0, 0, 0, 188, 0, - 0, 0, 72, 1, 0, 0, - 65, 111, 110, 57, 68, 0, - 0, 0, 68, 0, 0, 0, - 0, 2, 255, 255, 32, 0, - 0, 0, 36, 0, 0, 0, - 0, 0, 36, 0, 0, 0, - 36, 0, 0, 0, 36, 0, - 0, 0, 36, 0, 0, 0, - 36, 0, 0, 2, 255, 255, - 31, 0, 0, 2, 0, 0, - 0, 128, 0, 0, 15, 176, - 1, 0, 0, 2, 0, 8, - 15, 128, 0, 0, 228, 176, - 255, 255, 0, 0, 83, 72, - 68, 82, 56, 0, 0, 0, - 64, 0, 0, 0, 14, 0, - 0, 0, 98, 16, 0, 3, - 242, 16, 16, 0, 1, 0, - 0, 0, 101, 0, 0, 3, - 242, 32, 16, 0, 0, 0, - 0, 0, 54, 0, 0, 5, - 242, 32, 16, 0, 0, 0, - 0, 0, 70, 30, 16, 0, - 1, 0, 0, 0, 62, 0, - 0, 1, 73, 83, 71, 78, - 132, 0, 0, 0, 4, 0, - 0, 0, 8, 0, 0, 0, - 104, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, - 3, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 0, - 116, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 1, 0, - 0, 0, 15, 15, 0, 0, - 122, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 2, 0, - 0, 0, 3, 0, 0, 0, - 122, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 2, 0, - 0, 0, 12, 0, 0, 0, - 83, 86, 95, 80, 79, 83, - 73, 84, 73, 79, 78, 0, - 67, 79, 76, 79, 82, 0, - 84, 69, 88, 67, 79, 79, - 82, 68, 0, 171, 79, 83, - 71, 78, 44, 0, 0, 0, - 1, 0, 0, 0, 8, 0, - 0, 0, 32, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 15, 0, - 0, 0, 83, 86, 95, 84, - 65, 82, 71, 69, 84, 0, + 68, 88, 66, 67, 18, 124, + 182, 35, 30, 142, 196, 211, + 95, 130, 91, 204, 99, 13, + 249, 8, 1, 0, 0, 0, + 124, 1, 0, 0, 4, 0, + 0, 0, 48, 0, 0, 0, + 124, 0, 0, 0, 188, 0, + 0, 0, 72, 1, 0, 0, + 65, 111, 110, 57, 68, 0, + 0, 0, 68, 0, 0, 0, + 0, 2, 255, 255, 32, 0, + 0, 0, 36, 0, 0, 0, + 0, 0, 36, 0, 0, 0, + 36, 0, 0, 0, 36, 0, + 0, 0, 36, 0, 0, 0, + 36, 0, 0, 2, 255, 255, + 31, 0, 0, 2, 0, 0, + 0, 128, 0, 0, 15, 176, + 1, 0, 0, 2, 0, 8, + 15, 128, 0, 0, 228, 176, + 255, 255, 0, 0, 83, 72, + 68, 82, 56, 0, 0, 0, + 64, 0, 0, 0, 14, 0, + 0, 0, 98, 16, 0, 3, + 242, 16, 16, 0, 1, 0, + 0, 0, 101, 0, 0, 3, + 242, 32, 16, 0, 0, 0, + 0, 0, 54, 0, 0, 5, + 242, 32, 16, 0, 0, 0, + 0, 0, 70, 30, 16, 0, + 1, 0, 0, 0, 62, 0, + 0, 1, 73, 83, 71, 78, + 132, 0, 0, 0, 4, 0, + 0, 0, 8, 0, 0, 0, + 104, 0, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 0, 0, + 0, 0, 15, 0, 0, 0, + 116, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, + 0, 0, 15, 15, 0, 0, + 122, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 2, 0, + 0, 0, 3, 0, 0, 0, + 122, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 2, 0, + 0, 0, 12, 0, 0, 0, + 83, 86, 95, 80, 79, 83, + 73, 84, 73, 79, 78, 0, + 67, 79, 76, 79, 82, 0, + 84, 69, 88, 67, 79, 79, + 82, 68, 0, 171, 79, 83, + 71, 78, 44, 0, 0, 0, + 1, 0, 0, 0, 8, 0, + 0, 0, 32, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 3, 0, 0, 0, + 0, 0, 0, 0, 15, 0, + 0, 0, 83, 86, 95, 84, + 65, 82, 71, 69, 84, 0, 171, 171 }; @@ -179,20 +180,35 @@ class ATTRIBUTE_HIDDEN CScreensaverGreyNetic : public kodi::addon::CAddonBase, public kodi::addon::CInstanceScreensaver +#ifndef WIN32 + , public kodi::gui::gl::CShaderProgram +#endif { public: CScreensaverGreyNetic(); virtual ~CScreensaverGreyNetic(); - virtual void Render() override; + // kodi::addon::CInstanceScreensaver + bool Start() override; + void Stop() override; + void Render() override; private: int m_iWidth; int m_iHeight; + #ifndef WIN32 - CGUIShader* m_shader; - GLuint m_vertexVBO; - GLuint m_indexVBO; + // kodi::gui::gl::CShaderProgram + void OnCompiledAndLinked() override; + bool OnEnabled() override { return true; } + + glm::mat4 m_projModelMatrix; + + GLuint m_vertexVBO = 0; + + GLint m_uProjModelMatLoc = -1; + GLint m_aPositionLoc = -1; + GLint m_aColorLoc = -1; #endif void DrawRectangle(int x, int y, int w, int h, float* dwColour); @@ -226,11 +242,6 @@ #ifdef WIN32 g_pContext = reinterpret_cast(Device()); InitDXStuff(); -#else - m_shader = new CGUIShader("vert.glsl", "frag.glsl"); - m_shader->CompileAndLink(); - glGenBuffers(1, &m_vertexVBO); - glGenBuffers(1, &m_indexVBO); #endif } @@ -243,12 +254,37 @@ SAFE_RELEASE(g_pPShader); SAFE_RELEASE(g_pVBuffer); #else - delete m_shader; glBindBuffer(GL_ARRAY_BUFFER, 0); glDeleteBuffers(1, &m_vertexVBO); - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); - glDeleteBuffers(1, &m_indexVBO); + m_vertexVBO = 0; +#endif +} + +bool CScreensaverGreyNetic::Start() +{ +#ifndef WIN32 + if (!LoadShaderFiles(kodi::GetAddonPath("resources/shaders/" GL_TYPE_STRING "/vert.glsl"), + kodi::GetAddonPath("resources/shaders/" GL_TYPE_STRING "/frag.glsl"))) + { + kodi::Log(ADDON_LOG_ERROR, "Failed to load GL shaders"); + return false; + } + + if (!CompileAndLink()) + { + kodi::Log(ADDON_LOG_ERROR, "Failed to compile GL shaders"); + return false; + } + + glGenBuffers(1, &m_vertexVBO); + + m_projModelMatrix = glm::ortho(0.0f, float(Width()), 0.0f, float(Height())); #endif + return true; +} + +void CScreensaverGreyNetic::Stop() +{ } // Kodi tells us to render a frame of @@ -263,6 +299,16 @@ UINT strides = sizeof(MYCUSTOMVERTEX), offsets = 0; g_pContext->IASetVertexBuffers(0, 1, &g_pVBuffer, &strides, &offsets); g_pContext->PSSetShader(g_pPShader, NULL, 0); +#else + glBindBuffer(GL_ARRAY_BUFFER, m_vertexVBO); + + glVertexAttribPointer(m_aPositionLoc, 3, GL_FLOAT, 0, sizeof(MYCUSTOMVERTEX), BUFFER_OFFSET(offsetof(MYCUSTOMVERTEX, x))); + glVertexAttribPointer(m_aColorLoc, 4, GL_FLOAT, 0, sizeof(MYCUSTOMVERTEX), BUFFER_OFFSET(offsetof(MYCUSTOMVERTEX, r))); + + glEnableVertexAttribArray(m_aPositionLoc); + glEnableVertexAttribArray(m_aColorLoc); + + glEnable(GL_BLEND); #endif for (int i=NumberOfBoxes - 1 ; i>0; i--) @@ -282,7 +328,7 @@ double blue = rand() %(MaxBlue - MinBlue) + MinBlue; double alpha = rand() %(MaxAlpha - MinAlpha) + MinAlpha; double joined = rand() %(MaxJoined - MinJoined) + MinJoined; - + if(JoinedRed){ red = joined; } @@ -300,17 +346,28 @@ dwcolor[0][1] = (float)green / 255.0f; dwcolor[0][2] = (float)blue / 255.0f; dwcolor[0][3] = (float)alpha / 255.0f; - + xa[0] = rand()%m_iWidth; ya[0] = rand()%m_iHeight; - ha[0] = rand() % (MaxSizeY - MinSizeY) + MinSizeY; - wa[0] = rand() % (MaxSizeX - MinSizeX) + MinSizeX; - - if(MakeSquares) + if (!MakeSquares) + { + if (MaxSizeY != MinSizeY) + ha[0] = rand() % (MaxSizeY - MinSizeY) + MinSizeY; + else + ha[0] = MaxSizeY; + + if (MaxSizeX != MinSizeX) + wa[0] = rand() % (MaxSizeX - MinSizeX) + MinSizeX; + else + wa[0] = MaxSizeX; + } + else { - ha[0] = rand() % (MaxSquareSize - MinSquareSize) + MinSquareSize; - wa[0] = ha[0]; + if (MaxSquareSize != MinSquareSize) + wa[0] = ha[0] = rand() % (MaxSquareSize - MinSquareSize) + MinSquareSize; + else + wa[0] = ha[0] = MaxSquareSize; } if(JoinedSizeY) @@ -328,71 +385,51 @@ { DrawRectangle(xa[i],ya[i],wa[i],ha[i], dwcolor[i]); } + +#ifndef WIN32 + glDisableVertexAttribArray(m_aPositionLoc); + glDisableVertexAttribArray(m_aColorLoc); +#endif return; } void CScreensaverGreyNetic::DrawRectangle(int x, int y, int w, int h, float* dwColour) { - //Store each point of the triangle together with it's colour - MYCUSTOMVERTEX cvVertices[] = - { - {(float) x, (float) y+h, 0.0f, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}, - {(float) x, (float) y, 0.0f, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}, - {(float) x+w, (float) y+h, 0.0f, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}, - {(float) x+w, (float) y, 0.0f, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}, - }; #ifndef WIN32 - m_shader->PushMatrix(); - m_shader->Enable(); - - GLfloat x1 = -1.0 + 2.0*x/m_iWidth; - GLfloat y1 = -1.0 + 2.0*y/m_iHeight; - GLfloat x2 = -1.0 + 2.0*(x+w)/m_iWidth; - GLfloat y2 = -1.0 + 2.0*(y+h)/m_iHeight; - - struct PackedVertex - { - GLfloat x, y, z; - GLfloat r, g, b, a; - } vertex[4] = {{x1, y1, 0.0, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}, - {x2, y1, 0.0, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}, - {x2, y2, 0.0, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}, - {x1, y2, 0.0, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}}; - - GLubyte idx[] = {0, 1, 2, 2, 3, 0}; - - GLint posLoc = m_shader->GetPosLoc(); - GLint colLoc = m_shader->GetColLoc(); - - glBindBuffer(GL_ARRAY_BUFFER, m_vertexVBO); - glBufferData(GL_ARRAY_BUFFER, sizeof(PackedVertex)*4, &vertex[0], GL_STATIC_DRAW); - - glVertexAttribPointer(posLoc, 3, GL_FLOAT, 0, sizeof(PackedVertex), BUFFER_OFFSET(offsetof(PackedVertex, x))); - glVertexAttribPointer(colLoc, 4, GL_FLOAT, 0, sizeof(PackedVertex), BUFFER_OFFSET(offsetof(PackedVertex, r))); - - glEnableVertexAttribArray(posLoc); - glEnableVertexAttribArray(colLoc); - - glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_indexVBO); - glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLubyte)*6, idx, GL_STATIC_DRAW); - glEnable(GL_BLEND); - glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_BYTE, 0); - - glDisableVertexAttribArray(posLoc); - glDisableVertexAttribArray(colLoc); - - m_shader->Disable(); - m_shader->PopMatrix(); + MYCUSTOMVERTEX vertex[4] = {{(float) x, (float) y, 0.0, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}, + {(float) x+w, (float) y, 0.0, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}, + {(float) x+w, (float) y+h, 0.0, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}, + {(float) x, (float) y+h, 0.0, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}}; + + EnableShader(); + glUniformMatrix4fv(m_uProjModelMatLoc, 1, GL_FALSE, glm::value_ptr(m_projModelMatrix)); + glBufferData(GL_ARRAY_BUFFER, sizeof(MYCUSTOMVERTEX)*4, &vertex[0], GL_STATIC_DRAW); + glDrawArrays(GL_TRIANGLE_FAN, 0, 4); + DisableShader(); #else - D3D11_MAPPED_SUBRESOURCE res = {}; - if (SUCCEEDED(g_pContext->Map(g_pVBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &res))) - { - memcpy(res.pData, cvVertices, sizeof(cvVertices)); - g_pContext->Unmap(g_pVBuffer, 0); - } - g_pContext->Draw(4, 0); + //Store each point of the triangle together with it's colour + MYCUSTOMVERTEX vertex[4] = {{(float) x, (float) y+h, 0.0f, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}, + {(float) x, (float) y, 0.0f, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}, + {(float) x+w, (float) y+h, 0.0f, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}, + {(float) x+w, (float) y, 0.0f, dwColour[0], dwColour[1], dwColour[2], dwColour[3]}}; + D3D11_MAPPED_SUBRESOURCE res = {}; + if (SUCCEEDED(g_pContext->Map(g_pVBuffer, 0, D3D11_MAP_WRITE_DISCARD, 0, &res))) + { + memcpy(res.pData, vertex, sizeof(vertex)); + g_pContext->Unmap(g_pVBuffer, 0); + } + g_pContext->Draw(4, 0); #endif } +#ifndef WIN32 +void CScreensaverGreyNetic::OnCompiledAndLinked() +{ + m_uProjModelMatLoc = glGetUniformLocation(ProgramHandle(), "u_projModelMat"); + m_aPositionLoc = glGetAttribLocation(ProgramHandle(), "a_position"); + m_aColorLoc = glGetAttribLocation(ProgramHandle(), "a_color"); +} +#endif + ADDONCREATOR(CScreensaverGreyNetic); diff -Nru kodi-screensaver-greynetic-2.1.0/src/shaders/GUIShader.cpp kodi-screensaver-greynetic-2.2.2/src/shaders/GUIShader.cpp --- kodi-screensaver-greynetic-2.1.0/src/shaders/GUIShader.cpp 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/src/shaders/GUIShader.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -/* -* Copyright (C) 2005-2013 Team XBMC -* http://www.xbmc.org -* -* 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 XBMC; see the file COPYING. If not, see -* . -* -*/ - -#include "GUIShader.h" - -CGUIShader::CGUIShader(std::string vert, std::string frag ) : CShaderProgram(vert, frag) -{ -} - -void CGUIShader::OnCompiledAndLinked() -{ - // Variables passed directly to the Vertex shader - m_hProj = glGetUniformLocation(ProgramHandle(), "m_proj"); - m_hModel = glGetUniformLocation(ProgramHandle(), "m_model"); - m_hPos = glGetAttribLocation(ProgramHandle(), "m_attrpos"); - m_hCol = glGetAttribLocation(ProgramHandle(), "m_attrcol"); - - // It's okay to do this only one time. Textures units never change. - glUseProgram(ProgramHandle()); - glUseProgram(0); -} - -bool CGUIShader::OnEnabled() -{ - // This is called after glUseProgram() - glUniformMatrix4fv(m_hProj, 1, GL_FALSE, GetMatrix(MM_PROJECTION)); - glUniformMatrix4fv(m_hModel, 1, GL_FALSE, GetMatrix(MM_MODELVIEW)); - - return true; -} - -void CGUIShader::Free() -{ - CShaderProgram::Free(); -} diff -Nru kodi-screensaver-greynetic-2.1.0/src/shaders/GUIShader.h kodi-screensaver-greynetic-2.2.2/src/shaders/GUIShader.h --- kodi-screensaver-greynetic-2.1.0/src/shaders/GUIShader.h 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/src/shaders/GUIShader.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -#pragma once -/* -* Copyright (C) 2005-2013 Team XBMC -* http://www.xbmc.org -* -* 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 XBMC; see the file COPYING. If not, see -* . -* -*/ - -#include "Shader.h" -#include "Matrix.h" - -class ATTRIBUTE_HIDDEN CGUIShader : public CShaderProgram, public CMatrix -{ -public: - CGUIShader(std::string vert, std::string frag); - - void OnCompiledAndLinked() override; - bool OnEnabled() override; - void Free(); - - GLint GetPosLoc() { return m_hPos; } - GLint GetColLoc() { return m_hCol; } - -protected: - GLint m_hTex = -1; - GLint m_hProj = -1; - GLint m_hModel = -1; - GLint m_hPos = -1; - GLint m_hCol = -1; - - GLfloat *m_proj = nullptr; - GLfloat *m_model = nullptr; -}; diff -Nru kodi-screensaver-greynetic-2.1.0/src/shaders/Matrix.cpp kodi-screensaver-greynetic-2.2.2/src/shaders/Matrix.cpp --- kodi-screensaver-greynetic-2.1.0/src/shaders/Matrix.cpp 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/src/shaders/Matrix.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,369 +0,0 @@ -/* -* Copyright (C) 2005-2013 Team XBMC -* http://www.xbmc.org -* -* 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 XBMC; see the file COPYING. If not, see -* . -* -*/ - -#include "Matrix.h" -#include - -#define MODE_WITHIN_RANGE(m) ((m >= 0) && (m < (int)MM_MATRIXSIZE)) - -CMatrix::CMatrix() -{ - for (unsigned int i=0; i < MM_MATRIXSIZE; i++) - { - m_matrices[i].push_back(MatrixWrapper()); - MatrixMode((EMATRIXMODE)i); - LoadIdentity(); - } - m_matrixMode = (EMATRIXMODE)-1; - m_pMatrix = NULL; -} - -CMatrix::~CMatrix() -{ -} - -GLfloat* CMatrix::GetMatrix(EMATRIXMODE mode) -{ - if (MODE_WITHIN_RANGE(mode)) - { - if (!m_matrices[mode].empty()) - { - return m_matrices[mode].back(); - } - } - return NULL; -} - -void CMatrix::MatrixMode(EMATRIXMODE mode) -{ - if (MODE_WITHIN_RANGE(mode)) - { - m_matrixMode = mode; - m_pMatrix = m_matrices[mode].back(); - } - else - { - m_matrixMode = (EMATRIXMODE)-1; - m_pMatrix = NULL; - } -} - -void CMatrix::PushMatrix() -{ - if (m_pMatrix && MODE_WITHIN_RANGE(m_matrixMode)) - { - m_matrices[m_matrixMode].push_back(MatrixWrapper(m_pMatrix)); - m_pMatrix = m_matrices[m_matrixMode].back(); - } -} - -void CMatrix::PopMatrix() -{ - if (MODE_WITHIN_RANGE(m_matrixMode)) - { - if (m_matrices[m_matrixMode].size() > 1) - { - m_matrices[m_matrixMode].pop_back(); - } - m_pMatrix = m_matrices[m_matrixMode].back(); - } -} - -void CMatrix::LoadIdentity() -{ - if (m_pMatrix) - { - m_pMatrix[0] = 1.0f; m_pMatrix[4] = 0.0f; m_pMatrix[8] = 0.0f; m_pMatrix[12] = 0.0f; - m_pMatrix[1] = 0.0f; m_pMatrix[5] = 1.0f; m_pMatrix[9] = 0.0f; m_pMatrix[13] = 0.0f; - m_pMatrix[2] = 0.0f; m_pMatrix[6] = 0.0f; m_pMatrix[10] = 1.0f; m_pMatrix[14] = 0.0f; - m_pMatrix[3] = 0.0f; m_pMatrix[7] = 0.0f; m_pMatrix[11] = 0.0f; m_pMatrix[15] = 1.0f; - } -} - -void CMatrix::Ortho(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) -{ - GLfloat u = 2.0f / (r - l); - GLfloat v = 2.0f / (t - b); - GLfloat w = -2.0f / (f - n); - GLfloat x = - (r + l) / (r - l); - GLfloat y = - (t + b) / (t - b); - GLfloat z = - (f + n) / (f - n); - GLfloat matrix[16] = { u, 0.0f, 0.0f, 0.0f, - 0.0f, v, 0.0f, 0.0f, - 0.0f, 0.0f, w, 0.0f, - x, y, z, 1.0f}; - MultMatrixf(matrix); -} - -void CMatrix::Ortho2D(GLfloat l, GLfloat r, GLfloat b, GLfloat t) -{ - GLfloat u = 2.0f / (r - l); - GLfloat v = 2.0f / (t - b); - GLfloat x = - (r + l) / (r - l); - GLfloat y = - (t + b) / (t - b); - GLfloat matrix[16] = { u, 0.0f, 0.0f, 0.0f, - 0.0f, v, 0.0f, 0.0f, - 0.0f, 0.0f,-1.0f, 0.0f, - x, y, 0.0f, 1.0f}; - MultMatrixf(matrix); -} - -void CMatrix::Frustum(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f) -{ - GLfloat u = (2.0f * n) / (r - l); - GLfloat v = (2.0f * n) / (t - b); - GLfloat w = (r + l) / (r - l); - GLfloat x = (t + b) / (t - b); - GLfloat y = - (f + n) / (f - n); - GLfloat z = - (2.0f * f * n) / (f - n); - GLfloat matrix[16] = { u, 0.0f, 0.0f, 0.0f, - 0.0f, v, 0.0f, 0.0f, - w, x, y,-1.0f, - 0.0f, 0.0f, z, 0.0f}; - MultMatrixf(matrix); -} - -void CMatrix::Translatef(GLfloat x, GLfloat y, GLfloat z) -{ - GLfloat matrix[16] = {1.0f, 0.0f, 0.0f, 0.0f, - 0.0f, 1.0f, 0.0f, 0.0f, - 0.0f, 0.0f, 1.0f, 0.0f, - x, y, z, 1.0f}; - MultMatrixf(matrix); -} - -void CMatrix::Scalef(GLfloat x, GLfloat y, GLfloat z) -{ - GLfloat matrix[16] = { x, 0.0f, 0.0f, 0.0f, - 0.0f, y, 0.0f, 0.0f, - 0.0f, 0.0f, z, 0.0f, - 0.0f, 0.0f, 0.0f, 1.0f}; - MultMatrixf(matrix); -} - -void CMatrix::Rotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z) -{ - GLfloat modulous = sqrt((x*x)+(y*y)+(z*z)); - if (modulous != 0.0) - { - x /= modulous; - y /= modulous; - z /= modulous; - } - GLfloat cosine = cos(angle); - GLfloat sine = sin(angle); - GLfloat cos1 = 1 - cosine; - GLfloat a = (x*x*cos1) + cosine; - GLfloat b = (x*y*cos1) - (z*sine); - GLfloat c = (x*z*cos1) + (y*sine); - GLfloat d = (y*x*cos1) + (z*sine); - GLfloat e = (y*y*cos1) + cosine; - GLfloat f = (y*z*cos1) - (x*sine); - GLfloat g = (z*x*cos1) - (y*sine); - GLfloat h = (z*y*cos1) + (x*sine); - GLfloat i = (z*z*cos1) + cosine; - GLfloat matrix[16] = { a, d, g, 0.0f, - b, e, h, 0.0f, - c, f, i, 0.0f, - 0.0f, 0.0f, 0.0f, 1.0f}; - MultMatrixf(matrix); -} - -#if defined(__ARM_NEON__) && !defined(__arm64__) - -inline void Matrix4Mul(const float* src_mat_1, const float* src_mat_2, float* dst_mat) -{ - asm volatile ( - // Store A & B leaving room at top of registers for result (q0-q3) - "vldmia %1, { q4-q7 } \n\t" - "vldmia %2, { q8-q11 } \n\t" - - // result = first column of B x first row of A - "vmul.f32 q0, q8, d8[0]\n\t" - "vmul.f32 q1, q8, d10[0]\n\t" - "vmul.f32 q2, q8, d12[0]\n\t" - "vmul.f32 q3, q8, d14[0]\n\t" - - // result += second column of B x second row of A - "vmla.f32 q0, q9, d8[1]\n\t" - "vmla.f32 q1, q9, d10[1]\n\t" - "vmla.f32 q2, q9, d12[1]\n\t" - "vmla.f32 q3, q9, d14[1]\n\t" - - // result += third column of B x third row of A - "vmla.f32 q0, q10, d9[0]\n\t" - "vmla.f32 q1, q10, d11[0]\n\t" - "vmla.f32 q2, q10, d13[0]\n\t" - "vmla.f32 q3, q10, d15[0]\n\t" - - // result += last column of B x last row of A - "vmla.f32 q0, q11, d9[1]\n\t" - "vmla.f32 q1, q11, d11[1]\n\t" - "vmla.f32 q2, q11, d13[1]\n\t" - "vmla.f32 q3, q11, d15[1]\n\t" - - // output = result registers - "vstmia %2, { q0-q3 }" - : //no output - : "r" (dst_mat), "r" (src_mat_2), "r" (src_mat_1) // input - note *value* of pointer doesn't change - : "memory", "q0", "q1", "q2", "q3", "q4", "q5", "q6", "q7", "q8", "q9", "q10", "q11" //clobber - ); -} -void CMatrix::MultMatrixf(const GLfloat *matrix) -{ - if (m_pMatrix) - { - GLfloat m[16]; - Matrix4Mul(m_pMatrix, matrix, m); - } -} - -#else -void CMatrix::MultMatrixf(const GLfloat *matrix) -{ - if (m_pMatrix) - { - GLfloat a = (matrix[0] * m_pMatrix[0]) + (matrix[1] * m_pMatrix[4]) + (matrix[2] * m_pMatrix[8]) + (matrix[3] * m_pMatrix[12]); - GLfloat b = (matrix[0] * m_pMatrix[1]) + (matrix[1] * m_pMatrix[5]) + (matrix[2] * m_pMatrix[9]) + (matrix[3] * m_pMatrix[13]); - GLfloat c = (matrix[0] * m_pMatrix[2]) + (matrix[1] * m_pMatrix[6]) + (matrix[2] * m_pMatrix[10]) + (matrix[3] * m_pMatrix[14]); - GLfloat d = (matrix[0] * m_pMatrix[3]) + (matrix[1] * m_pMatrix[7]) + (matrix[2] * m_pMatrix[11]) + (matrix[3] * m_pMatrix[15]); - GLfloat e = (matrix[4] * m_pMatrix[0]) + (matrix[5] * m_pMatrix[4]) + (matrix[6] * m_pMatrix[8]) + (matrix[7] * m_pMatrix[12]); - GLfloat f = (matrix[4] * m_pMatrix[1]) + (matrix[5] * m_pMatrix[5]) + (matrix[6] * m_pMatrix[9]) + (matrix[7] * m_pMatrix[13]); - GLfloat g = (matrix[4] * m_pMatrix[2]) + (matrix[5] * m_pMatrix[6]) + (matrix[6] * m_pMatrix[10]) + (matrix[7] * m_pMatrix[14]); - GLfloat h = (matrix[4] * m_pMatrix[3]) + (matrix[5] * m_pMatrix[7]) + (matrix[6] * m_pMatrix[11]) + (matrix[7] * m_pMatrix[15]); - GLfloat i = (matrix[8] * m_pMatrix[0]) + (matrix[9] * m_pMatrix[4]) + (matrix[10] * m_pMatrix[8]) + (matrix[11] * m_pMatrix[12]); - GLfloat j = (matrix[8] * m_pMatrix[1]) + (matrix[9] * m_pMatrix[5]) + (matrix[10] * m_pMatrix[9]) + (matrix[11] * m_pMatrix[13]); - GLfloat k = (matrix[8] * m_pMatrix[2]) + (matrix[9] * m_pMatrix[6]) + (matrix[10] * m_pMatrix[10]) + (matrix[11] * m_pMatrix[14]); - GLfloat l = (matrix[8] * m_pMatrix[3]) + (matrix[9] * m_pMatrix[7]) + (matrix[10] * m_pMatrix[11]) + (matrix[11] * m_pMatrix[15]); - GLfloat m = (matrix[12] * m_pMatrix[0]) + (matrix[13] * m_pMatrix[4]) + (matrix[14] * m_pMatrix[8]) + (matrix[15] * m_pMatrix[12]); - GLfloat n = (matrix[12] * m_pMatrix[1]) + (matrix[13] * m_pMatrix[5]) + (matrix[14] * m_pMatrix[9]) + (matrix[15] * m_pMatrix[13]); - GLfloat o = (matrix[12] * m_pMatrix[2]) + (matrix[13] * m_pMatrix[6]) + (matrix[14] * m_pMatrix[10]) + (matrix[15] * m_pMatrix[14]); - GLfloat p = (matrix[12] * m_pMatrix[3]) + (matrix[13] * m_pMatrix[7]) + (matrix[14] * m_pMatrix[11]) + (matrix[15] * m_pMatrix[15]); - m_pMatrix[0] = a; m_pMatrix[4] = e; m_pMatrix[8] = i; m_pMatrix[12] = m; - m_pMatrix[1] = b; m_pMatrix[5] = f; m_pMatrix[9] = j; m_pMatrix[13] = n; - m_pMatrix[2] = c; m_pMatrix[6] = g; m_pMatrix[10] = k; m_pMatrix[14] = o; - m_pMatrix[3] = d; m_pMatrix[7] = h; m_pMatrix[11] = l; m_pMatrix[15] = p; - } -} -#endif - -// gluLookAt implementation taken from Mesa3D -void CMatrix::LookAt(GLfloat eyex, GLfloat eyey, GLfloat eyez, GLfloat centerx, GLfloat centery, GLfloat centerz, GLfloat upx, GLfloat upy, GLfloat upz) -{ - GLfloat forward[3], side[3], up[3]; - GLfloat m[4][4]; - - forward[0] = centerx - eyex; - forward[1] = centery - eyey; - forward[2] = centerz - eyez; - - up[0] = upx; - up[1] = upy; - up[2] = upz; - - GLfloat tmp = sqrt(forward[0]*forward[0] + forward[1]*forward[1] + forward[2]*forward[2]); - if (tmp != 0.0) - { - forward[0] /= tmp; - forward[1] /= tmp; - forward[2] /= tmp; - } - - side[0] = forward[1]*up[2] - forward[2]*up[1]; - side[1] = forward[2]*up[0] - forward[0]*up[2]; - side[2] = forward[0]*up[1] - forward[1]*up[0]; - - tmp = sqrt(side[0]*side[0] + side[1]*side[1] + side[2]*side[2]); - if (tmp != 0.0) - { - side[0] /= tmp; - side[1] /= tmp; - side[2] /= tmp; - } - - up[0] = side[1]*forward[2] - side[2]*forward[1]; - up[1] = side[2]*forward[0] - side[0]*forward[2]; - up[2] = side[0]*forward[1] - side[1]*forward[0]; - - m[0][0] = 1.0f; m[0][1] = 0.0f; m[0][2] = 0.0f; m[0][3] = 0.0f; - m[1][0] = 0.0f; m[1][1] = 1.0f; m[1][2] = 0.0f; m[1][3] = 0.0f; - m[2][0] = 0.0f; m[2][1] = 0.0f; m[2][2] = 1.0f; m[2][3] = 0.0f; - m[3][0] = 0.0f; m[3][1] = 0.0f; m[3][2] = 0.0f; m[3][3] = 1.0f; - - m[0][0] = side[0]; - m[1][0] = side[1]; - m[2][0] = side[2]; - - m[0][1] = up[0]; - m[1][1] = up[1]; - m[2][1] = up[2]; - - m[0][2] = -forward[0]; - m[1][2] = -forward[1]; - m[2][2] = -forward[2]; - - MultMatrixf(&m[0][0]); - Translatef(-eyex, -eyey, -eyez); -} - -static void __gluMultMatrixVecf(const GLfloat matrix[16], const GLfloat in[4], GLfloat out[4]) -{ - int i; - - for (i=0; i<4; i++) - { - out[i] = in[0] * matrix[0*4+i] + - in[1] * matrix[1*4+i] + - in[2] * matrix[2*4+i] + - in[3] * matrix[3*4+i]; - } -} - -// gluProject implementation taken from Mesa3D -bool CMatrix::Project(GLfloat objx, GLfloat objy, GLfloat objz, const GLfloat modelMatrix[16], const GLfloat projMatrix[16], const GLint viewport[4], GLfloat* winx, GLfloat* winy, GLfloat* winz) -{ - GLfloat in[4]; - GLfloat out[4]; - - in[0]=objx; - in[1]=objy; - in[2]=objz; - in[3]=1.0; - __gluMultMatrixVecf(modelMatrix, in, out); - __gluMultMatrixVecf(projMatrix, out, in); - if (in[3] == 0.0) - return false; - in[0] /= in[3]; - in[1] /= in[3]; - in[2] /= in[3]; - /* Map x, y and z to range 0-1 */ - in[0] = in[0] * 0.5 + 0.5; - in[1] = in[1] * 0.5 + 0.5; - in[2] = in[2] * 0.5 + 0.5; - - /* Map x,y to viewport */ - in[0] = in[0] * viewport[2] + viewport[0]; - in[1] = in[1] * viewport[3] + viewport[1]; - - *winx=in[0]; - *winy=in[1]; - *winz=in[2]; - return true; -} diff -Nru kodi-screensaver-greynetic-2.1.0/src/shaders/Matrix.h kodi-screensaver-greynetic-2.2.2/src/shaders/Matrix.h --- kodi-screensaver-greynetic-2.1.0/src/shaders/Matrix.h 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/src/shaders/Matrix.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -#pragma once -/* -* Copyright (C) 2005-2013 Team XBMC -* http://www.xbmc.org -* -* 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 XBMC; see the file COPYING. If not, see -* . -* -*/ - -#if defined(HAS_OPENGL) -#if defined(__APPLE__) -#include -#else -#define GL_GLEXT_PROTOTYPES -#include -#include -#endif//__APPLE__ -#else -#if defined(__APPLE__) -#include -#include -#else -#include -#include -#endif//__APPLE__ -#endif -#include -#include - -enum EMATRIXMODE -{ - MM_PROJECTION = 0, - MM_MODELVIEW, - MM_TEXTURE, - MM_MATRIXSIZE // Must be last! used for size of matrices -}; - -class CMatrix -{ -public: - CMatrix(); - virtual ~CMatrix(); - - GLfloat* GetMatrix(EMATRIXMODE mode); - - void MatrixMode(EMATRIXMODE mode); - void PushMatrix(); - void PopMatrix(); - void LoadIdentity(); - void Ortho(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); - void Ortho2D(GLfloat l, GLfloat r, GLfloat b, GLfloat t); - void Frustum(GLfloat l, GLfloat r, GLfloat b, GLfloat t, GLfloat n, GLfloat f); - void Translatef(GLfloat x, GLfloat y, GLfloat z); - void Scalef(GLfloat x, GLfloat y, GLfloat z); - void Rotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); - void MultMatrixf(const GLfloat *matrix); - void LookAt(GLfloat eyex, GLfloat eyey, GLfloat eyez, GLfloat centerx, GLfloat centery, GLfloat centerz, GLfloat upx, GLfloat upy, GLfloat upz); - bool Project(GLfloat objx, GLfloat objy, GLfloat objz, const GLfloat modelMatrix[16], const GLfloat projMatrix[16], const GLint viewport[4], GLfloat* winx, GLfloat* winy, GLfloat* winz); - -protected: - - struct MatrixWrapper - { - MatrixWrapper(){}; - MatrixWrapper( const float values[16]) { memcpy(m_values,values,sizeof(m_values)); } - MatrixWrapper( const MatrixWrapper &rhs ) { memcpy(m_values, rhs.m_values, sizeof(m_values)); } - MatrixWrapper &operator=( const MatrixWrapper &rhs ) { memcpy(m_values, rhs.m_values, sizeof(m_values)); return *this;} - operator float*() { return m_values; } - operator const float*() const { return m_values; } - - float m_values[16]; - }; - - std::vector m_matrices[(int)MM_MATRIXSIZE]; - GLfloat *m_pMatrix; - EMATRIXMODE m_matrixMode; -}; diff -Nru kodi-screensaver-greynetic-2.1.0/src/shaders/Shader.cpp kodi-screensaver-greynetic-2.2.2/src/shaders/Shader.cpp --- kodi-screensaver-greynetic-2.1.0/src/shaders/Shader.cpp 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/src/shaders/Shader.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,260 +0,0 @@ -/* - * Copyright (C) 2005-2013 Team XBMC - * http://www.xbmc.org - * - * 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 XBMC; see the file COPYING. If not, see - * . - * - */ - -#include "Shader.h" -#include -#include - -#define LOG_SIZE 1024 -#define GLchar char - -////////////////////////////////////////////////////////////////////// -// CShader -////////////////////////////////////////////////////////////////////// -bool CShader::LoadSource(std::string &file) -{ - char buffer[1024]; - - kodi::vfs::CFile source; - source.OpenFile(file); - size_t len = source.Read(buffer, sizeof(buffer)); - m_source.assign(buffer); - m_source[len] = 0; - source.Close(); - return true; -} - -////////////////////////////////////////////////////////////////////// -// CGLSLVertexShader -////////////////////////////////////////////////////////////////////// - -bool CVertexShader::Compile() -{ - GLint params[4]; - - Free(); - - m_vertexShader = glCreateShader(GL_VERTEX_SHADER); - const char *ptr = m_source.c_str(); - glShaderSource(m_vertexShader, 1, &ptr, 0); - glCompileShader(m_vertexShader); - glGetShaderiv(m_vertexShader, GL_COMPILE_STATUS, params); - if (params[0] != GL_TRUE) - { - GLchar log[LOG_SIZE]; - glGetShaderInfoLog(m_vertexShader, LOG_SIZE, NULL, log); - m_lastLog = log; - m_compiled = false; - } - else - { - GLchar log[LOG_SIZE]; - glGetShaderInfoLog(m_vertexShader, LOG_SIZE, NULL, log); - m_lastLog = log; - m_compiled = true; - } - return m_compiled; -} - -void CVertexShader::Free() -{ - if (m_vertexShader) - glDeleteShader(m_vertexShader); - m_vertexShader = 0; -} - -////////////////////////////////////////////////////////////////////// -// CVisGLSLPixelShader -////////////////////////////////////////////////////////////////////// -bool CPixelShader::Compile() -{ - GLint params[4]; - - Free(); - - if (m_source.length()==0) - return true; - - m_pixelShader = glCreateShader(GL_FRAGMENT_SHADER); - const char *ptr = m_source.c_str(); - glShaderSource(m_pixelShader, 1, &ptr, 0); - glCompileShader(m_pixelShader); - glGetShaderiv(m_pixelShader, GL_COMPILE_STATUS, params); - if (params[0] != GL_TRUE) - { - GLchar log[LOG_SIZE]; - glGetShaderInfoLog(m_pixelShader, LOG_SIZE, NULL, log); - m_lastLog = log; - m_compiled = false; - } - else - { - GLchar log[LOG_SIZE]; - glGetShaderInfoLog(m_pixelShader, LOG_SIZE, NULL, log); - m_lastLog = log; - m_compiled = true; - } - return m_compiled; -} - -void CPixelShader::Free() -{ - if (m_pixelShader) - glDeleteShader(m_pixelShader); - m_pixelShader = 0; -} - -////////////////////////////////////////////////////////////////////// -// CShaderProgram -////////////////////////////////////////////////////////////////////// - -CShaderProgram::CShaderProgram(std::string &vert, std::string &frag) -{ - std::string path = kodi::GetAddonPath(); - -#if defined(HAS_OPENGL) - int major = 0; - int minor = 0; - const char* ver = (const char*)glGetString(GL_VERSION); - if (ver != 0) - { - sscanf(ver, "%d.%d", &major, &minor); - } - - if (major > 3 || - (major == 3 && minor >= 2)) - { - path += "/resources/shaders/1.5/"; - } - else { -printf("using 1.2 shader\n"); - path += "/resources/shaders/1.2/"; -} -#else - path += "/resources/shaders/1.2/"; -#endif - - std::string file; - - m_pFP = new CPixelShader(); - file = path + frag; - m_pFP->LoadSource(file); - m_pVP = new CVertexShader(); - file = path + vert; - m_pVP->LoadSource(file); -} - -void CShaderProgram::Free() -{ - m_pVP->Free(); - m_pFP->Free(); - if (m_shaderProgram) - glDeleteProgram(m_shaderProgram); - m_shaderProgram = 0; - m_ok = false; -} - -bool CShaderProgram::CompileAndLink() -{ - GLint params[4]; - - // free resources - Free(); - - // compiled vertex shader - if (!m_pVP->Compile()) - return false; - - // compile pixel shader - if (!m_pFP->Compile()) - { - m_pVP->Free(); - return false; - } - - // create program object - if (!(m_shaderProgram = glCreateProgram())) - goto error; - - // attach the vertex shader - glAttachShader(m_shaderProgram, m_pVP->Handle()); - glAttachShader(m_shaderProgram, m_pFP->Handle()); - - // link the program - glLinkProgram(m_shaderProgram); - glGetProgramiv(m_shaderProgram, GL_LINK_STATUS, params); - if (params[0] != GL_TRUE) - { - GLchar log[LOG_SIZE]; - glGetProgramInfoLog(m_shaderProgram, LOG_SIZE, NULL, log); - goto error; - } - - m_validated = false; - m_ok = true; - OnCompiledAndLinked(); - return true; - - error: - m_ok = false; - Free(); - return false; -} - -bool CShaderProgram::Enable() -{ - if (OK()) - { - glUseProgram(m_shaderProgram); - if (OnEnabled()) - { - if (!m_validated) - { - // validate the program - GLint params[4]; - glValidateProgram(m_shaderProgram); - glGetProgramiv(m_shaderProgram, GL_VALIDATE_STATUS, params); - if (params[0] != GL_TRUE) - { - GLchar log[LOG_SIZE]; - glGetProgramInfoLog(m_shaderProgram, LOG_SIZE, NULL, log); - } - m_validated = true; - } - return true; - } - else - { - glUseProgram(0); - return false; - } - return true; - } - return false; -} - -void CShaderProgram::Disable() -{ - if (OK()) - { - glUseProgram(0); - OnDisabled(); - } -} diff -Nru kodi-screensaver-greynetic-2.1.0/src/shaders/Shader.h kodi-screensaver-greynetic-2.2.2/src/shaders/Shader.h --- kodi-screensaver-greynetic-2.1.0/src/shaders/Shader.h 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/src/shaders/Shader.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,136 +0,0 @@ -#pragma once -/* - * Copyright (C) 2005-2013 Team XBMC - * http://www.xbmc.org - * - * 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 XBMC; see the file COPYING. If not, see - * . - * - */ - -#if defined(HAS_OPENGL) -#if defined(__APPLE__) -#include -#else -#define GL_GLEXT_PROTOTYPES -#include -#include -#endif//__APPLE__ -#else -#if defined(__APPLE__) -#include -#include -#else -#include -#include -#endif//__APPLE__ -#endif - -#include -#include - -#include "kodi/AddonBase.h" - -////////////////////////////////////////////////////////////////////// -// CShader - base class -////////////////////////////////////////////////////////////////////// -class ATTRIBUTE_HIDDEN CShader -{ -public: - CShader() = default; - virtual ~CShader() = default; - virtual bool Compile() = 0; - virtual void Free() = 0; - virtual GLuint Handle() = 0; - - bool LoadSource(std::string &file); - bool OK() { return m_compiled; } - -protected: - std::string m_source; - std::string m_lastLog; - std::vector m_attr; - bool m_compiled = false; -}; - - -////////////////////////////////////////////////////////////////////// -// CVertexShader -////////////////////////////////////////////////////////////////////// -class ATTRIBUTE_HIDDEN CVertexShader : public CShader -{ -public: - CVertexShader() = default; - ~CVertexShader() override { Free(); } - void Free() override; - bool Compile() override; - GLuint Handle() override { return m_vertexShader; } - -protected: - GLuint m_vertexShader = 0; -}; - -////////////////////////////////////////////////////////////////////// -// CPixelShader -////////////////////////////////////////////////////////////////////// -class ATTRIBUTE_HIDDEN CPixelShader : public CShader -{ -public: - CPixelShader() = default; - ~CPixelShader() { Free(); } - void Free() override; - bool Compile() override; - GLuint Handle() override { return m_pixelShader; } - -protected: - GLuint m_pixelShader = 0; -}; - -////////////////////////////////////////////////////////////////////// -// CShaderProgram -////////////////////////////////////////////////////////////////////// -class ATTRIBUTE_HIDDEN CShaderProgram -{ -public: - CShaderProgram(std::string &vert, std::string &frag); - - virtual ~CShaderProgram() - { - Free(); - delete m_pFP; - delete m_pVP; - } - - bool Enable(); - void Disable(); - bool OK() { return m_ok; } - void Free(); - - CVertexShader* VertexShader() { return m_pVP; } - CPixelShader* PixelShader() { return m_pFP; } - bool CompileAndLink(); - - virtual void OnCompiledAndLinked() {}; - virtual bool OnEnabled() { return false; }; - virtual void OnDisabled() {}; - - GLuint ProgramHandle() { return m_shaderProgram; } - -protected: - CVertexShader* m_pVP = nullptr; - CPixelShader* m_pFP = nullptr; - GLuint m_shaderProgram = 0; - bool m_ok = false; - bool m_validated = false; -}; diff -Nru kodi-screensaver-greynetic-2.1.0/.travis.yml kodi-screensaver-greynetic-2.2.2/.travis.yml --- kodi-screensaver-greynetic-2.1.0/.travis.yml 2018-11-26 14:30:06.000000000 +0000 +++ kodi-screensaver-greynetic-2.2.2/.travis.yml 2020-02-22 01:02:24.000000000 +0000 @@ -36,7 +36,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