diff options
Diffstat (limited to 'chromium/components/display_compositor/compositor_overlay_candidate_validator_ozone.cc')
-rw-r--r-- | chromium/components/display_compositor/compositor_overlay_candidate_validator_ozone.cc | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/chromium/components/display_compositor/compositor_overlay_candidate_validator_ozone.cc b/chromium/components/display_compositor/compositor_overlay_candidate_validator_ozone.cc index 644f21af3d8..3c0cfb12c23 100644 --- a/chromium/components/display_compositor/compositor_overlay_candidate_validator_ozone.cc +++ b/chromium/components/display_compositor/compositor_overlay_candidate_validator_ozone.cc @@ -9,6 +9,7 @@ #include <utility> #include "base/memory/ptr_util.h" +#include "cc/output/overlay_strategy_fullscreen.h" #include "cc/output/overlay_strategy_single_on_top.h" #include "cc/output/overlay_strategy_underlay.h" #include "ui/ozone/public/overlay_candidates_ozone.h" @@ -29,8 +30,10 @@ static gfx::BufferFormat GetBufferFormat(cc::ResourceFormat overlay_format) { CompositorOverlayCandidateValidatorOzone:: CompositorOverlayCandidateValidatorOzone( - std::unique_ptr<ui::OverlayCandidatesOzone> overlay_candidates) + std::unique_ptr<ui::OverlayCandidatesOzone> overlay_candidates, + bool single_fullscreen) : overlay_candidates_(std::move(overlay_candidates)), + single_fullscreen_(single_fullscreen), software_mirror_active_(false) {} CompositorOverlayCandidateValidatorOzone:: @@ -38,10 +41,14 @@ CompositorOverlayCandidateValidatorOzone:: void CompositorOverlayCandidateValidatorOzone::GetStrategies( cc::OverlayProcessor::StrategyList* strategies) { - strategies->push_back( - base::WrapUnique(new cc::OverlayStrategySingleOnTop(this))); - strategies->push_back( - base::WrapUnique(new cc::OverlayStrategyUnderlay(this))); + if (single_fullscreen_) { + strategies->push_back( + base::MakeUnique<cc::OverlayStrategyFullscreen>(this)); + } else { + strategies->push_back( + base::MakeUnique<cc::OverlayStrategySingleOnTop>(this)); + strategies->push_back(base::MakeUnique<cc::OverlayStrategyUnderlay>(this)); + } } bool CompositorOverlayCandidateValidatorOzone::AllowCALayerOverlays() { @@ -52,8 +59,16 @@ void CompositorOverlayCandidateValidatorOzone::CheckOverlaySupport( cc::OverlayCandidateList* surfaces) { // SW mirroring copies out of the framebuffer, so we can't remove any // quads for overlaying, otherwise the output is incorrect. - if (software_mirror_active_) + if (software_mirror_active_) { + for (size_t i = 0; i < surfaces->size(); i++) { + surfaces->at(i).overlay_handled = false; + } return; + } + + if (single_fullscreen_) { + return; // No need for validation for single fullscreen. + } DCHECK_GE(2U, surfaces->size()); ui::OverlayCandidatesOzone::OverlaySurfaceCandidateList ozone_surface_list; |