- Add patch for RH bug #437208 (tracking network status).
This commit is contained in:
parent
df93db5107
commit
e09af7888e
185
evolution-2.22.0-line-status.patch
Normal file
185
evolution-2.22.0-line-status.patch
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
diff -up evolution-2.22.0/shell/e-shell-nm-glib.c.line-status evolution-2.22.0/shell/e-shell-nm-glib.c
|
||||||
|
--- evolution-2.22.0/shell/e-shell-nm-glib.c.line-status 2007-11-29 23:23:59.000000000 -0500
|
||||||
|
+++ evolution-2.22.0/shell/e-shell-nm-glib.c 2008-03-14 12:13:29.000000000 -0400
|
||||||
|
@@ -33,23 +33,40 @@
|
||||||
|
static libnm_glib_ctx *nm_ctx = NULL;
|
||||||
|
static guint id = 0;
|
||||||
|
|
||||||
|
-static void e_shell_glib_network_monitor (libnm_glib_ctx *ctx, gpointer user_data)
|
||||||
|
+static void
|
||||||
|
+e_shell_glib_network_monitor (libnm_glib_ctx *ctx, gpointer user_data)
|
||||||
|
{
|
||||||
|
libnm_glib_state state;
|
||||||
|
- EShellLineStatus line_status;
|
||||||
|
EShellWindow *window = E_SHELL_WINDOW (user_data);
|
||||||
|
EShell *shell = e_shell_window_peek_shell (window);
|
||||||
|
GNOME_Evolution_ShellState shell_state;
|
||||||
|
+ gboolean shell_is_online;
|
||||||
|
+ gboolean shell_is_offline;
|
||||||
|
|
||||||
|
g_return_if_fail (ctx != NULL);
|
||||||
|
|
||||||
|
state = libnm_glib_get_network_state (ctx);
|
||||||
|
- line_status = e_shell_get_line_status (shell);
|
||||||
|
|
||||||
|
- if (line_status == E_SHELL_LINE_STATUS_ONLINE && state == LIBNM_NO_NETWORK_CONNECTION) {
|
||||||
|
+ switch (e_shell_get_line_status (shell)) {
|
||||||
|
+ case E_SHELL_LINE_STATUS_ONLINE:
|
||||||
|
+ shell_is_online = TRUE;
|
||||||
|
+ shell_is_offline = FALSE;
|
||||||
|
+ break;
|
||||||
|
+ case E_SHELL_LINE_STATUS_OFFLINE:
|
||||||
|
+ case E_SHELL_LINE_STATUS_FORCED_OFFLINE:
|
||||||
|
+ shell_is_online = FALSE;
|
||||||
|
+ shell_is_offline = TRUE;
|
||||||
|
+ break;
|
||||||
|
+ default: /* in-between states */
|
||||||
|
+ shell_is_online = FALSE;
|
||||||
|
+ shell_is_offline = FALSE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (shell_is_online && state == LIBNM_NO_NETWORK_CONNECTION) {
|
||||||
|
shell_state = GNOME_Evolution_FORCED_OFFLINE;
|
||||||
|
e_shell_go_offline (shell, window, shell_state);
|
||||||
|
- } else if (line_status == E_SHELL_LINE_STATUS_OFFLINE && state == LIBNM_ACTIVE_NETWORK_CONNECTION) {
|
||||||
|
+
|
||||||
|
+ } else if (shell_is_offline && state == LIBNM_ACTIVE_NETWORK_CONNECTION) {
|
||||||
|
shell_state = GNOME_Evolution_USER_ONLINE;
|
||||||
|
e_shell_go_online (shell, window, shell_state);
|
||||||
|
}
|
||||||
|
@@ -58,15 +75,15 @@ static void e_shell_glib_network_monitor
|
||||||
|
int e_shell_nm_glib_initialise (EShellWindow *window);
|
||||||
|
void e_shell_nm_glib_dispose (EShellWindow *window);
|
||||||
|
|
||||||
|
-int e_shell_nm_glib_initialise (EShellWindow *window)
|
||||||
|
+int
|
||||||
|
+e_shell_nm_glib_initialise (EShellWindow *window)
|
||||||
|
{
|
||||||
|
- if (!nm_ctx)
|
||||||
|
- {
|
||||||
|
+ if (!nm_ctx) {
|
||||||
|
nm_ctx = libnm_glib_init ();
|
||||||
|
if (!nm_ctx) {
|
||||||
|
- fprintf (stderr, "Could not initialize libnm.\n");
|
||||||
|
- return FALSE;
|
||||||
|
- }
|
||||||
|
+ g_warning ("Could not initialize libnm.");
|
||||||
|
+ return FALSE;
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
id = libnm_glib_register_callback (nm_ctx, e_shell_glib_network_monitor, window, NULL);
|
||||||
|
@@ -74,7 +91,8 @@ int e_shell_nm_glib_initialise (EShellWi
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
-void e_shell_nm_glib_dispose (EShellWindow *window)
|
||||||
|
+void
|
||||||
|
+e_shell_nm_glib_dispose (EShellWindow *window)
|
||||||
|
{
|
||||||
|
if (id != 0 && nm_ctx != NULL) {
|
||||||
|
libnm_glib_unregister_callback (nm_ctx, id);
|
||||||
|
@@ -83,4 +101,3 @@ void e_shell_nm_glib_dispose (EShellWind
|
||||||
|
id = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-
|
||||||
|
diff -up evolution-2.22.0/shell/e-shell-nm.c.line-status evolution-2.22.0/shell/e-shell-nm.c
|
||||||
|
--- evolution-2.22.0/shell/e-shell-nm.c.line-status 2008-02-22 04:51:05.000000000 -0500
|
||||||
|
+++ evolution-2.22.0/shell/e-shell-nm.c 2008-03-14 12:13:29.000000000 -0400
|
||||||
|
@@ -35,17 +35,12 @@
|
||||||
|
#include <dbus/dbus-glib.h>
|
||||||
|
#include <NetworkManager/NetworkManager.h>
|
||||||
|
|
||||||
|
-typedef enum _ShellLineStatus {
|
||||||
|
- E_SHELL_LINE_DOWN,
|
||||||
|
- E_SHELL_LINE_UP
|
||||||
|
-} ShellLineStatus;
|
||||||
|
-
|
||||||
|
-
|
||||||
|
static gboolean init_dbus (EShellWindow *window);
|
||||||
|
+int e_shell_dbus_initialise (EShellWindow *window);
|
||||||
|
+void e_shell_dbus_dispose (EShellWindow *window);
|
||||||
|
|
||||||
|
static DBusConnection *dbus_connection = NULL;
|
||||||
|
|
||||||
|
-
|
||||||
|
static gboolean
|
||||||
|
reinit_dbus (gpointer user_data)
|
||||||
|
{
|
||||||
|
@@ -63,11 +58,12 @@ e_shell_network_monitor (DBusConnection
|
||||||
|
{
|
||||||
|
DBusError error;
|
||||||
|
const char *object;
|
||||||
|
- ShellLineStatus status;
|
||||||
|
EShellWindow *window = NULL;
|
||||||
|
EShell *shell = NULL;
|
||||||
|
GNOME_Evolution_ShellState shell_state;
|
||||||
|
- EShellLineStatus line_status;
|
||||||
|
+ gboolean shell_is_online;
|
||||||
|
+ gboolean shell_is_offline;
|
||||||
|
+ gboolean network_device_active;
|
||||||
|
|
||||||
|
if (!user_data || !E_IS_SHELL_WINDOW (user_data))
|
||||||
|
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||||
|
@@ -89,9 +85,9 @@ e_shell_network_monitor (DBusConnection
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dbus_message_is_signal (message, NM_DBUS_INTERFACE, "DeviceNoLongerActive"))
|
||||||
|
- status = E_SHELL_LINE_DOWN;
|
||||||
|
+ network_device_active = FALSE;
|
||||||
|
else if (dbus_message_is_signal (message, NM_DBUS_INTERFACE, "DeviceNowActive"))
|
||||||
|
- status = E_SHELL_LINE_UP;
|
||||||
|
+ network_device_active = TRUE;
|
||||||
|
else
|
||||||
|
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||||
|
|
||||||
|
@@ -99,12 +95,26 @@ e_shell_network_monitor (DBusConnection
|
||||||
|
&object, DBUS_TYPE_INVALID))
|
||||||
|
return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;
|
||||||
|
|
||||||
|
- line_status = e_shell_get_line_status (shell);
|
||||||
|
+ switch (e_shell_get_line_status (shell)) {
|
||||||
|
+ case E_SHELL_LINE_STATUS_ONLINE:
|
||||||
|
+ shell_is_online = TRUE;
|
||||||
|
+ shell_is_offline = FALSE;
|
||||||
|
+ break;
|
||||||
|
+ case E_SHELL_LINE_STATUS_OFFLINE:
|
||||||
|
+ case E_SHELL_LINE_STATUS_FORCED_OFFLINE:
|
||||||
|
+ shell_is_online = FALSE;
|
||||||
|
+ shell_is_offline = TRUE;
|
||||||
|
+ break;
|
||||||
|
+ default: /* in-between states */
|
||||||
|
+ shell_is_online = FALSE;
|
||||||
|
+ shell_is_offline = FALSE;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
- if (line_status == E_SHELL_LINE_STATUS_ONLINE && status == E_SHELL_LINE_DOWN) {
|
||||||
|
+ if (shell_is_online && !network_device_active) {
|
||||||
|
shell_state = GNOME_Evolution_FORCED_OFFLINE;
|
||||||
|
e_shell_go_offline (shell, window, shell_state);
|
||||||
|
- } else if (line_status == E_SHELL_LINE_STATUS_OFFLINE && status == E_SHELL_LINE_UP) {
|
||||||
|
+
|
||||||
|
+ } else if (shell_is_offline && network_device_active) {
|
||||||
|
shell_state = GNOME_Evolution_USER_ONLINE;
|
||||||
|
e_shell_go_online (shell, window, shell_state);
|
||||||
|
}
|
||||||
|
@@ -153,14 +163,16 @@ init_dbus (EShellWindow *window)
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
-int e_shell_dbus_initialise (EShellWindow *window)
|
||||||
|
+int
|
||||||
|
+e_shell_dbus_initialise (EShellWindow *window)
|
||||||
|
{
|
||||||
|
g_type_init ();
|
||||||
|
|
||||||
|
return init_dbus (window);
|
||||||
|
}
|
||||||
|
|
||||||
|
-void e_shell_dbus_dispose (EShellWindow *window)
|
||||||
|
+void
|
||||||
|
+e_shell_dbus_dispose (EShellWindow *window)
|
||||||
|
{
|
||||||
|
//FIXME
|
||||||
|
return;
|
@ -46,7 +46,7 @@
|
|||||||
|
|
||||||
Name: evolution
|
Name: evolution
|
||||||
Version: 2.22.0
|
Version: 2.22.0
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
License: GPLv2 and GFDL+
|
License: GPLv2 and GFDL+
|
||||||
Group: Applications/Productivity
|
Group: Applications/Productivity
|
||||||
Summary: GNOME's next-generation groupware suite
|
Summary: GNOME's next-generation groupware suite
|
||||||
@ -81,6 +81,9 @@ Patch14: evolution-2.7.1-no-gnome-common.patch
|
|||||||
# RH bug #176400
|
# RH bug #176400
|
||||||
Patch15: evolution-2.9.1-im-context-reset.patch
|
Patch15: evolution-2.9.1-im-context-reset.patch
|
||||||
|
|
||||||
|
# RH bug #437208 / GNOME bug #518103
|
||||||
|
Patch16: evolution-2.22.0-line-status.patch
|
||||||
|
|
||||||
## Dependencies ###
|
## Dependencies ###
|
||||||
|
|
||||||
Requires(post): GConf2
|
Requires(post): GConf2
|
||||||
@ -223,6 +226,7 @@ This package contains the plugin to filter junk mail using SpamAssassin.
|
|||||||
%patch13 -p1 -b .fix-conduit-dir
|
%patch13 -p1 -b .fix-conduit-dir
|
||||||
%patch14 -p1 -b .no-gnome-common
|
%patch14 -p1 -b .no-gnome-common
|
||||||
%patch15 -p1 -b .im-context-reset
|
%patch15 -p1 -b .im-context-reset
|
||||||
|
%patch16 -p1 -b .line-status
|
||||||
|
|
||||||
mkdir -p krb5-fakeprefix/include
|
mkdir -p krb5-fakeprefix/include
|
||||||
mkdir -p krb5-fakeprefix/lib
|
mkdir -p krb5-fakeprefix/lib
|
||||||
@ -650,6 +654,9 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{evo_plugin_dir}/liborg-gnome-sa-junk-plugin.so
|
%{evo_plugin_dir}/liborg-gnome-sa-junk-plugin.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Fri Mar 14 2008 Matthew Barnes <mbarnes@redhat.com> - 2.22.0-2.fc9
|
||||||
|
- Add patch for RH bug #437208 (tracking network status).
|
||||||
|
|
||||||
* Mon Mar 10 2008 Matthew Barnes <mbarnes@redhat.com> - 2.22.0-1.fc9
|
* Mon Mar 10 2008 Matthew Barnes <mbarnes@redhat.com> - 2.22.0-1.fc9
|
||||||
- Update to 2.22.0
|
- Update to 2.22.0
|
||||||
- Remove patch for CVE-2008-0072 (fixed upstream).
|
- Remove patch for CVE-2008-0072 (fixed upstream).
|
||||||
|
Loading…
Reference in New Issue
Block a user