@@ -576,9 +576,10 @@ void SurfaceFlinger::run() {
576576 mScheduler ->run ();
577577}
578578
579- sp<IBinder> SurfaceFlinger::createVirtualDisplay (const std::string& displayName, bool isSecure,
580- const std::string& uniqueId,
581- float requestedRefreshRate) {
579+ sp<IBinder> SurfaceFlinger::createVirtualDisplay (
580+ const std::string& displayName, bool isSecure,
581+ gui::ISurfaceComposer::OptimizationPolicy optimizationPolicy, const std::string& uniqueId,
582+ float requestedRefreshRate) {
582583 // SurfaceComposerAIDL checks for some permissions, but adding an additional check here.
583584 // This is to ensure that only root, system, and graphics can request to create a secure
584585 // display. Secure displays can show secure content so we add an additional restriction on it.
@@ -611,6 +612,7 @@ sp<IBinder> SurfaceFlinger::createVirtualDisplay(const std::string& displayName,
611612 // Set display as protected when marked as secure to ensure no behavior change
612613 // TODO (b/314820005): separate as a different arg when creating the display.
613614 state.isProtected = isSecure;
615+ state.optimizationPolicy = optimizationPolicy;
614616 state.displayName = displayName;
615617 state.uniqueId = uniqueId;
616618 state.requestedRefreshRate = Fps::fromValue (requestedRefreshRate);
@@ -3937,6 +3939,7 @@ sp<DisplayDevice> SurfaceFlinger::setupNewDisplayDeviceInternal(
39373939 display->setProjection (state.orientation , state.layerStackSpaceRect ,
39383940 state.orientedDisplaySpaceRect );
39393941 display->setDisplayName (state.displayName );
3942+ display->setOptimizationPolicy (state.optimizationPolicy );
39403943 display->setFlags (state.flags );
39413944
39423945 return display;
@@ -8742,16 +8745,16 @@ binder::Status SurfaceComposerAIDL::createConnection(sp<gui::ISurfaceComposerCli
87428745 }
87438746}
87448747
8745- binder::Status SurfaceComposerAIDL::createVirtualDisplay (const std::string& displayName,
8746- bool isSecure, const std::string& uniqueId ,
8747- float requestedRefreshRate ,
8748- sp<IBinder>* outDisplay) {
8748+ binder::Status SurfaceComposerAIDL::createVirtualDisplay (
8749+ const std::string& displayName, bool isSecure ,
8750+ gui::ISurfaceComposer::OptimizationPolicy optimizationPolicy, const std::string& uniqueId ,
8751+ float requestedRefreshRate, sp<IBinder>* outDisplay) {
87498752 status_t status = checkAccessPermission ();
87508753 if (status != OK) {
87518754 return binderStatusFromStatusT (status);
87528755 }
8753- *outDisplay =
8754- mFlinger -> createVirtualDisplay (displayName, isSecure, uniqueId, requestedRefreshRate);
8756+ *outDisplay = mFlinger -> createVirtualDisplay (displayName, isSecure, optimizationPolicy,
8757+ uniqueId, requestedRefreshRate);
87558758 return binder::Status::ok ();
87568759}
87578760
0 commit comments