Closed Bug 797254 Opened 12 years ago Closed 12 years ago

Themed Titlebar on Mac repaints every frame

Categories

(Core :: Layout, defect)

x86
macOS
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla19
Tracking Status
firefox18 --- fixed

People

(Reporter: mattwoodrow, Unassigned)

References

Details

Attachments

(2 obsolete files)

Attached patch Fix the secondary layer manager code (obsolete) (deleted) — Splinter Review
No description provided.
Attachment #667314 - Flags: review?(roc)
I also noticed that we build display lists/ layers for the entire screen when painting the titlebar. I think we could probably add a parameter to restrict the visible region to the just the titlebar area.
Comment on attachment 667314 [details] [diff] [review] Fix the secondary layer manager code Review of attachment 667314 [details] [diff] [review]: ----------------------------------------------------------------- ::: widget/xpwidgets/nsBaseWidget.cpp @@ +908,5 @@ > } > } > if (mTemporarilyUseBasicLayerManager && !mBasicLayerManager) { > mBasicLayerManager = CreateBasicLayerManager(); > + mBasicLayerManager->SetUserData(&mozilla::gLayerManagerSecondary, nullptr); We really shouldn't use FrameLayerBuilder from here. Define gLayerManagerSecondary in nsIWidget instead. And, this should really be set in the Mac titlebar painting code, not here!
Attached patch Fix the secondary layer manager code (obsolete) (deleted) — Splinter Review
Attachment #667314 - Attachment is obsolete: true
Attachment #667314 - Flags: review?(roc)
Attachment #669373 - Flags: review?(roc)
Comment on attachment 669373 [details] [diff] [review] Fix the secondary layer manager code Review of attachment 669373 [details] [diff] [review]: ----------------------------------------------------------------- ::: widget/cocoa/nsChildView.mm @@ +2390,5 @@ > > // Title bar drawing only works if we really draw into aContext, which only > // the basic layer manager will do. > nsBaseWidget::AutoUseBasicLayerManager setupLayerManager(mGeckoChild); > + mGeckoChild->GetLayerManager()->SetUserData(&gLayerManagerSecondary, nullptr); If I read nsBaseWidget::GetLayerManager right, on Macs where GL compositing is not enabled (are there any still?) this will use the same layer manager as for normal compositing, won't it? ::: widget/nsIWidget.h @@ +36,5 @@ > class ViewWrapper; > class nsIWidgetListener; > class nsIntRegion; > > +extern uint8_t gLayerManagerSecondary; Make it a member of nsIWidget. And put the definition in nsBaseWidget.cpp instead of FrameLayerBuilder. And wrap it in an accessor "static void* nsIWidget::SecondaryLayerManagerKey()".
Attachment #669373 - Attachment is obsolete: true
Attachment #669373 - Flags: review?(roc)
Fixed by bug 795674
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Bug 795674 was uplifted to Aurora.
Target Milestone: --- → mozilla19
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: