X11GLESRenderer: updated to new IPlugin interface
authorTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Wed, 28 Nov 2012 10:52:51 +0000 (02:52 -0800)
committerTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Mon, 14 Jan 2013 08:34:16 +0000 (00:34 -0800)
X11GLESRenderer is now based on the updated IPlugin interface
to support static linking.

Signed-off-by: Timo Lotterbach <timo.lotterbach@bmw-carit.de>
LayerManagerPlugins/Renderers/Base/include/BaseRenderer.h
LayerManagerPlugins/Renderers/Base/src/BaseRenderer.cpp
LayerManagerPlugins/Renderers/Graphic/CMakeLists.txt
LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/CMakeLists.txt
LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/include/X11GLESRenderer.h
LayerManagerPlugins/Renderers/Platform/X11GLESRenderer/src/X11GLESRenderer.cpp
LayerManagerService/include/IRenderer.h

index 4a1c7cf..77bc21a 100644 (file)
 #ifndef _BASERENDERER_H_
 #define _BASERENDERER_H_
 
+#include "PluginBase.h"
 #include "LayerType.h"
 #include "Scene.h"
 #include "IRenderer.h"
 #include "WindowSystems/BaseWindowSystem.h"
 
-class BaseRenderer: public IRenderer
+class BaseRenderer: public IRenderer, public PluginBase
 {
 public:
-    BaseRenderer(Scene* pScene);
+    BaseRenderer(ICommandExecutor& executor, Configuration& config);
     virtual ~BaseRenderer();
 
     bool start(int, int, const char*) = 0;
index 80c6667..eed215d 100644 (file)
 
 bool BaseRenderer::debugMode = true;
 
-BaseRenderer::BaseRenderer(Scene* pScene) : m_pScene(pScene)
+BaseRenderer::BaseRenderer(ICommandExecutor& executor, Configuration& config)
+: PluginBase(executor, config, Renderer_Api_v1)
+, m_pScene(executor.getScene())
 {
     LOG_DEBUG("BaseRenderer", "Creating Renderer");
-    m_pInputManager = new InputManager(pScene);
-    setHealth(HealthRunning);
+    m_pInputManager = new InputManager(m_pScene);
+    pluginSetHealth(HealthRunning);
 }
 
 BaseRenderer::~BaseRenderer()
@@ -37,7 +39,7 @@ BaseRenderer::~BaseRenderer()
     {
         delete m_pInputManager;
     }
-    setHealth(HealthStopped);
+    pluginSetHealth(HealthStopped);
 }
 
 uint BaseRenderer::getLayerTypeCapabilities(LayerType layerType)
index a8c7118..f6216dd 100644 (file)
@@ -74,7 +74,6 @@ if (WITH_GLESv2_LIB)
     target_link_libraries(${GRAPHIC_LIB_NAME} ${LIBS})
     
     add_dependencies(${GRAPHIC_LIB_NAME}
-        LayerManagerService
         LayerManagerUtils
     )
 
index 87a3d90..99ab0ec 100644 (file)
 
 cmake_minimum_required (VERSION 2.6)
 
+project(X11GLESRenderer)
+
 include_directories ("include")
 include_directories ("../../Base/include")
 include_directories ("../../Graphic/include")
-include_directories ("${PROJECT_SOURCE_DIR}/config")
-include_directories ("${PROJECT_SOURCE_DIR}/LayerManagerService/include")
-include_directories ("${PROJECT_SOURCE_DIR}/LayerManagerUtils/include")
+include_directories ("${CMAKE_SOURCE_DIR}/config")
+include_directories ("${CMAKE_SOURCE_DIR}/LayerManagerService/include")
+include_directories ("${CMAKE_SOURCE_DIR}/LayerManagerUtils/include")
+
+set(SRC_FILES
+    src/X11GLESRenderer.cpp
+    src/ShaderProgramGLES.cpp
+)
+
+if (WITH_STATIC_PLUGINS)
+
+    add_library(${PROJECT_NAME} STATIC ${SRC_FILES})
+    set (STATICALLY_LINKED_PLUGINS ${STATICALLY_LINKED_PLUGINS}
+        ${PROJECT_NAME} CACHE INTERNAL "list of static plugins")
+
+else(WITH_STATIC_PLUGINS)
+
+    add_library(${PROJECT_NAME} SHARED ${SRC_FILES})
 
-file(GLOB SOURCES 
-               src/X11GLESRenderer.cpp
-        src/ShaderProgramGLES.cpp 
-               )
-               
-add_library(X11GLESRenderer SHARED ${SOURCES})
+endif(WITH_STATIC_PLUGINS)
 
 find_package(X11 REQUIRED)
 include_directories(${X11_INCLUDE_DIR})
@@ -46,13 +58,15 @@ include_directories(${GLESv2_INCLUDE_DIR})
 
 find_package (Threads)
 set(LIBS ${LIBS} ${CMAKE_THREAD_LIBS_INIT} ${EGL_LIBRARY} ${GLESv2_LIBRARIES} ${X11_Xcomposite_LIB} ${X11_Xdamage_LIB} LayerManagerGraphicGLESv2 LayerManagerUtils )
