fix: disable background throttling also in the viz::DisplayScheduler (#38924)
		
	* fix: disable background throttling also in the `viz::DisplayScheduler` `viz::DisplayScheduler` is responsible for drawing and swapping frames in the `DisplayScheduler::DrawAndSwap` which is called from the `DisplayScheduler::AttemptDrawAndSwap` if the `DisplayScheduler::ShouldDraw` returns true. `ShouldDraw` depends on the `DisplayScheduler` visibility and when it is not visible then it returns false. In order to keep producing frames, disabling `backgroundThrottling` should also prevent changing `DisplayScheduler` visibility to false. `DisplayScheduler` lives in the `ui::Compositor` where every `electron::NativewWindow` has its own `Compositor`. `electron::NativewWindow` may be host of the multiple `electron::api::WebContents` instances which may have different `WebPreferences` settings. Therefore if at least one of the `WebContents` requires disabling throttling then all other `WebContents` using the same window will have it disabled in the `ui::Compositor`. BREAKING CHANGE: `backgroundThrottling` set to false will disable frames throttling in the `BrowserWindow` for all `WebContents` displayed by it. Close: [#31016](https://github.com/electron/electron/issues/31016) * fixup! fix: disable background throttling also in the `viz::DisplayScheduler` * fixup! fix: disable background throttling also in the `viz::DisplayScheduler` * fixup! fix: disable background throttling also in the `viz::DisplayScheduler` --------- Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
This commit is contained in:
		
					parent
					
						
							
								fa215f1009
							
						
					
				
			
			
				commit
				
					
						2190793fe6
					
				
			
		
					 10 changed files with 176 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -74,7 +74,11 @@
 | 
			
		|||
* `defaultEncoding` string (optional) - Defaults to `ISO-8859-1`.
 | 
			
		||||
* `backgroundThrottling` boolean (optional) - Whether to throttle animations and timers
 | 
			
		||||
  when the page becomes background. This also affects the
 | 
			
		||||
  [Page Visibility API](../browser-window.md#page-visibility). Defaults to `true`.
 | 
			
		||||
  [Page Visibility API](../browser-window.md#page-visibility). When at least one
 | 
			
		||||
  [webContents](../web-contents.md) displayed in a single
 | 
			
		||||
  [browserWindow](../browser-window.md) has disabled `backgroundThrottling` then
 | 
			
		||||
  frames will be drawn and swapped for the whole window and other
 | 
			
		||||
  [webContents](../web-contents.md) displayed by it. Defaults to `true`.
 | 
			
		||||
* `offscreen` boolean (optional) - Whether to enable offscreen rendering for the browser
 | 
			
		||||
  window. Defaults to `false`. See the
 | 
			
		||||
  [offscreen rendering tutorial](../../tutorial/offscreen-rendering.md) for
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue