This is the most important part of the patch series. It removes the
PScreenManager protocol and use ScreenManager directly in the content
processes.
Initial and subsequent updates are sent via PContent::RefreshScreens.
struct ScreenDetails are kept to serialize Screen over IPC.
nsIScreenManager::ScreenForNativeWidget is removed because
nsIWidget::GetWidgetScreen can replace it. nsIScreen::GetId is removed
because it's not useful for the more general Screen class.
MozReview-Commit-ID: 5dJO3isgBuQ
--HG--
extra : rebase_source : 06aa4e4fd56e2b2af1e7483aee7c0cc7f35bdb97
ScreenHelperGTK is the platform dependent part of the original
nsScreenManagerGtk and nsScreenGtk. It registers monitors-changed
event listener from gtk and pushes updates to ScreenManager. See patch
part 4. for how ScreenManager works.
MozReview-Commit-ID: KBo7ZLFTjM3
--HG--
rename : widget/gtk/nsScreenManagerGtk.cpp => widget/gtk/ScreenHelperGTK.cpp
rename : widget/gtk/nsScreenManagerGtk.h => widget/gtk/ScreenHelperGTK.h
extra : rebase_source : 5607e31b62c928934cc45df7b2212428fbfd79c1
This allows us to remove the #ifdef MOZ_ENABLE_WEBRENDER for the advanced layers
prefs from all.js. As additional advanced layers are turned on for webrender (or
non-webrender) they can be converted into override prefs without affecting the
call sites.
MozReview-Commit-ID: F9tMc23ow8A
--HG--
extra : rebase_source : 2244cb000711496ce5b7f1b50ef0314e1c312d94
An override pref is one that is stored as a tri-state int32_t pref in the gecko
preferences system (with values 0, 1, or 2), but is exposed as a bool via the
gfxPrefs API. The int32_t value defaults to 2, which means that gfxPrefs will
take the value from somewhere else (which can be customized per-pref). If the
int32_t value stores 0 or 1, those correspond to force-disabled and force-enabled
respectively, and the gfxPrefs API will return false or true.
This allows the default value of a pref to be conditional upon other features
(e.g. webrender being enabled or not), but still allows the user or code to
override it into the enabled or disabled state.
MozReview-Commit-ID: KaihVyHrw2q
--HG--
extra : rebase_source : 053adc51a982f48e56035f453801d5987884a052
WebRenderBridgeParent works independently, if root WebRenderBridgeParent is destroyed
without CompositorBridgeParent::StopAndClearResources() call,
non-root WebRenderBridgeParent are still active and could trigger ScheduleComposition().
The change prevents to trigger ScheduleComposition() in this case.
gfxWindowsPlatform overrides InitAcceleration, and the override calls
InitGPUProcessSupport, which may disable the GPU process. Therefore, in
order to capture this scenario, we need to initialize WebRender after
the subclass implementation has run, rather than at the end of the base
class implementation, which is before InitGPUProcessSupport has run.
The cleanup work includes:
part 1: make all methods 'const' for the abstract class of PropertyProvider.
part 2: make nsFontMetrics's StubPropertyProvider final.
part 3: make nsTextFrame's PropertyProvider final.
Make some methods 'const' and some variables 'mutable', so we could let all the
overridden methods stay const.
We also need to make the pass-in parameter of gfxFontGroup's GetHyphenWidth const.
Note that the comment of GetHyphenWidth seem outdated, so I fixed it as well.
part 4: make the member variables in nsTextFrame's PropertyProvider to be 'const'.
Make all the member variables 'const' except mStart, mLength,
mJustificationArrayStart, and mJustificationSpacings.
The static function AdvanceToNextTab is fixed since we only use 2 of the 4 parameters.
part 5: coding style fix for nsTextFrame's PropertyProvider.
MozReview-Commit-ID: 1kbWPwx27aQ