WaylandGLESRenderer: updated to new IPlugin interface
authorTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Tue, 11 Dec 2012 12:31:08 +0000 (04:31 -0800)
committerTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Mon, 14 Jan 2013 08:34:16 +0000 (00:34 -0800)
WalyandGLESRenderer is now based on the updated IPlugin interface
to support static linking.

Signed-off-by: Timo Lotterbach <timo.lotterbach@bmw-carit.de>
LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer/CMakeLists.txt
LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer/include/WaylandGLESRenderer.h
LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer/src/WaylandGLESRenderer.cpp

index d8dcc63..4137861 100644 (file)
 
 cmake_minimum_required (VERSION 2.6)
 
-include_directories ("include")
-include_directories ("../X11GLESRenderer/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")
-
-file(GLOB SOURCES 
-        src/WaylandGLESRenderer.cpp
-        ../X11GLESRenderer/src/ShaderProgramGLES.cpp 
-        )
-        
-add_library(WaylandGLESRenderer SHARED ${SOURCES})
+#===========================================================================
+# plugin configuration
+#===========================================================================
+project(WaylandGLESRenderer)
 
 find_package(Wayland REQUIRED)
-include_directories(${WAYLAND_SERVER_INCLUDE_DIR})
-include_directories(${DRM_INCLUDE_DIR})
-
 find_package(EGL REQUIRED)
-include_directories(${EGL_INCLUDE_DIR})
-
 find_package(GLESv2 REQUIRED)
-include_directories(${GLESv2_INCLUDE_DIR})
-
-find_package (Threads)
-set(LIBS ${LIBS} ${CMAKE_THREAD_LIBS_INIT} ${EGL_LIBRARY} ${GLESv2_LIBRARIES} LayerManagerGraphicWaylandGLESv2 LayerManagerUtils )
-target_link_libraries(WaylandGLESRenderer ${LIBS})
-
-add_dependencies(WaylandGLESRenderer LayerManagerService)
-add_dependencies(WaylandGLESRenderer LayerManagerUtils)
-add_dependencies(WaylandGLESRenderer LayerManagerGraphicWaylandGLESv2)
-
-install (TARGETS WaylandGLESRenderer DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_frag_clear.glslf DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_frag.glslf DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_frag_no_blend.glslf DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_frag_no_ualpha.glslf DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_frag_add_uchromakey.glslf DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_frag_no_blend_no_ualpha.glslf DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_frag_2surf.glslf DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_frag_2surf_no_blend.glslf DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_frag_2surf_no_ualpha.glslf DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_frag_2surf_no_blend_no_ualpha.glslf DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_frag_2surf_no_ualpha_0.glslf DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_frag_2surf_no_blend_no_ualpha_0.glslf DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_frag_2surf_no_ualpha_1.glslf DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_frag_2surf_no_blend_no_ualpha_1.glslf DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_vert.glslv DESTINATION lib/layermanager/renderer)
-install (FILES ../X11GLESRenderer/renderer_vert_2surf.glslv DESTINATION lib/layermanager/renderer)
+find_package(Threads REQUIRED)
+
+include_directories(
+    include
+    ../X11GLESRenderer/include
+    ../../Base/include
+    ../../Graphic/include
+    ${CMAKE_SOURCE_DIR}/config
+    ${CMAKE_SOURCE_DIR}/LayerManagerService/include
+    ${CMAKE_SOURCE_DIR}/LayerManagerUtils/include
+    ${WAYLAND_SERVER_INCLUDE_DIR}
+    ${DRM_INCLUDE_DIR}
+    ${EGL_INCLUDE_DIR}
+    ${GLESv2_INCLUDE_DIR}
+)
+
+set(LIBS
+    ${CMAKE_THREAD_LIBS_INIT}
+    ${EGL_LIBRARY}
+    ${GLESv2_LIBRARIES}
+    LayerManagerGraphicWaylandGLESv2
+    LayerManagerUtils
+)
+
+set(SRC_FILES
+    src/WaylandGLESRenderer.cpp
+    ../X11GLESRenderer/src/ShaderProgramGLES.cpp
+)
+
+set(PLUGIN_INSTALL_PATH lib/layermanager/renderer)
+
+install(
+    FILES
+        renderer_frag_clear.glslf
+        renderer_frag.glslf
+        renderer_frag_no_blend.glslf
+        renderer_frag_no_ualpha.glslf
+        renderer_frag_add_uchromakey.glslf
+        renderer_frag_no_blend_no_ualpha.glslf
+        renderer_frag_2surf.glslf
+        renderer_frag_2surf_no_blend.glslf
+        renderer_frag_2surf_no_ualpha.glslf
+        renderer_frag_2surf_no_blend_no_ualpha.glslf
+        renderer_frag_2surf_no_ualpha_0.glslf
+        renderer_frag_2surf_no_blend_no_ualpha_0.glslf
+        renderer_frag_2surf_no_ualpha_1.glslf
+        renderer_frag_2surf_no_blend_no_ualpha_1.glslf
+        renderer_vert.glslv
+        renderer_vert_2surf.glslv
+    DESTINATION
+        lib/layermanager/renderer
+)
+
+#===========================================================================
+# create statically linked plugin
+#===========================================================================
+if (WITH_STATIC_LIBRARIES)
+
+    add_library(${PROJECT_NAME} STATIC ${SRC_FILES})
+
+    set (STATICALLY_LINKED_PLUGINS ${STATICALLY_LINKED_PLUGINS}
+        ${PROJECT_NAME} CACHE INTERNAL "list of static plugins")
+
+#===========================================================================
+# create dynamically linked plugin
+#===========================================================================
+else(WITH_STATIC_LIBRARIES)
+
+    add_library(${PROJECT_NAME} SHARED ${SRC_FILES})
+
+    install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION ${PLUGIN_INSTALL_PATH})
+
+endif(WITH_STATIC_LIBRARIES)
+
+
+#===========================================================================
+# external libraries
+#===========================================================================
+target_link_libraries(${PROJECT_NAME} ${LIBS})
+
+add_dependencies(${PROJECT_NAME} ${LIBS})
index 22d43fe..9ad1a62 100644 (file)
@@ -32,7 +32,7 @@ class ITextureBinder;
 class WaylandGLESRenderer : public BaseRenderer
 {
 public:
-    WaylandGLESRenderer(Scene* pScene);
+    WaylandGLESRenderer(ICommandExecutor& executor, Configuration& config);
     bool start(int, int, const char*);
     void stop();
     void doScreenShot(std::string fileToSave);
@@ -47,6 +47,10 @@ public:
     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:
     WaylandBaseWindowSystem* m_pWindowSystem;
     GLESGraphicsystem* m_pGraphicSystem;
index 3c5d040..57809c5 100644 (file)
@@ -19,7 +19,7 @@
 ****************************************************************************/
 
 #include "WaylandGLESRenderer.h"
-#include "config.h"
+#include "Configuration.h"
 #include "Shader.h"
 #include "ShaderProgramGLES.h"
 #include "TextureBinders/WaylandGLESTexture.h"
@@ -34,8 +34,8 @@
 #include "GraphicSystems/DrmGLESGraphicSystem.h"
 #endif // WITH_WAYLAND_DRM
 
-WaylandGLESRenderer::WaylandGLESRenderer(Scene* pScene)
-: BaseRenderer(pScene)
+WaylandGLESRenderer::WaylandGLESRenderer(ICommandExecutor& executor, Configuration& config)
+: BaseRenderer(executor, config)
 , m_pWindowSystem(0)
 , m_pGraphicSystem(0)
 , m_width(0)
@@ -187,6 +187,16 @@ bool WaylandGLESRenderer::getOptimizationMode(OptimizationType id, OptimizationM
     return m_pGraphicSystem->getOptimizationMode(id, mode);
 }
 
+HealthCondition WaylandGLESRenderer::pluginGetHealth()
+{
+    return BaseRenderer::pluginGetHealth();
+}
+
+t_ilm_const_string WaylandGLESRenderer::pluginGetName() const
+{
+    return "WaylandGLESRenderer";
+}
+
 Shader* WaylandGLESRenderer::createShader(const string* vertexName, const string* fragmentName)  
 {
     Shader *result = NULL;
@@ -199,11 +209,4 @@ Shader* WaylandGLESRenderer::createShader(const string* vertexName, const string
     return result;
 }
 
-extern "C" BaseRenderer* createWaylandGLESRenderer(Scene* pScene){
-    return new WaylandGLESRenderer(pScene);
-}
-
-extern "C" void destroyWaylandGLESRenderer(WaylandGLESRenderer* p)
-{
-    delete p;
-}
+DECLARE_LAYERMANAGEMENT_PLUGIN(WaylandGLESRenderer)
\ No newline at end of file