SurfaceFlinger: Avoid race in flag manager
Initializing the flag manager from one binder
thread while using it from another doesn't seem
very safe. This is in fact what could happen if
onBootFinished overlaps with dump, the objects constructor
doesn't do anything in particular so we can just default
construct it as a value member instead.
Bug: 219059993
Test: Existing tests pass
Change-Id: I7162812b000d67adb9ed745d31d8bac8b2e8f73e
diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h
index 81afa9b..4a2ea73 100644
--- a/services/surfaceflinger/SurfaceFlinger.h
+++ b/services/surfaceflinger/SurfaceFlinger.h
@@ -56,6 +56,7 @@
#include "DisplayHardware/PowerAdvisor.h"
#include "DisplayIdGenerator.h"
#include "Effects/Daltonizer.h"
+#include "FlagManager.h"
#include "FrameTracker.h"
#include "LayerVector.h"
#include "Scheduler/RefreshRateConfigs.h"
@@ -1413,7 +1414,7 @@
const sp<WindowInfosListenerInvoker> mWindowInfosListenerInvoker;
- std::unique_ptr<FlagManager> mFlagManager;
+ FlagManager mFlagManager;
// returns the framerate of the layer with the given sequence ID
float getLayerFramerate(nsecs_t now, int32_t id) const {