From 1737f0703c65e0a836dc698a368a87d940bd2c82 Mon Sep 17 00:00:00 2001 From: Timo Lotterbach Date: Tue, 11 Dec 2012 04:31:08 -0800 Subject: [PATCH] WaylandGLESRenderer: updated to new IPlugin interface WalyandGLESRenderer is now based on the updated IPlugin interface to support static linking. Signed-off-by: Timo Lotterbach --- .../Platform/WaylandGLESRenderer/CMakeLists.txt | 131 +++++++++++++-------- .../include/WaylandGLESRenderer.h | 6 +- .../src/WaylandGLESRenderer.cpp | 25 ++-- 3 files changed, 104 insertions(+), 58 deletions(-) diff --git a/LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer/CMakeLists.txt b/LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer/CMakeLists.txt index d8dcc63..4137861 100644 --- a/LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer/CMakeLists.txt +++ b/LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer/CMakeLists.txt @@ -21,53 +21,92 @@ 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}) diff --git a/LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer/include/WaylandGLESRenderer.h b/LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer/include/WaylandGLESRenderer.h index 22d43fe..9ad1a62 100644 --- a/LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer/include/WaylandGLESRenderer.h +++ b/LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer/include/WaylandGLESRenderer.h @@ -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; diff --git a/LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer/src/WaylandGLESRenderer.cpp b/LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer/src/WaylandGLESRenderer.cpp index 3c5d040..57809c5 100644 --- a/LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer/src/WaylandGLESRenderer.cpp +++ b/LayerManagerPlugins/Renderers/Platform/WaylandGLESRenderer/src/WaylandGLESRenderer.cpp @@ -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 -- 2.7.4