diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java index aa3c9d6e14f99..ff2d2eb3d3345 100644 --- a/core/java/android/view/Surface.java +++ b/core/java/android/view/Surface.java @@ -936,18 +936,21 @@ public class Surface implements Parcelable { * @param frameRate The intended frame rate of this surface, in frames per second. 0 * is a special value that indicates the app will accept the system's choice for the * display frame rate, which is the default behavior if this function isn't - * called. The frameRate param does not need to be a valid refresh rate for - * this device's display - e.g., it's fine to pass 30fps to a device that can only run + * called. The frameRate parameter does not need to be a valid refresh + * rate for this device's display - e.g., it's fine to pass 30fps to a device that can only run * the display at 60fps. * * @param compatibility The frame rate compatibility of this surface. The * compatibility value may influence the system's choice of display frame rate. + * This parameter is ignored when frameRate is 0. * - * @param changeFrameRateStrategy Whether display refresh rate transitions should be seamless. A - * seamless transition is one that doesn't have any visual interruptions, such as a black - * screen for a second or two. + * @param changeFrameRateStrategy Whether display refresh rate transitions caused by this + * surface should be seamless. A seamless transition is one that doesn't have any visual + * interruptions, such as a black screen for a second or two. This parameter is ignored when + * frameRate is 0. * - * @throws IllegalArgumentException If frameRate or compatibility are invalid. + * @throws IllegalArgumentException If frameRate, compatibility or + * changeFrameRateStrategy are invalid. */ public void setFrameRate(@FloatRange(from = 0.0) float frameRate, @FrameRateCompatibility int compatibility, diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 3ff7a65b6c6a9..ac70dff4f03e5 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -3298,20 +3298,26 @@ public final class SurfaceControl implements Parcelable { * because the system may change the display refresh rate, calls to this function may result * in changes to Choreographer callback timings, and changes to the time interval at which * the system releases buffers back to the application. + *

+ * Note that this only has an effect for surfaces presented on the display. If this + * surface is consumed by something other than the system compositor, e.g. a media + * codec, this call has no effect. * * @param sc The SurfaceControl to specify the frame rate of. * @param frameRate The intended frame rate for this surface, in frames per second. 0 is a * special value that indicates the app will accept the system's choice for * the display frame rate, which is the default behavior if this function - * isn't called. The frameRate param does not need to be a valid - * refresh rate for this device's display - e.g., it's fine to pass 30fps - * to a device that can only run the display at 60fps. + * isn't called. The frameRate param does not need + * to be a valid refresh rate for this device's display - e.g., it's fine + * to pass 30fps to a device that can only run the display at 60fps. * @param compatibility The frame rate compatibility of this surface. The compatibility * value may influence the system's choice of display frame rate. - * @param changeFrameRateStrategy Whether display refresh rate transitions should be - * seamless. A seamless transition is one that doesn't have - * any visual interruptions, such as a black screen for a - * second or two. + * This parameter is ignored when frameRate is 0. + * @param changeFrameRateStrategy Whether display refresh rate transitions caused by this + * surface should be seamless. A seamless transition is one + * that doesn't have any visual interruptions, such as a + * black screen for a second or two. This parameter is + * ignored when frameRate is 0. * @return This transaction object. */ @NonNull