diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-07-18 20:47:29 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-07-18 20:47:29 +0000 |
commit | c7bf0a87f8ffdaf5c97f9eb906e3472d70e55eaa (patch) | |
tree | decb5aebbbc156c6c0463120dc139560238ab03f | |
parent | 98be9b1e5ce65039a290b045730654809b7d6d48 (diff) | |
parent | 1ce5be5b7d6e5e8b0634492723ca57fd3bb86e83 (diff) | |
download | native-aml_ads_331131000.tar.gz |
Snap for 8842711 from 1ce5be5b7d6e5e8b0634492723ca57fd3bb86e83 to mainline-adservices-releaseaml_ads_331131000
Change-Id: I2ce46ec211eb01e167aa600cbdcb274f9b3455c7
-rw-r--r-- | services/powermanager/WorkSource.cpp | 12 | ||||
-rw-r--r-- | services/powermanager/tests/Android.bp | 1 | ||||
-rw-r--r-- | services/powermanager/tests/WorkSourceTest.cpp | 46 | ||||
-rw-r--r-- | services/surfaceflinger/BufferStateLayer.cpp | 4 |
4 files changed, 60 insertions, 3 deletions
diff --git a/services/powermanager/WorkSource.cpp b/services/powermanager/WorkSource.cpp index 1006a0666f..64a5499084 100644 --- a/services/powermanager/WorkSource.cpp +++ b/services/powermanager/WorkSource.cpp @@ -28,9 +28,16 @@ status_t WorkSource::readFromParcel(const android::Parcel *parcel) { return BAD_VALUE; } int32_t num; + int32_t workChainCount; status_t ret = parcel->readInt32(&num) ?: parcel->readInt32Vector(&mUids) - ?: parcel->readString16Vector(&mNames); + ?: parcel->readString16Vector(&mNames) + ?: parcel->readInt32(&workChainCount); + + if (ret == OK && workChainCount > 0) { + // We don't yet support WorkChains in native WorkSources. + return BAD_VALUE; + } return ret; } @@ -43,7 +50,8 @@ status_t WorkSource::writeToParcel(android::Parcel *parcel) const { return parcel->writeInt32(mUids.size()) ?: parcel->writeInt32Vector(mUids) - ?: parcel->writeString16Vector(mNames); + ?: parcel->writeString16Vector(mNames) + ?: parcel->writeInt32(-1); } } // namespace android::os diff --git a/services/powermanager/tests/Android.bp b/services/powermanager/tests/Android.bp index 2d1558a33f..962784cbae 100644 --- a/services/powermanager/tests/Android.bp +++ b/services/powermanager/tests/Android.bp @@ -31,6 +31,7 @@ cc_test { "PowerHalWrapperAidlTest.cpp", "PowerHalWrapperHidlV1_0Test.cpp", "PowerHalWrapperHidlV1_1Test.cpp", + "WorkSourceTest.cpp", ], cflags: [ "-Wall", diff --git a/services/powermanager/tests/WorkSourceTest.cpp b/services/powermanager/tests/WorkSourceTest.cpp new file mode 100644 index 0000000000..bb9164ac57 --- /dev/null +++ b/services/powermanager/tests/WorkSourceTest.cpp @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2022 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 <optional> +#define LOG_TAG "PowerHalLoaderTest" + +#include <android-base/logging.h> +#include <android/WorkSource.h> +#include <binder/Parcel.h> +#include <gtest/gtest.h> + +#include <future> + +using namespace android; +using namespace testing; + +TEST(WorkSourceTest, Parcel) { + std::vector<int32_t> uids = {1, 2}; + using Names = std::vector<std::optional<String16>>; + std::optional<Names> names = std::make_optional<Names>({std::make_optional(String16("name"))}); + os::WorkSource ws{uids, names}; + + Parcel p; + ws.writeToParcel(&p); + p.setDataPosition(0); + + os::WorkSource otherWs; + otherWs.readFromParcel(&p); + + EXPECT_EQ(ws, otherWs); + EXPECT_EQ(uids, otherWs.getUids()); + EXPECT_EQ(names, otherWs.getNames()); +} diff --git a/services/surfaceflinger/BufferStateLayer.cpp b/services/surfaceflinger/BufferStateLayer.cpp index fecf5ae059..3875f151cb 100644 --- a/services/surfaceflinger/BufferStateLayer.cpp +++ b/services/surfaceflinger/BufferStateLayer.cpp @@ -34,6 +34,8 @@ #include "FrameTracer/FrameTracer.h" #include "TimeStats/TimeStats.h" +#define EARLY_RELEASE_ENABLED false + namespace android { using PresentState = frametimeline::SurfaceFrame::PresentState; @@ -373,7 +375,7 @@ bool BufferStateLayer::setBuffer(std::shared_ptr<renderengine::ExternalTexture>& addSurfaceFrameDroppedForBuffer(mDrawingState.bufferSurfaceFrameTX); mDrawingState.bufferSurfaceFrameTX.reset(); } - } else if (mLastClientCompositionFence != nullptr) { + } else if (EARLY_RELEASE_ENABLED && mLastClientCompositionFence != nullptr) { callReleaseBufferCallback(mDrawingState.releaseBufferListener, mDrawingState.buffer->getBuffer(), mDrawingState.frameNumber, mLastClientCompositionFence, |