@@ -973,8 +973,9 @@ impl SurfaceThreadState {
973
973
let mut additional_frame_flags = FrameFlags :: empty ( ) ;
974
974
let mut remove_frame_flags = FrameFlags :: empty ( ) ;
975
975
976
- let ( has_active_fullscreen, fullscreen_drives_refresh_rate) = {
976
+ let ( has_active_fullscreen, fullscreen_drives_refresh_rate, animations_going ) = {
977
977
let shell = self . shell . read ( ) ;
978
+ let animations_going = shell. animations_going ( ) ;
978
979
let output = self . mirroring . as_ref ( ) . unwrap_or ( & self . output ) ;
979
980
if let Some ( ( _, workspace) ) = shell. workspaces . active ( output) {
980
981
if let Some ( fullscreen_surface) = workspace. get_fullscreen ( ) {
@@ -985,17 +986,18 @@ impl SurfaceThreadState {
985
986
recursive_frame_time_estimation ( & self . clock , & * surface)
986
987
. is_some_and ( |dur| dur <= _30_FPS)
987
988
} ) ,
989
+ animations_going,
988
990
)
989
991
} else {
990
- ( false , false )
992
+ ( false , false , animations_going )
991
993
}
992
994
} else {
993
- ( false , false )
995
+ ( false , false , animations_going )
994
996
}
995
997
} ;
996
998
997
- if has_active_fullscreen {
998
- // skip overlay plane assign if we have a fullscreen surface to save on tests
999
+ if has_active_fullscreen || animations_going {
1000
+ // skip overlay plane assign if we have a fullscreen surface or dynamic contents to save on tests
999
1001
remove_frame_flags |= FrameFlags :: ALLOW_OVERLAY_PLANE_SCANOUT ;
1000
1002
}
1001
1003
0 commit comments