status_t Surface::unlockAndPost()
{
ATRACE_NAME("Surface::unlockAndPost 0307");
if (mLockedBuffer == nullptr) {
ALOGE("Surface::unlockAndPost failed, no locked buffer");
return INVALID_OPERATION;
}
int fd = -1;
status_t err = mLockedBuffer->unlockAsync(&fd);
ALOGE_IF(err, "failed unlocking buffer (%p)", mLockedBuffer->handle);
err = queueBuffer(mLockedBuffer.get(), fd);
ALOGE_IF(err, "queueBuffer (handle=%p) failed (%s)",
mLockedBuffer->handle, strerror(-err));
mPostedBuffer = mLockedBuffer;
mLockedBuffer = nullptr;
return err;
}
调用 queueBuffer 发送合成指令。
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] native: #00 pc 000000000073d8d0 /apex/com.android.art/lib64/libartd.so (art::DumpNativeStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, int, BacktraceMap*, char const*, art::ArtMethod*, void*, bool)+128) (BuildId: 13a592a95199e89a6f85d4c4669fa8a4)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] native: #01 pc 0000000000888ca7 /apex/com.android.art/lib64/libartd.so (art::Thread::DumpStack(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool, BacktraceMap*, bool) const+375) (BuildId: 13a592a95199e89a6f85d4c4669fa8a4)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] native: #02 pc 00000000008aa147 /apex/com.android.art/lib64/libartd.so (art::DumpCheckpoint::Run(art::Thread*)+567) (BuildId: 13a592a95199e89a6f85d4c4669fa8a4)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] native: #03 pc 00000000008a3376 /apex/com.android.art/lib64/libartd.so (art::ThreadList::RunCheckpoint(art::Closure*, art::Closure*)+278) (BuildId: 13a592a95199e89a6f85d4c4669fa8a4)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] native: #04 pc 00000000008a2e2d /apex/com.android.art/lib64/libartd.so (art::ThreadList::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool)+333) (BuildId: 13a592a95199e89a6f85d4c4669fa8a4)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] native: #05 pc 0000000000852a3c /apex/com.android.art/lib64/libartd.so (art::AbortState::Dump(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) const+172) (BuildId: 13a592a95199e89a6f85d4c4669fa8a4)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] native: #06 pc 000000000083d3e4 /apex/com.android.art/lib64/libartd.so (art::Runtime::Abort(char const*)+500) (BuildId: 13a592a95199e89a6f85d4c4669fa8a4)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] native: #07 pc 0000000000019cfc /apex/com.android.art/lib64/libbase.so (android::base::SetAborter(std::__1::function<void (char const*)>&&)::$_3::__invoke(char const*)+60) (BuildId: 9335a3052c0ad43b3680057cf90b0afe)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] native: #08 pc 00000000000075c2 /system/lib64/liblog.so (__android_log_assert+370) (BuildId: 31ec9545051650161a78e056f9a402c7)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] native: #09 pc 00000000000fe7d7 /system/lib64/libgui.so (android::Surface::unlockAndPost()+23) (BuildId: 98214932ef6a1c0ce6e1c0aada43d2de)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] native: #10 pc 0000000000146485 /system/lib64/libandroid_runtime.so (android::nativeUnlockCanvasAndPost(_JNIEnv*, _jclass*, long, _jobject*)+165) (BuildId: abafea9ac995d3b868d3d61655a07d7e)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] at android.view.Surface.nativeUnlockCanvasAndPost(Native method)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] at android.view.Surface.unlockSwCanvasAndPost(Surface.java:497)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] at android.view.Surface.unlockCanvasAndPost(Surface.java:478)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] - locked <0x0f063d0e> (a java.lang.Object)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] at com.android.server.wm.StrictModeFlash.drawIfNeeded(StrictModeFlash.java:110)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] at com.android.server.wm.StrictModeFlash.setVisibility(StrictModeFlash.java:119)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] at com.android.server.wm.WindowManagerService.showStrictModeViolation(WindowManagerService.java:3970)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] - locked <0x0316732f> (a com.android.server.wm.WindowManagerGlobalLock)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] at com.android.server.wm.WindowManagerService.-$$Nest$mshowStrictModeViolation(unavailable:0)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] at com.android.server.wm.WindowManagerService$H.handleMessage(WindowManagerService.java:5518)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] at android.os.Handler.dispatchMessage(Handler.java:106)
03-07 14:16:46.994 1375 1399 F system_server: runtime.cc:675] at android.os.Looper.loopOnce(Looper.java:201)
03-07 14:16:46.996 1375 1399 F system_server: runtime.cc:675] at android.os.Looper.loop(Looper.java:288)
03-07 14:16:46.996 1375 1399 F system_server: runtime.cc:675] at android.os.HandlerThread.run(HandlerThread.java:67)
03-07 14:16:46.996 1375 1399 F system_server: runtime.cc:675] at com.android.server.ServiceThread.run(ServiceThread.java:44)