[arch-commits] Commit in gtk3/trunk (2 files)

Jan Steffens heftig at archlinux.org
Tue Oct 6 22:05:59 UTC 2020


    Date: Tuesday, October 6, 2020 @ 22:05:58
  Author: heftig
Revision: 397452

3.24.23-4: FS#68123 fix krita

Added:
  gtk3/trunk/0001-gtkplacessidebar-Disconnect-and-unref-cloud_manager-.patch
Modified:
  gtk3/trunk/PKGBUILD

-----------------------------------------------------------------+
 0001-gtkplacessidebar-Disconnect-and-unref-cloud_manager-.patch |   64 ++++++++++
 PKGBUILD                                                        |    7 -
 2 files changed, 70 insertions(+), 1 deletion(-)

Added: 0001-gtkplacessidebar-Disconnect-and-unref-cloud_manager-.patch
===================================================================
--- 0001-gtkplacessidebar-Disconnect-and-unref-cloud_manager-.patch	                        (rev 0)
+++ 0001-gtkplacessidebar-Disconnect-and-unref-cloud_manager-.patch	2020-10-06 22:05:58 UTC (rev 397452)
@@ -0,0 +1,64 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: "Jan Alexander Steffens (heftig)" <jan.steffens at gmail.com>
+Date: Tue, 6 Oct 2020 21:14:45 +0000
+Subject: [PATCH] gtkplacessidebar: Disconnect and unref cloud_manager in
+ dispose
+
+The manager's providers-changed signal can fire after the sidebar has
+been freed. Make sure we disconnect the sidebar from the manager.
+
+https://bugs.archlinux.org/task/57984
+https://bugs.archlinux.org/task/68123
+---
+ gtk/gtkplacessidebar.c | 24 ++++++++++++------------
+ 1 file changed, 12 insertions(+), 12 deletions(-)
+
+diff --git a/gtk/gtkplacessidebar.c b/gtk/gtkplacessidebar.c
+index 87c08a5389..118739fdd2 100644
+--- a/gtk/gtkplacessidebar.c
++++ b/gtk/gtkplacessidebar.c
+@@ -4411,32 +4411,32 @@ gtk_places_sidebar_dispose (GObject *object)
+   sidebar->shortcuts = NULL;
+ 
+ #ifdef HAVE_CLOUDPROVIDERS
+-  for (l = cloud_providers_collector_get_providers (sidebar->cloud_manager);
+-       l != NULL; l = l->next)
+-    {
+-      g_signal_handlers_disconnect_by_data (l->data, sidebar);
+-    }
+   for (l = sidebar->unready_accounts; l != NULL; l = l->next)
+     {
+         g_signal_handlers_disconnect_by_data (l->data, sidebar);
+     }
+   g_list_free_full (sidebar->unready_accounts, g_object_unref);
+   sidebar->unready_accounts = NULL;
++
++  if (sidebar->cloud_manager)
++    {
++      g_signal_handlers_disconnect_by_data (sidebar->cloud_manager, sidebar);
++      for (l = cloud_providers_collector_get_providers (sidebar->cloud_manager);
++           l != NULL; l = l->next)
++        {
++          g_signal_handlers_disconnect_by_data (l->data, sidebar);
++        }
++      g_object_unref (sidebar->cloud_manager);
++      sidebar->cloud_manager = NULL;
++    }
+ #endif
+ 
+   G_OBJECT_CLASS (gtk_places_sidebar_parent_class)->dispose (object);
+ }
+ 
+ static void
+ gtk_places_sidebar_finalize (GObject *object)
+ {
+-#ifdef HAVE_CLOUDPROVIDERS
+-  GtkPlacesSidebar *sidebar;
+-
+-  sidebar = GTK_PLACES_SIDEBAR (object);
+-  g_clear_object (&sidebar->cloud_manager);
+-#endif
+-
+   G_OBJECT_CLASS (gtk_places_sidebar_parent_class)->finalize (object);
+ }
+ 

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2020-10-06 21:50:49 UTC (rev 397451)
+++ PKGBUILD	2020-10-06 22:05:58 UTC (rev 397452)
@@ -4,7 +4,7 @@
 pkgbase=gtk3
 pkgname=(gtk3 gtk-update-icon-cache)
 pkgver=3.24.23
-pkgrel=3
+pkgrel=4
 epoch=1
 pkgdesc="GObject-based multi-platform GUI toolkit"
 arch=(x86_64)
@@ -18,11 +18,13 @@
 license=(LGPL)
 _commit=016e8c55ab924c9ef4d32c8cb06253b1dc1be60d  # tags/3.24.23^0
 source=("git+https://gitlab.gnome.org/GNOME/gtk.git#commit=$_commit"
+        0001-gtkplacessidebar-Disconnect-and-unref-cloud_manager-.patch
         settings.ini
         gtk-query-immodules-3.0.hook
         gtk-update-icon-cache.hook
         gtk-update-icon-cache.script)
 sha256sums=('SKIP'
+            'd6f6bf347482553bc20a1640c1619f674520b853a5b2ade9fd56bb77bfdfe170'
             '01fc1d81dc82c4a052ac6e25bf9a04e7647267cc3017bc91f9ce3e63e5eb9202'
             'a0319b6795410f06d38de1e8695a9bf9636ff2169f40701671580e60a108e229'
             '2d435e3bec8b79b533f00f6d04decb1d7c299c6e89b5b175f20be0459f003fe8'
@@ -35,6 +37,9 @@
 
 prepare() {
   cd gtk
+
+  # https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/2669
+  git apply -3 ../0001-gtkplacessidebar-Disconnect-and-unref-cloud_manager-.patch
 }
 
 build() {



More information about the arch-commits mailing list