From 814daa3365f0a6c5df80e1a542b845cddae85b57 Mon Sep 17 00:00:00 2001
From: Torsten Dreyer <Torsten@t3r.de>
Date: Sat, 11 Sep 2010 21:23:11 +0200
Subject: [PATCH] Environment bugfix: don't write unchanged cloud coverages

Only write out changes of the cloud layer to avoid regeneration
of the cloud layers if nothing has changed
---
 src/Environment/environment_mgr.cxx | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/Environment/environment_mgr.cxx b/src/Environment/environment_mgr.cxx
index 3f1c14431..5b79b25d0 100644
--- a/src/Environment/environment_mgr.cxx
+++ b/src/Environment/environment_mgr.cxx
@@ -302,6 +302,9 @@ void
 FGEnvironmentMgr::set_cloud_layer_coverage (int index,
                                             const char * coverage_name)
 {
+  if( thesky->get_cloud_layer(index)->getCoverageString() == coverage_name )
+    return;
+
   thesky->get_cloud_layer(index)->setCoverageString(coverage_name);
   _cloudLayersDirty = true;
 }
@@ -316,10 +319,14 @@ FGEnvironmentMgr::get_cloud_layer_coverage_type (int index) const
 void 
 FGEnvironmentMgr::set_cloud_layer_coverage_type (int index, int type )
 {
-  if( index < 0 || index >= SGCloudLayer::SG_MAX_CLOUD_COVERAGES ) {
+  if( type < 0 || type >= SGCloudLayer::SG_MAX_CLOUD_COVERAGES ) {
     SG_LOG(SG_ALL,SG_WARN,"Unknown cloud layer type " << type << " ignored" );
     return;
   }
+
+  if( static_cast<SGCloudLayer::Coverage>(type) == thesky->get_cloud_layer(index)->getCoverage() )
+    return;
+
   thesky->get_cloud_layer(index)->setCoverage(static_cast<SGCloudLayer::Coverage>(type));
   _cloudLayersDirty = true;
 }