diff options
Diffstat (limited to 'cmds/surfacereplayer/replayer/Replayer.cpp')
-rw-r--r-- | cmds/surfacereplayer/replayer/Replayer.cpp | 92 |
1 files changed, 29 insertions, 63 deletions
diff --git a/cmds/surfacereplayer/replayer/Replayer.cpp b/cmds/surfacereplayer/replayer/Replayer.cpp index 2b5667d8fe..cfd42fec30 100644 --- a/cmds/surfacereplayer/replayer/Replayer.cpp +++ b/cmds/surfacereplayer/replayer/Replayer.cpp @@ -28,7 +28,6 @@ #include <gui/Surface.h> #include <private/gui/ComposerService.h> -#include <ui/DisplayInfo.h> #include <utils/Log.h> #include <utils/String8.h> #include <utils/Trace.h> @@ -387,10 +386,6 @@ status_t Replayer::doSurfaceTransaction( case SurfaceChange::SurfaceChangeCase::kMatrix: setMatrix(transaction, change.id(), change.matrix()); break; - case SurfaceChange::SurfaceChangeCase::kOverrideScalingMode: - setOverrideScalingMode(transaction, change.id(), - change.override_scaling_mode()); - break; case SurfaceChange::SurfaceChangeCase::kTransparentRegionHint: setTransparentRegionHint(transaction, change.id(), change.transparent_region_hint()); @@ -407,26 +402,18 @@ status_t Replayer::doSurfaceTransaction( case SurfaceChange::SurfaceChangeCase::kSecureFlag: setSecureFlag(transaction, change.id(), change.secure_flag()); break; - case SurfaceChange::SurfaceChangeCase::kDeferredTransaction: - waitUntilDeferredTransactionLayerExists(change.deferred_transaction(), lock); - setDeferredTransaction(transaction, change.id(), - change.deferred_transaction()); - break; case SurfaceChange::SurfaceChangeCase::kReparent: setReparentChange(transaction, change.id(), change.reparent()); break; - case SurfaceChange::SurfaceChangeCase::kReparentChildren: - setReparentChildrenChange(transaction, change.id(), change.reparent_children()); - break; case SurfaceChange::SurfaceChangeCase::kRelativeParent: setRelativeParentChange(transaction, change.id(), change.relative_parent()); break; - case SurfaceChange::SurfaceChangeCase::kDetachChildren: - setDetachChildrenChange(transaction, change.id(), change.detach_children()); - break; case SurfaceChange::SurfaceChangeCase::kShadowRadius: setShadowRadiusChange(transaction, change.id(), change.shadow_radius()); break; + case SurfaceChange::SurfaceChangeCase::kBlurRegions: + setBlurRegionsChange(transaction, change.id(), change.blur_regions()); + break; default: status = 1; break; @@ -500,7 +487,7 @@ void Replayer::setCrop(SurfaceComposerClient::Transaction& t, Rect r = Rect(cc.rectangle().left(), cc.rectangle().top(), cc.rectangle().right(), cc.rectangle().bottom()); - t.setCrop_legacy(mLayers[id], r); + t.setCrop(mLayers[id], r); } void Replayer::setCornerRadius(SurfaceComposerClient::Transaction& t, @@ -525,12 +512,6 @@ void Replayer::setMatrix(SurfaceComposerClient::Transaction& t, t.setMatrix(mLayers[id], mc.dsdx(), mc.dtdx(), mc.dsdy(), mc.dtdy()); } -void Replayer::setOverrideScalingMode(SurfaceComposerClient::Transaction& t, - layer_id id, const OverrideScalingModeChange& osmc) { - ALOGV("Layer %d: Setting Override Scaling Mode -- mode=%d", id, osmc.override_scaling_mode()); - t.setOverrideScalingMode(mLayers[id], osmc.override_scaling_mode()); -} - void Replayer::setTransparentRegionHint(SurfaceComposerClient::Transaction& t, layer_id id, const TransparentRegionHintChange& trhc) { ALOGV("Setting Transparent Region Hint"); @@ -574,21 +555,6 @@ void Replayer::setSecureFlag(SurfaceComposerClient::Transaction& t, t.setFlags(mLayers[id], flag, layer_state_t::eLayerSecure); } -void Replayer::setDeferredTransaction(SurfaceComposerClient::Transaction& t, - layer_id id, const DeferredTransactionChange& dtc) { - ALOGV("Layer %d: Setting Deferred Transaction -- layer_id=%d, " - "frame_number=%llu", - id, dtc.layer_id(), dtc.frame_number()); - if (mLayers.count(dtc.layer_id()) == 0 || mLayers[dtc.layer_id()] == nullptr) { - ALOGE("Layer %d not found in Deferred Transaction", dtc.layer_id()); - return; - } - - auto handle = mLayers[dtc.layer_id()]->getHandle(); - - t.deferTransactionUntil_legacy(mLayers[id], handle, dtc.frame_number()); -} - void Replayer::setDisplaySurface(SurfaceComposerClient::Transaction& t, display_id id, const DispSurfaceChange& /*dsc*/) { sp<IGraphicBufferProducer> outProducer; @@ -692,13 +658,6 @@ void Replayer::waitUntilTimestamp(int64_t timestamp) { std::this_thread::sleep_for(std::chrono::nanoseconds(timestamp - mCurrentTime)); } -void Replayer::waitUntilDeferredTransactionLayerExists( - const DeferredTransactionChange& dtc, std::unique_lock<std::mutex>& lock) { - if (mLayers.count(dtc.layer_id()) == 0 || mLayers[dtc.layer_id()] == nullptr) { - mLayerCond.wait(lock, [&] { return (mLayers[dtc.layer_id()] != nullptr); }); - } -} - status_t Replayer::loadSurfaceComposerClient() { mComposerClient = new SurfaceComposerClient; return mComposerClient->initCheck(); @@ -706,11 +665,11 @@ status_t Replayer::loadSurfaceComposerClient() { void Replayer::setReparentChange(SurfaceComposerClient::Transaction& t, layer_id id, const ReparentChange& c) { - sp<IBinder> newParentHandle = nullptr; + sp<SurfaceControl> newSurfaceControl = nullptr; if (mLayers.count(c.parent_id()) != 0 && mLayers[c.parent_id()] != nullptr) { - newParentHandle = mLayers[c.parent_id()]->getHandle(); + newSurfaceControl = mLayers[c.parent_id()]; } - t.reparent(mLayers[id], newParentHandle); + t.reparent(mLayers[id], newSurfaceControl); } void Replayer::setRelativeParentChange(SurfaceComposerClient::Transaction& t, @@ -719,24 +678,31 @@ void Replayer::setRelativeParentChange(SurfaceComposerClient::Transaction& t, ALOGE("Layer %d not found in set relative parent transaction", c.relative_parent_id()); return; } - t.setRelativeLayer(mLayers[id], mLayers[c.relative_parent_id()]->getHandle(), c.z()); -} - -void Replayer::setDetachChildrenChange(SurfaceComposerClient::Transaction& t, - layer_id id, const DetachChildrenChange& c) { - t.detachChildren(mLayers[id]); -} - -void Replayer::setReparentChildrenChange(SurfaceComposerClient::Transaction& t, - layer_id id, const ReparentChildrenChange& c) { - if (mLayers.count(c.parent_id()) == 0 || mLayers[c.parent_id()] == nullptr) { - ALOGE("Layer %d not found in reparent children transaction", c.parent_id()); - return; - } - t.reparentChildren(mLayers[id], mLayers[c.parent_id()]->getHandle()); + t.setRelativeLayer(mLayers[id], mLayers[c.relative_parent_id()], c.z()); } void Replayer::setShadowRadiusChange(SurfaceComposerClient::Transaction& t, layer_id id, const ShadowRadiusChange& c) { t.setShadowRadius(mLayers[id], c.radius()); } + +void Replayer::setBlurRegionsChange(SurfaceComposerClient::Transaction& t, + layer_id id, const BlurRegionsChange& c) { + std::vector<BlurRegion> regions; + for(size_t i=0; i < c.blur_regions_size(); i++) { + auto protoRegion = c.blur_regions(i); + regions.push_back(BlurRegion{ + .blurRadius = protoRegion.blur_radius(), + .alpha = protoRegion.alpha(), + .cornerRadiusTL = protoRegion.corner_radius_tl(), + .cornerRadiusTR = protoRegion.corner_radius_tr(), + .cornerRadiusBL = protoRegion.corner_radius_bl(), + .cornerRadiusBR = protoRegion.corner_radius_br(), + .left = protoRegion.left(), + .top = protoRegion.top(), + .right = protoRegion.right(), + .bottom = protoRegion.bottom() + }); + } + t.setBlurRegions(mLayers[id], regions); +} |