mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-25 22:01:30 +00:00
53d05dfbc0
Currently, we use `VsyncTaskManager::DidRunTask` to change state from `RunVsync` to `NoPendingVsync`, however, the issue is that if the vsync starts an event loop (for instance, by using requestAnimationFrame), and the event loop starts another input task, Firefox crashes because input tasks don't expect the state to be `RunVsync`. So instead of using `DidRunTask`, we start to use `WillRunTask` to fix it. Differential Revision: https://phabricator.services.mozilla.com/D113613
26 lines
807 B
C++
26 lines
807 B
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef mozilla_VsyncTaskManager_h
|
|
#define mozilla_VsyncTaskManager_h
|
|
|
|
#include "TaskController.h"
|
|
|
|
namespace mozilla {
|
|
class VsyncTaskManager : public TaskManager {
|
|
public:
|
|
static VsyncTaskManager* Get() { return gHighPriorityTaskManager.get(); }
|
|
static void Cleanup() { gHighPriorityTaskManager = nullptr; }
|
|
static void Init();
|
|
|
|
void WillRunTask() override;
|
|
|
|
private:
|
|
static StaticRefPtr<VsyncTaskManager> gHighPriorityTaskManager;
|
|
};
|
|
} // namespace mozilla
|
|
#endif
|