summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hwc3/ComposerClient.cpp28
-rw-r--r--hwc3/ComposerClient.h1
-rw-r--r--hwc3/ComposerCommandEngine.cpp4
-rw-r--r--hwc3/ComposerCommandEngine.h2
4 files changed, 16 insertions, 19 deletions
diff --git a/hwc3/ComposerClient.cpp b/hwc3/ComposerClient.cpp
index 7324e5c..7a3c72a 100644
--- a/hwc3/ComposerClient.cpp
+++ b/hwc3/ComposerClient.cpp
@@ -33,25 +33,11 @@ bool ComposerClient::init() {
return false;
}
- mCommandEngine = std::make_unique<ComposerCommandEngine>(mHal, mResources.get());
- if (mCommandEngine == nullptr) {
- return false;
- }
- if (!mCommandEngine->init()) {
- mCommandEngine = nullptr;
- return false;
- }
-
return true;
}
ComposerClient::~ComposerClient() {
DEBUG_FUNC();
- // not initialized
- if (!mCommandEngine) {
- return;
- }
-
LOG(DEBUG) << "destroying composer client";
mHal->unregisterEventCallback();
@@ -111,7 +97,19 @@ ndk::ScopedAStatus ComposerClient::destroyVirtualDisplay(int64_t display) {
ndk::ScopedAStatus ComposerClient::executeCommands(const std::vector<DisplayCommand>& commands,
std::vector<CommandResultPayload>* results) {
DEBUG_FUNC();
- auto err = mCommandEngine->execute(commands, results);
+ ComposerCommandEngine engine(mHal, mResources.get());
+
+ auto err = engine.init();
+ if (err != ::android::NO_ERROR) {
+ LOG(ERROR) << "executeCommands(): init ComposerCommandEngine failed " << err;
+ return TO_BINDER_STATUS(err);
+ }
+
+ err = engine.execute(commands, results);
+ if (err != ::android::NO_ERROR) {
+ LOG(ERROR) << "executeCommands(): execute failed " << err;
+ return TO_BINDER_STATUS(err);
+ }
return TO_BINDER_STATUS(err);
}
diff --git a/hwc3/ComposerClient.h b/hwc3/ComposerClient.h
index e10e3b6..9e85396 100644
--- a/hwc3/ComposerClient.h
+++ b/hwc3/ComposerClient.h
@@ -136,7 +136,6 @@ private:
IComposerHal* mHal;
std::unique_ptr<IResourceManager> mResources;
- std::unique_ptr<ComposerCommandEngine> mCommandEngine;
std::function<void()> mOnClientDestroyed;
std::unique_ptr<HalEventCallback> mHalEventCallback;
};
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,
diff --git a/hwc3/ComposerCommandEngine.h b/hwc3/ComposerCommandEngine.h
index ae68285..872c7e5 100644
--- a/hwc3/ComposerCommandEngine.h
+++ b/hwc3/ComposerCommandEngine.h
@@ -30,7 +30,7 @@ class ComposerCommandEngine {
public:
ComposerCommandEngine(IComposerHal* hal, IResourceManager* resources)
: mHal(hal), mResources(resources) {}
- bool init();
+ int32_t init();
int32_t execute(const std::vector<DisplayCommand>& commands,
std::vector<CommandResultPayload>* result);