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

Commit 6dd49c56 authored by Glenn Kasten's avatar Glenn Kasten Committed by android-build-merger
Browse files

Merge "libmedia: Preserve futex return status in client obtainBuffer"

am: 72536447

* commit '72536447':
  libmedia: Preserve futex return status in client obtainBuffer
parents 2d3c8457 72536447
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -240,6 +240,7 @@ status_t ClientProxy::obtainBuffer(Buffer* buffer, const struct timespec *reques
            errno = 0;
            (void) syscall(__NR_futex, &cblk->mFutex,
                    mClientInServer ? FUTEX_WAIT_PRIVATE : FUTEX_WAIT, old & ~CBLK_FUTEX_WAKE, ts);
            status_t error = errno; // clock_gettime can affect errno
            // update total elapsed time spent waiting
            if (measure) {
                struct timespec after;
@@ -257,7 +258,7 @@ status_t ClientProxy::obtainBuffer(Buffer* buffer, const struct timespec *reques
                before = after;
                beforeIsValid = true;
            }
            switch (errno) {
            switch (error) {
            case 0:            // normal wakeup by server, or by binderDied()
            case EWOULDBLOCK:  // benign race condition with server
            case EINTR:        // wait was interrupted by signal or other spurious wakeup
@@ -265,7 +266,7 @@ status_t ClientProxy::obtainBuffer(Buffer* buffer, const struct timespec *reques
                // FIXME these error/non-0 status are being dropped
                break;
            default:
                status = errno;
                status = error;
                ALOGE("%s unexpected error %s", __func__, strerror(status));
                goto end;
            }