-target_link_libraries(X11GLESRenderer ${LIBS})
+target_link_libraries(${PROJECT_NAME} ${LIBS})
 
-add_dependencies(X11GLESRenderer LayerManagerService)
-add_dependencies(X11GLESRenderer LayerManagerUtils)
-add_dependencies(X11GLESRenderer LayerManagerGraphicGLESv2)
+add_dependencies(${PROJECT_NAME} LayerManagerUtils)
+add_dependencies(${PROJECT_NAME} LayerManagerGraphicGLESv2)
 
-install (TARGETS X11GLESRenderer DESTINATION lib/layermanager/renderer)
+install (TARGETS ${PROJECT_NAME}
+         LIBRARY DESTINATION lib/layermanager/renderer
+         ARCHIVE DESTINATION lib/layermanager/static
+)
 install (FILES renderer_frag_clear.glslf DESTINATION lib/layermanager/renderer)
 install (FILES renderer_frag.glslf DESTINATION lib/layermanager/renderer)
 install (FILES renderer_frag_no_blend.glslf DESTINATION lib/layermanager/renderer)
index a7dd654..bb56cff 100644 (file)
@@ -29,7 +29,7 @@
 class X11GLESRenderer : public BaseRenderer
 {
 public:
-    X11GLESRenderer(Scene* pScene);
+    X11GLESRenderer(ICommandExecutor& executor, Configuration& config);
     bool start(int, int, const char*);
     void stop();
     void doScreenShot(std::string fileToSave);
@@ -41,10 +41,13 @@ public:
     void signalWindowSystemRedraw();
     void forceCompositionWindowSystem();
     Shader* createShader(const string* vertexName, const string* fragmentName);
-    virtual HealthCondition getHealth();
     virtual bool setOptimizationMode(OptimizationType id, OptimizationModeType mode);
     virtual bool getOptimizationMode(OptimizationType id, OptimizationModeType *mode);
 
+    // from PluginBase
+    virtual HealthCondition pluginGetHealth();
+    virtual t_ilm_const_string pluginGetName() const;
+
 private:
     X11WindowSystem* m_pWindowSystem;
     GLESGraphicsystem* m_pGraphicSystem;
index c59e435..cce0cbb 100644 (file)
@@ -18,7 +18,7 @@
 ****************************************************************************/
 
 #include "X11GLESRenderer.h"
-#include "config.h"
+#include "Configuration.h"
 #include "Shader.h"
 #include "ShaderProgramGLES.h"
 #include "X11/Xlib.h"
@@ -27,8 +27,8 @@
 #include <pthread.h>
 #include <signal.h>
 
-X11GLESRenderer::X11GLESRenderer(Scene* pScene)
-: BaseRenderer(pScene)
+X11GLESRenderer::X11GLESRenderer(ICommandExecutor& executor, Configuration& config)
+: BaseRenderer(executor, config)
 , m_pWindowSystem(0)
 , m_pGraphicSystem(0)
 , m_width(0)
@@ -179,6 +179,11 @@ bool X11GLESRenderer::getOptimizationMode(OptimizationType id, OptimizationModeT
     return m_pGraphicSystem->getOptimizationMode(id, mode);
 }
 
+t_ilm_const_string X11GLESRenderer::pluginGetName() const
+{
+    return "X11GLESRenderer";
+}
+
 Shader* X11GLESRenderer::createShader(const string* vertexName, const string* fragmentName)
 {
     Shader *result = NULL;
@@ -194,9 +199,9 @@ Shader* X11GLESRenderer::createShader(const string* vertexName, const string* fr
     return result;
 }
 
-HealthCondition X11GLESRenderer::getHealth()
+HealthCondition X11GLESRenderer::pluginGetHealth()
 {
-    HealthCondition health = PluginBase::getHealth();
+    HealthCondition health = PluginBase::pluginGetHealth();
     if (0 != pthread_kill(m_pWindowSystem->mThreadId, 0))
     {
         health = HealthDead;
@@ -204,11 +209,4 @@ HealthCondition X11GLESRenderer::getHealth()
     return health;
 }
 
-extern "C" BaseRenderer* createX11GLESRenderer(Scene* pScene){
-    return new X11GLESRenderer(pScene);
-}
-
-extern "C" void destroyX11GLESRenderer(X11GLESRenderer* p)
-{
-    delete p;
-}
+DECLARE_LAYERMANAGEMENT_PLUGIN(X11GLESRenderer)
index 13c16d8..4f6af20 100644 (file)
@@ -21,7 +21,6 @@
 #define _IRENDERER_H_
 
 #include <string>
-#include "PluginBase.h"
 #include "LayerType.h"
 #include "Shader.h"
 #include "OptimizationType.h"
@@ -34,7 +33,7 @@ class InputManager;
  * Abstract Base of all CompositingControllers, ie Renderers.
  * \defgroup RendererAPI Layer Management Renderer API
  */
-class IRenderer : public PluginBase
+class IRenderer
 {
 public:
     /**