Skip to content
Snippets Groups Projects
Unverified Commit 25622cc7 authored by Clayton Craft's avatar Clayton Craft :speech_balloon:
Browse files

temp/gtk+3.0: add patch to resolve a deadlock (MR 2325)

This fixes Phosh locking up on startup. This patch was merged in aports
edge.

fixes #1142
parent 2a1f6bdd
No related branches found
No related tags found
No related merge requests found
Pipeline #194215 passed
From 72ab4c46edbcbbf8985f42f5f0cee1b799ce5a91 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
Date: Wed, 26 May 2021 17:08:03 +0200
Subject: [PATCH] gtkapplication-dbus: Fetch inital screen saver state async
Avoid a sync call that can make the application block for no good
reason.
Fixes 6f6b5faaa216feed666b659d1cdfacd0c5c393d9
---
gtk/gtkapplication-dbus.c | 54 +++++++++++++++++++++++----------------
1 file changed, 32 insertions(+), 22 deletions(-)
diff --git a/gtk/gtkapplication-dbus.c b/gtk/gtkapplication-dbus.c
index a270354119..4951b1f558 100644
--- a/gtk/gtkapplication-dbus.c
+++ b/gtk/gtkapplication-dbus.c
@@ -227,6 +227,30 @@ screensaver_signal_portal (GDBusConnection *connection,
}
}
+static void
+ss_get_active_cb (GObject *source,
+ GAsyncResult *result,
+ gpointer data)
+{
+ GtkApplicationImplDBus *dbus = (GtkApplicationImplDBus *) data;
+ GDBusProxy *proxy = G_DBUS_PROXY (source);
+ GError *error = NULL;
+ GVariant *ret;
+ gboolean active;
+
+ ret = g_dbus_proxy_call_finish (proxy, result, &error);
+ if (ret == NULL)
+ {
+ g_warning ("Getting screensaver status failed: %s", error->message);
+ g_error_free (error);
+ return;
+ }
+
+ g_variant_get (ret, "(b)", &active);
+ g_variant_unref (ret);
+ gtk_application_set_screensaver_active (dbus->impl.application, active);
+}
+
static void
create_monitor_cb (GObject *source,
GAsyncResult *result,
@@ -329,31 +353,17 @@ gtk_application_impl_dbus_startup (GtkApplicationImpl *impl,
if (dbus->ss_proxy)
{
- GVariant *active_var;
- gboolean active;
-
g_signal_connect (dbus->ss_proxy, "g-signal",
G_CALLBACK (screensaver_signal_session), impl->application);
- active_var = g_dbus_proxy_call_sync (dbus->ss_proxy,
- "GetActive",
- NULL,
- G_DBUS_CALL_FLAGS_NONE,
- G_MAXINT,
- NULL,
- &error);
- if (!active_var)
- {
- g_debug ("Error calling GetActive on GNOME screensaver: %s",
- error->message);
- g_clear_error (&error);
- }
- else
- {
- g_variant_get (active_var, "(b)", &active);
- g_variant_unref (active_var);
- gtk_application_set_screensaver_active (dbus->impl.application, active);
- }
+ g_dbus_proxy_call (dbus->ss_proxy,
+ "GetActive",
+ NULL,
+ G_DBUS_CALL_FLAGS_NONE,
+ G_MAXINT,
+ NULL,
+ ss_get_active_cb,
+ dbus);
}
g_debug ("Registering client '%s' '%s'", dbus->application_id, client_id);
--
GitLab
# Forked from Alpine to apply Purism's patches for responsivness
pkgname=gtk+3.0
pkgver=9999_git20210319
pkgrel=0
pkgrel=1
_commit="f9d568742a919e5bd92ceed4cc2db9f9239cc7fe"
pkgdesc="The GTK+ Toolkit (v3)"
url="https://www.gtk.org/"
......@@ -59,6 +59,7 @@ checkdepends="
gdk-pixbuf
"
source="https://source.puri.sm/Librem5/gtk/-/archive/$_commit/gtk-$_commit.tar.gz
0001-gtkapplication-dbus-Fetch-inital-screen-saver-state-async.patch
"
builddir="$srcdir/gtk-$_commit"
......@@ -135,4 +136,7 @@ doc() {
default_doc
}
sha512sums="07f1930033f9e3e399915e862c34c99aa3c2bd46e3f6f3232a7d47d64a48d14dd836e42b5a6970c47e5bc11b3d26535d9b43c1c42c80152bf2b4444f0cc4b547 gtk-f9d568742a919e5bd92ceed4cc2db9f9239cc7fe.tar.gz"
sha512sums="
07f1930033f9e3e399915e862c34c99aa3c2bd46e3f6f3232a7d47d64a48d14dd836e42b5a6970c47e5bc11b3d26535d9b43c1c42c80152bf2b4444f0cc4b547 gtk-f9d568742a919e5bd92ceed4cc2db9f9239cc7fe.tar.gz
0f166e3db57d4abbf6c540f09ca32c9f52fe02634c32b0808cd863824cfd1607877fcaff54299605b834c43ecb4bc4a02c0ccfaed02ed728b728523fe385d054 0001-gtkapplication-dbus-Fetch-inital-screen-saver-state-async.patch
"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment