--- a/Viewer.py Mon Jan 30 16:12:19 2012 +0100
+++ b/Viewer.py Tue Jan 31 13:38:06 2012 +0100
@@ -499,8 +499,8 @@
if not self.Debug:
self.Editor.SetDropTarget(ViewerDropTarget(self))
- self.NewDataRefreshRect = None
- self.NewDataRefreshRect_lock = Lock()
+ self.ElementRefreshList = []
+ self.ElementRefreshList_lock = Lock()
dc = wx.ClientDC(self.Editor)
font = wx.Font(faces["size"], wx.SWISS, wx.NORMAL, wx.NORMAL, faceName = faces["mono"])
@@ -885,19 +885,23 @@
# Refresh functions
#-------------------------------------------------------------------------------
- def UpdateRefreshRect(self, refresh_rect):
- self.NewDataRefreshRect_lock.acquire()
- if self.NewDataRefreshRect is None:
- self.NewDataRefreshRect = refresh_rect
- else:
- self.NewDataRefreshRect.Union(refresh_rect)
- self.NewDataRefreshRect_lock.release()
+ def ElementNeedRefresh(self, element):
+ self.ElementRefreshList_lock.acquire()
+ self.ElementRefreshList.append(element)
+ self.ElementRefreshList_lock.release()
def RefreshNewData(self):
- if self.NewDataRefreshRect is not None:
- self.NewDataRefreshRect_lock.acquire()
- refresh_rect, self.NewDataRefreshRect = self.NewDataRefreshRect, None
- self.NewDataRefreshRect_lock.release()
+ refresh_rect = None
+ self.ElementRefreshList_lock.acquire()
+ for element in self.ElementRefreshList:
+ if refresh_rect is None:
+ refresh_rect = element.GetRedrawRect()
+ else:
+ refresh_rect.Union(element.GetRedrawRect())
+ self.ElementRefreshList = []
+ self.ElementRefreshList_lock.release()
+
+ if refresh_rect is not None:
self.RefreshRect(self.GetScrolledRect(refresh_rect), False)
else:
DebugViewer.RefreshNewData(self)