From 8e0538ab096fb2c943ee16d9a2e4ca778ffe20e0 Mon Sep 17 00:00:00 2001
From: Olivier R-D <olivier@dummy.com>
Date: Thu, 11 Apr 2013 09:52:33 +0200
Subject: [PATCH] minimize locking

---
 urx/ursecmon.py | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/urx/ursecmon.py b/urx/ursecmon.py
index e43580b..89df654 100644
--- a/urx/ursecmon.py
+++ b/urx/ursecmon.py
@@ -190,7 +190,6 @@ class SecondaryMonitor(Thread):
         self.logger = logging.getLogger(self.__class__.__name__)
         self.logger.setLevel(logLevel)
         self._parser = ParserUtils(parserLogLevel)
-        self._s_secondary = None
         self._dict = {}
         self._dictLock = Lock()
         self.host = host
@@ -211,11 +210,11 @@ class SecondaryMonitor(Thread):
         send program to robot in URRobot format
         If another program is send while a program is running the first program is aborded. 
         """
+        prog.strip()
+        self.logger.debug("Sending program: " + prog)
+        if type(prog) != bytes:
+            prog = prog.encode()
         with self._prog_queue_lock:
-            prog.strip()
-            self.logger.debug("Sending program: " + prog)
-            if type(prog) != bytes:
-                prog = prog.encode()
             self._prog_queue.append(prog + b"\n")
  
 
@@ -236,8 +235,9 @@ class SecondaryMonitor(Thread):
             
             data = self._get_data()
             try:
+                tmpdict = self._parser.parse(data)
                 with self._dictLock:
-                    self._dict = self._parser.parse(data)
+                    self._dict = tmpdict 
             except ParsingException as ex:
                 self.logger.warn("Error parsing one packet from urrobot: " + str(ex) )
                 continue