SF: Mutable RefreshRateConfigs
Modify the list of supported refresh rates in RefreshRateConfigs
on hotplug. In order to support this the RefreshRateConfigs class
is refactored to not return references to its internal members,
but instead return copies. This won't be expensive because
the RefreshRate objects which are returned are small.
Bug: 159590486
Test: 1. boot w/o display
2. connect a display which supports multiple refresh rates
3. request a mode switch from an app
4. verify that the switch works
Test: atest libsurfaceflinger_unittest
Test: toggle refresh rate overlay
adb shell service call SurfaceFlinger 1034 i32 1/0
Change-Id: I1588bf004a0a0319a94931adbfb822836703849a
diff --git a/services/surfaceflinger/RefreshRateOverlay.h b/services/surfaceflinger/RefreshRateOverlay.h
index 4ca1337..c16cfa0 100644
--- a/services/surfaceflinger/RefreshRateOverlay.h
+++ b/services/surfaceflinger/RefreshRateOverlay.h
@@ -23,7 +23,7 @@
#include <ui/Size.h>
#include <utils/StrongPointer.h>
-#include "Scheduler/RefreshRateConfigs.h"
+#include "Fps.h"
namespace android {
@@ -34,14 +34,12 @@
class Layer;
class SurfaceFlinger;
-using RefreshRate = scheduler::RefreshRateConfigs::RefreshRate;
-
class RefreshRateOverlay {
public:
RefreshRateOverlay(SurfaceFlinger&, bool showSpinner);
void setViewport(ui::Size);
- void changeRefreshRate(const RefreshRate&);
+ void changeRefreshRate(const Fps&);
void onInvalidate();
void reset();