[gnome-software] trivial: Do not assume g_network_monitor_get_default() will return non-NULL
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] trivial: Do not assume g_network_monitor_get_default() will return non-NULL
- Date: Mon, 1 Feb 2016 16:31:34 +0000 (UTC)
commit a0136b192e9667f07daddbd0b4f7232ff08d6ec1
Author: Richard Hughes <richard hughsie com>
Date: Mon Feb 1 16:15:28 2016 +0000
trivial: Do not assume g_network_monitor_get_default() will return non-NULL
src/gs-application.c | 7 ++++++-
src/gs-shell-updates.c | 31 +++++++++++++++++++++++--------
src/gs-update-monitor.c | 10 ++++++++--
3 files changed, 37 insertions(+), 11 deletions(-)
---
diff --git a/src/gs-application.c b/src/gs-application.c
index c5681a1..8a177d3 100644
--- a/src/gs-application.c
+++ b/src/gs-application.c
@@ -173,7 +173,12 @@ network_changed_cb (GNetworkMonitor *monitor,
static void
gs_application_monitor_network (GsApplication *app)
{
- app->network_monitor = g_object_ref (g_network_monitor_get_default ());
+ GNetworkMonitor *network_monitor;
+
+ network_monitor = g_network_monitor_get_default ();
+ if (network_monitor == NULL)
+ return;
+ app->network_monitor = g_object_ref (network_monitor);
g_signal_connect (app->network_monitor, "network-changed",
G_CALLBACK (network_changed_cb), app);
diff --git a/src/gs-shell-updates.c b/src/gs-shell-updates.c
index 7327a5e..08e83bd 100644
--- a/src/gs-shell-updates.c
+++ b/src/gs-shell-updates.c
@@ -203,6 +203,7 @@ static void
gs_shell_updates_update_ui_state (GsShellUpdates *self)
{
GtkWidget *widget;
+ gboolean allow_mobile_refresh = TRUE;
g_autofree gchar *checked_str = NULL;
g_autofree gchar *spinner_str = NULL;
@@ -305,9 +306,11 @@ gs_shell_updates_update_ui_state (GsShellUpdates *self)
gtk_image_set_from_icon_name (GTK_IMAGE (widget),
"view-refresh-symbolic", GTK_ICON_SIZE_MENU);
widget = GTK_WIDGET (gtk_builder_get_object (self->builder, "button_refresh"));
- gtk_widget_set_visible (widget,
- !g_network_monitor_get_network_metered (self->network_monitor) ||
- self->has_agreed_to_mobile_data);
+ if (self->network_monitor != NULL &&
+ g_network_monitor_get_network_metered (self->network_monitor) &&
+ !self->has_agreed_to_mobile_data)
+ allow_mobile_refresh = FALSE;
+ gtk_widget_set_visible (widget, allow_mobile_refresh);
break;
default:
g_assert_not_reached ();
@@ -343,9 +346,13 @@ gs_shell_updates_update_ui_state (GsShellUpdates *self)
break;
case GS_SHELL_UPDATES_STATE_NO_UPDATES:
+ /* we just don't know */
+ if (self->network_monitor == NULL) {
+ gtk_stack_set_visible_child_name (GTK_STACK (self->stack_updates), "uptodate");
+
/* check we have a "free" network connection */
- if (g_network_monitor_get_network_available (self->network_monitor) &&
- !g_network_monitor_get_network_metered (self->network_monitor)) {
+ } else if (g_network_monitor_get_network_available (self->network_monitor) &&
+ !g_network_monitor_get_network_metered (self->network_monitor)) {
gtk_stack_set_visible_child_name (GTK_STACK (self->stack_updates), "uptodate");
/* expensive network connection */
@@ -744,6 +751,12 @@ gs_shell_updates_button_refresh_cb (GtkWidget *widget,
return;
}
+ /* we don't know the network state */
+ if (self->network_monitor == NULL) {
+ gs_shell_updates_get_new_updates (self);
+ return;
+ }
+
/* check we have a "free" network connection */
if (g_network_monitor_get_network_available (self->network_monitor) &&
!g_network_monitor_get_network_metered (self->network_monitor)) {
@@ -988,9 +1001,11 @@ gs_shell_updates_setup (GsShellUpdates *self,
gs_shell_updates_monitor_permission (self);
- g_signal_connect (self->network_monitor, "network-changed",
- G_CALLBACK (gs_shell_updates_notify_network_state_cb),
- self);
+ if (self->network_monitor != NULL) {
+ g_signal_connect (self->network_monitor, "network-changed",
+ G_CALLBACK (gs_shell_updates_notify_network_state_cb),
+ self);
+ }
/* chain up */
gs_page_setup (GS_PAGE (self),
diff --git a/src/gs-update-monitor.c b/src/gs-update-monitor.c
index 0f58906..21d00c6 100644
--- a/src/gs-update-monitor.c
+++ b/src/gs-update-monitor.c
@@ -287,6 +287,10 @@ check_updates (GsUpdateMonitor *monitor)
g_autoptr(GDateTime) last_refreshed = NULL;
g_autoptr(GDateTime) now_refreshed = NULL;
+ /* we don't know the network state */
+ if (monitor->network_monitor == NULL)
+ return;
+
/* never refresh when offline or on mobile connections */
if (!g_network_monitor_get_network_available (monitor->network_monitor) ||
g_network_monitor_get_network_metered (monitor->network_monitor))
@@ -658,8 +662,10 @@ gs_update_monitor_init (GsUpdateMonitor *monitor)
monitor->cancellable = g_cancellable_new ();
monitor->network_monitor = g_network_monitor_get_default ();
- g_signal_connect (monitor->network_monitor, "network-changed",
- G_CALLBACK (notify_network_state_cb), monitor);
+ if (monitor->network_monitor != NULL) {
+ g_signal_connect (monitor->network_monitor, "network-changed",
+ G_CALLBACK (notify_network_state_cb), monitor);
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]