Merge "Merge pi-dev-plus-aosp-without-vendor into stage-dr1-aosp-master" into stage-dr1-aosp-master
diff --git a/libs/binder/include/binder/IInterface.h b/libs/binder/include/binder/IInterface.h
index 227d0ae..b61278a 100644
--- a/libs/binder/include/binder/IInterface.h
+++ b/libs/binder/include/binder/IInterface.h
@@ -72,12 +72,18 @@
// ----------------------------------------------------------------------
#define DECLARE_META_INTERFACE(INTERFACE) \
+public: \
static const ::android::String16 descriptor; \
static ::android::sp<I##INTERFACE> asInterface( \
const ::android::sp<::android::IBinder>& obj); \
virtual const ::android::String16& getInterfaceDescriptor() const; \
I##INTERFACE(); \
virtual ~I##INTERFACE(); \
+ static bool setDefaultImpl(std::unique_ptr<I##INTERFACE> impl); \
+ static const std::unique_ptr<I##INTERFACE>& getDefaultImpl(); \
+private: \
+ static std::unique_ptr<I##INTERFACE> default_impl; \
+public: \
#define IMPLEMENT_META_INTERFACE(INTERFACE, NAME) \
@@ -100,6 +106,19 @@
} \
return intr; \
} \
+ std::unique_ptr<I##INTERFACE> I##INTERFACE::default_impl; \
+ bool I##INTERFACE::setDefaultImpl(std::unique_ptr<I##INTERFACE> impl)\
+ { \
+ if (!I##INTERFACE::default_impl && impl) { \
+ I##INTERFACE::default_impl = std::move(impl); \
+ return true; \
+ } \
+ return false; \
+ } \
+ const std::unique_ptr<I##INTERFACE>& I##INTERFACE::getDefaultImpl() \
+ { \
+ return I##INTERFACE::default_impl; \
+ } \
I##INTERFACE::I##INTERFACE() { } \
I##INTERFACE::~I##INTERFACE() { } \
diff --git a/libs/vr/libpdx/private/pdx/rpc/variant.h b/libs/vr/libpdx/private/pdx/rpc/variant.h
index 2cc9664..bdcb293 100644
--- a/libs/vr/libpdx/private/pdx/rpc/variant.h
+++ b/libs/vr/libpdx/private/pdx/rpc/variant.h
@@ -292,7 +292,7 @@
template <typename T>
T& get(TypeTag<T>) {
- return rest_.template get(TypeTag<T>{});
+ return rest_.get(TypeTag<T>{});
}
template <typename T>
const T& get(TypeTag<T>) const {
@@ -300,7 +300,7 @@
}
template <typename T>
constexpr std::int32_t index(TypeTag<T>) const {
- return 1 + rest_.template index(TypeTag<T>{});
+ return 1 + rest_.index(TypeTag<T>{});
}
template <typename... Args>