のねのBlog

パソコンの問題や、ソフトウェアの開発で起きた問題など書いていきます。よろしくお願いします^^。

hwui font render

android::uirenderer::Font::getCachedGlyphのバックトレース

(gdb) b android::uirenderer::Font::render
(gdb) info break
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   <MULTIPLE> 
	breakpoint already hit 1 time
1.1                         y     0x40b86bc8 in android::uirenderer::Font::render(SkPaint*, char const*, unsigned int, unsigned int, int, int, int, android::uirenderer::Font::RenderMode, unsigned char*, unsigned int, unsigned int, android::uirenderer::Rect*, float const*) 
                                           at frameworks/base/libs/hwui/font/Font.cpp:374
1.2                         y     0x40b86d30 in android::uirenderer::Font::render(SkPaint*, char const*, unsigned int, unsigned int, int, int, int, float const*) 
                                           at frameworks/base/libs/hwui/font/Font.cpp:286
1.3                         y     0x40b86d94 in android::uirenderer::Font::render(SkPaint*, char const*, unsigned int, unsigned int, int, SkPath*, float, float) 
                                           at frameworks/base/libs/hwui/font/Font.cpp:292
#0  android::uirenderer::Font::getCachedGlyph             at frameworks/base/libs/hwui/font/Font.cpp:271
#1                                                        at frameworks/base/libs/hwui/font/Font.cpp:402
#2  android::uirenderer::Font::render                     at frameworks/base/libs/hwui/font/Font.cpp:372
#3  android::uirenderer::Font::render                     at frameworks/base/libs/hwui/font/Font.cpp:288
#4  android::uirenderer::FontRenderer::renderPosText      at frameworks/base/libs/hwui/FontRenderer.cpp:696
#5  android::uirenderer::OpenGLRenderer::drawText         at frameworks/base/libs/hwui/OpenGLRenderer.cpp:2991
#6  android::uirenderer::DrawTextOp::multiDraw            at frameworks/base/libs/hwui/DisplayListOp.h:1476
#7  android::uirenderer::MergingDrawBatch::replay         at frameworks/base/libs/hwui/DeferredDisplayList.cpp:283
#8  replayBatchList                                       at frameworks/base/libs/hwui/DeferredDisplayList.cpp:648
#9  android::uirenderer::DeferredDisplayList::flush       at frameworks/base/libs/hwui/DeferredDisplayList.cpp:680
#10 android::uirenderer::OpenGLRenderer::drawDisplayList  at frameworks/base/libs/hwui/OpenGLRenderer.cpp:2051
#11 android::android_view_GLES20Canvas_drawDisplayList   at frameworks/base/core/jni/android_view_GLES20Canvas.cpp:778
===== Dalvik =====
#12 dvmPlatformInvoke ()   at dalvik/vm/arch/arm/CallEABI.S:258
#13 dvmCallJNIMethod       at dalvik/vm/Jni.cpp:1159
#14 dalvik_mterp ()        at dalvik/vm/mterp/out/InterpAsm-armv7-a-neon.S:16240
#15 dvmMterpStd            at dalvik/vm/mterp/Mterp.cpp:105
#16 dvmInterpret           at dalvik/vm/interp/Interp.cpp:1961
#17 dvmInvokeMethod        at dalvik/vm/interp/Stack.cpp:737
#18 Dalvik_java_lang_reflect_Method_invokeNative at dalvik/vm/native/java_lang_reflect_Method.cpp:101
#19 dalvik_mterp ()        at dalvik/vm/mterp/out/InterpAsm-armv7-a-neon.S:16240
#20 dvmMterpStd            at dalvik/vm/mterp/Mterp.cpp:105
#21 dvmInterpret           at dalvik/vm/interp/Interp.cpp:1961
#22 dvmCallMethodV         at dalvik/vm/interp/Stack.cpp:526
#23 CallStaticVoidMethodV  at dalvik/vm/Jni.cpp:2096
===== Dalvik =====
#24 _JNIEnv::CallStaticVoidMethod  at libnativehelper/include/nativehelper/jni.h:780
#25 android::AndroidRuntime::start at frameworks/base/core/jni/AndroidRuntime.cpp:887
#26 main                           at frameworks/base/cmds/app_process/app_main.cpp:231
(gdb) bt
#0  android::uirenderer::Font::getCachedGlyph (this=this@entry=0x78149cb0, 
    paint=paint@entry=0x7842eb70, textUnit=<optimized out>, precaching=precaching@entry=false)
    at frameworks/base/libs/hwui/font/Font.cpp:271

