Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 94404eef authored by Wonsik Kim's avatar Wonsik Kim Committed by Android (Google) Code Review
Browse files

Merge "Clarify ownership for NativeHandle::mHandle"

parents 136317b1 c4cc584b
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -26,9 +26,11 @@ namespace android {

class NativeHandle: public LightRefBase<NativeHandle> {
public:
    // Create a refcounted wrapper around a native_handle_t.
    // Create a refcounted wrapper around a native_handle_t, and declare
    // whether the wrapper owns the handle (so that it should clean up the
    // handle upon destruction) or not.
    // If handle is NULL, no NativeHandle will be created.
    static sp<NativeHandle> create(native_handle_t* handle);
    static sp<NativeHandle> create(native_handle_t* handle, bool ownsHandle);

    const native_handle_t* handle() const {
        return mHandle;
@@ -38,10 +40,11 @@ private:
    // for access to the destructor
    friend class LightRefBase<NativeHandle>;

    NativeHandle(native_handle_t* handle);
    NativeHandle(native_handle_t* handle, bool ownsHandle);
    virtual ~NativeHandle();

    native_handle_t* mHandle;
    bool mOwnsHandle;

    // non-copyable
    NativeHandle(const NativeHandle&);
+9 −6
Original line number Diff line number Diff line
@@ -19,17 +19,20 @@

namespace android {

sp<NativeHandle> NativeHandle::create(native_handle_t* handle) {
    return handle ? new NativeHandle(handle) : NULL;
sp<NativeHandle> NativeHandle::create(
        native_handle_t* handle, bool ownsHandle) {
    return handle ? new NativeHandle(handle, ownsHandle) : NULL;
}

NativeHandle::NativeHandle(native_handle_t* handle)
:   mHandle(handle)
NativeHandle::NativeHandle(native_handle_t* handle, bool ownsHandle)
:   mHandle(handle), mOwnsHandle(ownsHandle)
{}

NativeHandle::~NativeHandle() {
    if (mOwnsHandle) {
        native_handle_close(mHandle);
        native_handle_delete(mHandle);
    }
}

} // namespace android