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

Commit a57a243c authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Codec2Cient: Do not hold lock during IGBP operations" into main am: 644db222

parents 544c1a76 644db222
Loading
Loading
Loading
Loading
+10 −7
Original line number Diff line number Diff line
@@ -141,11 +141,14 @@ status_t attachToBufferQueue(const C2ConstGraphicBlock& block,
                            "status = " << INVALID_OPERATION << ".";
            return INVALID_OPERATION;
        }
        result = igbp->attachBuffer(bqSlot, graphicBuffer);
        if (result == OK) {
        syncVar->notifyDequeuedLocked();
        }
        syncVar->unlock();
        result = igbp->attachBuffer(bqSlot, graphicBuffer);
        if (result != OK) {
            syncVar->lock();
            syncVar->notifyQueuedLocked();
            syncVar->unlock();
        }
    } else {
        result = igbp->attachBuffer(bqSlot, graphicBuffer);
    }
@@ -435,13 +438,13 @@ status_t OutputBufferQueue::outputBuffer(

        auto syncVar = syncMem ? syncMem->mem() : nullptr;
        if(syncVar) {
            syncVar->lock();
            status = outputIgbp->queueBuffer(static_cast<int>(bqSlot),
                                         input, output);
            if (status == OK) {
                syncVar->lock();
                syncVar->notifyQueuedLocked();
            }
                syncVar->unlock();
            }
        } else {
            status = outputIgbp->queueBuffer(static_cast<int>(bqSlot),
                                         input, output);
@@ -490,13 +493,13 @@ status_t OutputBufferQueue::outputBuffer(
    auto syncVar = syncMem ? syncMem->mem() : nullptr;
    status_t status = OK;
    if (syncVar) {
        syncVar->lock();
        status = outputIgbp->queueBuffer(static_cast<int>(bqSlot),
                                                  input, output);
        if (status == OK) {
            syncVar->lock();
            syncVar->notifyQueuedLocked();
        }
            syncVar->unlock();
        }
    } else {
        status = outputIgbp->queueBuffer(static_cast<int>(bqSlot),
                                                  input, output);