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

Commit 768acbc8 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "libui: print more fence information when fence is timeout"

parents 37c665dc d174e386
Loading
Loading
Loading
Loading
+20 −2
Original line number Original line Diff line number Diff line
@@ -62,8 +62,26 @@ status_t Fence::waitForever(const char* logname) {
    int warningTimeout = 3000;
    int warningTimeout = 3000;
    int err = sync_wait(mFenceFd, warningTimeout);
    int err = sync_wait(mFenceFd, warningTimeout);
    if (err < 0 && errno == ETIME) {
    if (err < 0 && errno == ETIME) {
        ALOGE("%s: fence %d didn't signal in %u ms", logname, mFenceFd.get(),
        ALOGE("waitForever: %s: fence %d didn't signal in %u ms", logname, mFenceFd.get(),
              warningTimeout);
              warningTimeout);

        struct sync_file_info* finfo = sync_file_info(mFenceFd);
        if (finfo) {
            // status: active(0) signaled(1) error(<0)
            ALOGI("waitForever: fence(%s) status(%d)", finfo->name, finfo->status);

            struct sync_fence_info* pinfo = sync_get_fence_info(finfo);
            for (uint32_t i = 0; i < finfo->num_fences; i++) {
                uint64_t ts_sec = pinfo[i].timestamp_ns / 1000000000LL;
                uint64_t ts_usec = (pinfo[i].timestamp_ns % 1000000000LL) / 1000LL;

                ALOGI("waitForever: sync point: timeline(%s) drv(%s) status(%d) timestamp(%" PRIu64
                      ".%06" PRIu64 ")",
                      pinfo[i].obj_name, pinfo[i].driver_name, pinfo[i].status, ts_sec, ts_usec);
            }
            sync_file_info_free(finfo);
        }

        err = sync_wait(mFenceFd, TIMEOUT_NEVER);
        err = sync_wait(mFenceFd, TIMEOUT_NEVER);
    }
    }
    return err < 0 ? -errno : status_t(NO_ERROR);
    return err < 0 ? -errno : status_t(NO_ERROR);