GLXRenderer: updated to new IPlugin interface
authorTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Wed, 19 Dec 2012 13:36:04 +0000 (05:36 -0800)
committerTimo Lotterbach <timo.lotterbach@bmw-carit.de>
Mon, 14 Jan 2013 08:34:16 +0000 (00:34 -0800)
GLXRenderer is now based on the updated IPlugin interface
to support static linking.

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

index 43aa8c2..a0c8db2 100644 (file)
@@ -178,7 +178,7 @@ endif(WITH_GENERIC_COMMUNICATOR)
 if (WITH_DESKTOP)
     set (WITH_GLX_LIB ON CACHE BOOL "Build X11 GLX development lib" FORCE)
     add_subdirectory (LayerManagerPlugins/Renderers/Platform/GLXRenderer)
-endif(WITH_DESKTOP)     
+endif(WITH_DESKTOP)
 
 if (WITH_WAYLAND)
     if (WITH_WAYLAND_VIVANTE_GAL)
index 0c1a8c1..39a549b 100644 (file)
 #
 ############################################################################
 
+
 cmake_minimum_required (VERSION 2.6)
 
-include_directories ("include")
-include_directories ("../../Base/include")
-include_directories ("../../Graphic/include")
-include_directories ("${CMAKE_SOURCE_DIR}/config")
-include_directories ("${CMAKE_SOURCE_DIR}/LayerManagerBase/include")
-include_directories ("${CMAKE_SOURCE_DIR}/LayerManagerUtils/include")
+#===========================================================================
+# plugin configuration
+#===========================================================================
+project(X11GLXRenderer)
+
+find_package(X11 REQUIRED)
+find_package(GLX REQUIRED)
+find_package(Threads REQUIRED)
 
-file(GLOB SOURCES 
-    src/X11GLXRenderer.cpp 
+include_directories(
+    include
+    ../../Base/include
+    ../../Graphic/include
+    ${CMAKE_SOURCE_DIR}/config
+    ${CMAKE_SOURCE_DIR}/LayerManagerBase/include
+    ${CMAKE_SOURCE_DIR}/LayerManagerUtils/include
+    ${X11_INCLUDE_DIR}
+    ${GLX_INCLUDE_DIR}
 )
 
-add_library(X11GLXRenderer SHARED ${SOURCES})
+set(LIBS
+    ${CMAKE_THREAD_LIBS_INIT}
+    ${X11_X11_LIB}
+    ${X11_Xcomposite_LIB}
+    ${X11_Xdamage_LIB}
+    ${GLX_LIBRARIES}
+    LayerManagerGraphicGLX
+    LayerManagerUtils
+)
+
+set(SRC_FILES
+    src/X11GLXRenderer.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})
+
 
-find_package(X11 REQUIRED)
-include_directories(${X11_INCLUDE_DIR})
 
-find_package(GLX REQUIRED)
-include_directories(${GLX_INCLUDE_DIR})
 
-find_package (Threads)
-set(LIBS ${LIBS} ${CMAKE_THREAD_LIBS_INIT} ${X11_X11_LIB} ${X11_Xcomposite_LIB} ${X11_Xdamage_LIB} ${GLX_LIBRARIES} LayerManagerGraphicGLX LayerManagerUtils)
-target_link_libraries(X11GLXRenderer ${LIBS})
 
-add_dependencies(X11GLXRenderer LayerManagerService)
-add_dependencies(X11GLXRenderer LayerManagerUtils)
-add_dependencies(X11GLXRenderer LayerManagerGraphicGLX)
 
-install (TARGETS X11GLXRenderer DESTINATION lib/layermanager/renderer)
index 30e71a9..9077e21 100644 (file)
@@ -28,7 +28,7 @@
 class X11GLXRenderer : public BaseRenderer
 {
 public:
-    X11GLXRenderer(Scene* pScene);
+    X11GLXRenderer(ICommandExecutor& executor, Configuration& config);
     virtual ~X11GLXRenderer();
     void doScreenShot(std::string fileToSave);
     void doScreenShotOfLayer(std::string fileToSave, uint id);
index 6c692c3..74b55e5 100644 (file)
@@ -18,7 +18,7 @@
 ****************************************************************************/
 
 #include "X11GLXRenderer.h"
-#include "config.h"
+#include "Configuration.h"
 #include "GraphicSystems/GLXGraphicsystem.h"
 #include "WindowSystems/X11WindowSystem.h"
 #include "TextureBinders/X11CopyGLX.h"
@@ -26,8 +26,8 @@
 #include "Log.h"
 #include <string.h>
 
-X11GLXRenderer::X11GLXRenderer(Scene* pScene)
-: BaseRenderer(pScene)
+X11GLXRenderer::X11GLXRenderer(ICommandExecutor& executor, Configuration& config)
+: BaseRenderer(executor, config)
 , m_pWindowSystem(0)
 , m_pGraphicSystem(0)
 , m_width(0)
@@ -164,11 +164,4 @@ bool X11GLXRenderer::setOptimizationMode(OptimizationType id, OptimizationModeTy
     return m_pGraphicSystem->setOptimizationMode(id, (unsigned int)mode);
 }
 
-extern "C" IRenderer* createX11GLXRenderer(Scene* pScene) {
-    return new X11GLXRenderer(pScene);
-}
-
-extern "C" void destroyX11GLXRenderer(X11GLXRenderer* p)
-{
-    delete p;
-}
+DECLARE_LAYERMANAGEMENT_PLUGIN(X11GLXRenderer)
\ No newline at end of file