diff -r 3536f4469cde -r cc3335911c01 Viewer.py --- 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)