Refine HidlMemory
Add construct from a const hidl_memory& so that we can easily
copy it out of a synchronous callback
Bug: 67758915
Test: hidl_test
Change-Id: I0e10cc4c9321197787657f957ea184a5e7262744
diff --git a/base/HidlSupport.cpp b/base/HidlSupport.cpp
index aec3fed..8f3c057 100644
--- a/base/HidlSupport.cpp
+++ b/base/HidlSupport.cpp
@@ -273,9 +273,15 @@
return mSize == 0;
}
+sp<HidlMemory> HidlMemory::getInstance(const hidl_memory& mem) {
+ sp<HidlMemory> instance = new HidlMemory();
+ instance->hidl_memory::operator=(mem);
+ return instance;
+}
+
sp<HidlMemory> HidlMemory::getInstance(hidl_memory&& mem) {
sp<HidlMemory> instance = new HidlMemory();
- *instance = std::move(mem);
+ instance->hidl_memory::operator=(std::move(mem));
return instance;
}
@@ -295,6 +301,11 @@
return instance;
}
+HidlMemory::HidlMemory() : hidl_memory() {}
+
+HidlMemory::HidlMemory(const hidl_string& name, hidl_handle&& handle, size_t size)
+ : hidl_memory(name, std::move(handle), size) {}
+
// it's required to have at least one out-of-line method to avoid weak vtable
HidlMemory::~HidlMemory() {
hidl_memory::~hidl_memory();