diff options
author | android-build-prod (mdb) <android-build-team-robot@google.com> | 2018-10-12 02:16:14 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-10-12 02:16:14 +0000 |
commit | ce2e607efa5ba08e89cf0fd352759d753230e86b (patch) | |
tree | d9ecba11f032fd709e5ef64619749e9925af2afc | |
parent | 186578aa8b0285e180b903e1010298251bb29c1d (diff) | |
parent | 2f4f8b0ca9024ff754741f122af1a3e049d9c998 (diff) | |
download | native-master-cuttlefish-testing-release.tar.gz |
Merge "Snap for 5061196 from ea96f70b7698694119e18826bfb2aa7b40f92dc6 to master-cuttlefish-testing-release" into master-cuttlefish-testing-releasemaster-cuttlefish-testing-release
6 files changed, 38 insertions, 171 deletions
diff --git a/headers/media_plugin/media/arcvideobridge/IArcVideoBridge.h b/headers/media_plugin/media/arcvideobridge/IArcVideoBridge.h deleted file mode 100644 index b32c92eb88..0000000000 --- a/headers/media_plugin/media/arcvideobridge/IArcVideoBridge.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef ANDROID_IARC_VIDEO_BRIDGE_H -#define ANDROID_IARC_VIDEO_BRIDGE_H - -#include <arc/IArcBridgeService.h> -#include <binder/IInterface.h> -#include <utils/Errors.h> - -namespace android { - -class IArcVideoBridge : public IInterface { -public: - DECLARE_META_INTERFACE(ArcVideoBridge); - - // Returns MojoBootstrapResult for creating mojo ipc channel of - // VideoAcceleratorFactory. - virtual ::arc::MojoBootstrapResult bootstrapVideoAcceleratorFactory() = 0; - - // Get the version of the remote VideoHost on Chromium side. - virtual int32_t hostVersion() = 0; -}; - -class BnArcVideoBridge : public BnInterface<IArcVideoBridge> { -public: - virtual status_t onTransact( - uint32_t code, const Parcel& data, Parcel* reply, uint32_t flags = 0); -}; - -}; // namespace android - -#endif // ANDROID_IARC_VIDEO_BRIDGE_H diff --git a/libs/binder/include/binder/ParcelFileDescriptor.h b/libs/binder/include/binder/ParcelFileDescriptor.h index 455462b18f..ad950affc5 100644 --- a/libs/binder/include/binder/ParcelFileDescriptor.h +++ b/libs/binder/include/binder/ParcelFileDescriptor.h @@ -31,6 +31,7 @@ class ParcelFileDescriptor : public android::Parcelable { public: ParcelFileDescriptor(); explicit ParcelFileDescriptor(android::base::unique_fd fd); + explicit ParcelFileDescriptor(ParcelFileDescriptor&& other) : mFd(std::move(other.mFd)) { } ~ParcelFileDescriptor() override; int get() const { return mFd.get(); } diff --git a/libs/binder/ndk/include_ndk/android/binder_interface_utils.h b/libs/binder/ndk/include_ndk/android/binder_interface_utils.h index 6782ce0c3a..5a4196a3f2 100644 --- a/libs/binder/ndk/include_ndk/android/binder_interface_utils.h +++ b/libs/binder/ndk/include_ndk/android/binder_interface_utils.h @@ -37,12 +37,18 @@ namespace ndk { -// analog using std::shared_ptr for RefBase-like semantics +/** + * analog using std::shared_ptr for internally held refcount + */ class SharedRefBase { public: SharedRefBase() {} virtual ~SharedRefBase() {} + /** + * A shared_ptr must be held to this object when this is called. This must be called once during + * the lifetime of this object. + */ std::shared_ptr<SharedRefBase> ref() { std::shared_ptr<SharedRefBase> thiz = mThis.lock(); @@ -51,6 +57,9 @@ public: return thiz; } + /** + * Convenience method for a ref (see above) which automatically casts to the desired child type. + */ template <typename CHILD> std::shared_ptr<CHILD> ref() { return std::static_pointer_cast<CHILD>(ref()); @@ -70,13 +79,17 @@ private: std::weak_ptr<SharedRefBase> mThis; }; -// wrapper analog to IInterface +/** + * wrapper analog to IInterface + */ class ICInterface : public SharedRefBase { public: ICInterface() {} virtual ~ICInterface() {} - // This either returns the single existing implementation or creates a new implementation. + /** + * This either returns the single existing implementation or creates a new implementation. + */ virtual SpAIBinder asBinder() = 0; /** @@ -86,7 +99,9 @@ public: virtual bool isRemote() = 0; }; -// wrapper analog to BnInterface +/** + * implementation of IInterface for server (n = native) + */ template <typename INTERFACE> class BnCInterface : public INTERFACE { public: @@ -98,8 +113,10 @@ public: bool isRemote() override { return true; } protected: - // This function should only be called by asBinder. Otherwise, there is a possibility of - // multiple AIBinder* objects being created for the same instance of an object. + /** + * This function should only be called by asBinder. Otherwise, there is a possibility of + * multiple AIBinder* objects being created for the same instance of an object. + */ virtual SpAIBinder createBinder() = 0; private: @@ -107,7 +124,9 @@ private: ScopedAIBinder_Weak mWeakBinder; }; -// wrapper analog to BpInterfae +/** + * implementation of IInterface for client (p = proxy) + */ template <typename INTERFACE> class BpCInterface : public INTERFACE { public: diff --git a/services/media/arcvideobridge/Android.bp b/services/media/arcvideobridge/Android.bp deleted file mode 100644 index ca5b896edd..0000000000 --- a/services/media/arcvideobridge/Android.bp +++ /dev/null @@ -1,28 +0,0 @@ -cc_library_shared { - name: "libarcvideobridge", - product_variables: { - arc: { - srcs: [ - "IArcVideoBridge.cpp", - ], - shared_libs: [ - "libarcbridge", - "libarcbridgeservice", - "libbinder", - "libchrome", - "liblog", - "libmojo", - "libutils", - ], - cflags: [ - "-Wall", - "-Werror", - "-Wunused", - "-Wunreachable-code", - ], - include_dirs: [ - "frameworks/native/include/media/arcvideobridge", - ] - } - } -} diff --git a/services/media/arcvideobridge/IArcVideoBridge.cpp b/services/media/arcvideobridge/IArcVideoBridge.cpp deleted file mode 100644 index 468b76b6e1..0000000000 --- a/services/media/arcvideobridge/IArcVideoBridge.cpp +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#define LOG_TAG "IArcVideoBridge" -//#define LOG_NDEBUG 0 - -#include <stdint.h> -#include <sys/types.h> - -#include "IArcVideoBridge.h" -#include <binder/Parcel.h> -#include <utils/Log.h> - -namespace android { - -enum { - BOOTSTRAP_VIDEO_ACCELERATOR_FACTORY = IBinder::FIRST_CALL_TRANSACTION, - HOST_VERSION, -}; - -class BpArcVideoBridge : public BpInterface<IArcVideoBridge> { -public: - BpArcVideoBridge(const sp<IBinder>& impl) : BpInterface<IArcVideoBridge>(impl) { } - - virtual ::arc::MojoBootstrapResult bootstrapVideoAcceleratorFactory() { - Parcel data, reply; - ALOGV("bootstrapVideoAcceleratorFactory"); - data.writeInterfaceToken(IArcVideoBridge::getInterfaceDescriptor()); - status_t status = remote()->transact( - BOOTSTRAP_VIDEO_ACCELERATOR_FACTORY, data, &reply, 0); - if (status != 0) { - ALOGE("transact failed: %d", status); - return arc::MojoBootstrapResult(); - } - return arc::MojoBootstrapResult::createFromParcel(reply); - } - - virtual int32_t hostVersion() { - Parcel data, reply; - ALOGV("hostVersion"); - data.writeInterfaceToken(IArcVideoBridge::getInterfaceDescriptor()); - status_t status = remote()->transact(HOST_VERSION, data, &reply, 0); - if (status != 0) { - ALOGE("transact failed: %d", status); - return false; - } - return reply.readInt32(); - } -}; - -IMPLEMENT_META_INTERFACE(ArcVideoBridge, "android.os.IArcVideoBridge"); - -status_t BnArcVideoBridge::onTransact( - uint32_t code, const Parcel &data, Parcel *reply, uint32_t flags) { - switch(code) { - case BOOTSTRAP_VIDEO_ACCELERATOR_FACTORY: { - ALOGV("BOOTSTRAP_VIDEO_ACCELERATOR_FACTORY"); - CHECK_INTERFACE(IArcVideoBridge, data, reply); - arc::MojoBootstrapResult result = bootstrapVideoAcceleratorFactory(); - return result.writeToParcel(reply); - } - case HOST_VERSION: { - ALOGV("HOST_VERSION"); - CHECK_INTERFACE(IArcVideoBridge, data, reply); - reply->writeInt32(hostVersion()); - return OK; - } - default: - return BBinder::onTransact(code, data, reply, flags); - } -} - -} // namespace android diff --git a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h index f1556d8bc7..eec505ec58 100644 --- a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h +++ b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h @@ -211,13 +211,20 @@ public: return *this; } - auto& addCapability(HWC2::Capability cap) { - mCapabilities.emplace(cap); + auto& setCapabilities(const std::unordered_set<HWC2::Capability>* capabilities) { + mCapabilities = capabilities; return *this; } void inject(TestableSurfaceFlinger* flinger, Hwc2::Composer* composer) { - auto display = std::make_unique<HWC2Display>(*composer, mCapabilities, mHwcDisplayId, + static const std::unordered_set<HWC2::Capability> defaultCapabilities; + if (mCapabilities == nullptr) mCapabilities = &defaultCapabilities; + + // Caution - Make sure that any values passed by reference here do + // not refer to an instance owned by FakeHwcDisplayInjector. This + // class has temporary lifetime, while the constructed HWC2::Display + // is much longer lived. + auto display = std::make_unique<HWC2Display>(*composer, *mCapabilities, mHwcDisplayId, mHwcDisplayType); auto config = HWC2::Display::Config::Builder(*display, mActiveConfig); @@ -247,7 +254,7 @@ public: int32_t mDpiX = DEFAULT_DPI; int32_t mDpiY = DEFAULT_DPI; int32_t mActiveConfig = DEFAULT_ACTIVE_CONFIG; - std::unordered_set<HWC2::Capability> mCapabilities; + const std::unordered_set<HWC2::Capability>* mCapabilities = nullptr; }; class FakeDisplayDeviceInjector { |