void nsListBoxBodyFrame::ReverseDestroyRows(PRInt32& aRowsToLose) { // We need to destroy frames until our row count has been properly // reduced. A reflow will then pick up and create the new frames. nsIFrame* childFrame = GetLastFrame(); nsBoxLayoutState state(PresContext()); nsCSSFrameConstructor* fc = PresContext()->PresShell()->FrameConstructor(); fc->BeginUpdate(); while (childFrame && aRowsToLose > 0) { --aRowsToLose; nsIFrame* prevFrame; prevFrame = childFrame->GetPrevSibling(); RemoveChildFrame(state, childFrame); mBottomFrame = childFrame = prevFrame; } fc->EndUpdate(); PresContext()->PresShell()-> FrameNeedsReflow(this, nsIPresShell::eTreeChange, NS_FRAME_HAS_DIRTY_CHILDREN); }
bool nsListBoxBodyFrame::ContinueReflow(nscoord height) { #ifdef ACCESSIBILITY if (nsIPresShell::IsAccessibilityActive()) { // Create all the frames at once so screen readers and // onscreen keyboards can see the full list right away return true; } #endif if (height <= 0) { nsIFrame* lastChild = GetLastFrame(); nsIFrame* startingPoint = mBottomFrame; if (startingPoint == nsnull) { // We just want to delete everything but the first item. startingPoint = GetFirstFrame(); } if (lastChild != startingPoint) { // We have some hangers on (probably caused by shrinking the size of the window). // Nuke them. nsIFrame* currFrame = startingPoint->GetNextSibling(); nsBoxLayoutState state(PresContext()); nsCSSFrameConstructor* fc = PresContext()->PresShell()->FrameConstructor(); fc->BeginUpdate(); while (currFrame) { nsIFrame* nextFrame = currFrame->GetNextSibling(); RemoveChildFrame(state, currFrame); currFrame = nextFrame; } fc->EndUpdate(); PresContext()->PresShell()-> FrameNeedsReflow(this, nsIPresShell::eTreeChange, NS_FRAME_HAS_DIRTY_CHILDREN); } return false; } else return true; }
void sPerfMonGpu::Flip() { if(Current) { // Leave(&MasterSection); Current->FrequencyQuery->End(Adapter->ImmediateContext); PendingFrames.AddTail(Current); Current = 0; uint64 freq; while(PendingFrames.GetCount()>History) GetLastFrame(freq); } if(sPerfMonEnable) { Current = GetFrame(); Current->Data.Clear(); sASSERT(Current->Queries.IsEmpty()); Current->FrequencyQuery->Begin(Adapter->ImmediateContext); // Enter(&MasterSection); } }
virtual sArray<Record> *GetFrame(int n,uint64 &freq) { return GetLastFrame(freq); }