#1  0x40b86c20 in render (positions=0x78108cac, bounds=0x0, bitmapH=0, bitmapW=0, bitmap=0x0, 
    mode=android::uirenderer::Font::FRAMEBUFFER, y=283, x=72, numGlyphs=19, 
    start=<optimized out>, text=<optimized out>, paint=0x7842eb70, this=0x78149cb0, 
    len=<optimized out>) 
    at frameworks/base/libs/hwui/font/Font.cpp:402

#2  android::uirenderer::Font::render (this=0x78149cb0, paint=0x7842eb70, text=<optimized out>, 
    start=<optimized out>, len=38, numGlyphs=19, x=72, y=283, 
    mode=android::uirenderer::Font::FRAMEBUFFER, bitmap=0x0, bitmapW=0, bitmapH=0, bounds=0x0, 
    positions=0x78108cac) 
    at frameworks/base/libs/hwui/font/Font.cpp:372

#3  0x40b86d58 in android::uirenderer::Font::render (this=<optimized out>, 
    paint=paint@entry=0x7842eb70, text=text@entry=0x78108c84 "9", start=start@entry=0, 
    len=len@entry=38, numGlyphs=numGlyphs@entry=19, x=x@entry=72, y=y@entry=283, 
    positions=positions@entry=0x78108cac) 
    at frameworks/base/libs/hwui/font/Font.cpp:288

#4  0x40b87cd2 in android::uirenderer::FontRenderer::renderPosText (this=this@entry=0x78149970, 
    paint=paint@entry=0x7842eb70, clip=0x78401cf0, text=text@entry=0x78108c84 "9", startIndex=0, 
    len=len@entry=38, numGlyphs=numGlyphs@entry=19, x=x@entry=72, y=y@entry=283, 
    positions=positions@entry=0x78108cac, bounds=0x0, functor=functor@entry=0xbef9b110, 
    forceFinish=forceFinish@entry=false) 
    at frameworks/base/libs/hwui/FontRenderer.cpp:696

#5  0x40b98f72 in android::uirenderer::OpenGLRenderer::drawText (this=0x762c5cb8, 
    text=0x78108c84 "9", bytesCount=38, count=19, x=72, y=283, positions=0x78108cac, 
    paint=0x7842eb70, totalAdvance=474.714844, bounds=..., 
    drawOpMode=android::uirenderer::kDrawOpMode_Defer)
    at frameworks/base/libs/hwui/OpenGLRenderer.cpp:2991

#6  0x40b8eda2 in android::uirenderer::DrawTextOp::multiDraw (this=<optimized out>, 
    renderer=..., dirty=..., ops=..., bounds=...)
    at frameworks/base/libs/hwui/DisplayListOp.h:1476

#7  0x40b8c476 in android::uirenderer::MergingDrawBatch::replay (this=0x78401d28, renderer=..., 
    dirty=..., index=<optimized out>) 
    at frameworks/base/libs/hwui/DeferredDisplayList.cpp:283

#8  0x40b8c2f4 in replayBatchList (dirty=..., renderer=..., batchList=...)
    at frameworks/base/libs/hwui/DeferredDisplayList.cpp:648

#9  android::uirenderer::DeferredDisplayList::flush (this=this@entry=0xbef9b2f4, renderer=..., 
    dirty=...) 
    at frameworks/base/libs/hwui/DeferredDisplayList.cpp:680

