am 8aaf3e47: am a67e418e: Exit boot animation cleanly.

* commit '8aaf3e47a51aa0beebecc8c536504d310d07cda9':
  Exit boot animation cleanly.
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp
index 7323a39..e059f1c 100644
--- a/services/surfaceflinger/SurfaceFlinger.cpp
+++ b/services/surfaceflinger/SurfaceFlinger.cpp
@@ -151,7 +151,7 @@
     setTransactionState(state, eOrientationDefault, 0);
 
     // restart the boot-animation
-    property_set("ctl.start", "bootanim");
+    startBootAnim();
 }
 
 sp<IMemoryHeap> SurfaceFlinger::getCblk() const
@@ -204,7 +204,9 @@
     }
 
     // stop boot animation
-    property_set("ctl.stop", "bootanim");
+    // formerly we would just kill the process, but we now ask it to exit so it
+    // can choose where to stop the animation.
+    property_set("service.bootanim.exit", "1");
 }
 
 static inline uint16_t pack565(int r, int g, int b) {
@@ -308,11 +310,17 @@
     mReadyToRunBarrier.open();
 
     // start boot animation
-    property_set("ctl.start", "bootanim");
+    startBootAnim();
 
     return NO_ERROR;
 }
 
+void SurfaceFlinger::startBootAnim() {
+    // start boot animation
+    property_set("service.bootanim.exit", "0");
+    property_set("ctl.start", "bootanim");
+}
+
 // ----------------------------------------------------------------------------
 
 bool SurfaceFlinger::authenticateSurfaceTexture(
diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
index 0700fb9..c3efdbc 100644
--- a/services/surfaceflinger/SurfaceFlinger.h
+++ b/services/surfaceflinger/SurfaceFlinger.h
@@ -316,6 +316,8 @@
             void        debugFlashRegions();
             void        drawWormhole() const;
 
+            void        startBootAnim();
+
             void listLayersLocked(const Vector<String16>& args, size_t& index,
                     String8& result, char* buffer, size_t SIZE) const;
             void dumpStatsLocked(const Vector<String16>& args, size_t& index,