[gtk+/gtk-3-8] GtkApplication: Do not assert sm_proxy != NULL in inhibit functions
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-3-8] GtkApplication: Do not assert sm_proxy != NULL in inhibit functions
- Date: Fri, 30 Aug 2013 11:11:22 +0000 (UTC)
commit 463d12cfcd7e1577c4ec0f11631f7b97bcf22e85
Author: Matt Barnes <mbarnes redhat com>
Date: Sun Jul 28 16:09:58 2013 -0400
GtkApplication: Do not assert sm_proxy != NULL in inhibit functions
Applications have no way of finding out if a session manager proxy was
successfully created in gtk_application_startup_session_dbus(), so it's not
appropriate for certain public GtkApplication functions to be asserting the
presence of a session manager proxy as if it were a programmer error.
This affects:
gtk_application_inhibit()
gtk_application_is_inhibited()
If sm_proxy is NULL, the function should just return silently.
In the case of gtk_application_uninhibit(), the application should only be
calling this if it obtained a valid cookie, which implies the presence of a
session manager proxy. I noted that with a comment.
https://bugzilla.gnome.org/show_bug.cgi?id=701365
gtk/gtkapplication.c | 12 ++++++++++--
1 files changed, 10 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkapplication.c b/gtk/gtkapplication.c
index d605846..817a30a 100644
--- a/gtk/gtkapplication.c
+++ b/gtk/gtkapplication.c
@@ -1422,7 +1422,9 @@ gtk_application_inhibit (GtkApplication *application,
g_return_val_if_fail (GTK_IS_APPLICATION (application), 0);
g_return_val_if_fail (!g_application_get_is_remote (G_APPLICATION (application)), 0);
- g_return_val_if_fail (application->priv->sm_proxy != NULL, 0);
+
+ if (application->priv->sm_proxy == NULL)
+ return 0;
if (window != NULL)
{
@@ -1477,6 +1479,10 @@ gtk_application_uninhibit (GtkApplication *application,
{
g_return_if_fail (GTK_IS_APPLICATION (application));
g_return_if_fail (!g_application_get_is_remote (G_APPLICATION (application)));
+ g_return_if_fail (cookie > 0);
+
+ /* Application could only obtain a cookie through a session
+ * manager proxy, so it's valid to assert its presence here. */
g_return_if_fail (application->priv->sm_proxy != NULL);
g_dbus_proxy_call (application->priv->sm_proxy,
@@ -1509,7 +1515,9 @@ gtk_application_is_inhibited (GtkApplication *application,
g_return_val_if_fail (GTK_IS_APPLICATION (application), FALSE);
g_return_val_if_fail (!g_application_get_is_remote (G_APPLICATION (application)), FALSE);
- g_return_val_if_fail (application->priv->sm_proxy != NULL, FALSE);
+
+ if (application->priv->sm_proxy == NULL)
+ return FALSE;
res = g_dbus_proxy_call_sync (application->priv->sm_proxy,
"IsInhibited",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]