From a9153e8d70caefd88c1fae7701dfe25ff2d82579 Mon Sep 17 00:00:00 2001 From: Timo Lotterbach Date: Wed, 28 Nov 2012 02:55:45 -0800 Subject: [PATCH] ExampleSceneProvider: updated to new IPlugin interface ExampleSceneProvider is now based on the updated IPlugin interface to support static linking. Signed-off-by: Timo Lotterbach --- .../ExampleSceneProvider/CMakeLists.txt | 19 +++++++++- .../include/ExampleSceneProvider.h | 20 ++++++---- .../src/ExampleSceneProvider.cpp | 43 +++++++++++----------- 3 files changed, 52 insertions(+), 30 deletions(-) diff --git a/LayerManagerPlugins/SceneProvider/ExampleSceneProvider/CMakeLists.txt b/LayerManagerPlugins/SceneProvider/ExampleSceneProvider/CMakeLists.txt index d5dd210..21097e0 100644 --- a/LayerManagerPlugins/SceneProvider/ExampleSceneProvider/CMakeLists.txt +++ b/LayerManagerPlugins/SceneProvider/ExampleSceneProvider/CMakeLists.txt @@ -27,12 +27,27 @@ include_directories( ${CMAKE_SOURCE_DIR}/LayerManagerService/include ) -add_library(${PROJECT_NAME} SHARED +set(SRC_FILES src/ExampleSceneProvider.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}) + +endif(WITH_STATIC_PLUGINS) + target_link_libraries(${PROJECT_NAME} LayerManagerCommands ${LIBS}) add_dependencies(${PROJECT_NAME} LayerManagerCommands) -install (TARGETS ${PROJECT_NAME} DESTINATION lib/layermanager/sceneprovider) +install (TARGETS ${PROJECT_NAME} + LIBRARY DESTINATION lib/layermanager/sceneprovider + ARCHIVE DESTINATION lib/layermanager/static +) diff --git a/LayerManagerPlugins/SceneProvider/ExampleSceneProvider/include/ExampleSceneProvider.h b/LayerManagerPlugins/SceneProvider/ExampleSceneProvider/include/ExampleSceneProvider.h index 7c42a6a..111f52c 100644 --- a/LayerManagerPlugins/SceneProvider/ExampleSceneProvider/include/ExampleSceneProvider.h +++ b/LayerManagerPlugins/SceneProvider/ExampleSceneProvider/include/ExampleSceneProvider.h @@ -21,24 +21,30 @@ #define _LAYERSCENE_PROVIDER_H_ #include "ISceneProvider.h" +#include "PluginBase.h" class ICommandExecutor; +class Configuration; /** * scene Providers to setup a inital layer scenary on target platform */ -class ExampleSceneProvider : public ISceneProvider +class ExampleSceneProvider : public ISceneProvider, public PluginBase { public: - ExampleSceneProvider(ICommandExecutor* executor); + ExampleSceneProvider(ICommandExecutor& executor, Configuration& config); virtual ~ExampleSceneProvider() {} - /** - * Delegate Scene : this method will be called on LayerManager startup - * to delegate a initial scene description of Layers on the target Platform - */ + + // from ISceneProvider virtual bool delegateScene(); -}; + //from PluginBase + virtual t_ilm_const_string pluginGetName() const; + +protected: + ICommandExecutor& mExecutor; + Configuration& mConfiguration; +}; #endif /* _LAYERSCENE_PROVIDER_H_ */ diff --git a/LayerManagerPlugins/SceneProvider/ExampleSceneProvider/src/ExampleSceneProvider.cpp b/LayerManagerPlugins/SceneProvider/ExampleSceneProvider/src/ExampleSceneProvider.cpp index e38be8b..7cc97ac 100644 --- a/LayerManagerPlugins/SceneProvider/ExampleSceneProvider/src/ExampleSceneProvider.cpp +++ b/LayerManagerPlugins/SceneProvider/ExampleSceneProvider/src/ExampleSceneProvider.cpp @@ -30,10 +30,14 @@ #include "SurfaceCreateCommand.h" #include "SurfaceSetVisibilityCommand.h" #include "SurfaceSetOpacityCommand.h" +#include "Configuration.h" #include -ExampleSceneProvider::ExampleSceneProvider(ICommandExecutor* executor) -: ISceneProvider(executor) +ExampleSceneProvider::ExampleSceneProvider(ICommandExecutor& executor, Configuration& config) +: ISceneProvider(&executor) +, PluginBase(executor, config, SceneProvider_Api_v1) +, mExecutor(executor) +, mConfiguration(config) { } @@ -85,23 +89,23 @@ bool ExampleSceneProvider::delegateScene() int numberOfLayers = sizeof(gInitialLayerScene) / sizeof (layerScene); int numberOfSurfaces = sizeof(gInitialSurfaceScene) / sizeof (surfaceScene); unsigned int *renderOrder = new unsigned int [numberOfLayers]; - unsigned int* screenResolution = m_executor->getScreenResolution(0); + unsigned int* screenResolution = mExecutor.getScreenResolution(0); if ( numberOfLayers > 0 ) { /* setup inital layer scenery */ for (i = 0;iexecute(new LayerCreateCommand(layermanagerPid, screenResolution[0], screenResolution[1], &(gInitialLayerScene[i].layer))); - result &= m_executor->execute(new LayerSetSourceRectangleCommand(layermanagerPid, gInitialLayerScene[i].layer, 0, 0, screenResolution[0], screenResolution[1])); - result &= m_executor->execute(new LayerSetDestinationRectangleCommand(layermanagerPid, gInitialLayerScene[i].layer, 0, 0, screenResolution[0], screenResolution[1])); - result &= m_executor->execute(new LayerSetOpacityCommand(layermanagerPid, gInitialLayerScene[i].layer, gInitialLayerScene[i].opacity) ); - result &= m_executor->execute(new LayerSetVisibilityCommand(layermanagerPid, gInitialLayerScene[i].layer, gInitialLayerScene[i].visibility) ); - result &= m_executor->execute(new CommitCommand(layermanagerPid)); + result &= mExecutor.execute(new LayerCreateCommand(layermanagerPid, screenResolution[0], screenResolution[1], &(gInitialLayerScene[i].layer))); + result &= mExecutor.execute(new LayerSetSourceRectangleCommand(layermanagerPid, gInitialLayerScene[i].layer, 0, 0, screenResolution[0], screenResolution[1])); + result &= mExecutor.execute(new LayerSetDestinationRectangleCommand(layermanagerPid, gInitialLayerScene[i].layer, 0, 0, screenResolution[0], screenResolution[1])); + result &= mExecutor.execute(new LayerSetOpacityCommand(layermanagerPid, gInitialLayerScene[i].layer, gInitialLayerScene[i].opacity) ); + result &= mExecutor.execute(new LayerSetVisibilityCommand(layermanagerPid, gInitialLayerScene[i].layer, gInitialLayerScene[i].visibility) ); + result &= mExecutor.execute(new CommitCommand(layermanagerPid)); renderOrder[i]=gInitialLayerScene[i].layer; } /* Finally set the first executed renderorder */ - result &= m_executor->execute(new ScreenSetRenderOrderCommand(layermanagerPid, renderOrder, numberOfLayers)); - result &= m_executor->execute(new CommitCommand(layermanagerPid)); + result &= mExecutor.execute(new ScreenSetRenderOrderCommand(layermanagerPid, renderOrder, numberOfLayers)); + result &= mExecutor.execute(new CommitCommand(layermanagerPid)); } if ( numberOfSurfaces > 0 ) @@ -109,22 +113,19 @@ bool ExampleSceneProvider::delegateScene() /* setup inital surface scenery */ for (i = 0;iexecute(new SurfaceCreateCommand(layermanagerPid, &(gInitialSurfaceScene[i].surface))); - result &= m_executor->execute(new SurfaceSetOpacityCommand(layermanagerPid, gInitialSurfaceScene[i].surface, gInitialSurfaceScene[i].opacity)); - result &= m_executor->execute(new SurfaceSetVisibilityCommand(layermanagerPid, gInitialSurfaceScene[i].surface, gInitialSurfaceScene[i].visibility)); - result &= m_executor->execute(new CommitCommand(layermanagerPid)); + result &= mExecutor.execute(new SurfaceCreateCommand(layermanagerPid, &(gInitialSurfaceScene[i].surface))); + result &= mExecutor.execute(new SurfaceSetOpacityCommand(layermanagerPid, gInitialSurfaceScene[i].surface, gInitialSurfaceScene[i].opacity)); + result &= mExecutor.execute(new SurfaceSetVisibilityCommand(layermanagerPid, gInitialSurfaceScene[i].surface, gInitialSurfaceScene[i].visibility)); + result &= mExecutor.execute(new CommitCommand(layermanagerPid)); } /* Finally set the first executed renderorder */ } return result; } -extern "C" ISceneProvider* createExampleSceneProvider(ICommandExecutor* executor) +t_ilm_const_string ExampleSceneProvider::pluginGetName() const { - return new ExampleSceneProvider(executor); + return "ExampleSceneProvider"; } -extern "C" void destroyExampleSceneProvider(ExampleSceneProvider* p) -{ - delete p; -} +DECLARE_LAYERMANAGEMENT_PLUGIN(ExampleSceneProvider) -- 2.7.4