aboutsummaryrefslogtreecommitdiffstats
path: root/community/gnome-shell
diff options
context:
space:
mode:
authorRasmus Thomsen <oss@cogitri.dev>2020-03-31 08:15:31 +0200
committerRasmus Thomsen <oss@cogitri.dev>2020-03-31 10:51:56 +0000
commitf40c072e14bb714f92dec07d1ab833e0a03e49fa (patch)
tree0d179403170f6c20a422ea3b1dfe45c5444f88b7 /community/gnome-shell
parent0a09cacfe7f1ac1d131759f384f4112cf52f0b8c (diff)
downloadaports-f40c072e14bb714f92dec07d1ab833e0a03e49fa.tar.bz2
aports-f40c072e14bb714f92dec07d1ab833e0a03e49fa.tar.xz
community/gnome-shell: upgrade to 3.36.1
Diffstat (limited to 'community/gnome-shell')
-rw-r--r--community/gnome-shell/APKBUILD10
-rw-r--r--community/gnome-shell/revert-mr-1000.patch230
2 files changed, 236 insertions, 4 deletions
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 <oss@cogitri.dev>
# Maintainer: Rasmus Thomsen <oss@cogitri.dev>
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: