/* * Copyright (C) 2016 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include <sstream> #include <ui/Rect.h> #include "Hwc2TestClientTarget.h" int Hwc2TestClientTarget::getBuffer(const Hwc2TestLayers& testLayers, const std::set<hwc2_layer_t>& clientLayers, const std::set<hwc2_layer_t>& clearLayers, bool flipClientTarget, const Area& displayArea, buffer_handle_t* outHandle, int32_t* outAcquireFence) { if (!flipClientTarget) { bool needsClientTarget = false; for (auto clientLayer : clientLayers) { if (testLayers.getVisibleRegion(clientLayer).numRects > 0) { needsClientTarget = true; break; } } if (!needsClientTarget) { *outHandle = nullptr; *outAcquireFence = -1; return 0; } } return mBuffer.get(outHandle, outAcquireFence, displayArea, &testLayers, &clientLayers, &clearLayers); } Hwc2TestClientTargetSupport::Hwc2TestClientTargetSupport( Hwc2TestCoverage coverage, const Area& displayArea) : mBufferArea(coverage, displayArea), mDataspace(coverage), mSurfaceDamage(coverage) { mBufferArea.setDependent(&mSurfaceDamage); } std::string Hwc2TestClientTargetSupport::dump() const { std::stringstream dmp; dmp << "client target: \n"; for (auto property : properties) { dmp << property->dump(); } return dmp.str(); } void Hwc2TestClientTargetSupport::reset() { for (auto property : properties) { property->reset(); } } bool Hwc2TestClientTargetSupport::advance() { for (auto property : properties) { if (property->advance()) return true; } return false; } Area Hwc2TestClientTargetSupport::getBufferArea() const { return mBufferArea.get(); } android::ui::Dataspace Hwc2TestClientTargetSupport::getDataspace() const { return mDataspace.get(); } const hwc_region_t Hwc2TestClientTargetSupport::getSurfaceDamage() const { return mSurfaceDamage.get(); }