obsproject / obs-browser

CEF-based OBS Studio browser plugin
GNU General Public License v2.0
776 stars 220 forks source link

Improve performance of CEF 4638 browser sources #330

Closed VodBox closed 2 years ago

VodBox commented 2 years ago

Description

This change makes it so the previously disabled flag ENABLE_WASHIDDEN is enabled on CEF versions above and including 4430, and so that the framerate is updated with a specific method call, rather than done by recreating the browser.

This is technically a revert of revert commit a668444, but I am unable to find any information anywhere as to why this revert was done, or what it was intending to fix.

Motivation and Context

In scene collections with a lot of heavy weight browser sources across several scenes (think marathons or large events), 4638 results in massive performance losses due to not correctly dealing with the visibility of sources.

Additionally, FPS changes in OBS currently result in the browser being completely recreated, which adds a lot of needless load to the program, especially if a scene collection has a lot of browser sources.

How Has This Been Tested?

With a large scene collection containing several many browser sources that are particularly heavyweight, across several scenes. Before these changes, the test collection chugged at less than 2FPS as many invisible sources competed for resources, and after these changes, a steady 60FPS was achieved through out.

Types of changes

Checklist: