Преглед на файлове

wxGUI/render: replace CmdThread by gThread (multithread rendering optimization)

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@65234 15284696-431f-4ddb-bdfa-cd5b030d7da7
Martin Landa преди 10 години
родител
ревизия
4c815685d7
променени са 1 файла, в които са добавени 13 реда и са изтрити 13 реда
  1. 13 13
      gui/wxpython/core/render.py

+ 13 - 13
gui/wxpython/core/render.py

@@ -43,7 +43,7 @@ from core.ws       import RenderWMSMgr
 from core.gcmd     import GException, GError, RunCommand
 from core.debug    import Debug
 from core.settings import UserSettings
-from core.gconsole import CmdThread, GStderr, EVT_CMD_DONE
+from core.gthread import gThread
 
 class Layer(object):
     """Virtual class which stores information about layers (map layers and
@@ -341,11 +341,9 @@ class RenderLayerMgr(wx.EvtHandler):
         self.layer = layer
          
         wx.EvtHandler.__init__(self)
-        self.thread = CmdThread(self)
-        self.cmdStdErr = GStderr(self)
+        self.thread = gThread()
         
         self.updateProgress = Signal('RenderLayerMgr.updateProgress')
-        self.Bind(EVT_CMD_DONE, self.OnRenderDone)
         
         self._startTime = None
          
@@ -362,16 +360,21 @@ class RenderLayerMgr(wx.EvtHandler):
         env_cmd['GRASS_RENDER_FILE'] = self.layer.mapfile
         
         cmd[1]['quiet'] = True # be quiet
-        cmd_tuple = cmdtuple_to_list(cmd)
-        
+        # for k, v in env_cmd.iteritems():
+        #     if 'GRASS_' in k:
+        #         print 'export %s=%s' % (k, v)
         self._startTime = time.time()
-        self.thread.RunCmd(cmd_tuple, env=env_cmd, stderr=self.cmdStdErr)
+        self.thread.Run(callable=self._render, cmd=cmd, env=env_cmd,
+                        ondone=self.OnRenderDone)
         self.layer.forceRender = False
-        
+
+    def _render(self, cmd, env):
+        return grass.run_command(cmd[0], env=env, **cmd[1])
+    
     def Abort(self):
         """Abort rendering process"""
         Debug.msg(1, "RenderLayerMgr({}).Abort()".format(self.layer))
-        self.thread.abort(abortall = True)
+        self.thread.Terminate()
 
     def IsDownloading(self):
         """Is downloading
@@ -385,9 +388,8 @@ class RenderLayerMgr(wx.EvtHandler):
 
         Emits updateProcess
         """
-        stop = time.time()
         Debug.msg(1, "RenderLayerMgr.OnRenderDone(%s): ret=%d time=%f" % \
-                      (self.layer, event.returncode, stop - self._startTime))
+                      (self.layer, event.ret, time.time() - self._startTime))
         self.updateProgress.emit(layer=self.layer)
         
 class RenderMapMgr(wx.EvtHandler):
@@ -399,8 +401,6 @@ class RenderMapMgr(wx.EvtHandler):
         wx.EvtHandler.__init__(self)
 
         self.Map = Map
-        self.thread = CmdThread(self)
-        self.cmdStdErr = GStderr(self)
         
         self.updateMap = Signal('RenderMapMgr.updateMap')
         self.updateProgress = Signal('RenderMapMgr.updateProgress')