diff options
Diffstat (limited to 'src/modem-manager')
| -rw-r--r-- | src/modem-manager/Makefile.am | 14 | ||||
| -rw-r--r-- | src/modem-manager/Makefile.in | 20 | ||||
| -rw-r--r-- | src/modem-manager/nm-modem-manager.c | 71 |
3 files changed, 58 insertions, 47 deletions
diff --git a/src/modem-manager/Makefile.am b/src/modem-manager/Makefile.am index aa5534fc..012d26ea 100644 --- a/src/modem-manager/Makefile.am +++ b/src/modem-manager/Makefile.am @@ -1,6 +1,8 @@ include $(GLIB_MAKEFILE) -INCLUDES = \ +noinst_LTLIBRARIES = libmodem-manager.la + +libmodem_manager_la_CPPFLAGS = \ -I${top_srcdir}/src \ -I${top_builddir}/src/generated \ -I${top_srcdir}/src/generated \ @@ -8,9 +10,9 @@ INCLUDES = \ -I${top_builddir}/include \ -I${top_srcdir}/include \ -I${top_builddir}/libnm-util \ - -I${top_srcdir}/libnm-util - -noinst_LTLIBRARIES = libmodem-manager.la + -I${top_srcdir}/libnm-util \ + $(LIBNL_CFLAGS) \ + $(DBUS_CFLAGS) libmodem_manager_la_SOURCES = \ nm-modem.c \ @@ -25,10 +27,6 @@ libmodem_manager_la_SOURCES = \ nm-modem-manager.c \ nm-modem-types.h -libmodem_manager_la_CPPFLAGS = \ - $(LIBNL_CFLAGS) \ - $(DBUS_CFLAGS) - libmodem_manager_la_LIBADD = \ $(top_builddir)/src/generated/libnm-generated.la \ $(top_builddir)/src/logging/libnm-logging.la \ diff --git a/src/modem-manager/Makefile.in b/src/modem-manager/Makefile.in index ea79607f..d945f9c9 100644 --- a/src/modem-manager/Makefile.in +++ b/src/modem-manager/Makefile.in @@ -225,6 +225,7 @@ DEPDIR = @DEPDIR@ DHCLIENT_PATH = @DHCLIENT_PATH@ DHCPCD_PATH = @DHCPCD_PATH@ DLLTOOL = @DLLTOOL@ +DNSMASQ_PATH = @DNSMASQ_PATH@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ @@ -247,6 +248,7 @@ GNUTLS_CFLAGS = @GNUTLS_CFLAGS@ GNUTLS_LIBS = @GNUTLS_LIBS@ GREP = @GREP@ GTKDOC_CHECK = @GTKDOC_CHECK@ +GTKDOC_CHECK_PATH = @GTKDOC_CHECK_PATH@ GTKDOC_DEPS_CFLAGS = @GTKDOC_DEPS_CFLAGS@ GTKDOC_DEPS_LIBS = @GTKDOC_DEPS_LIBS@ GTKDOC_MKPDF = @GTKDOC_MKPDF@ @@ -431,23 +433,17 @@ with_dhclient = @with_dhclient@ with_dhcpcd = @with_dhcpcd@ with_netconfig = @with_netconfig@ with_resolvconf = @with_resolvconf@ -INCLUDES = \ - -I${top_srcdir}/src \ - -I${top_builddir}/src/generated \ - -I${top_srcdir}/src/generated \ - -I${top_srcdir}/src/logging \ - -I${top_builddir}/include \ - -I${top_srcdir}/include \ - -I${top_builddir}/libnm-util \ - -I${top_srcdir}/libnm-util - noinst_LTLIBRARIES = libmodem-manager.la +libmodem_manager_la_CPPFLAGS = -I${top_srcdir}/src \ + -I${top_builddir}/src/generated -I${top_srcdir}/src/generated \ + -I${top_srcdir}/src/logging -I${top_builddir}/include \ + -I${top_srcdir}/include -I${top_builddir}/libnm-util \ + -I${top_srcdir}/libnm-util $(LIBNL_CFLAGS) $(DBUS_CFLAGS) \ + $(am__append_2) libmodem_manager_la_SOURCES = nm-modem.c nm-modem.h nm-modem-generic.c \ nm-modem-generic.h nm-modem-cdma.c nm-modem-cdma.h \ nm-modem-gsm.c nm-modem-gsm.h nm-modem-manager.h \ nm-modem-manager.c nm-modem-types.h $(am__append_1) -libmodem_manager_la_CPPFLAGS = $(LIBNL_CFLAGS) $(DBUS_CFLAGS) \ - $(am__append_2) libmodem_manager_la_LIBADD = \ $(top_builddir)/src/generated/libnm-generated.la \ $(top_builddir)/src/logging/libnm-logging.la $(LIBNL_LIBS) \ diff --git a/src/modem-manager/nm-modem-manager.c b/src/modem-manager/nm-modem-manager.c index dd01646e..7b566ca4 100644 --- a/src/modem-manager/nm-modem-manager.c +++ b/src/modem-manager/nm-modem-manager.c @@ -51,7 +51,7 @@ struct _NMModemManagerPrivate { /* ModemManager >= 0.7 */ GDBusConnection *dbus_connection; MMManager *modem_manager_1; - guint modem_manager_1_poke_id; + guint modem_manager_1_launch_id; gboolean old_modem_manager_found; gboolean new_modem_manager_found; guint modem_manager_1_name_owner_changed_id; @@ -442,9 +442,9 @@ modem_manager_1_clear_signals (NMModemManager *self) static void clear_modem_manager_1_support (NMModemManager *self) { - if (self->priv->modem_manager_1_poke_id) { - g_source_remove (self->priv->modem_manager_1_poke_id); - self->priv->modem_manager_1_poke_id = 0; + if (self->priv->modem_manager_1_launch_id) { + g_source_remove (self->priv->modem_manager_1_launch_id); + self->priv->modem_manager_1_launch_id = 0; } modem_manager_1_clear_signals (self); @@ -545,15 +545,20 @@ modem_manager_1_name_owner_changed (MMManager *modem_manager_1, gchar *name_owner; /* Quit poking, if any */ - if (self->priv->modem_manager_1_poke_id) { - g_source_remove (self->priv->modem_manager_1_poke_id); - self->priv->modem_manager_1_poke_id = 0; + if (self->priv->modem_manager_1_launch_id) { + g_source_remove (self->priv->modem_manager_1_launch_id); + self->priv->modem_manager_1_launch_id = 0; } name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (modem_manager_1)); if (!name_owner) { nm_log_info (LOGD_MB, "ModemManager disappeared from bus"); + +#if !HAVE_SYSTEMD + /* If not managed by systemd, schedule relaunch */ schedule_modem_manager_1_relaunch (self, 0); +#endif + return; } @@ -573,6 +578,8 @@ modem_manager_1_name_owner_changed (MMManager *modem_manager_1, */ } +#if !HAVE_SYSTEMD + static void modem_manager_1_poke_cb (GDBusConnection *connection, GAsyncResult *res, @@ -606,18 +613,7 @@ modem_manager_1_poke_cb (GDBusConnection *connection, static void modem_manager_1_poke (NMModemManager *self) { - gchar *name_owner; - /* If there is no current owner right away, ensure we poke to get one */ - name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (self->priv->modem_manager_1)); - if (name_owner) { - /* Available! */ - modem_manager_1_available (self); - g_free (name_owner); - return; - } - - /* Poke! */ g_dbus_connection_call (self->priv->dbus_connection, "org.freedesktop.ModemManager1", "/org/freedesktop/ModemManager1", @@ -632,6 +628,27 @@ modem_manager_1_poke (NMModemManager *self) g_object_ref (self)); /* user_data */ } +#endif /* HAVE_SYSTEMD */ + +static void +modem_manager_1_check_name_owner (NMModemManager *self) +{ + gchar *name_owner; + + name_owner = g_dbus_object_manager_client_get_name_owner (G_DBUS_OBJECT_MANAGER_CLIENT (self->priv->modem_manager_1)); + if (name_owner) { + /* Available! */ + modem_manager_1_available (self); + g_free (name_owner); + return; + } + +#if !HAVE_SYSTEMD + /* If the lifecycle is not managed by systemd, poke */ + modem_manager_1_poke (self); +#endif +} + static void manager_new_ready (GObject *source, GAsyncResult *res, @@ -671,8 +688,8 @@ manager_new_ready (GObject *source, "object-removed", G_CALLBACK (modem_object_removed), self); - /* Poke the MMManager! */ - modem_manager_1_poke (self); + + modem_manager_1_check_name_owner (self); } /* Balance refcount */ @@ -696,8 +713,8 @@ ensure_client (NMModemManager *self) return; } - /* If already available, poke! */ - modem_manager_1_poke (self); + /* If already available, recheck name owner! */ + modem_manager_1_check_name_owner (self); } static void @@ -719,7 +736,7 @@ bus_get_ready (GObject *source, /* If we found the old MM, abort */ clear_modem_manager_1_support (self); } else { - /* Got the bus, create new ModemManager client. */ + /* Got the bus, ensure client */ ensure_client (self); } @@ -730,8 +747,8 @@ bus_get_ready (GObject *source, static gboolean ensure_bus (NMModemManager *self) { - /* Clear poke ID */ - self->priv->modem_manager_1_poke_id = 0; + /* Clear launch ID */ + self->priv->modem_manager_1_launch_id = 0; if (!self->priv->dbus_connection) g_bus_get (G_BUS_TYPE_SYSTEM, @@ -753,9 +770,9 @@ schedule_modem_manager_1_relaunch (NMModemManager *self, * cancelled if the object gets disposed. */ if (n_seconds) - self->priv->modem_manager_1_poke_id = g_timeout_add_seconds (n_seconds, (GSourceFunc)ensure_bus, self); + self->priv->modem_manager_1_launch_id = g_timeout_add_seconds (n_seconds, (GSourceFunc)ensure_bus, self); else - self->priv->modem_manager_1_poke_id = g_idle_add ((GSourceFunc)ensure_bus, self); + self->priv->modem_manager_1_launch_id = g_idle_add ((GSourceFunc)ensure_bus, self); } #endif /* WITH_MODEM_MANAGER_1 */ |