Loading libs/binder/IServiceManager.cpp +14 −2 Original line number Diff line number Diff line Loading @@ -280,6 +280,15 @@ sp<IBinder> ServiceManagerShim::waitForService(const String16& name16) std::condition_variable mCv; }; // Simple RAII object to ensure a function call immediately before going out of scope class Defer { public: Defer(std::function<void()>&& f) : mF(std::move(f)) {} ~Defer() { mF(); } private: std::function<void()> mF; }; const std::string name = String8(name16).c_str(); sp<IBinder> out; Loading @@ -293,6 +302,9 @@ sp<IBinder> ServiceManagerShim::waitForService(const String16& name16) name, waiter).isOk()) { return nullptr; } Defer unregister ([&] { mTheRealServiceManager->unregisterForNotifications(name, waiter); }); while(true) { { Loading Loading
libs/binder/IServiceManager.cpp +14 −2 Original line number Diff line number Diff line Loading @@ -280,6 +280,15 @@ sp<IBinder> ServiceManagerShim::waitForService(const String16& name16) std::condition_variable mCv; }; // Simple RAII object to ensure a function call immediately before going out of scope class Defer { public: Defer(std::function<void()>&& f) : mF(std::move(f)) {} ~Defer() { mF(); } private: std::function<void()> mF; }; const std::string name = String8(name16).c_str(); sp<IBinder> out; Loading @@ -293,6 +302,9 @@ sp<IBinder> ServiceManagerShim::waitForService(const String16& name16) name, waiter).isOk()) { return nullptr; } Defer unregister ([&] { mTheRealServiceManager->unregisterForNotifications(name, waiter); }); while(true) { { Loading