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

Commit 24c16e02 authored by Steven Moreland's avatar Steven Moreland Committed by Android (Google) Code Review
Browse files

Merge "Reland "libutils: disable implicit ref base construction""

parents 6ed2af8e 02c47655
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -76,6 +76,7 @@ cc_defaults {
        "-Wall",
        "-Werror",
        "-Wno-exit-time-destructors",
        "-DANDROID_UTILS_REF_BASE_DISABLE_IMPLICIT_CONSTRUCTION",
    ],
    header_libs: [
        "libbase_headers",
+8 −3
Original line number Diff line number Diff line
@@ -107,14 +107,15 @@ sp<Looper> Looper::getForThread() {
    int result = pthread_once(& gTLSOnce, initTLSKey);
    LOG_ALWAYS_FATAL_IF(result != 0, "pthread_once failed");

    return (Looper*)pthread_getspecific(gTLSKey);
    Looper* looper = (Looper*)pthread_getspecific(gTLSKey);
    return sp<Looper>::fromExisting(looper);
}

sp<Looper> Looper::prepare(int opts) {
    bool allowNonCallbacks = opts & PREPARE_ALLOW_NON_CALLBACKS;
    sp<Looper> looper = Looper::getForThread();
    if (looper == nullptr) {
        looper = new Looper(allowNonCallbacks);
        looper = sp<Looper>::make(allowNonCallbacks);
        Looper::setForThread(looper);
    }
    if (looper->getAllowNonCallbacks() != allowNonCallbacks) {
@@ -424,7 +425,11 @@ void Looper::pushResponse(int events, const Request& request) {
}

int Looper::addFd(int fd, int ident, int events, Looper_callbackFunc callback, void* data) {
    return addFd(fd, ident, events, callback ? new SimpleLooperCallback(callback) : nullptr, data);
    sp<SimpleLooperCallback> looperCallback;
    if (callback) {
        looperCallback = sp<SimpleLooperCallback>::make(callback);
    }
    return addFd(fd, ident, events, looperCallback, data);
}

int Looper::addFd(int fd, int ident, int events, const sp<LooperCallback>& callback, void* data) {
+1 −1
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@
namespace android {

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

NativeHandle::NativeHandle(native_handle_t* handle, bool ownsHandle)
+1 −1
Original line number Diff line number Diff line
@@ -693,7 +693,7 @@ status_t Thread::run(const char* name, int32_t priority, size_t stack)
    mThread = thread_id_t(-1);

    // hold a strong reference on ourself
    mHoldSelf = this;
    mHoldSelf = sp<Thread>::fromExisting(this);

    mRunning = true;

+2 −0
Original line number Diff line number Diff line
@@ -39,6 +39,8 @@ public:
private:
    // for access to the destructor
    friend class LightRefBase<NativeHandle>;
    // for access to the constructor
    friend class sp<NativeHandle>;

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