diff options
Diffstat (limited to 'services/surfaceflinger/SurfaceFlinger.cpp')
| -rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index bd2441f6b1..474db47c23 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -227,8 +227,10 @@ SurfaceFlinger::SurfaceFlinger() mLayerTripleBufferingDisabled = atoi(value); ALOGI_IF(mLayerTripleBufferingDisabled, "Disabling Triple Buffering"); - property_get("persist.sys.sf.color_saturation", value, "1.0"); - mSaturation = atof(value); + // We should be reading 'persist.sys.sf.color_saturation' here + // but since /data may be encrypted, we need to wait until after vold + // comes online to attempt to read the property. The property is + // instead read after the boot animation } void SurfaceFlinger::onFirstRef() @@ -373,6 +375,11 @@ void SurfaceFlinger::bootFinished() const int LOGTAG_SF_STOP_BOOTANIM = 60110; LOG_EVENT_LONG(LOGTAG_SF_STOP_BOOTANIM, ns2ms(systemTime(SYSTEM_TIME_MONOTONIC))); + + sp<LambdaMessage> readProperties = new LambdaMessage([&]() { + readPersistentProperties(); + }); + postMessageAsync(readProperties); } void SurfaceFlinger::deleteTextureAsync(uint32_t texture) { @@ -630,6 +637,14 @@ void SurfaceFlinger::init() { ALOGV("Done initializing"); } +void SurfaceFlinger::readPersistentProperties() { + char value[PROPERTY_VALUE_MAX]; + + property_get("persist.sys.sf.color_saturation", value, "1.0"); + mSaturation = atof(value); + ALOGV("Saturation is set to %.2f", mSaturation); +} + void SurfaceFlinger::startBootAnim() { // Start boot animation service by setting a property mailbox // if property setting thread is already running, Start() will be just a NOP |