Loading libs/gui/LayerState.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -16,8 +16,8 @@ #define LOG_TAG "LayerState" #include <apex/window.h> #include <inttypes.h> #include <cinttypes> #include <cmath> #include <android/native_window.h> #include <binder/Parcel.h> Loading @@ -25,10 +25,9 @@ #include <gui/ISurfaceComposerClient.h> #include <gui/LayerState.h> #include <private/gui/ParcelUtils.h> #include <system/window.h> #include <utils/Errors.h> #include <cmath> namespace android { using gui::FocusRequest; Loading Loading @@ -679,7 +678,9 @@ bool ValidateFrameRate(float frameRate, int8_t compatibility, int8_t changeFrame if (compatibility != ANATIVEWINDOW_FRAME_RATE_COMPATIBILITY_DEFAULT && compatibility != ANATIVEWINDOW_FRAME_RATE_COMPATIBILITY_FIXED_SOURCE && (!privileged || compatibility != ANATIVEWINDOW_FRAME_RATE_EXACT)) { (!privileged || (compatibility != ANATIVEWINDOW_FRAME_RATE_EXACT && compatibility != ANATIVEWINDOW_FRAME_RATE_NO_VOTE))) { ALOGE("%s failed - invalid compatibility value %d privileged: %s", functionName, compatibility, privileged ? "yes" : "no"); return false; Loading libs/nativewindow/include/apex/window.h +0 −13 Original line number Diff line number Diff line Loading @@ -39,19 +39,6 @@ enum ANativeWindowPerform { // clang-format on }; /* * Internal extension of compatibility value for ANativeWindow_setFrameRate. */ enum ANativeWindow_FrameRateCompatibilityInternal { /** * This surface belongs to an app on the High Refresh Rate Deny list, and needs the display * to operate at the exact frame rate. * * This is used internally by the platform and should not be used by apps. * @hide */ ANATIVEWINDOW_FRAME_RATE_EXACT = 100, }; /** * Prototype of the function that an ANativeWindow implementation would call * when ANativeWindow_cancelBuffer is called. Loading libs/nativewindow/include/system/window.h +18 −0 Original line number Diff line number Diff line Loading @@ -1018,6 +1018,24 @@ static inline int native_window_set_auto_prerotation(struct ANativeWindow* windo return window->perform(window, NATIVE_WINDOW_SET_AUTO_PREROTATION, autoPrerotation); } /* * Internal extension of ANativeWindow_FrameRateCompatibility. */ enum { /** * This surface belongs to an app on the High Refresh Rate Deny list, and needs the display * to operate at the exact frame rate. * * Keep in sync with Surface.java constant. */ ANATIVEWINDOW_FRAME_RATE_EXACT = 100, /** * This surface is ignored while choosing the refresh rate. */ ANATIVEWINDOW_FRAME_RATE_NO_VOTE, }; static inline int native_window_set_frame_rate(struct ANativeWindow* window, float frameRate, int8_t compatibility, int8_t changeFrameRateStrategy) { return window->perform(window, NATIVE_WINDOW_SET_FRAME_RATE, (double)frameRate, Loading services/surfaceflinger/EffectLayer.cpp +7 −1 Original line number Diff line number Diff line Loading @@ -114,7 +114,13 @@ void EffectLayer::preparePerFrameCompositionState() { } sp<compositionengine::LayerFE> EffectLayer::getCompositionEngineLayerFE() const { // There's no need to get a CE Layer if the EffectLayer isn't going to draw anything. In that // case, it acts more like a ContainerLayer so returning a null CE Layer makes more sense if (hasSomethingToDraw()) { return asLayerFE(); } else { return nullptr; } } compositionengine::LayerFECompositionState* EffectLayer::editCompositionState() { Loading services/surfaceflinger/Layer.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -2596,6 +2596,8 @@ Layer::FrameRateCompatibility Layer::FrameRate::convertCompatibility(int8_t comp return FrameRateCompatibility::ExactOrMultiple; case ANATIVEWINDOW_FRAME_RATE_EXACT: return FrameRateCompatibility::Exact; case ANATIVEWINDOW_FRAME_RATE_NO_VOTE: return FrameRateCompatibility::NoVote; default: LOG_ALWAYS_FATAL("Invalid frame rate compatibility value %d", compatibility); return FrameRateCompatibility::Default; Loading Loading
libs/gui/LayerState.cpp +6 −5 Original line number Diff line number Diff line Loading @@ -16,8 +16,8 @@ #define LOG_TAG "LayerState" #include <apex/window.h> #include <inttypes.h> #include <cinttypes> #include <cmath> #include <android/native_window.h> #include <binder/Parcel.h> Loading @@ -25,10 +25,9 @@ #include <gui/ISurfaceComposerClient.h> #include <gui/LayerState.h> #include <private/gui/ParcelUtils.h> #include <system/window.h> #include <utils/Errors.h> #include <cmath> namespace android { using gui::FocusRequest; Loading Loading @@ -679,7 +678,9 @@ bool ValidateFrameRate(float frameRate, int8_t compatibility, int8_t changeFrame if (compatibility != ANATIVEWINDOW_FRAME_RATE_COMPATIBILITY_DEFAULT && compatibility != ANATIVEWINDOW_FRAME_RATE_COMPATIBILITY_FIXED_SOURCE && (!privileged || compatibility != ANATIVEWINDOW_FRAME_RATE_EXACT)) { (!privileged || (compatibility != ANATIVEWINDOW_FRAME_RATE_EXACT && compatibility != ANATIVEWINDOW_FRAME_RATE_NO_VOTE))) { ALOGE("%s failed - invalid compatibility value %d privileged: %s", functionName, compatibility, privileged ? "yes" : "no"); return false; Loading
libs/nativewindow/include/apex/window.h +0 −13 Original line number Diff line number Diff line Loading @@ -39,19 +39,6 @@ enum ANativeWindowPerform { // clang-format on }; /* * Internal extension of compatibility value for ANativeWindow_setFrameRate. */ enum ANativeWindow_FrameRateCompatibilityInternal { /** * This surface belongs to an app on the High Refresh Rate Deny list, and needs the display * to operate at the exact frame rate. * * This is used internally by the platform and should not be used by apps. * @hide */ ANATIVEWINDOW_FRAME_RATE_EXACT = 100, }; /** * Prototype of the function that an ANativeWindow implementation would call * when ANativeWindow_cancelBuffer is called. Loading
libs/nativewindow/include/system/window.h +18 −0 Original line number Diff line number Diff line Loading @@ -1018,6 +1018,24 @@ static inline int native_window_set_auto_prerotation(struct ANativeWindow* windo return window->perform(window, NATIVE_WINDOW_SET_AUTO_PREROTATION, autoPrerotation); } /* * Internal extension of ANativeWindow_FrameRateCompatibility. */ enum { /** * This surface belongs to an app on the High Refresh Rate Deny list, and needs the display * to operate at the exact frame rate. * * Keep in sync with Surface.java constant. */ ANATIVEWINDOW_FRAME_RATE_EXACT = 100, /** * This surface is ignored while choosing the refresh rate. */ ANATIVEWINDOW_FRAME_RATE_NO_VOTE, }; static inline int native_window_set_frame_rate(struct ANativeWindow* window, float frameRate, int8_t compatibility, int8_t changeFrameRateStrategy) { return window->perform(window, NATIVE_WINDOW_SET_FRAME_RATE, (double)frameRate, Loading
services/surfaceflinger/EffectLayer.cpp +7 −1 Original line number Diff line number Diff line Loading @@ -114,7 +114,13 @@ void EffectLayer::preparePerFrameCompositionState() { } sp<compositionengine::LayerFE> EffectLayer::getCompositionEngineLayerFE() const { // There's no need to get a CE Layer if the EffectLayer isn't going to draw anything. In that // case, it acts more like a ContainerLayer so returning a null CE Layer makes more sense if (hasSomethingToDraw()) { return asLayerFE(); } else { return nullptr; } } compositionengine::LayerFECompositionState* EffectLayer::editCompositionState() { Loading
services/surfaceflinger/Layer.cpp +2 −0 Original line number Diff line number Diff line Loading @@ -2596,6 +2596,8 @@ Layer::FrameRateCompatibility Layer::FrameRate::convertCompatibility(int8_t comp return FrameRateCompatibility::ExactOrMultiple; case ANATIVEWINDOW_FRAME_RATE_EXACT: return FrameRateCompatibility::Exact; case ANATIVEWINDOW_FRAME_RATE_NO_VOTE: return FrameRateCompatibility::NoVote; default: LOG_ALWAYS_FATAL("Invalid frame rate compatibility value %d", compatibility); return FrameRateCompatibility::Default; Loading