Closed Bug 10261 Opened 25 years ago Closed 25 years ago

UpdateView() drops dirty rects

Categories

(Core Graveyard :: GFX, defect, P1)

x86
Windows NT

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: troy, Assigned: beard)

Details

The UpdateView() function just returns if refresh is disabled, and doesn't
accumulate the dirty rects and then trigger a repaint once refresh is enabled.

Here's the offending code:

  NS_PRECONDITION(nsnull != aView, "null view");
  if (!mRefreshEnabled && 0 == mUpdateBatchCnt) {
    return NS_OK;
  }
Priority: P3 → P1
Status: NEW → ASSIGNED
Troy and I agree we should combine the two approaches to updating we currently
have to accumulate updates.
Target Milestone: M11
This probably explains why freshly created browser windows don't draw everything
correctly, initially.
Status: ASSIGNED → RESOLVED
Closed: 25 years ago
Resolution: --- → FIXED
I've fixed this by buffering the dirty regions in each view, and when
nsViewManager::EnableRefresh() is called passing the regions to
nsIWidget::Invalidate() for each view. I've coopted nsIView's SetDirtyRegion/
GetDirtyRegion calls for this task. I added the ProcessPendingUpdates method to
nsViewManager to do the recursive invalidates. Checked in as nsViewManager,3.115
and nsViewManager.h,3.38.
Status: RESOLVED → VERIFIED
Based on Beard's comments, marking verified fixed in the Sept 9th build.
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.