python/interpreter: Don't do unnecessary updates.
authorJosé Fonseca <jfonseca@vmware.com>
Fri, 20 Feb 2009 15:23:33 +0000 (15:23 +0000)
committerJosé Fonseca <jfonseca@vmware.com>
Fri, 20 Feb 2009 15:23:33 +0000 (15:23 +0000)
src/gallium/state_trackers/python/retrace/interpreter.py

index 72dafab9929479865d55208c1088d908c5b9a456..2a75ee82d5d49cb96a6a3f177635cf9423c2893b 100755 (executable)
@@ -306,6 +306,7 @@ class Context(Object):
         self.zsbuf = None
         self.vbufs = []
         self.velems = []
+        self.dirty = False
 
     def destroy(self):
         pass
@@ -509,6 +510,8 @@ class Context(Object):
         self.dump_vertices(start, count)
             
         self.real.draw_arrays(mode, start, count)
+
+        self.dirty = True
     
     def draw_elements(self, indexBuffer, indexSize, mode, start, count):
         if verbose >= 2:
@@ -516,6 +519,8 @@ class Context(Object):
             self.dump_vertices(minindex, maxindex - minindex)
 
         self.real.draw_elements(indexBuffer, indexSize, mode, start, count)
+
+        self.dirty = True
         
     def draw_range_elements(self, indexBuffer, indexSize, minIndex, maxIndex, mode, start, count):
         if verbose >= 2:
@@ -525,11 +530,15 @@ class Context(Object):
             self.dump_vertices(minindex, maxindex - minindex)
 
         self.real.draw_range_elements(indexBuffer, indexSize, minIndex, maxIndex, mode, start, count)
+
+        self.dirty = True
         
     def flush(self, flags):
         self.real.flush(flags)
-        if flags & gallium.PIPE_FLUSH_FRAME:
-            self._update()
+        if self.dirty:
+            if flags & gallium.PIPE_FLUSH_FRAME:
+                self._update()
+            self.dirty = False
         return None
 
     def clear(self, surface, value):