Fix issues around GoldfishAddressSpaceBlockProvider::open
Bug: 149254427
Test: host side tests
Merged-In: I16812a5a398fa72189c7d4fa18944ec1e31b72f2
Signed-off-by: Roman Kiryanov <rkir@google.com>
Change-Id: Ib9de7df1feca19ace7af7f782589afee3d00cb00
diff --git a/shared/OpenglCodecCommon/goldfish_address_space_android.impl b/shared/OpenglCodecCommon/goldfish_address_space_android.impl
index 96194bd..55b4a04 100644
--- a/shared/OpenglCodecCommon/goldfish_address_space_android.impl
+++ b/shared/OpenglCodecCommon/goldfish_address_space_android.impl
@@ -108,6 +108,7 @@
} // namespace
GoldfishAddressSpaceBlockProvider::GoldfishAddressSpaceBlockProvider(GoldfishAddressSpaceSubdeviceType subdevice)
+ : m_handle(-1)
{
open(subdevice);
}
diff --git a/shared/OpenglCodecCommon/goldfish_address_space_fuchsia.impl b/shared/OpenglCodecCommon/goldfish_address_space_fuchsia.impl
index cb2ce93..a264fe4 100644
--- a/shared/OpenglCodecCommon/goldfish_address_space_fuchsia.impl
+++ b/shared/OpenglCodecCommon/goldfish_address_space_fuchsia.impl
@@ -70,6 +70,11 @@
{
}
+bool GoldfishAddressSpaceBlockProvider::open(GoldfishAddressSpaceSubdeviceType subdevice) {
+ ALOGE("%s: not implemented\n", __func__);
+ abort();
+}
+
bool GoldfishAddressSpaceBlockProvider::is_opened() const
{
return m_device.is_bound();
diff --git a/shared/OpenglCodecCommon/goldfish_address_space_host.impl b/shared/OpenglCodecCommon/goldfish_address_space_host.impl
index 5a5ee75..1cf6fa7 100644
--- a/shared/OpenglCodecCommon/goldfish_address_space_host.impl
+++ b/shared/OpenglCodecCommon/goldfish_address_space_host.impl
@@ -37,8 +37,17 @@
using android::emulation::AddressSpaceDevicePingInfo;
GoldfishAddressSpaceBlockProvider::GoldfishAddressSpaceBlockProvider(GoldfishAddressSpaceSubdeviceType subdevice)
- : m_handle(HostAddressSpaceDevice::get()->open())
+ : m_handle(0)
{
+ open(subdevice);
+}
+
+bool GoldfishAddressSpaceBlockProvider::open(GoldfishAddressSpaceSubdeviceType subdevice)
+{
+ close();
+
+ m_handle = HostAddressSpaceDevice::get()->open();
+
if ((subdevice != GoldfishAddressSpaceSubdeviceType::NoSubdevice) && is_opened()) {
AddressSpaceDevicePingInfo request;
::memset(&request, 0, sizeof(request));
@@ -46,6 +55,8 @@
HostAddressSpaceDevice::get()->ping(m_handle, &request);
}
+
+ return is_opened();
}
GoldfishAddressSpaceBlockProvider::~GoldfishAddressSpaceBlockProvider()