Loading services/surfaceflinger/SurfaceFlinger.cpp +6 −0 Original line number Original line Diff line number Diff line Loading @@ -409,6 +409,7 @@ SurfaceFlinger::~SurfaceFlinger() = default; void SurfaceFlinger::binderDied(const wp<IBinder>& /* who */) void SurfaceFlinger::binderDied(const wp<IBinder>& /* who */) { { // the window manager died on us. prepare its eulogy. // the window manager died on us. prepare its eulogy. mBootFinished = false; // restore initial conditions (default device unblank, etc) // restore initial conditions (default device unblank, etc) initializeDisplays(); initializeDisplays(); Loading Loading @@ -525,6 +526,11 @@ compositionengine::CompositionEngine& SurfaceFlinger::getCompositionEngine() con void SurfaceFlinger::bootFinished() void SurfaceFlinger::bootFinished() { { if (mBootFinished == true) { ALOGE("Extra call to bootFinished"); return; } mBootFinished = true; if (mStartPropertySetThread->join() != NO_ERROR) { if (mStartPropertySetThread->join() != NO_ERROR) { ALOGE("Join StartPropertySetThread failed!"); ALOGE("Join StartPropertySetThread failed!"); } } Loading services/surfaceflinger/SurfaceFlinger.h +4 −0 Original line number Original line Diff line number Diff line Loading @@ -1129,6 +1129,10 @@ private: // to linkToDeath // to linkToDeath sp<IBinder> mWindowManager; sp<IBinder> mWindowManager; // We want to avoid multiple calls to BOOT_FINISHED as they come in on // different threads without a lock and could trigger unsynchronized writes to // to mWindowManager or mInputFlinger std::atomic<bool> mBootFinished = false; std::unique_ptr<dvr::VrFlinger> mVrFlinger; std::unique_ptr<dvr::VrFlinger> mVrFlinger; std::atomic<bool> mVrFlingerRequestsDisplay = false; std::atomic<bool> mVrFlingerRequestsDisplay = false; Loading Loading
services/surfaceflinger/SurfaceFlinger.cpp +6 −0 Original line number Original line Diff line number Diff line Loading @@ -409,6 +409,7 @@ SurfaceFlinger::~SurfaceFlinger() = default; void SurfaceFlinger::binderDied(const wp<IBinder>& /* who */) void SurfaceFlinger::binderDied(const wp<IBinder>& /* who */) { { // the window manager died on us. prepare its eulogy. // the window manager died on us. prepare its eulogy. mBootFinished = false; // restore initial conditions (default device unblank, etc) // restore initial conditions (default device unblank, etc) initializeDisplays(); initializeDisplays(); Loading Loading @@ -525,6 +526,11 @@ compositionengine::CompositionEngine& SurfaceFlinger::getCompositionEngine() con void SurfaceFlinger::bootFinished() void SurfaceFlinger::bootFinished() { { if (mBootFinished == true) { ALOGE("Extra call to bootFinished"); return; } mBootFinished = true; if (mStartPropertySetThread->join() != NO_ERROR) { if (mStartPropertySetThread->join() != NO_ERROR) { ALOGE("Join StartPropertySetThread failed!"); ALOGE("Join StartPropertySetThread failed!"); } } Loading
services/surfaceflinger/SurfaceFlinger.h +4 −0 Original line number Original line Diff line number Diff line Loading @@ -1129,6 +1129,10 @@ private: // to linkToDeath // to linkToDeath sp<IBinder> mWindowManager; sp<IBinder> mWindowManager; // We want to avoid multiple calls to BOOT_FINISHED as they come in on // different threads without a lock and could trigger unsynchronized writes to // to mWindowManager or mInputFlinger std::atomic<bool> mBootFinished = false; std::unique_ptr<dvr::VrFlinger> mVrFlinger; std::unique_ptr<dvr::VrFlinger> mVrFlinger; std::atomic<bool> mVrFlingerRequestsDisplay = false; std::atomic<bool> mVrFlingerRequestsDisplay = false; Loading