#10 0x40b9501e in android::uirenderer::OpenGLRenderer::drawDisplayList (this=0x762c5cb8, 
    displayList=<optimized out>, dirty=..., replayFlags=1)
    at frameworks/base/libs/hwui/OpenGLRenderer.cpp:2051

#11 0x401b66ae in android::android_view_GLES20Canvas_drawDisplayList (env=0x41d2bf40, 
    clazz=<optimized out>, renderer=<optimized out>, displayList=<optimized out>, 
    dirty=0x2c70001d, flags=1) 
    at frameworks/base/core/jni/android_view_GLES20Canvas.cpp:778

#12 0x414cebd0 in dvmPlatformInvoke () 
    at dalvik/vm/arch/arm/CallEABI.S:258

#13 0x414ff126 in dvmCallJNIMethod (args=0x4196da24, pResult=0x41d2d3e8, method=0x6d84b0a0, 
    self=0x41d2d3d8) 
    at dalvik/vm/Jni.cpp:1159

#14 0x414d7fe4 in dalvik_mterp () 
    at dalvik/vm/mterp/out/InterpAsm-armv7-a-neon.S:16240

#15 0x414defa4 in dvmMterpStd (self=self@entry=0x41d2d3d8) 
    at dalvik/vm/mterp/Mterp.cpp:105

#16 0x414dc63c in dvmInterpret (self=self@entry=0x41d2d3d8, method=method@entry=0x6d8ba3f0, 
    pResult=pResult@entry=0xbef9b728) 
    at dalvik/vm/interp/Interp.cpp:1961

#17 0x41511868 in dvmInvokeMethod (obj=obj@entry=0x0, method=method@entry=0x6d8ba3f0, 
    argList=argList@entry=0x42d8dfd8, params=params@entry=0x42d8df00, 
    returnType=returnType@entry=0x41d2e2a8, noAccessCheck=noAccessCheck@entry=false)
    at dalvik/vm/interp/Stack.cpp:737

#18 0x415197ca in Dalvik_java_lang_reflect_Method_invokeNative (args=<optimized out>, 
    pResult=0x41d2d3e8) 
    at dalvik/vm/native/java_lang_reflect_Method.cpp:101

#19 0x414d7fe4 in dalvik_mterp () 
    at dalvik/vm/mterp/out/InterpAsm-armv7-a-neon.S:16240

#20 0x414defa4 in dvmMterpStd (self=self@entry=0x41d2d3d8) 
    at dalvik/vm/mterp/Mterp.cpp:105

#21 0x414dc63c in dvmInterpret (self=self@entry=0x41d2d3d8, method=method@entry=0x6d8ae448, 
    pResult=pResult@entry=0xbef9b8e8) 
    at dalvik/vm/interp/Interp.cpp:1961

#22 0x41511584 in dvmCallMethodV (self=0x41d2d3d8, method=method@entry=0x6d8ae448, 
    obj=obj@entry=0x0, fromJni=fromJni@entry=true, pResult=pResult@entry=0xbef9b8e8, args=..., 
    args@entry=...) 
    at dalvik/vm/interp/Stack.cpp:526

#23 0x414fad0e in CallStaticVoidMethodV (env=<optimized out>, jclazz=<optimized out>, 
    methodID=0x6d8ae448, args=...) 
    at dalvik/vm/Jni.cpp:2096

#24 0x4019cde8 in _JNIEnv::CallStaticVoidMethod (this=<optimized out>, 
    clazz=clazz@entry=0x1d500015, methodID=0x6d8ae448)
    at libnativehelper/include/nativehelper/jni.h:780

#25 0x4019db0e in android::AndroidRuntime::start (this=<optimized out>, 
    className=0x400603ac "com.android.internal.os.ZygoteInit", options=<optimized out>)
    at frameworks/base/core/jni/AndroidRuntime.cpp:887

#26 0x4006005e in main (argc=4, argv=0xbef9bab8)
    at frameworks/base/cmds/app_process/app_main.cpp:231
(gdb)