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

Commit 7d5eb5c8 authored by Andy Hung's avatar Andy Hung
Browse files

EffectHal: Support retrieving worker thread tid

Use 'gtid' as the command, returns the worker
thread tid.

Test: see bug
Bug: 253276925
Change-Id: Ia4fa129c62cf6df97821c34876b517944bc5322f
parent fc74dada
Loading
Loading
Loading
Loading
+15 −2
Original line number Diff line number Diff line
@@ -700,8 +700,21 @@ Return<void> Effect::command(uint32_t commandId, const hidl_vec<uint8_t>& data,

    void* dataPtr = halDataSize > 0 ? &halData[0] : NULL;
    void* resultPtr = halResultSize > 0 ? &halResult[0] : NULL;
    status_t status =
        (*mHandle)->command(mHandle, commandId, halDataSize, dataPtr, &halResultSize, resultPtr);
    status_t status = BAD_VALUE;
    switch (commandId) {
        case 'gtid':  // retrieve the tid, used for spatializer priority boost
            if (halDataSize == 0 && resultMaxSize == sizeof(int32_t)) {
                auto ptid = (int32_t*)resultPtr;
                ptid[0] = mProcessThread ? mProcessThread->getTid() : -1;
                status = OK;
                break;  // we have handled 'gtid' here.
            }
            [[fallthrough]];  // allow 'gtid' overload (checked halDataSize and resultMaxSize).
        default:
            status = (*mHandle)->command(mHandle, commandId, halDataSize, dataPtr, &halResultSize,
                                         resultPtr);
            break;
    }
    hidl_vec<uint8_t> result;
    if (status == OK && resultPtr != NULL) {
        result.setToExternal(&halResult[0], halResultSize);