From f40c072e14bb714f92dec07d1ab833e0a03e49fa Mon Sep 17 00:00:00 2001 From: Rasmus Thomsen Date: Tue, 31 Mar 2020 08:15:31 +0200 Subject: community/gnome-shell: upgrade to 3.36.1 --- community/gnome-shell/APKBUILD | 10 +- community/gnome-shell/revert-mr-1000.patch | 230 +++++++++++++++++++++++++++++ 2 files changed, 236 insertions(+), 4 deletions(-) create mode 100644 community/gnome-shell/revert-mr-1000.patch (limited to 'community/gnome-shell') diff --git a/community/gnome-shell/APKBUILD b/community/gnome-shell/APKBUILD index 4f61605c80..5dbdabf83f 100644 --- a/community/gnome-shell/APKBUILD +++ b/community/gnome-shell/APKBUILD @@ -1,8 +1,8 @@ # Contributor: Rasmus Thomsen # Maintainer: Rasmus Thomsen pkgname=gnome-shell -pkgver=3.36.0 -pkgrel=1 +pkgver=3.36.1 +pkgrel=0 pkgdesc="GNOME shell" url="https://wiki.gnome.org/Projects/GnomeShell" arch="all !s390x !ppc64le" @@ -54,7 +54,8 @@ checkdepends=" gdm " subpackages="$pkgname-lang $pkgname-doc $pkgname-dbg" -source="https://download.gnome.org/sources/gnome-shell/${pkgver%.*}/gnome-shell-$pkgver.tar.xz" +source="https://download.gnome.org/sources/gnome-shell/${pkgver%.*}/gnome-shell-$pkgver.tar.xz + revert-mr-1000.patch" options="!check" # Tests have circular dependency 'gnome-shell <-> gdm' build() { @@ -79,4 +80,5 @@ package() { setcap cap_sys_nice+ep "$pkgdir"/usr/bin/gnome-shell } -sha512sums="8e4b6d9e024b27696f2fe26b86582a35ddeb42341efd05c7f731255abc1661506c14d8260757d05b3ce00e6c2e96c443ea4c22c9e671e93c9e8ef6f632cd41d4 gnome-shell-3.36.0.tar.xz" +sha512sums="dce7a7236f9efd50148add12373664936a291e7b058c207e29f7abee5243146dac7c769ab7b0b0d5720363886748d70c9cc53fa70d1201f3c756bd9cad92fd53 gnome-shell-3.36.1.tar.xz +cfda9cb5252149d07487684368630d9cef5e45a24c58b2f0b7bc30bc19056e1694e8d4879e0942982bdfb7fe99e218b9334bd966ef30d77c3fdd06b3816007fc revert-mr-1000.patch" diff --git a/community/gnome-shell/revert-mr-1000.patch b/community/gnome-shell/revert-mr-1000.patch new file mode 100644 index 0000000000..3bc3f3f1c6 --- /dev/null +++ b/community/gnome-shell/revert-mr-1000.patch @@ -0,0 +1,230 @@ +This causes a crash when going to the lockscreen. See https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2538 +for more information and the upstream status of this. +diff --git a/src/shell-blur-effect.c b/src/shell-blur-effect.c +index 5e50ab886..ffabff114 100644 +--- a/src/shell-blur-effect.c ++++ b/src/shell-blur-effect.c +@@ -438,8 +438,8 @@ update_blur_fbo (ShellBlurEffect *self, + + static gboolean + update_background_fbo (ShellBlurEffect *self, +- unsigned int width, +- unsigned int height) ++ unsigned int width, ++ unsigned int height) + { + if (self->tex_width == width && + self->tex_height == height && +@@ -513,7 +513,6 @@ shell_blur_effect_set_actor (ClutterActorMeta *meta, + + /* clear out the previous state */ + clear_framebuffer_data (&self->actor_fb); +- clear_framebuffer_data (&self->background_fb); + clear_framebuffer_data (&self->brightness_fb); + clear_framebuffer_data (&self->blur[VERTICAL].data); + clear_framebuffer_data (&self->blur[HORIZONTAL].data); +@@ -523,41 +522,24 @@ shell_blur_effect_set_actor (ClutterActorMeta *meta, + } + + static void +-update_actor_box (ShellBlurEffect *self, +- ClutterPaintContext *paint_context, +- ClutterActorBox *source_actor_box) ++get_target_size (ShellBlurEffect *self, ++ float *width, ++ float *height) + { +- ClutterStageView *stage_view; +- float box_scale_factor = 1.0f; +- float origin_x, origin_y; +- float width, height; +- cairo_rectangle_int_t stage_view_layout; +- +- switch (self->mode) +- { +- case SHELL_BLUR_MODE_ACTOR: +- clutter_actor_get_allocation_box (self->actor, source_actor_box); +- break; +- +- case SHELL_BLUR_MODE_BACKGROUND: +- stage_view = clutter_paint_context_get_stage_view (paint_context); +- box_scale_factor = clutter_stage_view_get_scale (stage_view); +- clutter_stage_view_get_layout (stage_view, &stage_view_layout); +- +- clutter_actor_get_transformed_position (self->actor, &origin_x, &origin_y); +- clutter_actor_get_transformed_size (self->actor, &width, &height); +- +- origin_x -= stage_view_layout.x; +- origin_y -= stage_view_layout.y; ++ float resource_scale = 1.0; ++ float ceiled_resource_scale; ++ float transformed_width; ++ float transformed_height; + +- clutter_actor_box_set_origin (source_actor_box, origin_x, origin_y); +- clutter_actor_box_set_size (source_actor_box, width, height); ++ clutter_actor_get_resource_scale (self->actor, &resource_scale); ++ ceiled_resource_scale = ceilf (resource_scale); + +- clutter_actor_box_scale (source_actor_box, box_scale_factor); +- break; +- } ++ clutter_actor_get_transformed_size (self->actor, ++ &transformed_width, ++ &transformed_height); + +- clutter_actor_box_clamp_to_pixel (source_actor_box); ++ *width = ceilf (transformed_width * ceiled_resource_scale); ++ *height = ceilf (transformed_height * ceiled_resource_scale); + } + + static void +@@ -565,10 +547,24 @@ paint_texture (ShellBlurEffect *self, + ClutterPaintContext *paint_context) + { + CoglFramebuffer *framebuffer; ++ CoglMatrix modelview; + float width, height; ++ float resource_scale; + + framebuffer = clutter_paint_context_get_framebuffer (paint_context); + ++ cogl_framebuffer_push_matrix (framebuffer); ++ cogl_framebuffer_get_modelview_matrix (framebuffer, &modelview); ++ ++ if (clutter_actor_get_resource_scale (self->actor, &resource_scale) && ++ resource_scale != 1.0f) ++ { ++ float paint_scale = 1.0f / resource_scale; ++ cogl_matrix_scale (&modelview, paint_scale, paint_scale, 1); ++ } ++ ++ cogl_framebuffer_set_modelview_matrix (framebuffer, &modelview); ++ + /* Use the untransformed actor size here, since the framebuffer itself already + * has the actor transform matrix applied. + */ +@@ -578,8 +574,10 @@ paint_texture (ShellBlurEffect *self, + cogl_framebuffer_draw_rectangle (framebuffer, + self->brightness_fb.pipeline, + 0, 0, +- width, +- height); ++ ceilf (width), ++ ceilf (height)); ++ ++ cogl_framebuffer_pop_matrix (framebuffer); + } + + static void +@@ -643,33 +641,27 @@ apply_blur (ShellBlurEffect *self, + + static gboolean + paint_background (ShellBlurEffect *self, +- ClutterPaintContext *paint_context, +- ClutterActorBox *source_actor_box) ++ ClutterPaintContext *paint_context) + { + g_autoptr (GError) error = NULL; + CoglFramebuffer *framebuffer; +- float transformed_x; +- float transformed_y; +- float transformed_width; +- float transformed_height; ++ float transformed_x = 0.f; ++ float transformed_y = 0.f; + + framebuffer = clutter_paint_context_get_framebuffer (paint_context); + +- clutter_actor_box_get_origin (source_actor_box, +- &transformed_x, +- &transformed_y); +- clutter_actor_box_get_size (source_actor_box, +- &transformed_width, +- &transformed_height); ++ clutter_actor_get_transformed_position (self->actor, ++ &transformed_x, ++ &transformed_y); + + clear_framebuffer (self->background_fb.framebuffer); + cogl_blit_framebuffer (framebuffer, + self->background_fb.framebuffer, +- transformed_x, +- transformed_y, ++ floor (transformed_x), ++ floor (transformed_y), + 0, 0, +- transformed_width, +- transformed_height, ++ self->tex_width, ++ self->tex_height, + &error); + + if (error) +@@ -682,17 +674,20 @@ paint_background (ShellBlurEffect *self, + } + + static gboolean +-update_framebuffers (ShellBlurEffect *self, +- ClutterPaintContext *paint_context, +- ClutterActorBox *source_actor_box) ++update_framebuffers (ShellBlurEffect *self) + { + gboolean updated = FALSE; + float downscale_factor; + float height = -1; + float width = -1; + +- clutter_actor_box_get_size (source_actor_box, &width, &height); ++ if (!clutter_actor_meta_get_enabled (CLUTTER_ACTOR_META (self))) ++ return FALSE; ++ ++ if (!self->actor) ++ return FALSE; + ++ get_target_size (self, &width, &height); + downscale_factor = calculate_downscale_factor (width, height, self->sigma); + + updated = +@@ -781,20 +776,14 @@ shell_blur_effect_paint (ClutterEffect *effect, + ShellBlurEffect *self = SHELL_BLUR_EFFECT (effect); + uint8_t paint_opacity; + +- g_assert (self->actor != NULL); +- + if (self->sigma > 0) + { + if (needs_repaint (self, flags)) + { +- ClutterActorBox source_actor_box; +- +- update_actor_box (self, paint_context, &source_actor_box); +- + /* Failing to create or update the offscreen framebuffers prevents + * the entire effect to be applied. + */ +- if (!update_framebuffers (self, paint_context, &source_actor_box)) ++ if (!update_framebuffers (self)) + goto fail; + + switch (self->mode) +@@ -807,9 +796,7 @@ shell_blur_effect_paint (ClutterEffect *effect, + break; + + case SHELL_BLUR_MODE_BACKGROUND: +- if (!paint_background (self, paint_context, &source_actor_box)) +- goto fail; +- ++ paint_background (self, paint_context); + apply_blur (self, paint_context, &self->background_fb, 255); + break; + } +@@ -1052,7 +1039,7 @@ shell_blur_effect_set_mode (ShellBlurEffect *self, + switch (mode) + { + case SHELL_BLUR_MODE_ACTOR: +- clear_framebuffer_data (&self->background_fb); ++ clear_framebuffer (self->background_fb.framebuffer); + break; + + case SHELL_BLUR_MODE_BACKGROUND: -- cgit v1.2.3