Closed
Bug 797254
Opened 12 years ago
Closed 12 years ago
Themed Titlebar on Mac repaints every frame
Categories
(Core :: Layout, defect)
Tracking
()
RESOLVED
FIXED
mozilla19
Tracking | Status | |
---|---|---|
firefox18 | --- | fixed |
People
(Reporter: mattwoodrow, Unassigned)
References
Details
Attachments
(2 obsolete files)
No description provided.
Attachment #667314 -
Flags: review?(roc)
Reporter | ||
Comment 1•12 years ago
|
||
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!
Reporter | ||
Comment 3•12 years ago
|
||
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()".
Reporter | ||
Updated•12 years ago
|
Attachment #669373 -
Attachment is obsolete: true
Attachment #669373 -
Flags: review?(roc)
Reporter | ||
Comment 5•12 years ago
|
||
Fixed by bug 795674
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Depends on: 795674
Comment 6•12 years ago
|
||
Bug 795674 was uplifted to Aurora.
status-firefox18:
--- → fixed
Target Milestone: --- → mozilla19
You need to log in
before you can comment on or make changes to this bug.
Description
•