diff options
author | Rahul Singhal <rasinghal@nvidia.com> | 2012-03-20 14:37:45 +0530 |
---|---|---|
committer | Michael Schuldt <michael.schuldt@bmw.de> | 2012-03-23 10:28:57 +0100 |
commit | 8538700b182d21e13151d2b7eacca9eb55e79da4 (patch) | |
tree | 92aa2925cd8e27bf30057089cddff594e8b8dc2f /LayerManagerCommands | |
parent | 93830c541d51cefb4b269eec6ff542d8329158ed (diff) | |
download | layer_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')
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; } |