From 7c5c03db8aa4044a2bef5f919fb003a35376f4b2 Mon Sep 17 00:00:00 2001 From: Michael Schuldt Date: Mon, 5 Dec 2011 13:02:53 +0100 Subject: [PATCH] Introducing new Method removeNativeContent. Now it is possible to remove the native content of an existing surface. This gurantee that the logical scene structure is the same if an application is closed or killed. --- LayerManagerService/include/Scene.h | 1 + LayerManagerService/include/Surface.h | 5 +++++ LayerManagerService/src/Scene.cpp | 9 +++++++++ 3 files changed, 15 insertions(+) diff --git a/LayerManagerService/include/Scene.h b/LayerManagerService/include/Scene.h index f70bdc1..5d138d2 100644 --- a/LayerManagerService/include/Scene.h +++ b/LayerManagerService/include/Scene.h @@ -60,6 +60,7 @@ public: virtual void removeLayer(Layer* layer); virtual void removeSurface(Surface* surface); + virtual void removeSurfaceNativeContent(Surface* surface); virtual Layer* getLayer(const uint id) const; virtual Surface* getSurface(const uint id) const; virtual SurfaceGroup* getSurfaceGroup(const uint id) const; diff --git a/LayerManagerService/include/Surface.h b/LayerManagerService/include/Surface.h index 030fddb..b2c635c 100644 --- a/LayerManagerService/include/Surface.h +++ b/LayerManagerService/include/Surface.h @@ -56,6 +56,11 @@ public: { return m_hasNativeContent; } + + void removeNativeContent() + { + m_hasNativeContent = false; + } void setNativeContent(long nativeHandle) { diff --git a/LayerManagerService/src/Scene.cpp b/LayerManagerService/src/Scene.cpp index 25c6bfc..76dc0ba 100644 --- a/LayerManagerService/src/Scene.cpp +++ b/LayerManagerService/src/Scene.cpp @@ -82,6 +82,7 @@ Surface* Scene::createSurface(const uint surfaceId) } else { + newSurface = m_surfaceMap.at(surfaceId); LOG_DEBUG("Scene","Surface with id [ " << surfaceId << " ] " << " already exists " ); } } @@ -256,6 +257,14 @@ void Scene::removeSurface(Surface* surface) delete surface; } } +/// \brief take removing applied native content +void Scene::removeSurfaceNativeContent(Surface* surface) +{ + if (surface != NULL) + { + surface->removeNativeContent(); + } +} void Scene::removeLayerGroup(LayerGroup* layerGroup) { -- 2.7.4