blur-effect: Properly clear background framebuffer

We want to completely clear the background framebuffer when switching
back to ACTOR mode to make sure the `background_fb.framebuffer` check
will fail in `update_background_fbo` when switching to BACKGROUND mode
again. Otherwise the checks in `update_background_fbo` will return TRUE
and we will keep using the background framebuffer that was created
before switchig to ACTOR mode.

While at it, also clear the background framebuffer completely when
changing the actor to avoid the same issue here.

https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/1000
This commit is contained in:
Jonas Dreßler 2020-02-13 13:08:28 +01:00 committed by Georges Basile Stavracas Neto
parent dedbf0cb09
commit 4783d767d6

View File

@ -513,6 +513,7 @@ shell_blur_effect_set_actor (ClutterActorMeta *meta,
/* clear out the previous state */ /* clear out the previous state */
clear_framebuffer_data (&self->actor_fb); clear_framebuffer_data (&self->actor_fb);
clear_framebuffer_data (&self->background_fb);
clear_framebuffer_data (&self->brightness_fb); clear_framebuffer_data (&self->brightness_fb);
clear_framebuffer_data (&self->blur[VERTICAL].data); clear_framebuffer_data (&self->blur[VERTICAL].data);
clear_framebuffer_data (&self->blur[HORIZONTAL].data); clear_framebuffer_data (&self->blur[HORIZONTAL].data);
@ -1049,7 +1050,7 @@ shell_blur_effect_set_mode (ShellBlurEffect *self,
switch (mode) switch (mode)
{ {
case SHELL_BLUR_MODE_ACTOR: case SHELL_BLUR_MODE_ACTOR:
clear_framebuffer (self->background_fb.framebuffer); clear_framebuffer_data (&self->background_fb);
break; break;
case SHELL_BLUR_MODE_BACKGROUND: case SHELL_BLUR_MODE_BACKGROUND: