diff --git a/src/com/android/phone/CallHandlerServiceProxy.java b/src/com/android/phone/CallHandlerServiceProxy.java
index 82c56a5..3c7b517 100644
--- a/src/com/android/phone/CallHandlerServiceProxy.java
+++ b/src/com/android/phone/CallHandlerServiceProxy.java
@@ -402,7 +402,7 @@
      */
     private void makeInitialServiceCalls() {
         try {
-            mCallHandlerServiceGuarded.setCallCommandService(mCallCommandService);
+            mCallHandlerServiceGuarded.startCallService(mCallCommandService);
 
             onSupportedAudioModeChange(mAudioRouter.getSupportedAudioModes());
             onAudioModeChange(mAudioRouter.getAudioMode(), mAudioRouter.getMute());
diff --git a/src/com/android/phone/CallModeler.java b/src/com/android/phone/CallModeler.java
index 8848f73..79e77f6 100644
--- a/src/com/android/phone/CallModeler.java
+++ b/src/com/android/phone/CallModeler.java
@@ -301,18 +301,18 @@
         for (com.android.internal.telephony.Call telephonyCall : telephonyCalls) {
 
             for (Connection connection : telephonyCall.getConnections()) {
-                // We do not create incoming or disconnected calls on update.  Those are created
-                // from the associated onNewRingingConnection and onDisconnected which do this
-                // process on their own and slightly differently.
-                boolean create = connection.getState().isAlive() &&
+                // We only send updates for live calls which are not incoming (ringing).
+                // Disconnected and incoming calls are handled by onDisconnect and
+                // onNewRingingConnection.
+                boolean shouldUpdate = connection.getState().isAlive() &&
                         !connection.getState().isRinging();
 
                 // New connections return a Call with INVALID state, which does not translate to
                 // a state in the internal.telephony.Call object.  This ensures that staleness
                 // check below fails and we always add the item to the update list if it is new.
-                final Call call = getCallFromMap(mCallMap, connection, create);
+                final Call call = getCallFromMap(mCallMap, connection, shouldUpdate /* create */);
 
-                if (call == null) {
+                if (call == null || !shouldUpdate) {
                     continue;
                 }
 
