You are not logged in.
I have a wireless device using the ipw2200 module. I have always found it extremely annoying that gnome-power-manager asks NetworkManager to sleep before suspending, since, first of all, the ipw2200 module doesn't need to be unloaded and, secondly, because I always have to wait the extra few seconds it takes for NM to send the dhcp request after resuming. I made a patch that adds an option to turn the NM-sleep call on or off via a gconf entry (networkmanager_sleep). The patch has been accepted upstream and included in CVS. However, I've made a patch that applies cleanly to gnome-power-manager 2.16.1 as well. Here it is:
diff -Naur gnome-power-manager-2.16.1/data/gnome-power-manager.schemas.in gnome-power-manager-2.16.1-new/data/gnome-power-manager.schemas.in
--- gnome-power-manager-2.16.1/data/gnome-power-manager.schemas.in 2006-07-30 14:51:52.000000000 +0200
+++ gnome-power-manager-2.16.1-new/data/gnome-power-manager.schemas.in 2006-10-05 11:56:10.000000000 +0200
@@ -571,6 +571,17 @@
<long>This is the laptop panel screen brightness used when the session is idle. Only valid when use_time_for_policy is true.</long>
</locale>
</schema>
+ <schema>
+ <key>/schemas/apps/gnome-power-manager/networkmanager_sleep</key>
+ <applyto>/apps/gnome-power-manager/networkmanager_sleep</applyto>
+ <owner>gnome-power-manager</owner>
+ <type>bool</type>
+ <default>true</default>
+ <locale>
+ <short>If Networkmanager should disconnect.</short>
+ <long>Chooses whether Networkmanager should disconnect from the network before suspending.</long>
+ </locale>
+ </schema>
</schemalist>
</gconfschemafile>
diff -Naur gnome-power-manager-2.16.1/src/gpm-manager.c gnome-power-manager-2.16.1-new/src/gpm-manager.c
--- gnome-power-manager-2.16.1/src/gpm-manager.c 2006-09-17 22:33:51.000000000 +0200
+++ gnome-power-manager-2.16.1-new/src/gpm-manager.c 2006-10-05 12:03:22.000000000 +0200
@@ -1172,6 +1172,7 @@
gboolean allowed;
gboolean ret;
gboolean do_lock;
+ gboolean nm_sleep;
gpm_manager_allowed_hibernate (manager, &allowed, NULL);
@@ -1190,7 +1191,12 @@
gpm_screensaver_lock (manager->priv->screensaver);
}
- gpm_networkmanager_sleep ();
+ nm_sleep = gconf_client_get_bool (manager->priv->gconf_client,
+ GPM_PREF_NETWORKMANAGER_SLEEP, NULL);
+ if (nm_sleep) {
+ gpm_networkmanager_sleep ();
+ }
+
ret = gpm_hal_hibernate (manager->priv->hal);
manager_explain_reason (manager, GPM_GRAPH_EVENT_RESUME,
@@ -1230,7 +1236,12 @@
if (do_lock) {
gpm_screensaver_poke (manager->priv->screensaver);
}
- gpm_networkmanager_wake ();
+ nm_sleep = gconf_client_get_bool (manager->priv->gconf_client,
+ GPM_PREF_NETWORKMANAGER_SLEEP, NULL);
+ if (nm_sleep) {
+ gpm_networkmanager_wake ();
+ }
+
sync_dpms_policy (manager);
@@ -1257,6 +1268,7 @@
gboolean allowed;
gboolean ret;
gboolean do_lock;
+ gboolean nm_sleep;
GpmPowerStatus status;
char *message;
int charge_before_suspend;
@@ -1279,7 +1291,12 @@
gpm_screensaver_lock (manager->priv->screensaver);
}
- gpm_networkmanager_sleep ();
+ nm_sleep = gconf_client_get_bool (manager->priv->gconf_client,
+ GPM_PREF_NETWORKMANAGER_SLEEP, NULL);
+ if (nm_sleep) {
+ gpm_networkmanager_sleep ();
+ }
+
/* We save the current charge in mWh so we can see how much power we
lost or gained over the suspend cycle */
@@ -1348,7 +1365,12 @@
if (do_lock) {
gpm_screensaver_poke (manager->priv->screensaver);
}
- gpm_networkmanager_wake ();
+ nm_sleep = gconf_client_get_bool (manager->priv->gconf_client,
+ GPM_PREF_NETWORKMANAGER_SLEEP, NULL);
+ if (nm_sleep) {
+ gpm_networkmanager_wake ();
+ }
+
sync_dpms_policy (manager);
diff -Naur gnome-power-manager-2.16.1/src/gpm-prefs.h gnome-power-manager-2.16.1-new/src/gpm-prefs.h
--- gnome-power-manager-2.16.1/src/gpm-prefs.h 2006-07-30 14:51:54.000000000 +0200
+++ gnome-power-manager-2.16.1-new/src/gpm-prefs.h 2006-10-05 12:05:15.000000000 +0200
@@ -55,6 +55,9 @@
#define GPM_PREF_CAN_HIBERNATE GPM_PREF_DIR "/can_hibernate"
#define GPM_PREF_LOCK_USE_SCREENSAVER GPM_PREF_DIR "/lock_use_screensaver_settings"
+
+#define GPM_PREF_NETWORKMANAGER_SLEEP GPM_PREF_DIR "/networkmanager_sleep"
+
/* These are only effective if the system default is turned off. See bug #331164 */
#define GPM_PREF_LOCK_ON_BLANK_SCREEN GPM_PREF_DIR "/lock_on_blank_screen"
#define GPM_PREF_LOCK_ON_SUSPEND GPM_PREF_DIR "/lock_on_suspend"
It would be great if this could be added to the official package, but I'm not expecting it
Offline