diff --git a/policy/com/android/internal/policy/impl/PhoneWindowManager.java b/policy/com/android/internal/policy/impl/PhoneWindowManager.java
index 135dc83..df8b265 100755
--- a/policy/com/android/internal/policy/impl/PhoneWindowManager.java
+++ b/policy/com/android/internal/policy/impl/PhoneWindowManager.java
@@ -1682,17 +1682,19 @@
             if (code == KeyEvent.KEYCODE_ENDCALL
                     || code == KeyEvent.KEYCODE_POWER) {
                 if (down) {
-                    boolean hungUp = false;
+                    boolean handled = false;
                     // key repeats are generated by the window manager, and we don't see them
                     // here, so unless the driver is doing something it shouldn't be, we know
                     // this is the real press event.
                     ITelephony phoneServ = getPhoneInterface();
                     if (phoneServ != null) {
                         try {
-                            // power button should hang up only when ringing
-                            // but not after the call has been answered
-                            if (code == KeyEvent.KEYCODE_ENDCALL || phoneServ.isRinging()) {
-                                hungUp = phoneServ.endCall();
+                            if (code == KeyEvent.KEYCODE_ENDCALL) {
+                                handled = phoneServ.endCall();
+                            } else if (code == KeyEvent.KEYCODE_POWER && phoneServ.isRinging()) {
+                                // Pressing power during incoming call should silence the ringer
+                                phoneServ.silenceRinger();
+                                handled = true;
                             }
                         } catch (RemoteException ex) {
                             Log.w(TAG, "ITelephony threw RemoteException" + ex);
@@ -1701,7 +1703,7 @@
                         Log.w(TAG, "!!! Unable to find ITelephony interface !!!");
                     }
                     // power button should turn off screen in addition to hanging up the phone
-                    if ((hungUp && code != KeyEvent.KEYCODE_POWER) || !screenIsOn) {
+                    if ((handled && code != KeyEvent.KEYCODE_POWER) || !screenIsOn) {
                         mShouldTurnOffOnKeyUp = false;
                     } else {
                         // only try to turn off the screen if we didn't already hang up
