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

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

index d5dd210..21097e0 100644 (file)
@@ -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
+)
index 7c42a6a..111f52c 100644 (file)
 #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_ */
index e38be8b..7cc97ac 100644 (file)
 #include "SurfaceCreateCommand.h"
 #include "SurfaceSetVisibilityCommand.h"
 #include "SurfaceSetOpacityCommand.h"
+#include "Configuration.h"
 #include <unistd.h>
 
-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;i<numberOfLayers;i++)
         {
-            result &= m_executor->execute(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;i<numberOfSurfaces;i++)
         {
-            result &= m_executor->execute(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)