mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 11:36:00 +00:00
composer: hold a sp<IComposer> from the service itself
IComposerClient assumes that IComposer will outlive its life cycle and holds a simple pointer to HwcHal. This change is taking the same approach of newer composer versions (2.2, 2.3, and 2.4) to make sure that IComposer would outlive IComposerClient. Test: coral booting with this change Fixes: 155769496 Change-Id: I3962ede51ce823368c62c4e4e5fb30f7a5680bdf
This commit is contained in:
@@ -1,31 +1,3 @@
|
||||
cc_library_shared {
|
||||
name: "android.hardware.graphics.composer@2.1-impl",
|
||||
defaults: ["hidl_defaults"],
|
||||
vendor: true,
|
||||
relative_install_path: "hw",
|
||||
srcs: ["passthrough.cpp"],
|
||||
header_libs: [
|
||||
"android.hardware.graphics.composer@2.1-passthrough",
|
||||
],
|
||||
shared_libs: [
|
||||
"android.hardware.graphics.composer@2.1",
|
||||
"android.hardware.graphics.composer@2.1-resources",
|
||||
"libbase",
|
||||
"libcutils",
|
||||
"libfmq",
|
||||
"libhardware",
|
||||
"libhidlbase",
|
||||
"liblog",
|
||||
"libsync",
|
||||
"libutils",
|
||||
"libhwc2on1adapter",
|
||||
"libhwc2onfbadapter",
|
||||
],
|
||||
cflags: [
|
||||
"-DLOG_TAG=\"ComposerHal\""
|
||||
],
|
||||
}
|
||||
|
||||
cc_binary {
|
||||
name: "android.hardware.graphics.composer@2.1-service",
|
||||
defaults: ["hidl_defaults"],
|
||||
@@ -33,10 +5,20 @@ cc_binary {
|
||||
relative_install_path: "hw",
|
||||
srcs: ["service.cpp"],
|
||||
init_rc: ["android.hardware.graphics.composer@2.1-service.rc"],
|
||||
header_libs: [
|
||||
"android.hardware.graphics.composer@2.1-passthrough",
|
||||
],
|
||||
shared_libs: [
|
||||
"android.hardware.graphics.composer@2.1",
|
||||
"android.hardware.graphics.composer@2.1-resources",
|
||||
"libbase",
|
||||
"libbinder",
|
||||
"libcutils",
|
||||
"libfmq",
|
||||
"libhardware",
|
||||
"libhidlbase",
|
||||
"libhwc2on1adapter",
|
||||
"libhwc2onfbadapter",
|
||||
"liblog",
|
||||
"libsync",
|
||||
"libutils",
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright 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 <android/hardware/graphics/composer/2.1/IComposer.h>
|
||||
#include <composer-passthrough/2.1/HwcLoader.h>
|
||||
|
||||
using android::hardware::graphics::composer::V2_1::IComposer;
|
||||
using android::hardware::graphics::composer::V2_1::passthrough::HwcLoader;
|
||||
|
||||
extern "C" IComposer* HIDL_FETCH_IComposer(const char* /* name */) {
|
||||
return HwcLoader::load();
|
||||
}
|
||||
@@ -21,10 +21,11 @@
|
||||
#include <android/hardware/graphics/composer/2.1/IComposer.h>
|
||||
|
||||
#include <binder/ProcessState.h>
|
||||
#include <composer-passthrough/2.1/HwcLoader.h>
|
||||
#include <hidl/LegacySupport.h>
|
||||
|
||||
using android::hardware::graphics::composer::V2_1::IComposer;
|
||||
using android::hardware::defaultPassthroughServiceImplementation;
|
||||
using android::hardware::graphics::composer::V2_1::passthrough::HwcLoader;
|
||||
|
||||
int main() {
|
||||
// the conventional HAL might start binder services
|
||||
@@ -40,5 +41,19 @@ int main() {
|
||||
ALOGE("Couldn't set SCHED_FIFO: %d", errno);
|
||||
}
|
||||
|
||||
return defaultPassthroughServiceImplementation<IComposer>(4);
|
||||
android::hardware::configureRpcThreadpool(4, true /* will join */);
|
||||
|
||||
android::sp<IComposer> composer = HwcLoader::load();
|
||||
if (composer == nullptr) {
|
||||
return 1;
|
||||
}
|
||||
if (composer->registerAsService() != android::NO_ERROR) {
|
||||
ALOGE("failed to register service");
|
||||
return 1;
|
||||
}
|
||||
|
||||
android::hardware::joinRpcThreadpool();
|
||||
|
||||
ALOGE("service is terminating");
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user