You are not logged in.

#1 2006-10-05 10:34:56

nightfrost
Member
From: Sweden
Registered: 2005-04-16
Posts: 647

gnome-power-manager with networkmanager_sleep option

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 smile

Offline

Board footer

Powered by FluxBB