Update IRemoteControlDisplay when it registers.

When an IRemoteControlDisplay registers, it must receive information
 from the current client.

Change-Id: Id845e7a87ac74c2db2c59e0281b28a45f8d20528
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java
index a5c9053..dbe4115 100644
--- a/media/java/android/media/AudioService.java
+++ b/media/java/android/media/AudioService.java
@@ -3084,7 +3084,7 @@
                 mRcDisplay.setCurrentClientId(
                         newClientGeneration, newClientEventReceiver, clearing);
             } catch (RemoteException e) {
-                Log.e(TAG, "Dead display in onRcDisplayUpdate() "+e);
+                Log.e(TAG, "Dead display in setNewRcClientOnDisplays_syncRcsCurrc() "+e);
                 // if we had a display before, stop monitoring its death
                 rcDisplay_stopDeathMonitor_syncRcStack();
                 mRcDisplay = null;
@@ -3103,7 +3103,7 @@
                 try {
                     se.mRcClient.setCurrentClientGenerationId(newClientGeneration);
                 } catch (RemoteException e) {
-                    Log.w(TAG, "Dead client in onRcDisplayUpdate()"+e);
+                    Log.w(TAG, "Dead client in setNewRcClientGenerationOnClients_syncRcsCurrc()"+e);
                     stackIterator.remove();
                     se.unlinkToRcClientDeath();
                 }
@@ -3160,7 +3160,7 @@
                             rcse.mReceiverComponent /*event receiver*/,
                             false /*clearing*/);
 
-                    // ask the current client that it needs to send info
+                    // tell the current client that it needs to send info
                     try {
                         mCurrentRcClient.onInformationRequested(mCurrentRcClientGen,
                                 flags, mArtworkExpectedWidth, mArtworkExpectedHeight);
@@ -3457,6 +3457,21 @@
                     }
                 }
             }
+
+            // we have a new display, tell the current client that it needs to send info
+            // (following lock order: mRCStack then mCurrentRcLock)
+            synchronized(mCurrentRcLock) {
+                if (mCurrentRcClient != null) {
+                    // tell the current client that it needs to send info
+                    try {
+                        mCurrentRcClient.onInformationRequested(mCurrentRcClientGen,
+                                RC_INFO_ALL, mArtworkExpectedWidth, mArtworkExpectedHeight);
+                    } catch (RemoteException e) {
+                        Log.e(TAG, "Current valid remote client is dead: "+e);
+                        mCurrentRcClient = null;
+                    }
+                }
+            }
         }
     }