Merge "commonsys-intf: qdMetaData: Add get/setMetaData variants that unmap metadata" into display-android-commonsys.lnx.1.0

This commit is contained in:
Package Warehouse Build User
2019-02-02 04:48:31 -08:00
committed by Gerrit - the friendly Code Review server
2 changed files with 29 additions and 0 deletions

View File

@@ -64,6 +64,13 @@ static int validateAndMap(private_handle_t* handle) {
return 0;
}
static void unmapAndReset(private_handle_t *handle) {
if (private_handle_t::validate(handle) == 0 && handle->base_metadata) {
munmap(reinterpret_cast<void *>(handle->base_metadata), getMetaDataSize());
handle->base_metadata = 0;
}
}
int setMetaData(private_handle_t *handle, DispParamType paramType,
void *param) {
auto err = validateAndMap(handle);
@@ -349,3 +356,17 @@ int copyMetaDataVaToVa(MetaData_t *src_data, MetaData_t *dst_data) {
return 0;
}
int setMetaDataAndUnmap(struct private_handle_t *handle, enum DispParamType paramType,
void *param) {
auto ret = setMetaData(handle, paramType, param);
unmapAndReset(handle);
return ret;
}
int getMetaDataAndUnmap(struct private_handle_t *handle,
enum DispFetchParamType paramType,
void *param) {
auto ret = getMetaData(handle, paramType, param);
unmapAndReset(handle);
return ret;
}

View File

@@ -210,6 +210,14 @@ int clearMetaDataVa(struct MetaData_t *data, enum DispParamType paramType);
unsigned long getMetaDataSize();
// Map, access metadata and unmap. Used by clients that do not import/free but
// clone and delete native_handle
int setMetaDataAndUnmap(struct private_handle_t *handle, enum DispParamType paramType,
void *param);
int getMetaDataAndUnmap(struct private_handle_t *handle,
enum DispFetchParamType paramType,
void *param);
#ifdef __cplusplus
}
#endif