diff --git a/.network-manager-applet.metadata b/.network-manager-applet.metadata index 3a7c238..9b3c277 100644 --- a/.network-manager-applet.metadata +++ b/.network-manager-applet.metadata @@ -1 +1 @@ -61c227abe9483af9c15c7c13c0008d3d77665ce7 SOURCES/network-manager-applet-0.9.9.0.git20131108.tar.bz2 +08b021cb3cf8fbf5d05e438813b0d756e387700d SOURCES/network-manager-applet-0.9.9.0.git20140307.7fd6433.tar.bz2 diff --git a/SOURCES/rh1054212-bluetooth.patch b/SOURCES/rh1054212-bluetooth.patch new file mode 100644 index 0000000..b46009a --- /dev/null +++ b/SOURCES/rh1054212-bluetooth.patch @@ -0,0 +1,173 @@ +From 958a2612a550c8433537a73c253c9951f7015049 Mon Sep 17 00:00:00 2001 +From: Dan Winship +Date: Wed, 26 Mar 2014 12:08:34 -0400 +Subject: [PATCH] bluetooth: fix ModemManager1 code + +The ModemManager1 code was assuming that the modem object would not be +created until after the Bluez Connect call returned, but that's only +true if this is the first time you tried to use it in the session. Fix +it. + +NOTE: The MM 0.7 code is presumably also broken in the same way, but +is not fixed by the patch. +--- + src/gnome-bluetooth/nma-bt-device.c | 94 ++++++++++++++++++++----------------- + 1 file changed, 52 insertions(+), 42 deletions(-) + +diff --git a/src/gnome-bluetooth/nma-bt-device.c b/src/gnome-bluetooth/nma-bt-device.c +index 8426242..3a33dce 100644 +--- a/src/gnome-bluetooth/nma-bt-device.c ++++ b/src/gnome-bluetooth/nma-bt-device.c +@@ -641,10 +641,9 @@ modem_removed (DBusGProxy *proxy, const char *path, gpointer user_data) + + #if WITH_MODEM_MANAGER_1 + +-static void +-modem_object_added (MMManager *modem_manager, +- MMObject *modem_object, +- NmaBtDevice *self) ++static gboolean ++check_modem (NmaBtDevice *self, ++ MMObject *modem_object) + { + NmaBtDevicePrivate *priv = NMA_BT_DEVICE_GET_PRIVATE (self); + NMDeviceType devtype = NM_DEVICE_TYPE_UNKNOWN; +@@ -659,11 +658,11 @@ modem_object_added (MMManager *modem_manager, + + /* Ensure we have the 'Modem' interface at least */ + modem_iface = mm_object_peek_modem (modem_object); +- g_return_if_fail (modem_iface != NULL); ++ g_return_val_if_fail (modem_iface != NULL, FALSE); + + /* Get modem's primary port */ + primary_port = mm_modem_get_primary_port (modem_iface); +- g_return_if_fail (primary_port != NULL); ++ g_return_val_if_fail (primary_port != NULL, FALSE); + + /* Get rfcomm iface name */ + iface_basename = g_path_get_basename (priv->rfcomm_iface); +@@ -672,7 +671,7 @@ modem_object_added (MMManager *modem_manager, + if (!g_str_equal (primary_port, iface_basename)) { + g_message ("%s: (%s) (%s) not the modem we're looking for (%s)", + __func__, path, primary_port, iface_basename); +- return; ++ return FALSE; + } + + /* This is the modem we were waiting for, so keep on */ +@@ -691,14 +690,16 @@ modem_object_added (MMManager *modem_manager, + + /* Launch wizard! */ + start_wizard (self, path, devtype); ++ ++ return TRUE; + } + + static void +-modem_object_removed (MMManager *manager, +- MMObject *modem_object, +- NmaBtDevice *self) ++modem_object_added (MMManager *modem_manager, ++ MMObject *modem_object, ++ NmaBtDevice *self) + { +- g_message ("%s: (%s) modem removed", __func__, mm_object_get_path (modem_object)); ++ check_modem (self, modem_object); + } + + #endif /* WITH_MODEM_MANAGER_1 */ +@@ -712,6 +713,10 @@ dun_connect_cb (DBusGProxy *proxy, + NmaBtDevicePrivate *priv = NMA_BT_DEVICE_GET_PRIVATE (self); + GError *error = NULL; + char *device; ++#if WITH_MODEM_MANAGER_1 ++ GList *modems, *iter; ++ gboolean matched = FALSE; ++#endif + + g_message ("%s: processing Connect reply", __func__); + +@@ -733,6 +738,42 @@ dun_connect_cb (DBusGProxy *proxy, + priv->rfcomm_iface = device; + g_message ("%s: new rfcomm interface '%s'", __func__, device); + ++#if WITH_MODEM_MANAGER_1 ++ /* ModemManager1 stuff */ ++ priv->dbus_connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error); ++ if (!priv->dbus_connection) { ++ dun_error (self, __func__, error, _("error getting bus connection")); ++ g_error_free (error); ++ goto out; ++ } ++ ++ priv->modem_manager_1 = mm_manager_new_sync (priv->dbus_connection, ++ G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE, ++ NULL, ++ &error); ++ if (!priv->modem_manager_1) { ++ dun_error (self, __func__, error, "error creating modem manager"); ++ g_error_free (error); ++ goto out; ++ } ++ ++ modems = g_dbus_object_manager_get_objects (G_DBUS_OBJECT_MANAGER (priv->modem_manager_1)); ++ for (iter = modems; iter; iter = iter->next) { ++ if (check_modem (self, iter->data)) { ++ matched = TRUE; ++ break; ++ } ++ } ++ g_list_free_full (modems, g_object_unref); ++ ++ if (!matched) { ++ g_signal_connect (priv->modem_manager_1, ++ "object-added", ++ G_CALLBACK (modem_object_added), ++ self); ++ } ++#endif ++ + out: + g_message ("%s: finished", __func__); + } +@@ -801,37 +842,6 @@ dun_start (NmaBtDevice *self) + G_CALLBACK (modem_removed), self, + NULL); + +-#if WITH_MODEM_MANAGER_1 +- /* ModemManager1 stuff */ +- { +- GError *error = NULL; +- +- priv->dbus_connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error); +- if (!priv->dbus_connection) { +- dun_error (self, __func__, error, _("error getting bus connection")); +- g_error_free (error); +- } else { +- priv->modem_manager_1 = mm_manager_new_sync (priv->dbus_connection, +- G_DBUS_OBJECT_MANAGER_CLIENT_FLAGS_NONE, +- NULL, +- &error); +- if (!priv->modem_manager_1) { +- dun_error (self, __func__, error, "error creating modem manager"); +- g_error_free (error); +- } else { +- g_signal_connect (priv->modem_manager_1, +- "object-added", +- G_CALLBACK (modem_object_added), +- self); +- g_signal_connect (priv->modem_manager_1, +- "object-removed", +- G_CALLBACK (modem_object_removed), +- self); +- } +- } +- } +-#endif +- + /* Bluez */ + priv->dun_proxy = dbus_g_proxy_new_for_name (priv->bus, + BLUEZ_SERVICE, +-- +1.8.5.3 + diff --git a/SPECS/network-manager-applet.spec b/SPECS/network-manager-applet.spec index b60f121..d68b16e 100644 --- a/SPECS/network-manager-applet.spec +++ b/SPECS/network-manager-applet.spec @@ -5,22 +5,24 @@ %define nm_version 1:0.9.9.0 %define obsoletes_ver 1:0.9.7 -%define snapshot .git20131108 +%define snapshot .git20140307 +%define git_sha .7fd6433 %define realversion 0.9.9.0 Name: network-manager-applet Summary: A network control and status applet for NetworkManager Version: 0.9.9.0 -Release: 8%{snapshot}%{?dist} +Release: 15%{snapshot}%{?dist} Group: Applications/System License: GPLv2+ URL: http://www.gnome.org/projects/NetworkManager/ Obsoletes: NetworkManager-gnome < %{obsoletes_ver} -Source: http://ftp.gnome.org/pub/GNOME/sources/network-manager-applet/0.9/%{name}-%{realversion}%{snapshot}.tar.bz2 +Source: http://ftp.gnome.org/pub/GNOME/sources/network-manager-applet/0.9/%{name}-%{realversion}%{snapshot}%{git_sha}.tar.bz2 Patch0: nm-applet-no-notifications.patch Patch1: nm-applet-wifi-dialog-ui-fixes.patch Patch2: applet-ignore-deprecated.patch +Patch3: rh1054212-bluetooth.patch Requires: NetworkManager >= %{nm_version} Requires: NetworkManager-glib >= %{nm_version} @@ -33,6 +35,7 @@ Requires: nm-connection-editor = %{version}-%{release} BuildRequires: NetworkManager-devel >= %{nm_version} BuildRequires: NetworkManager-glib-devel >= %{nm_version} +BuildRequires: ModemManager-glib-devel >= 1.0 BuildRequires: dbus-devel >= %{dbus_version} BuildRequires: dbus-glib-devel >= %{dbus_glib_version} BuildRequires: glib2-devel >= %{glib2_version} @@ -104,6 +107,7 @@ nm-applet, nm-connection-editor, and the GNOME control center. %patch0 -p1 -b .no-notifications %patch1 -p1 -b .applet-wifi-ui %patch2 -p1 -b .no-deprecated +%patch3 -p1 -b .bluetooth %build autoreconf -i -f @@ -111,6 +115,7 @@ intltoolize --force %configure \ --disable-static \ --with-bluetooth \ + --with-modem-manager-1=yes \ --enable-more-warnings=yes \ --disable-migration make %{?_smp_mflags} @@ -220,7 +225,32 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || : %{_datadir}/gir-1.0/NMGtk-1.0.gir %changelog -* Fri Nov 8 2013 Dan Williams - 0.9.9.0-7.git20131108 +* Wed Mar 26 2014 Dan Winship - 0.9.9.0-15.git20140307 +- Make Bluetooth plugin work more than once (rh #1054212) + +* Thu Mar 20 2014 Dan Winship - 0.9.9.0-14.git20140307 +- Add ModemManager-glib-devel to BuildRequires to fix Bluetooth (rh #1054212) + +* Fri Mar 7 2014 Jiří Klimeš - 0.9.9.0-13.git20140307 +- Update to new git master snapshot +- connection-editor: allow VLANs/slaves of more device types (rh #1045203) +- connection-editor: add DCB configuration UI (bgo #711032) (rh #1068688) + +* Fri Jan 24 2014 Daniel Mach - 0.9.9.0-12.git20131212 +- Mass rebuild 2014-01-24 + +* Wed Jan 15 2014 Dan Winship - 0.9.9.0-11.git20131212 +- Fix keyboard activation of bridge priority field (rh #1036142) + +* Fri Dec 27 2013 Daniel Mach - 0.9.9.0-10.git20131212 +- Mass rebuild 2013-12-27 + +* Fri Dec 13 2013 Dan Williams - 0.9.9.0-9.git20131212 +- applet: fix crash if some resources were not available (rh #1034500) +- editor: default to user-saved secrets and allow changing secret storage (rh #879566) +- applet/editor: fix various Coverity-found defects (rh #1025894) + +* Fri Nov 8 2013 Dan Williams - 0.9.9.0-8.git20131108 - editor: improve handling of NPAR/SRIOV devices in bonds (rh #804527) - editor: allow creating bridge masters without slaves