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

Commit 4de371c9 authored by Elliott Hughes's avatar Elliott Hughes Committed by Automerger Merge Worker
Browse files

Merge "Use C++ thread_local rather than libcutils." am: 3f78a9f1 am: 566afbe7

Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1516547

Change-Id: Ifce51ce92a04c667c9c426fa9204f594a031f067
parents 5696a046 566afbe7
Loading
Loading
Loading
Loading
+8 −27
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@
#include <binder/Debug.h>

#include <cutils/atomic.h>
#include <cutils/threads.h>
#include <utils/Log.h>
#include <utils/RefBase.h>
#include <utils/Vector.h>
@@ -91,22 +90,6 @@ struct BufferedTextOutput::ThreadState

static pthread_mutex_t gMutex = PTHREAD_MUTEX_INITIALIZER;

static thread_store_t   tls;

BufferedTextOutput::ThreadState* BufferedTextOutput::getThreadState()
{
    ThreadState*  ts = (ThreadState*) thread_store_get( &tls );
    if (ts) return ts;
    ts = new ThreadState;
    thread_store_set( &tls, ts, threadDestructor );
    return ts;
}

void BufferedTextOutput::threadDestructor(void *st)
{
    delete ((ThreadState*)st);
}

static volatile int32_t gSequence = 0;

static volatile int32_t gFreeBufferIndex = -1;
@@ -266,17 +249,15 @@ void BufferedTextOutput::popBundle()
BufferedTextOutput::BufferState* BufferedTextOutput::getBuffer() const
{
    if ((mFlags&MULTITHREADED) != 0) {
        ThreadState* ts = getThreadState();
        if (ts) {
            while (ts->states.size() <= (size_t)mIndex) ts->states.add(nullptr);
            BufferState* bs = ts->states[mIndex].get();
        thread_local ThreadState ts;
        while (ts.states.size() <= (size_t)mIndex) ts.states.add(nullptr);
        BufferState* bs = ts.states[mIndex].get();
        if (bs != nullptr && bs->seq == mSeq) return bs;

            ts->states.editItemAt(mIndex) = new BufferState(mIndex);
            bs = ts->states[mIndex].get();
        ts.states.editItemAt(mIndex) = new BufferState(mIndex);
        bs = ts.states[mIndex].get();
        if (bs != nullptr) return bs;
    }
    }
    
    return mGlobalState;
}
+1 −4
Original line number Diff line number Diff line
@@ -48,9 +48,6 @@ private:
    struct BufferState;
    struct ThreadState;

    static  ThreadState*getThreadState();
    static  void        threadDestructor(void *st);
    
            BufferState*getBuffer() const;
            
    uint32_t            mFlags;