LayerManagement: fixed plugin path handling
authorTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Fri, 6 Jul 2012 11:42:57 +0000 (04:42 -0700)
committerTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Tue, 10 Jul 2012 06:29:56 +0000 (23:29 -0700)
The generic communicator and the GLESGraphicSystem now use
the configuration flag CMAKE_INSTALL_PREFIX to
determine the default plugin search path.

Additionally the GeniviDemo.sh script was updated, since exporting
LM_PLUGIN_PATH is not required any more.
The script still contains a hint, that the plugin search path may
be modified.

GeniviDemo.sh
LayerManagerPlugins/Communicators/GenericCommunicator/test/DBUSCommunicatorTest.cpp
LayerManagerPlugins/Renderers/Graphic/src/GraphicSystems/GLESGraphicSystem.cpp

index 98e5e83..12e76e2 100755 (executable)
 ############################################################################
 
 export LD_LIBRARY_PATH=/usr/lib:/usr/local/lib
-export LM_PLUGIN_PATH=/usr/local/lib/layermanager
+
+# set plugin path, if installation path is not used
+#export LM_PLUGIN_PATH=/usr/local/lib/layermanager
+
 export DISPLAY=:0.0
 PIDSURFACE1=/tmp/surface1.pid
 PIDSURFACE2=/tmp/surface2.pid
index 995ac3a..75df07a 100644 (file)
@@ -821,8 +821,8 @@ TEST_F(DBUSCommunicatorTest, CreateShader) {
     EXPECT_CALL(this->mockCommandExecutor, execute(ShaderCreateCommandEq(std::string("test123.glslv"),std::string("differentshader.glslv")))).Times(1);
     ASSERT_NE(-1, system((DBUSCOMMAND + std::string("CreateShader string:test123.glslv string:differentshader.glslv")).c_str()));
 
-    EXPECT_CALL(this->mockCommandExecutor, execute(ShaderCreateCommandEq(std::string("/usr/lib/shadertest.glslv"),std::string("foobar")))).Times(1);
-    ASSERT_NE(-1, system((DBUSCOMMAND + std::string("CreateShader string:/usr/lib/shadertest.glslv string:foobar")).c_str()));
+    EXPECT_CALL(this->mockCommandExecutor, execute(ShaderCreateCommandEq(std::string("/test/path/shadertest.glslv"),std::string("foobar")))).Times(1);
+    ASSERT_NE(-1, system((DBUSCOMMAND + std::string("CreateShader string:/test/path/shadertest.glslv string:foobar")).c_str()));
 }
 
 MATCHER_P(ShaderDestroyCommandEq, id, "%(*)s") {
index 3019a72..8d60500 100644 (file)
@@ -24,6 +24,8 @@
 #include "GLES2/gl2.h"
 #include "Bitmap.h"
 #include "Transformation/ViewportTransform.h"
+#include "config.h"
+#include <string>
 
 static const float vertices[8 * 12] =
 { 0.0, 0.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0, 0.0,
@@ -403,11 +405,19 @@ bool GLESGraphicsystem::initOpenGLES(EGLint displayWidth, EGLint displayHeight)
     m_defaultShaderNoUniformAlpha = Shader::createShader("default", "default_no_uniform_alpha");
 
 #ifdef DRAW_LAYER_DEBUG
-    m_layerShader = Shader::createShader("/usr/lib/layermanager/renderer/renderer_layer.glslv", "/usr/lib/layermanager/renderer/renderer_layer.glslf");
-    if (m_layerShader==0)
+    std::string pluginLookupPath = getenv("LM_PLUGIN_PATH");
+    std::string vertexShaderPath;
+    std::string fragmentShaderPath;
+
+    if (pluginLookupPath.empty())
     {
-        m_layerShader = Shader::createShader("/usr/local/lib/layermanager/renderer/renderer_layer.glslv", "/usr/local/lib/layermanager/renderer/renderer_layer.glslf");
+        pluginLookupPath = CMAKE_INSTALL_PREFIX"/lib/layermanager";
     }
+
+    vertexShaderPath   = pluginLookupPath + "/renderer/renderer_layer.glslv";
+    fragmentShaderPath = pluginLookupPath + "/renderer/renderer_layer.glslf";
+
+    m_layerShader = Shader::createShader(vertexShaderPath, fragmentShaderPath);
 #endif
     if (
       !m_defaultShader || !m_defaultShaderNoUniformAlpha