Sync from upstream SVN, version 1396.
diff --git a/AUTHORS.txt b/AUTHORS.txt
old mode 100644
new mode 100755
index e0ae79c..7544527
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -1,4 +1,3 @@
-
projectM -- Milkdrop-esque visualisation SDK
Copyright (C)2003-2007 projectM Team
@@ -25,12 +24,12 @@
Evaluator
Pulse Audio support (projectM-pulseaudio)
Qt GUI (projectM-qt)
-
+
Peter Sperl
Beat Detection
Rendering
XMMS Support (projectM-xmms)
- libvisual Support (projectM-libvisual)
+ libvisual Support (projectM-libvisual)
Alligator Descartes
Media Player Support (iTunes, Winamp, Windows Media Player)
@@ -40,3 +39,8 @@
Roger Dannenburg
Advice & Support
+
+Matthias Klumpp
+ CMake build system
+ Distro integration
+ Bug fixes
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dcda29d..634b82f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,11 +1,5 @@
PROJECT(projectM-complete)
-cmake_minimum_required(VERSION 2.4.0)
-cmake_policy(SET CMP0005 OLD)
-
-if(COMMAND cmake_policy)
- cmake_policy(SET CMP0003 NEW)
-endif(COMMAND cmake_policy)
-
+cmake_minimum_required(VERSION 2.8.0)
include(src/cmake/CPack-projectM.cmake)
diff --git a/src/libprojectM/CMakeLists.txt b/src/libprojectM/CMakeLists.txt
index 03cdbc7..acc698e 100644
--- a/src/libprojectM/CMakeLists.txt
+++ b/src/libprojectM/CMakeLists.txt
@@ -33,16 +33,10 @@
set(PROJECTM_ABI_LEVEL 2)
#
-SET(LIB_SUFFIX ""
- CACHE STRING "Define suffix of directory name (32/64)"
- FORCE)
-
-ADD_DEFINITIONS(-DLIB_SUFFIX="\\\"${LIB_SUFFIX}\\\"")
-
ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="\\\"${CMAKE_INSTALL_PREFIX}\\\"")
-SET(LIB_INSTALL_DIR "\${exec_prefix}/lib${LIB_SUFFIX}"
- CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})"
+SET(LIB_INSTALL_DIR "\${exec_prefix}/lib"
+ CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib)"
FORCE)
if (USE_NATIVE_GLEW)
@@ -221,14 +215,26 @@
)
endif(BUILD_PROJECTM_STATIC)
+SET(projectM_FONT_MENU "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf" CACHE FILEPATH "Path to the default menu TrueType font")
+SET(projectM_FONT_TITLE "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf" CACHE FILEPATH "Path to the default title TrueType font")
+ADD_DEFINITIONS(-DprojectM_FONT_MENU="\\\"${projectM_FONT_MENU}\\\"")
+ADD_DEFINITIONS(-DprojectM_FONT_TITLE="\\\"${projectM_FONT_TITLE}\\\"")
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/libprojectM.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/libprojectM.pc" @ONLY)
CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/config.inp.in" "${CMAKE_CURRENT_BINARY_DIR}/config.inp" @ONLY)
+IF(projectM_FONT_MENU MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf" OR projectM_FONT_TITLE MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf")
+ INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/fonts/VeraMono.ttf DESTINATION ${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts)
+ENDIF(projectM_FONT_MENU MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf" OR projectM_FONT_TITLE MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf")
+
+IF(projectM_FONT_MENU MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf" OR projectM_FONT_TITLE MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf")
+ INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/fonts/VeraMono.ttf DESTINATION ${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts)
+ENDIF(projectM_FONT_MENU MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf" OR projectM_FONT_TITLE MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf")
+
FILE(GLOB presets "presets/*.milk" "presets/*.prjm" "presets/*.tga")
INSTALL(FILES ${presets} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM/presets)
INSTALL(FILES ${Renderer_SOURCE_DIR}/projectM.cg ${Renderer_SOURCE_DIR}/blur.cg DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM/shaders)
-INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libprojectM.pc DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig)
+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libprojectM.pc DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/config.inp DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM)
INSTALL(FILES projectM.hpp event.h dlldefs.h fatal.h PCM.hpp Common.hpp DESTINATION include/libprojectM)
-INSTALL(TARGETS projectM DESTINATION lib${LIB_SUFFIX})
+INSTALL(TARGETS projectM DESTINATION lib)
diff --git a/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.cpp b/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.cpp
index 1063fd9..9d5be25 100644
--- a/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.cpp
+++ b/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.cpp
@@ -111,7 +111,8 @@
return PROJECTM_ERROR;
if (load_builtin_func("fact", FuncWrappers::fact_wrapper, 1) < 0)
return PROJECTM_ERROR;
-
+ if (load_builtin_func("print", FuncWrappers::print_wrapper, 1) < 0)
+ return PROJECTM_ERROR;
return PROJECTM_SUCCESS;
}
diff --git a/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.hpp b/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.hpp
index 8b1e7e2..5ee1879 100644
--- a/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.hpp
+++ b/src/libprojectM/MilkdropPresetFactory/BuiltinFuncs.hpp
@@ -88,9 +88,10 @@
static inline float if_wrapper(float * arg_list) {
-if ((int)arg_list[0] == 0)
-return arg_list[2];
-return arg_list[1];
+ if ((int)arg_list[0] == 0)
+ return arg_list[2];
+ //std::cout <<"NOT ZERO: " << arg_list[0] << std::endl;
+ return arg_list[1];
}
@@ -121,12 +122,8 @@
}
static float sin_wrapper(float * arg_list) {
-
- assert(arg_list);
-//return .5;
-float d = sinf(*arg_list);
-return d;
-//return (sin (arg_list[0]));
+ const float d = sinf(*arg_list);
+ return d;
}
@@ -179,6 +176,25 @@
}
+static inline float print_wrapper(float * arg_list) {
+
+ int len = 1;
+ for (int i = 0; i < len; i++)
+ {
+ std::cout << arg_list[i];
+ if (i != (len-1))
+ std::cout << " ";
+ }
+
+ if (len > 0)
+ std::cout << std::endl;
+
+ if (len > 0)
+ return arg_list[0];
+ else
+ return 0;
+}
+
static inline float nchoosek_wrapper(float * arg_list) {
unsigned long cnm = 1UL;
int i, f;
diff --git a/src/libprojectM/MilkdropPresetFactory/Expr.cpp b/src/libprojectM/MilkdropPresetFactory/Expr.cpp
old mode 100644
new mode 100755
index 58142ad..2f3efdf
--- a/src/libprojectM/MilkdropPresetFactory/Expr.cpp
+++ b/src/libprojectM/MilkdropPresetFactory/Expr.cpp
@@ -31,7 +31,9 @@
{
float l;
- assert ( item );
+ if (item == 0)
+ return EVAL_ERROR;
+
switch ( this->type )
{
case VAL_T:
@@ -106,7 +108,7 @@
return ( float ) ( * ( ( int* ) ( term.param->engine_val ) ) );
case P_TYPE_DOUBLE:
-
+
if ( term.param->matrix_flag | ( term.param->flags & P_FLAG_ALWAYS_MATRIX ) )
{
@@ -128,7 +130,7 @@
//assert(mesh_i >=0);
}
//std::cout << term.param->name << ": " << (*((float*)term.param->engine_val)) << std::endl;
- return * ( ( float* ) ( term.param->engine_val ) );
+ return * ( ( float* ) ( term.param->engine_val ) );
default:
return EVAL_ERROR;
}
diff --git a/src/libprojectM/Renderer/Renderer.cpp b/src/libprojectM/Renderer/Renderer.cpp
index acae065..1666837 100644
--- a/src/libprojectM/Renderer/Renderer.cpp
+++ b/src/libprojectM/Renderer/Renderer.cpp
@@ -6,6 +6,7 @@
#include "TextureManager.hpp"
#include <iostream>
#include <algorithm>
+#include <sys/stat.h>
#include <cassert>
#include "omptl/omptl"
#include "omptl/omptl_algorithm"
@@ -45,7 +46,17 @@
this->beatDetect = beatDetect;
#ifdef USE_FTGL
- /**f Load the standard fonts */
+ /** Load the standard fonts if they do exist */
+ struct stat buffer;
+
+ if (stat( title_fontURL.c_str(), &buffer )) {
+ std::cout << "Could not open font file: " << title_fontURL << std::endl;
+ exit(1);
+ }
+ if (stat( menu_fontURL.c_str(), &buffer )) {
+ std::cout << "Could not open font file: " << menu_fontURL << std::endl;
+ exit(1);
+ }
title_font = new FTGLPixmapFont(title_fontURL.c_str());
other_font = new FTGLPixmapFont(menu_fontURL.c_str());
@@ -252,6 +263,17 @@
void Renderer::RenderFrame(const Pipeline &pipeline, const PipelineContext &pipelineContext)
{
+#ifdef USE_FBO
+ // when not 'renderToTexture', the user may use its own couple FBO/texture
+ // so retrieve this external FBO if it exists, (0 means no FBO) and unbind it
+ GLint externalFBO = 0;
+ if (!renderTarget->renderToTexture)
+ {
+ glGetIntegerv(GL_FRAMEBUFFER_BINDING, &externalFBO);
+ glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
+ }
+#endif
+
SetupPass1(pipeline, pipelineContext);
#ifdef USE_CG
@@ -264,6 +286,15 @@
RenderItems(pipeline, pipelineContext);
FinishPass1();
+
+#ifdef USE_FBO
+ // when not 'renderToTexture', the user may use its own couple FBO/texture
+ // if it exists (0 means no external FBO)
+ // then rebind it just before calling the final pass: Pass2
+ if (!renderTarget->renderToTexture && externalFBO != 0)
+ glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, externalFBO);
+#endif
+
Pass2(pipeline, pipelineContext);
}
diff --git a/src/libprojectM/config.inp.in b/src/libprojectM/config.inp.in
index b27b193..93d9c61 100644
--- a/src/libprojectM/config.inp.in
+++ b/src/libprojectM/config.inp.in
@@ -4,8 +4,8 @@
Texture Size = 1024 # Size of internal rendering texture
Mesh X = 32 # Width of PerPixel Equation mesh
Mesh Y = 24 # Height of PerPixel Equation mesh
-FPS = 35 # Frames Per Second
-Fullscreen = false
+FPS = 35 # Frames Per Second
+Fullscreen = false
Window Width = 512 # startup window width
Window Height = 512 # startup window height
@@ -17,6 +17,5 @@
Aspect Correction = true # Custom Shape Aspect Correction
Preset Path = @CMAKE_INSTALL_PREFIX@/@RESOURCE_PREFIX@/presets # preset location
-Title Font = @CMAKE_INSTALL_PREFIX@/@RESOURCE_PREFIX@/fonts/Vera.ttf
-Menu Font = @CMAKE_INSTALL_PREFIX@/@RESOURCE_PREFIX@/fonts/VeraMono.ttf
-
+Title Font = @projectM_FONT_TITLE@
+Menu Font = @projectM_FONT_MENU@
diff --git a/src/libprojectM/libprojectM.pc.in b/src/libprojectM/libprojectM.pc.in
index 2a1fa2b..90de752 100644
--- a/src/libprojectM/libprojectM.pc.in
+++ b/src/libprojectM/libprojectM.pc.in
@@ -6,7 +6,7 @@
sysconfdir=@CMAKE_INSTALL_PREFIX@/@RESOURCE_PREFIX@
Name: libprojectM
-Version: 2.0.0
+Version: @PROJECTM_VERSION@
Description: projectM - OpenGL Milkdrop
Requires:
Libs: -L${libdir} -lprojectM
diff --git a/src/libprojectM/projectM.cpp b/src/libprojectM/projectM.cpp
old mode 100644
new mode 100755
index 5e23005..26e84e0
--- a/src/libprojectM/projectM.cpp
+++ b/src/libprojectM/projectM.cpp
@@ -201,16 +201,16 @@
#ifdef LINUX
_settings.titleFontURL = config.read<string>
- ( "Title Font", CMAKE_INSTALL_PREFIX "/share/projectM/fonts/Vera.ttf" );
+ ( "Title Font", projectM_FONT_TITLE );
_settings.menuFontURL = config.read<string>
- ( "Menu Font", CMAKE_INSTALL_PREFIX "/share/projectM/fonts/VeraMono.ttf" );
+ ( "Menu Font", projectM_FONT_MENU );
#endif
#ifdef WIN32
_settings.titleFontURL = config.read<string>
- ( "Title Font", CMAKE_INSTALL_PREFIX "/share/projectM/fonts/Vera.ttf" );
+ ( "Title Font", projectM_FONT_TITLE );
_settings.menuFontURL = config.read<string>
- ( "Menu Font", CMAKE_INSTALL_PREFIX "/share/projectM/fonts/VeraMono.ttf" );
+ ( "Menu Font", projectM_FONT_MENU );
#endif
diff --git a/src/projectM-libvisual/CMakeLists.txt b/src/projectM-libvisual/CMakeLists.txt
index ed2f576..28d8f90 100644
--- a/src/projectM-libvisual/CMakeLists.txt
+++ b/src/projectM-libvisual/CMakeLists.txt
@@ -1,19 +1,13 @@
PROJECT(projectM_libvisual)
cmake_minimum_required(VERSION 2.4.0)
- if(COMMAND cmake_policy)
- cmake_policy(SET CMP0003 NEW)
- endif(COMMAND cmake_policy)
-
INCLUDE(cmake/CPack-projectM.cmake)
-
ADD_LIBRARY(projectM_libvisual SHARED actor_projectM.cpp lvtoprojectM.h ConfigFile.h ConfigFile.cpp)
INCLUDE(FindPkgConfig.cmake)
cmake_policy(SET CMP0005 OLD)
-
FIND_PACKAGE(OpenGL)
FIND_PACKAGE(SDL)
@@ -30,19 +24,18 @@
pkg_search_module(LIBVISUAL REQUIRED libvisual-0.4)
if (LIBPROJECTM_FOUND)
-MESSAGE (STATUS "[projectM-libvisual] projectM detected.")
+ MESSAGE (STATUS "[projectM-libvisual] projectM detected.")
else(LIBPROJECTM_FOUND)
-MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM source directory.")
+ MESSAGE (FATAL_ERROR "projectM NOT detected. Please install the projectM module or build from the top level projectM source directory.")
endif(LIBPROJECTM_FOUND)
if(LIBVISUAL_FOUND)
-MESSAGE(STATUS "[projectM-libvisual] libvisual detected.")
+ MESSAGE(STATUS "[projectM-libvisual] libvisual detected.")
else(LIBVISUAL_FOUND)
-MESSAGE(FATAL_ERROR "libvisual 0.4 not found! Please visit http://libvisual.sf.net and download the module.")
+ MESSAGE(FATAL_ERROR "libvisual 0.4 not found! Please visit http://libvisual.sf.net and download the module.")
endif(LIBVISUAL_FOUND)
-
if (${CMAKE_PROJECT_NAME} MATCHES "projectM-complete")
set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/libprojectM)
set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/libprojectM)
diff --git a/src/projectM-pulseaudio/CMakeLists.txt b/src/projectM-pulseaudio/CMakeLists.txt
index 5f3e23b..2adc907 100644
--- a/src/projectM-pulseaudio/CMakeLists.txt
+++ b/src/projectM-pulseaudio/CMakeLists.txt
@@ -57,8 +57,8 @@
message(STATUS "FTGL_LIBRARY_DIRS = ${FTGL_LIBRARY_DIRS}")
include_directories(${FTGL_INCLUDE_DIRS})
link_directories(${FTGL_LIBRARY_DIRS})
-else (FTGL_FOUND)
- message(FATAL_ERROR "ERROR: ftgl library not detected. Please install it from ftgl.wiki.sourceforge.net")
+else (FTGL_FOUND USE)
+## message(FATAL_ERROR "ERROR: ftgl library not detected. Please install it from ftgl.wiki.sourceforge.net")
endif (FTGL_FOUND)
set(projectM_pulseaudio_SRCS
diff --git a/src/projectM-qt/CMakeLists.txt b/src/projectM-qt/CMakeLists.txt
index e73ab52..750d1ed 100644
--- a/src/projectM-qt/CMakeLists.txt
+++ b/src/projectM-qt/CMakeLists.txt
@@ -8,11 +8,11 @@
include_directories( ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR} )
include(FindPkgConfig.cmake)
-if (${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
+if (${CMAKE_PROJECT_NAME} MATCHES "projectM-complete")
set(LIBPROJECTM_FOUND true)
-else(${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
+else(${CMAKE_PROJECT_NAME} MATCHES "projectM-complete")
pkg_search_module(LIBPROJECTM REQUIRED libprojectM)
-endif(${CMAKE_PROJECT_NAME} MATCHES "PROJECTM_ROOT")
+endif(${CMAKE_PROJECT_NAME} MATCHES "projectM-complete")
OPTION(BUILD_PROJECTM_QT_STATIC "Build a static library of projectM-qt rather than the usual shared library format" OFF)
@@ -116,8 +116,8 @@
SET_TARGET_PROPERTIES(projectM-qt PROPERTIES VERSION ${PROJECTM_QT_VERSION} SOVERSION ${PROJECTM_QT_ABI_LEVEL})
if (${CMAKE_PROJECT_NAME} MATCHES "projectM-complete")
- set(PROJECTM_INCLUDE ${PROJECTM_ROOT_SOURCE_DIR}/libprojectM)
- set(PROJECTM_LINK ${PROJECTM_ROOT_BINARY_DIR}/libprojectM)
+ set(PROJECTM_INCLUDE ${projectM-complete_SOURCE_DIR}/libprojectM)
+ set(PROJECTM_LINK ${projectM-complete_BINARY_DIR}/libprojectM)
elseif (${CMAKE_PROJECT_NAME} MATCHES ${PROJECT_NAME})
set(PROJECTM_INCLUDE ${LIBPROJECTM_INCLUDEDIR}/libprojectM)
set(PROJECTM_LINK ${PROJECTM_LDFLAGS})
@@ -131,6 +131,6 @@
target_link_libraries(projectM-qt projectM GLEW GL ${QT_QTGUI_LIBRARIES} ${QT_QTOPENGL_LIBRARIES} ${QT_QTXML_LIBRARIES} ${QT_LIBRARIES})
install(FILES qprojectm_mainwindow.hpp DESTINATION include/libprojectM-qt)
-install(TARGETS projectM-qt DESTINATION lib${LIB_SUFFIX})
-install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libprojectM-qt.pc" DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig)
+install(TARGETS projectM-qt DESTINATION lib)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libprojectM-qt.pc" DESTINATION lib/pkgconfig)
install(FILES "images/icons/prjm16-transparent.svg" DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps)
diff --git a/src/projectM-xmms/CMakeLists.txt b/src/projectM-xmms/CMakeLists.txt
index 453e3ca..4688f48 100644
--- a/src/projectM-xmms/CMakeLists.txt
+++ b/src/projectM-xmms/CMakeLists.txt
@@ -44,4 +44,4 @@
TARGET_LINK_LIBRARIES(xmms_projectM projectM xmms ${SDL_LIBRARY} ${GTK_LIBRARIES})
-INSTALL(TARGETS xmms_projectM DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/xmms/Visualization )
+INSTALL(TARGETS xmms_projectM DESTINATION lib/xmms/Visualization )