зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1128691. Part 1: Consolidate vsync compositor pref checks. r=benwa
This commit is contained in:
Родитель
fdee1bb880
Коммит
6225c3b5b8
|
@ -416,6 +416,7 @@ CompositorParent::CompositorParent(nsIWidget* aWidget,
|
||||||
, mOverrideComposeReadiness(false)
|
, mOverrideComposeReadiness(false)
|
||||||
, mForceCompositionTask(nullptr)
|
, mForceCompositionTask(nullptr)
|
||||||
, mCompositorThreadHolder(sCompositorThreadHolder)
|
, mCompositorThreadHolder(sCompositorThreadHolder)
|
||||||
|
, mCompositorVsyncObserver(nullptr)
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(NS_IsMainThread());
|
MOZ_ASSERT(NS_IsMainThread());
|
||||||
MOZ_ASSERT(CompositorThread(),
|
MOZ_ASSERT(CompositorThread(),
|
||||||
|
@ -577,7 +578,7 @@ CompositorParent::RecvMakeSnapshot(const SurfaceDescriptor& aInSnapshot,
|
||||||
bool
|
bool
|
||||||
CompositorParent::RecvFlushRendering()
|
CompositorParent::RecvFlushRendering()
|
||||||
{
|
{
|
||||||
if (gfxPrefs::VsyncAlignedCompositor() && mCompositorVsyncObserver->NeedsComposite()) {
|
if (mCompositorVsyncObserver && mCompositorVsyncObserver->NeedsComposite()) {
|
||||||
mCompositorVsyncObserver->SetNeedsComposite(false);
|
mCompositorVsyncObserver->SetNeedsComposite(false);
|
||||||
CancelCurrentCompositeTask();
|
CancelCurrentCompositeTask();
|
||||||
ForceComposeToTarget(nullptr);
|
ForceComposeToTarget(nullptr);
|
||||||
|
@ -718,7 +719,7 @@ CompositorParent::ForceComposition()
|
||||||
void
|
void
|
||||||
CompositorParent::CancelCurrentCompositeTask()
|
CompositorParent::CancelCurrentCompositeTask()
|
||||||
{
|
{
|
||||||
if (gfxPrefs::VsyncAlignedCompositor()) {
|
if (mCompositorVsyncObserver) {
|
||||||
mCompositorVsyncObserver->CancelCurrentCompositeTask();
|
mCompositorVsyncObserver->CancelCurrentCompositeTask();
|
||||||
} else if (mCurrentCompositeTask) {
|
} else if (mCurrentCompositeTask) {
|
||||||
mCurrentCompositeTask->Cancel();
|
mCurrentCompositeTask->Cancel();
|
||||||
|
@ -831,7 +832,7 @@ CalculateCompositionFrameRate()
|
||||||
void
|
void
|
||||||
CompositorParent::ScheduleSoftwareTimerComposition()
|
CompositorParent::ScheduleSoftwareTimerComposition()
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(!gfxPrefs::VsyncAlignedCompositor());
|
MOZ_ASSERT(!mCompositorVsyncObserver);
|
||||||
|
|
||||||
if (mCurrentCompositeTask) {
|
if (mCurrentCompositeTask) {
|
||||||
return;
|
return;
|
||||||
|
@ -874,7 +875,7 @@ CompositorParent::ScheduleComposition()
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gfxPrefs::VsyncAlignedCompositor()) {
|
if (mCompositorVsyncObserver) {
|
||||||
mCompositorVsyncObserver->SetNeedsComposite(true);
|
mCompositorVsyncObserver->SetNeedsComposite(true);
|
||||||
} else {
|
} else {
|
||||||
ScheduleSoftwareTimerComposition();
|
ScheduleSoftwareTimerComposition();
|
||||||
|
@ -884,7 +885,7 @@ CompositorParent::ScheduleComposition()
|
||||||
void
|
void
|
||||||
CompositorParent::CompositeCallback(TimeStamp aScheduleTime)
|
CompositorParent::CompositeCallback(TimeStamp aScheduleTime)
|
||||||
{
|
{
|
||||||
if (gfxPrefs::VsyncAlignedCompositor()) {
|
if (mCompositorVsyncObserver) {
|
||||||
// Align OMTA to vsync time.
|
// Align OMTA to vsync time.
|
||||||
// TODO: ensure it aligns with the refresh / start time of
|
// TODO: ensure it aligns with the refresh / start time of
|
||||||
// animations
|
// animations
|
||||||
|
@ -1097,7 +1098,7 @@ CompositorParent::ShadowLayersUpdated(LayerTransactionParent* aLayerTree,
|
||||||
// conditions.
|
// conditions.
|
||||||
bool needTestComposite = mIsTesting && root &&
|
bool needTestComposite = mIsTesting && root &&
|
||||||
(mCurrentCompositeTask ||
|
(mCurrentCompositeTask ||
|
||||||
(gfxPrefs::VsyncAlignedCompositor() &&
|
(mCompositorVsyncObserver &&
|
||||||
mCompositorVsyncObserver->NeedsComposite()));
|
mCompositorVsyncObserver->NeedsComposite()));
|
||||||
if (needTestComposite) {
|
if (needTestComposite) {
|
||||||
AutoResolveRefLayers resolve(mCompositionManager);
|
AutoResolveRefLayers resolve(mCompositionManager);
|
||||||
|
@ -1131,7 +1132,7 @@ CompositorParent::SetTestSampleTime(LayerTransactionParent* aLayerTree,
|
||||||
mTestTime = aTime;
|
mTestTime = aTime;
|
||||||
|
|
||||||
bool testComposite = mCompositionManager && (mCurrentCompositeTask ||
|
bool testComposite = mCompositionManager && (mCurrentCompositeTask ||
|
||||||
(gfxPrefs::VsyncAlignedCompositor()
|
(mCompositorVsyncObserver
|
||||||
&& mCompositorVsyncObserver->NeedsComposite()));
|
&& mCompositorVsyncObserver->NeedsComposite()));
|
||||||
|
|
||||||
// Update but only if we were already scheduled to animate
|
// Update but only if we were already scheduled to animate
|
||||||
|
|
Загрузка…
Ссылка в новой задаче