diff options
author | Scott Lobdell <slobdell@google.com> | 2021-04-25 19:53:32 +0000 |
---|---|---|
committer | Daniel Norman <danielnorman@google.com> | 2021-04-29 09:44:07 -0700 |
commit | 2051462f672b5986ef321bf1de3657e7653864e8 (patch) | |
tree | 1dee6334f2b0a68d3cc2e532e6f89bb16149aa7d /libs/hwui/renderthread/RenderThread.cpp | |
parent | b22baa1593b2ee33200d009f7f56d1c44a75ac6d (diff) | |
parent | ab6136865a519a27d731b4caa3e782bdf02cfd91 (diff) |
Merge SP1A.210425.001
Change-Id: I8d45e47c131320cac5e794fd629fdef84dd3bcfc
Diffstat (limited to 'libs/hwui/renderthread/RenderThread.cpp')
-rw-r--r-- | libs/hwui/renderthread/RenderThread.cpp | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/libs/hwui/renderthread/RenderThread.cpp b/libs/hwui/renderthread/RenderThread.cpp index 79b938841bc2..04aa1cb91492 100644 --- a/libs/hwui/renderthread/RenderThread.cpp +++ b/libs/hwui/renderthread/RenderThread.cpp @@ -54,6 +54,10 @@ static JVMAttachHook gOnStartHook = nullptr; ASurfaceControlFunctions::ASurfaceControlFunctions() { void* handle_ = dlopen("libandroid.so", RTLD_NOW | RTLD_NODELETE); + createFunc = (ASC_create)dlsym(handle_, "ASurfaceControl_create"); + LOG_ALWAYS_FATAL_IF(createFunc == nullptr, + "Failed to find required symbol ASurfaceControl_create!"); + acquireFunc = (ASC_acquire) dlsym(handle_, "ASurfaceControl_acquire"); LOG_ALWAYS_FATAL_IF(acquireFunc == nullptr, "Failed to find required symbol ASurfaceControl_acquire!"); @@ -81,15 +85,33 @@ ASurfaceControlFunctions::ASurfaceControlFunctions() { "ASurfaceControlStats_getFrameNumber"); LOG_ALWAYS_FATAL_IF(getFrameNumberFunc == nullptr, "Failed to find required symbol ASurfaceControlStats_getFrameNumber!"); + + transactionCreateFunc = (AST_create)dlsym(handle_, "ASurfaceTransaction_create"); + LOG_ALWAYS_FATAL_IF(transactionCreateFunc == nullptr, + "Failed to find required symbol ASurfaceTransaction_create!"); + + transactionDeleteFunc = (AST_delete)dlsym(handle_, "ASurfaceTransaction_delete"); + LOG_ALWAYS_FATAL_IF(transactionDeleteFunc == nullptr, + "Failed to find required symbol ASurfaceTransaction_delete!"); + + transactionApplyFunc = (AST_apply)dlsym(handle_, "ASurfaceTransaction_apply"); + LOG_ALWAYS_FATAL_IF(transactionApplyFunc == nullptr, + "Failed to find required symbol ASurfaceTransaction_apply!"); + + transactionSetVisibilityFunc = + (AST_setVisibility)dlsym(handle_, "ASurfaceTransaction_setVisibility"); + LOG_ALWAYS_FATAL_IF(transactionSetVisibilityFunc == nullptr, + "Failed to find required symbol ASurfaceTransaction_setVisibility!"); } void RenderThread::frameCallback(int64_t frameTimeNanos, void* data) { RenderThread* rt = reinterpret_cast<RenderThread*>(data); int64_t vsyncId = AChoreographer_getVsyncId(rt->mChoreographer); int64_t frameDeadline = AChoreographer_getFrameDeadline(rt->mChoreographer); + int64_t frameInterval = AChoreographer_getFrameInterval(rt->mChoreographer); rt->mVsyncRequested = false; - if (rt->timeLord().vsyncReceived(frameTimeNanos, frameTimeNanos, vsyncId, frameDeadline) && - !rt->mFrameCallbackTaskPending) { + if (rt->timeLord().vsyncReceived(frameTimeNanos, frameTimeNanos, vsyncId, frameDeadline, + frameInterval) && !rt->mFrameCallbackTaskPending) { ATRACE_NAME("queue mFrameCallbackTask"); rt->mFrameCallbackTaskPending = true; nsecs_t runAt = (frameTimeNanos + rt->mDispatchFrameDelay); |