hwc: Load diag lib based on property value
Change-Id: I053e3f00f72f7416d4969333e04e9597045e7e08
diff --git a/include/display_properties.h b/include/display_properties.h
index 64c4839..d78da9d 100644
--- a/include/display_properties.h
+++ b/include/display_properties.h
@@ -119,6 +119,7 @@
#define BUILTIN_BASEID_AND_SIZE_PROP DISPLAY_PROP("builtin_baseid_and_size")
#define PLUGGABLE_BASEID_AND_SIZE_PROP DISPLAY_PROP("pluggable_baseid_and_size")
#define VIRTUAL_BASEID_AND_SIZE_PROP DISPLAY_PROP("virtual_baseid_and_size")
+#define ENABLE_QDCM_DIAG DISPLAY_PROP("enable_qdcm_diag")
#define ZERO_SWAP_INTERVAL "vendor.debug.egl.swapinterval"
#define ENABLE_DROP_REFRESH DISPLAY_PROP("enable_drop_refresh")
diff --git a/sdm/libs/hwc2/hwc_color_manager.cpp b/sdm/libs/hwc2/hwc_color_manager.cpp
index 4fb047f..561322d 100644
--- a/sdm/libs/hwc2/hwc_color_manager.cpp
+++ b/sdm/libs/hwc2/hwc_color_manager.cpp
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2015 - 2018, The Linux Foundation. All rights reserved.
+* Copyright (c) 2015 - 2019, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
@@ -115,24 +115,28 @@
}
DLOGI("Successfully loaded %s", DISPLAY_API_INTERFACE_LIBRARY_NAME);
- // Load diagclient library and invokes its entry point to pass in display APIs.
- DynLib &diag_client_lib = color_mgr->diag_client_lib_;
- if (diag_client_lib.Open(QDCM_DIAG_CLIENT_LIBRARY_NAME)) {
- if (!diag_client_lib.Sym(INIT_QDCM_DIAG_CLIENT_NAME,
- reinterpret_cast<void **>(&color_mgr->qdcm_diag_init_)) ||
- !diag_client_lib.Sym(DEINIT_QDCM_DIAG_CLIENT_NAME,
- reinterpret_cast<void **>(&color_mgr->qdcm_diag_deinit_))) {
- DLOGE("Fail to retrieve = %s from %s", INIT_QDCM_DIAG_CLIENT_NAME,
- QDCM_DIAG_CLIENT_LIBRARY_NAME);
+ int enable_qdcm_diag = 0;
+ HWCDebugHandler::Get()->GetProperty(ENABLE_QDCM_DIAG, &enable_qdcm_diag);
+ if (enable_qdcm_diag) {
+ // Load diagclient library and invokes its entry point to pass in display APIs.
+ DynLib &diag_client_lib = color_mgr->diag_client_lib_;
+ if (diag_client_lib.Open(QDCM_DIAG_CLIENT_LIBRARY_NAME)) {
+ if (!diag_client_lib.Sym(INIT_QDCM_DIAG_CLIENT_NAME,
+ reinterpret_cast<void **>(&color_mgr->qdcm_diag_init_)) ||
+ !diag_client_lib.Sym(DEINIT_QDCM_DIAG_CLIENT_NAME,
+ reinterpret_cast<void **>(&color_mgr->qdcm_diag_deinit_))) {
+ DLOGE("Fail to retrieve = %s from %s", INIT_QDCM_DIAG_CLIENT_NAME,
+ QDCM_DIAG_CLIENT_LIBRARY_NAME);
+ } else {
+ // invoke Diag Client entry point to initialize.
+ color_mgr->qdcm_diag_init_(color_mgr->color_apis_);
+ DLOGI("Successfully loaded %s and %s and diag_init'ed",
+ DISPLAY_API_INTERFACE_LIBRARY_NAME, QDCM_DIAG_CLIENT_LIBRARY_NAME);
+ }
} else {
- // invoke Diag Client entry point to initialize.
- color_mgr->qdcm_diag_init_(color_mgr->color_apis_);
- DLOGI("Successfully loaded %s and %s and diag_init'ed", DISPLAY_API_INTERFACE_LIBRARY_NAME,
- QDCM_DIAG_CLIENT_LIBRARY_NAME);
+ DLOGW("Unable to load = %s", QDCM_DIAG_CLIENT_LIBRARY_NAME);
+ // only QDCM Diag client failed to be loaded and system still should function.
}
- } else {
- DLOGW("Unable to load = %s", QDCM_DIAG_CLIENT_LIBRARY_NAME);
- // only QDCM Diag client failed to be loaded and system still should function.
}
} else {
DLOGE("Unable to create HWCColorManager");