summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
author Devin Moore <devinmoore@google.com> 2024-05-09 20:50:41 +0000
committer Devin Moore <devinmoore@google.com> 2024-05-09 20:53:56 +0000
commit49842f1b4ff6fc16dec0de49b80a2dba4d6489e0 (patch)
tree29c5e8e62368bda24f5423860b67c645cb7acd2e /libs
parent4241c63415f83769f59c4cb2219712ca18f51510 (diff)
Update AIBinder_setExtension docs
Don't use asBinder() for the target binder argument. Test: Followed the old docs and had a bad time Bug: 338410350 Change-Id: If305d511b9f1a69452d6ab7b39362bea65d52293
Diffstat (limited to 'libs')
-rw-r--r--libs/binder/ndk/include_ndk/android/binder_ibinder.h10
1 files changed, 9 insertions, 1 deletions
diff --git a/libs/binder/ndk/include_ndk/android/binder_ibinder.h b/libs/binder/ndk/include_ndk/android/binder_ibinder.h
index b1ab7b0f9a..2929bce897 100644
--- a/libs/binder/ndk/include_ndk/android/binder_ibinder.h
+++ b/libs/binder/ndk/include_ndk/android/binder_ibinder.h
@@ -718,9 +718,17 @@ binder_status_t AIBinder_getExtension(AIBinder* binder, AIBinder** outExt) __INT
* When registering the interface, add:
* std::shared_ptr<MyFoo> foo = new MyFoo; // class in AOSP codebase
* std::shared_ptr<MyBar> bar = new MyBar; // custom extension class
- * ... = AIBinder_setExtension(foo->asBinder().get(), bar->asBinder().get());
+ * SpAIBinder binder = foo->asBinder(); // target binder to extend
+ * ... = AIBinder_setExtension(binder.get(), bar->asBinder().get());
+ * ... = AServiceManager_addService(binder.get(), instanceName);
* // handle error
*
+ * Do not use foo->asBinder().get() as the target binder argument to
+ * AIBinder_setExtensions because asBinder it creates a new binder
+ * object that will be destroyed after the function is called. The same
+ * binder object must be used for AIBinder_setExtension and
+ * AServiceManager_addService to register the service with an extension.
+ *
* Then, clients of IFoo can get this extension:
* SpAIBinder binder = ...;
* std::shared_ptr<IFoo> foo = IFoo::fromBinder(binder); // handle if null