summaryrefslogtreecommitdiff
path: root/hwc3/ComposerCommandEngine.cpp
diff options
context:
space:
mode:
authorjoenchen <joenchen@google.com>2022-11-22 12:46:04 +0000
committerjoenchen <joenchen@google.com>2022-12-01 08:14:38 +0000
commit4e4fb83bf22fdce683d0ba9044aaf18826f76be0 (patch)
treedbb96921593801fdb3c9854ab93c1276d9b175a4 /hwc3/ComposerCommandEngine.cpp
parent91b5698bd20bb0f38a52fb80172ecdeb7687351a (diff)
hwc3: Make the ComposerCommandEngine as local variable
A race condition exists because HWC uses only one ComposerCommandEngine::Writer for all displays. The writer takes responsibility to package AIDL functions’ return values and deliver the package to SF. When a thread is packaging the return value of the inner display by Writer, another thread may call Writer::reset() for the outer display. Bug: 247074458 Test: switch applications Change-Id: I7393bd6d01008b09ac4f4a733fc7d024aaf05352
Diffstat (limited to 'hwc3/ComposerCommandEngine.cpp')
-rw-r--r--hwc3/ComposerCommandEngine.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/hwc3/ComposerCommandEngine.cpp b/hwc3/ComposerCommandEngine.cpp
index 4b3a1a3..4dac2df 100644
--- a/hwc3/ComposerCommandEngine.cpp
+++ b/hwc3/ComposerCommandEngine.cpp
@@ -55,9 +55,9 @@ namespace aidl::android::hardware::graphics::composer3::impl {
} \
} while (0)
-bool ComposerCommandEngine::init() {
+int32_t ComposerCommandEngine::init() {
mWriter = std::make_unique<ComposerServiceWriter>();
- return (mWriter != nullptr);
+ return (mWriter != nullptr) ? ::android::NO_ERROR : ::android::NO_MEMORY;
}
int32_t ComposerCommandEngine::execute(const std::vector<DisplayCommand>& commands,