diff --git a/src/graphical-interface.impl.cpp b/src/graphical-interface.impl.cpp
index 4b42c2eb98a9d61928e89861bfd8a4894bdeecf5..5fc9dd0a885a89625d8db5e261704df0822e4034 100644
--- a/src/graphical-interface.impl.cpp
+++ b/src/graphical-interface.impl.cpp
@@ -203,8 +203,8 @@ namespace graphics {
 	  for (WindowManagers_t::iterator it = windowManagers_.begin ();
               it!=windowManagers_.end (); ++it)
             (*it)->frame ();
-	  mtx_.unlock ();
 	  newNodeConfigurations_.clear ();
+          mtx_.unlock ();
 	} catch (const std::exception& exc) {
 	  throw Error (exc.what ());
 	}
@@ -704,8 +704,10 @@ namespace graphics {
 		"quatY, quatZ]" <<std::endl;
 	      return false;
 	    }
+	    mtx_.lock();
 	    newNodeConfigurations_.push_back (newNodeConfiguration);
-	    return true;
+	    mtx_.unlock();
+            return true;
 	  }
 	} catch (const std::exception& exc) {
 	  throw Error (exc.what ());