forked from mirrors/gecko-dev
		
	 53d05dfbc0
			
		
	
	
		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
		
			
				
	
	
		
			25 lines
		
	
	
	
		
			788 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
	
		
			788 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/. */
 | |
| 
 | |
| #include "VsyncTaskManager.h"
 | |
| #include "InputTaskManager.h"
 | |
| 
 | |
| namespace mozilla {
 | |
| 
 | |
| StaticRefPtr<VsyncTaskManager> VsyncTaskManager::gHighPriorityTaskManager;
 | |
| 
 | |
| void VsyncTaskManager::Init() {
 | |
|   gHighPriorityTaskManager = new VsyncTaskManager();
 | |
| }
 | |
| 
 | |
| void VsyncTaskManager::WillRunTask() {
 | |
|   TaskManager::WillRunTask();
 | |
| 
 | |
|   if (StaticPrefs::dom_input_events_strict_input_vsync_alignment()) {
 | |
|     InputTaskManager::Get()->NotifyVsync();
 | |
|   }
 | |
| };
 | |
| }  // namespace mozilla
 |