Commit 0e6aee23 authored by Daosheng Mu's avatar Daosheng Mu
Browse files

Bug 1537967 - Skipping running refresh driver and compositing in VR mode. r=mstange,kip

MozReview-Commit-ID: 4L3PygFSFCB

Differential Revision: https://phabricator.services.mozilla.com/D26834

--HG--
extra : moz-landing-system : lando
parent 3e6ef756
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -176,7 +176,16 @@ bool CompositorVsyncScheduler::NotifyVsync(const VsyncEvent& aVsync) {
  MOZ_ASSERT_IF(XRE_GetProcessType() == GeckoProcessType_GPU,
                CompositorThreadHolder::IsInCompositorThread());
  MOZ_ASSERT(!NS_IsMainThread());

#if defined(MOZ_WIDGET_ANDROID)
  gfx::VRManager* vm = gfx::VRManager::Get();
  if (!vm->IsPresenting()) {
    PostCompositeTask(aVsync.mId, aVsync.mTime);
  }
#else
  PostCompositeTask(aVsync.mId, aVsync.mTime);
#endif    // defined(MOZ_WIDGET_ANDROID)

  PostVRTask(aVsync.mTime);
  return true;
}
+10 −0
Original line number Diff line number Diff line
@@ -795,5 +795,15 @@ void VRManager::StopVRNavigation(const uint32_t& aDisplayID,
  }
}

bool VRManager::IsPresenting() {
  for (const auto& manager : mManagers) {
    if (manager->GetIsPresenting()) {
      return true;
    }
  }

  return false;
}

}  // namespace gfx
}  // namespace mozilla
+1 −0
Original line number Diff line number Diff line
@@ -68,6 +68,7 @@ class VRManager {
                        const TimeDuration& aTimeout);

  void Shutdown();
  bool IsPresenting();

 protected:
  VRManager();
+12 −0
Original line number Diff line number Diff line
@@ -76,6 +76,10 @@
#include "nsDisplayList.h"
#include "nsTransitionManager.h"

#if defined(MOZ_WIDGET_ANDROID)
#  include "VRManager.h"
#endif    // defined(MOZ_WIDGET_ANDROID)

#ifdef MOZ_XUL
#  include "nsXULPopupManager.h"
#endif
@@ -1747,6 +1751,14 @@ void nsRefreshDriver::Tick(VsyncId aId, TimeStamp aNowTime) {
    return;
  }

#if defined(MOZ_WIDGET_ANDROID)
  gfx::VRManager* vm = gfx::VRManager::Get();
  if (vm->IsPresenting()) {
    RunFrameRequestCallbacks(aNowTime);
    return;
  }
#endif    // defined(MOZ_WIDGET_ANDROID)

  AUTO_PROFILER_LABEL("nsRefreshDriver::Tick", LAYOUT);

  // We're either frozen or we were disconnected (likely in the middle