commit 14bc093e253b63ad536d88ffb34e268f1aa2e9a3
parent 5186e70c68752f37722238f366c097cee7066685
Author: Colin Leroy <colin@colino.net>
Date: Mon, 18 Feb 2008 17:41:40 +0000
2008-02-18 [colin] 3.3.0cvs16
* src/imap.c
Unset folder's session before creating a
new one
* src/main.c
* src/prefs_common.c
* src/prefs_common.h
* manual/advanced.xml
Add an hidden use_networkmanager pref, to
disable NetworkManager handling. Also,
consider UNKNOWN state to be CONNECTED.
Diffstat:
8 files changed, 55 insertions(+), 17 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,16 @@
+2008-02-18 [colin] 3.3.0cvs16
+
+ * src/imap.c
+ Unset folder's session before creating a
+ new one
+ * src/main.c
+ * src/prefs_common.c
+ * src/prefs_common.h
+ * manual/advanced.xml
+ Add an hidden use_networkmanager pref, to
+ disable NetworkManager handling. Also,
+ consider UNKNOWN state to be CONNECTED.
+
2008-02-18 [wwp] 3.3.0cvs15
* src/matcher.c
diff --git a/PATCHSETS b/PATCHSETS
@@ -3229,3 +3229,4 @@
( cvs diff -u -r 1.115.2.186 -r 1.115.2.187 src/main.c; cvs diff -u -r 1.382.2.437 -r 1.382.2.438 src/compose.c; ) > 3.3.0cvs13.patchset
( cvs diff -u -r 1.75.2.55 -r 1.75.2.56 src/matcher.c; ) > 3.3.0cvs14.patchset
( cvs diff -u -r 1.75.2.56 -r 1.75.2.57 src/matcher.c; ) > 3.3.0cvs15.patchset
+( cvs diff -u -r 1.179.2.210 -r 1.179.2.211 src/imap.c; cvs diff -u -r 1.115.2.187 -r 1.115.2.188 src/main.c; cvs diff -u -r 1.204.2.161 -r 1.204.2.162 src/prefs_common.c; cvs diff -u -r 1.103.2.104 -r 1.103.2.105 src/prefs_common.h; cvs diff -u -r 1.1.2.44 -r 1.1.2.45 manual/advanced.xml; ) > 3.3.0cvs16.patchset
diff --git a/configure.ac b/configure.ac
@@ -11,7 +11,7 @@ MINOR_VERSION=3
MICRO_VERSION=0
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=15
+EXTRA_VERSION=16
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
diff --git a/manual/advanced.xml b/manual/advanced.xml
@@ -723,6 +723,15 @@
</listitem>
</varlistentry>
<varlistentry>
+ <term><literal>use_networkmanager</literal></term>
+ <listitem>
+ <para>
+ Use NetworkManager to switch offline automatically. This is enabled
+ by default.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
<term><literal>use_stripes_everywhere</literal></term>
<listitem>
<para>
diff --git a/src/imap.c b/src/imap.c
@@ -1006,8 +1006,11 @@ static IMAPSession *imap_session_get(Folder *folder)
debug_print("disconnected!\n");
if (!is_fatal(r))
session = imap_reconnect_if_possible(folder, session);
- else
+ else {
+ rfolder->session = NULL;
+ rfolder->connecting = FALSE;
session = imap_session_get(folder);
+ }
}
if (session)
session->cancelled = FALSE;
diff --git a/src/main.c b/src/main.c
@@ -1014,8 +1014,8 @@ int main(int argc, char *argv[])
"org.freedesktop.NetworkManager");
dbus_g_proxy_add_signal(proxy,"StateChange", G_TYPE_UINT, G_TYPE_INVALID);
dbus_g_proxy_connect_signal(proxy, "StateChange",
- G_CALLBACK(networkmanager_state_change_cb),
- NULL,NULL);
+ G_CALLBACK(networkmanager_state_change_cb),
+ NULL,NULL);
}
#endif
@@ -2354,17 +2354,20 @@ osso_context_t *get_osso_context(void)
#ifdef HAVE_NETWORKMANAGER_SUPPORT
static void networkmanager_state_change_cb(DBusGProxy *proxy, gchar *dev,
- gpointer data)
+ gpointer data)
{
MainWindow *mainWin;
mainWin = NULL;
- if(static_mainwindow)
+ if (static_mainwindow)
mainWin = static_mainwindow;
- else if(data)
+ else if (data)
mainWin = (MainWindow*)data;
- if(mainWin) {
+ if (!prefs_common.use_networkmanager)
+ return;
+
+ if (mainWin) {
GError *error;
gboolean online;
@@ -2375,11 +2378,13 @@ static void networkmanager_state_change_cb(DBusGProxy *proxy, gchar *dev,
went_offline_nm = FALSE;
main_window_toggle_work_offline(mainWin, FALSE, FALSE);
debug_print("NetworkManager: Went online\n");
+ log_message(LOG_PROTOCOL, _("NetworkManager: network is online."));
}
else if(!online) {
went_offline_nm = TRUE;
main_window_toggle_work_offline(mainWin, TRUE, FALSE);
debug_print("NetworkManager: Went offline\n");
+ log_message(LOG_PROTOCOL, _("NetworkManager: network is offline."));
}
}
else {
@@ -2397,16 +2402,19 @@ static void networkmanager_state_change_cb(DBusGProxy *proxy, gchar *dev,
gboolean networkmanager_is_online(GError **error)
{
DBusGConnection *connection;
- DBusGProxy *proxy;
+ DBusGProxy *proxy;
GError *tmp_error;
gboolean retVal;
guint32 state;
+ if (!prefs_common.use_networkmanager)
+ return TRUE;
+
tmp_error = NULL;
proxy = NULL;
- connection = dbus_g_bus_get(DBUS_BUS_SYSTEM, &tmp_error);
+ connection = dbus_g_bus_get(DBUS_BUS_SYSTEM, &tmp_error);
- if(!connection) {
+ if(!connection) {
/* If calling code doesn't do error checking, at least print some debug */
if((error == NULL) || (*error == NULL))
debug_print("Failed to open connection to system bus: %s\n",
@@ -2416,12 +2424,12 @@ gboolean networkmanager_is_online(GError **error)
}
proxy = dbus_g_proxy_new_for_name(connection,
- "org.freedesktop.NetworkManager",
- "/org/freedesktop/NetworkManager",
- "org.freedesktop.NetworkManager");
+ "org.freedesktop.NetworkManager",
+ "/org/freedesktop/NetworkManager",
+ "org.freedesktop.NetworkManager");
- retVal = dbus_g_proxy_call(proxy,"state",&tmp_error,G_TYPE_INVALID,
- G_TYPE_UINT,&state,G_TYPE_INVALID);
+ retVal = dbus_g_proxy_call(proxy,"state",&tmp_error, G_TYPE_INVALID,
+ G_TYPE_UINT, &state, G_TYPE_INVALID);
if(proxy)
g_object_unref(proxy);
@@ -2437,6 +2445,6 @@ gboolean networkmanager_is_online(GError **error)
return TRUE;
}
- return (state == NM_STATE_CONNECTED);
+ return (state == NM_STATE_CONNECTED || state == NM_STATE_UNKNOWN);
}
#endif
diff --git a/src/prefs_common.c b/src/prefs_common.c
@@ -1098,6 +1098,8 @@ static PrefParam param[] = {
NULL, NULL, NULL},
{"print_previewwin_height", "-1", &prefs_common.print_previewwin_height, P_INT,
NULL, NULL, NULL},
+ {"use_networkmanager", "TRUE", &prefs_common.use_networkmanager, P_BOOL,
+ NULL, NULL, NULL},
{NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
};
diff --git a/src/prefs_common.h b/src/prefs_common.h
@@ -483,6 +483,8 @@ struct _PrefsCommon
gint print_imgs;
gint print_previewwin_width;
gint print_previewwin_height;
+
+ gboolean use_networkmanager;
};
extern PrefsCommon prefs_common;