summaryrefslogtreecommitdiff
path: root/LayerManagerCommands
diff options
context:
space:
mode:
authorRahul Singhal <rasinghal@nvidia.com>2012-03-20 14:37:45 +0530
committerMichael Schuldt <michael.schuldt@bmw.de>2012-03-23 10:28:57 +0100
commit8538700b182d21e13151d2b7eacca9eb55e79da4 (patch)
tree92aa2925cd8e27bf30057089cddff594e8b8dc2f /LayerManagerCommands
parent93830c541d51cefb4b269eec6ff542d8329158ed (diff)
downloadlayer_management-8538700b182d21e13151d2b7eacca9eb55e79da4.tar.gz
LayerManagerCommands: Multiple bug fixes
1. Return SuccessRedraw in ScreenSetRenderOrder for the case when new order is empty, as we always clear the current render order 2. Don't return SuccessRedraw in ShaderCreateCommand & SurfaceSetNativeContentCommand, as they are not changing screen content 3. Return Success when the new native content == old native content in SurfaceSetNativeContentCommand
Diffstat (limited to 'LayerManagerCommands')
-rw-r--r--LayerManagerCommands/src/ScreenSetRenderOrderCommand.cpp4
-rw-r--r--LayerManagerCommands/src/ShaderCreateCommand.cpp6
-rw-r--r--LayerManagerCommands/src/SurfaceSetNativeContentCommand.cpp25
-rw-r--r--LayerManagerCommands/src/SurfacegroupRemoveCommand.cpp10
4 files changed, 26 insertions, 19 deletions
diff --git a/LayerManagerCommands/src/ScreenSetRenderOrderCommand.cpp b/LayerManagerCommands/src/ScreenSetRenderOrderCommand.cpp
index 162ada8..a8e655b 100644
--- a/LayerManagerCommands/src/ScreenSetRenderOrderCommand.cpp
+++ b/LayerManagerCommands/src/ScreenSetRenderOrderCommand.cpp
@@ -30,6 +30,7 @@ ScreenSetRenderOrderCommand::ScreenSetRenderOrderCommand(unsigned int* array, un
ExecutionResult ScreenSetRenderOrderCommand::execute(ICommandExecutor* executor)
{
Scene& scene = *(executor->getScene());
+ ExecutionResult result = ExecutionFailed;
// check for doubles
for (unsigned int i = 0; i < m_length; i++)
@@ -55,11 +56,10 @@ ExecutionResult ScreenSetRenderOrderCommand::execute(ICommandExecutor* executor)
// } // TODO insert again later
scene.getCurrentRenderOrder().clear();
+ result = ExecutionSuccessRedraw;
LOG_DEBUG("ScreenSetRenderOrderCommand", "Length to set: " << m_length);
- ExecutionResult result = ExecutionFailed;
-
for (unsigned int i = 0; i < m_length; i++)
{
LOG_DEBUG("ScreenSetRenderOrderCommand", "Trying to add layer: " << m_array[i] << " to current render order");
diff --git a/LayerManagerCommands/src/ShaderCreateCommand.cpp b/LayerManagerCommands/src/ShaderCreateCommand.cpp
index e36c54d..a20c272 100644
--- a/LayerManagerCommands/src/ShaderCreateCommand.cpp
+++ b/LayerManagerCommands/src/ShaderCreateCommand.cpp
@@ -40,10 +40,10 @@ ExecutionResult ShaderCreateCommand::execute(ICommandExecutor* executor)
for (; iter != iterEnd; ++iter)
{
IRenderer* renderer = *iter;
- if (renderer)
+ if (renderer)
{
shader = renderer->createShader(&m_vertName, &m_fragName);
- }
+ }
break;
}
if (shader)
@@ -54,7 +54,7 @@ ExecutionResult ShaderCreateCommand::execute(ICommandExecutor* executor)
ShaderMap &shaderMap = scene.m_shaderMap;
shaderMap[id] = shader;
*m_returnID = id;
- result = ExecutionSuccessRedraw;
+ result = ExecutionSuccess;
}
return result;
diff --git a/LayerManagerCommands/src/SurfaceSetNativeContentCommand.cpp b/LayerManagerCommands/src/SurfaceSetNativeContentCommand.cpp
index 8577f6f..0bcec48 100644
--- a/LayerManagerCommands/src/SurfaceSetNativeContentCommand.cpp
+++ b/LayerManagerCommands/src/SurfaceSetNativeContentCommand.cpp
@@ -37,18 +37,25 @@ ExecutionResult SurfaceSetNativeContentCommand::execute(ICommandExecutor* execut
Surface* surface = scene.getSurface(m_surfaceId);
- if (surface && !surface->hasNativeContent())
+ if (surface)
{
- surface->setNativeContent(m_nativeHandle);
- surface->setPixelFormat(m_pixelformat);
- surface->OriginalSourceWidth = m_originalWidth;
- surface->OriginalSourceHeight = m_originalHeight;
+ if(!surface->hasNativeContent())
+ {
+ surface->setNativeContent(m_nativeHandle);
+ surface->setPixelFormat(m_pixelformat);
+ surface->OriginalSourceWidth = m_originalWidth;
+ surface->OriginalSourceHeight = m_originalHeight;
- // has to be set by application
- //surface->setDestinationRegion(Rectangle(0, 0, m_originalWidth, m_originalHeight));
- //surface->setSourceRegion(Rectangle(0, 0, m_originalWidth, m_originalHeight));
+ // has to be set by application
+ //surface->setDestinationRegion(Rectangle(0, 0, m_originalWidth, m_originalHeight));
+ //surface->setSourceRegion(Rectangle(0, 0, m_originalWidth, m_originalHeight));
- result = ExecutionSuccessRedraw;
+ result = ExecutionSuccessRedraw;
+ }
+ else if(surface->getNativeContent() == m_nativeHandle)
+ {
+ result = ExecutionSuccess;
+ }
}
return result;
diff --git a/LayerManagerCommands/src/SurfacegroupRemoveCommand.cpp b/LayerManagerCommands/src/SurfacegroupRemoveCommand.cpp
index 130b5be..1da0144 100644
--- a/LayerManagerCommands/src/SurfacegroupRemoveCommand.cpp
+++ b/LayerManagerCommands/src/SurfacegroupRemoveCommand.cpp
@@ -34,11 +34,11 @@ ExecutionResult SurfacegroupRemoveCommand::execute(ICommandExecutor* executor)
ExecutionResult result = ExecutionFailed;
SurfaceGroup* surfacegroup = scene.getSurfaceGroup(m_idToRemove);
- if (surfacegroup)
- {
- scene.removeSurfaceGroup(surfacegroup);
- result = ExecutionSuccessRedraw;
- }
+ if (surfacegroup)
+ {
+ scene.removeSurfaceGroup(surfacegroup);
+ result = ExecutionSuccess;
+ }
return result;
}