[trace] cc trace stack

Published: by Creative Commons Licence

  • Categories:
  • Tags:
Widget的初始化
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::Scheduler(cc::Scheduler * this, cc::SingleThreadProxy * client, const cc::SchedulerSettings & settings, int layer_tree_host_id, base::SingleThreadTaskRunner * task_runner, std::__Cr::unique_ptr<cc::CompositorTimingHistory, std::__Cr::default_delete<cc::CompositorTimingHistory> > compositor_timing_history) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:51)
libcc.so!cc::SingleThreadProxy::Start(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:86)
libcc.so!cc::LayerTreeHost::InitializeProxy(cc::LayerTreeHost * this, std::__Cr::unique_ptr<cc::Proxy, std::__Cr::default_delete<cc::Proxy> > proxy) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:187)
libcc.so!cc::LayerTreeHost::InitializeSingleThreaded(cc::LayerTreeHost * this, ui::Compositor * single_thread_client, scoped_refptr<base::SingleThreadTaskRunner> main_task_runner) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:160)
libcc.so!cc::LayerTreeHost::CreateSingleThreaded(ui::Compositor * single_thread_client, cc::LayerTreeHost::InitParams params) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:117)
libcompositor.so!ui::Compositor::Compositor(ui::Compositor * this, const viz::FrameSinkId & frame_sink_id, ui::InProcessContextFactory * context_factory, ui::InProcessContextFactory * context_factory_private, scoped_refptr<base::SingleThreadTaskRunner> task_runner, bool enable_pixel_canvas, bool use_external_begin_frame_control, bool force_software_compositor, const char * trace_environment_name) (/media/keyou/dev2/chromium64/src/ui/compositor/compositor.cc:216)
libaura.so!std::__Cr::make_unique<ui::Compositor, viz::FrameSinkId const, ui::ContextFactory*&, ui::ContextFactoryPrivate*&, scoped_refptr<base::SingleThreadTaskRunner> const&, bool, bool&, bool&, char const*&>(const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args) (/media/keyou/dev2/chromium64/src/buildtools/third_party/libc++/trunk/include/memory:3043)
libaura.so!aura::WindowTreeHost::CreateCompositor(views::DesktopWindowTreeHostX11 * this, const viz::FrameSinkId & frame_sink_id, bool force_software_compositor, bool use_external_begin_frame_control, const char * trace_environment_name) (/media/keyou/dev2/chromium64/src/ui/aura/window_tree_host.cc:430)
libviews.so!views::DesktopWindowTreeHostPlatform::Init(views::DesktopWindowTreeHostX11 * this, const views::Widget::InitParams & params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc:152)
libviews.so!views::DesktopWindowTreeHostLinux::Init(views::DesktopWindowTreeHostX11 * this, const views::Widget::InitParams & params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc:163)
libviews.so!views::DesktopWindowTreeHostX11::Init(views::DesktopWindowTreeHostX11 * this, const views::Widget::InitParams & params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc:96)
libviews.so!views::DesktopNativeWidgetAura::InitNativeWidget(views::DesktopNativeWidgetAura * this, views::Widget::InitParams params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc:485)
libviews.so!views::Widget::Init(views::Widget * this, views::Widget::InitParams params) (/media/keyou/dev2/chromium64/src/ui/views/widget/widget.cc:353)
main(int argc, char ** argv) (/media/keyou/dev2/chromium64/src/demo/demo_views/demo_views.cc:222)
+
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::SetDeferBeginMainFrame(cc::Scheduler * this, bool defer_begin_main_frame) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:766)
libcc.so!cc::SingleThreadProxy::SetDeferMainFrameUpdate(cc::SingleThreadProxy * this, bool defer_main_frame_update) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:284)
libcc.so!cc::LayerTreeHost::UpdateDeferMainFrameUpdateInternal(cc::LayerTreeHost * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:462)
libcc.so!cc::LayerTreeHost::InitializeProxy(cc::LayerTreeHost * this, std::__Cr::unique_ptr<cc::Proxy, std::__Cr::default_delete<cc::Proxy> > proxy) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:189)
libcc.so!cc::LayerTreeHost::InitializeSingleThreaded(cc::LayerTreeHost * this, ui::Compositor * single_thread_client, scoped_refptr<base::SingleThreadTaskRunner> main_task_runner) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:160)
libcc.so!cc::LayerTreeHost::CreateSingleThreaded(ui::Compositor * single_thread_client, cc::LayerTreeHost::InitParams params) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:117)
libcompositor.so!ui::Compositor::Compositor(ui::Compositor * this, const viz::FrameSinkId & frame_sink_id, ui::InProcessContextFactory * context_factory, ui::InProcessContextFactory * context_factory_private, scoped_refptr<base::SingleThreadTaskRunner> task_runner, bool enable_pixel_canvas, bool use_external_begin_frame_control, bool force_software_compositor, const char * trace_environment_name) (/media/keyou/dev2/chromium64/src/ui/compositor/compositor.cc:216)
libaura.so!std::__Cr::make_unique<ui::Compositor, viz::FrameSinkId const, ui::ContextFactory*&, ui::ContextFactoryPrivate*&, scoped_refptr<base::SingleThreadTaskRunner> const&, bool, bool&, bool&, char const*&>(const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args) (/media/keyou/dev2/chromium64/src/buildtools/third_party/libc++/trunk/include/memory:3043)
libaura.so!aura::WindowTreeHost::CreateCompositor(views::DesktopWindowTreeHostX11 * this, const viz::FrameSinkId & frame_sink_id, bool force_software_compositor, bool use_external_begin_frame_control, const char * trace_environment_name) (/media/keyou/dev2/chromium64/src/ui/aura/window_tree_host.cc:430)
libviews.so!views::DesktopWindowTreeHostPlatform::Init(views::DesktopWindowTreeHostX11 * this, const views::Widget::InitParams & params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc:152)
libviews.so!views::DesktopWindowTreeHostLinux::Init(views::DesktopWindowTreeHostX11 * this, const views::Widget::InitParams & params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc:163)
libviews.so!views::DesktopWindowTreeHostX11::Init(views::DesktopWindowTreeHostX11 * this, const views::Widget::InitParams & params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc:96)
libviews.so!views::DesktopNativeWidgetAura::InitNativeWidget(views::DesktopNativeWidgetAura * this, views::Widget::InitParams params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc:485)
libviews.so!views::Widget::Init(views::Widget * this, views::Widget::InitParams params) (/media/keyou/dev2/chromium64/src/ui/views/widget/widget.cc:353)
main(int argc, char ** argv) (/media/keyou/dev2/chromium64/src/demo/demo_views/demo_views.cc:222)
+
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::SetNeedsBeginMainFrame(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:128)
libcc.so!cc::SingleThreadProxy::SetNeedsCommit(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:242)
libcc.so!cc::LayerTreeHost::SetNeedsCommit(cc::LayerTreeHost * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:601)
libcc.so!cc::LayerTreeHost::SetMutatorsNeedCommit(cc::LayerTreeHost * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:1635)
libcc_animation.so!cc::AnimationHost::SetNeedsPushProperties(cc::AnimationHost * this) (/media/keyou/dev2/chromium64/src/cc/animation/animation_host.cc:238)
libcc_animation.so!cc::AnimationTimeline::SetNeedsPushProperties(cc::AnimationTimeline * this) (/media/keyou/dev2/chromium64/src/cc/animation/animation_timeline.cc:79)
libcc_animation.so!cc::AnimationTimeline::SetAnimationHost(cc::AnimationTimeline * this, cc::AnimationHost * animation_host) (/media/keyou/dev2/chromium64/src/cc/animation/animation_timeline.cc:42)
libcc_animation.so!cc::AnimationHost::AddAnimationTimeline(cc::AnimationHost * this, scoped_refptr<cc::AnimationTimeline> timeline) (/media/keyou/dev2/chromium64/src/cc/animation/animation_host.cc:130)
libcompositor.so!ui::Compositor::Compositor(ui::Compositor * this, const viz::FrameSinkId & frame_sink_id, ui::InProcessContextFactory * context_factory, ui::InProcessContextFactory * context_factory_private, scoped_refptr<base::SingleThreadTaskRunner> task_runner, bool enable_pixel_canvas, bool use_external_begin_frame_control, bool force_software_compositor, const char * trace_environment_name) (/media/keyou/dev2/chromium64/src/ui/compositor/compositor.cc:226)
libaura.so!std::__Cr::make_unique<ui::Compositor, viz::FrameSinkId const, ui::ContextFactory*&, ui::ContextFactoryPrivate*&, scoped_refptr<base::SingleThreadTaskRunner> const&, bool, bool&, bool&, char const*&>(const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args) (/media/keyou/dev2/chromium64/src/buildtools/third_party/libc++/trunk/include/memory:3043)
libaura.so!aura::WindowTreeHost::CreateCompositor(views::DesktopWindowTreeHostX11 * this, const viz::FrameSinkId & frame_sink_id, bool force_software_compositor, bool use_external_begin_frame_control, const char * trace_environment_name) (/media/keyou/dev2/chromium64/src/ui/aura/window_tree_host.cc:430)
libviews.so!views::DesktopWindowTreeHostPlatform::Init(views::DesktopWindowTreeHostX11 * this, const views::Widget::InitParams & params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc:152)
libviews.so!views::DesktopWindowTreeHostLinux::Init(views::DesktopWindowTreeHostX11 * this, const views::Widget::InitParams & params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc:163)
libviews.so!views::DesktopWindowTreeHostX11::Init(views::DesktopWindowTreeHostX11 * this, const views::Widget::InitParams & params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc:96)
libviews.so!views::DesktopNativeWidgetAura::InitNativeWidget(views::DesktopNativeWidgetAura * this, views::Widget::InitParams params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc:485)
libviews.so!views::Widget::Init(views::Widget * this, views::Widget::InitParams params) (/media/keyou/dev2/chromium64/src/ui/views/widget/widget.cc:353)
main(int argc, char ** argv) (/media/keyou/dev2/chromium64/src/demo/demo_views/demo_views.cc:222)
+
LayerTreeHost::SetVisible 触发LayerTreeFrameSink的创建
case SchedulerStateMachine::Action::BEGIN_LAYER_TREE_FRAME_SINK_CREATION:
Post SingleThreadProxy::RequestNewLayerTreeFrameSink
libcc.so!cc::SingleThreadProxy::ScheduleRequestNewLayerTreeFrameSink(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:657)
libcc.so!cc::SingleThreadProxy::ScheduledActionBeginLayerTreeFrameSinkCreation(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:928)
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:852)
libcc.so!cc::Scheduler::SetVisible(cc::Scheduler * this, bool visible) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:82)
libcc.so!cc::SingleThreadProxy::SetVisible(cc::SingleThreadProxy * this, bool visible) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:111)
libcc.so!cc::LayerTreeHost::SetVisible(cc::LayerTreeHost * this, bool visible) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:669)
libcompositor.so!ui::Compositor::Compositor(ui::Compositor * this, const viz::FrameSinkId & frame_sink_id, ui::InProcessContextFactory * context_factory, ui::InProcessContextFactory * context_factory_private, scoped_refptr<base::SingleThreadTaskRunner> task_runner, bool enable_pixel_canvas, bool use_external_begin_frame_control, bool force_software_compositor, const char * trace_environment_name) (/media/keyou/dev2/chromium64/src/ui/compositor/compositor.cc:232)
libaura.so!std::__Cr::make_unique<ui::Compositor, viz::FrameSinkId const, ui::ContextFactory*&, ui::ContextFactoryPrivate*&, scoped_refptr<base::SingleThreadTaskRunner> const&, bool, bool&, bool&, char const*&>(const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args, const char *& __args) (/media/keyou/dev2/chromium64/src/buildtools/third_party/libc++/trunk/include/memory:3043)
libaura.so!aura::WindowTreeHost::CreateCompositor(views::DesktopWindowTreeHostX11 * this, const viz::FrameSinkId & frame_sink_id, bool force_software_compositor, bool use_external_begin_frame_control, const char * trace_environment_name) (/media/keyou/dev2/chromium64/src/ui/aura/window_tree_host.cc:430)
libviews.so!views::DesktopWindowTreeHostPlatform::Init(views::DesktopWindowTreeHostX11 * this, const views::Widget::InitParams & params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc:152)
libviews.so!views::DesktopWindowTreeHostLinux::Init(views::DesktopWindowTreeHostX11 * this, const views::Widget::InitParams & params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc:163)
libviews.so!views::DesktopWindowTreeHostX11::Init(views::DesktopWindowTreeHostX11 * this, const views::Widget::InitParams & params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc:96)
libviews.so!views::DesktopNativeWidgetAura::InitNativeWidget(views::DesktopNativeWidgetAura * this, views::Widget::InitParams params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc:485)
libviews.so!views::Widget::Init(views::Widget * this, views::Widget::InitParams params) (/media/keyou/dev2/chromium64/src/ui/views/widget/widget.cc:353)
main(int argc, char ** argv) (/media/keyou/dev2/chromium64/src/demo/demo_views/demo_views.cc:227)
+
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::SetDeferBeginMainFrame(cc::Scheduler * this, bool defer_begin_main_frame) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:766)
libcc.so!cc::SingleThreadProxy::SetDeferMainFrameUpdate(cc::SingleThreadProxy * this, bool defer_main_frame_update) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:284)
libcc.so!cc::LayerTreeHost::UpdateDeferMainFrameUpdateInternal(cc::LayerTreeHost * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:462)
libcc.so!cc::LayerTreeHost::SetLocalSurfaceIdAllocationFromParent(cc::LayerTreeHost * this, const viz::LocalSurfaceIdAllocation & local_surface_id_allocation_from_parent) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:1354)
libcc.so!cc::LayerTreeHost::SetViewportRectAndScale(cc::LayerTreeHost * this, const gfx::Rect & device_viewport_rect, float device_scale_factor, const viz::LocalSurfaceIdAllocation & local_surface_id_allocation_from_parent) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:1153)
libcompositor.so!ui::Compositor::SetScaleAndSize(ui::Compositor * this, float scale, const gfx::Size & size_in_pixel, const viz::LocalSurfaceIdAllocation & local_surface_id_allocation) (/media/keyou/dev2/chromium64/src/ui/compositor/compositor.cc:388)
libaura.so!aura::WindowTreeHost::InitCompositor(views::DesktopWindowTreeHostX11 * this) (/media/keyou/dev2/chromium64/src/ui/aura/window_tree_host.cc:451)
libaura.so!aura::WindowTreeHost::InitHost(views::DesktopWindowTreeHostX11 * this) (/media/keyou/dev2/chromium64/src/ui/aura/window_tree_host.cc:119)
libviews.so!views::DesktopWindowTreeHostPlatform::Init(views::DesktopWindowTreeHostX11 * this, const views::Widget::InitParams & params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc:157)
libviews.so!views::DesktopWindowTreeHostLinux::Init(views::DesktopWindowTreeHostX11 * this, const views::Widget::InitParams & params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc:163)
libviews.so!views::DesktopWindowTreeHostX11::Init(views::DesktopWindowTreeHostX11 * this, const views::Widget::InitParams & params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_x11.cc:96)
libviews.so!views::DesktopNativeWidgetAura::InitNativeWidget(views::DesktopNativeWidgetAura * this, views::Widget::InitParams params) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc:485)
libviews.so!views::Widget::Init(views::Widget * this, views::Widget::InitParams params) (/media/keyou/dev2/chromium64/src/ui/views/widget/widget.cc:353)
main(int argc, char ** argv) (/media/keyou/dev2/chromium64/src/demo/demo_views/demo_views.cc:222)

收到X11事件
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::SetNeedsRedraw(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:138)
libcc.so!cc::SingleThreadProxy::SetNeedsRedrawOnImplThread(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:381)
libcc.so!cc::SingleThreadProxy::SetNeedsRedraw(cc::SingleThreadProxy * this, const gfx::Rect & damage_rect) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:250)
libcc.so!cc::LayerTreeHost::SetNeedsRedrawRect(cc::LayerTreeHost * this, const gfx::Rect & damage_rect) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:615)
libcompositor.so!ui::Compositor::ScheduleRedrawRect(ui::Compositor * this, const gfx::Rect & damage_rect) (/media/keyou/dev2/chromium64/src/ui/compositor/compositor.cc:351)
libaura.so!aura::WindowTreeHostPlatform::OnDamageRect(views::DesktopWindowTreeHostX11 * this, const gfx::Rect & damage_rect) (/media/keyou/dev2/chromium64/src/ui/aura/window_tree_host_platform.cc:224)
libx11_window.so!ui::X11Window::OnXWindowDamageEvent(ui::X11Window * this, const gfx::Rect & damage_rect) (/media/keyou/dev2/chromium64/src/ui/platform_window/x11/x11_window.cc:595)
libui_base_x.so!ui::XWindow::ProcessEvent(ui::X11Window * this, XEvent * xev) (/media/keyou/dev2/chromium64/src/ui/base/x/x11_window.cc:1109)
libx11_window.so!ui::X11Window::DispatchEvent(ui::X11Window * this, const ui::PlatformEvent & event) (/media/keyou/dev2/chromium64/src/ui/platform_window/x11/x11_window.cc:513)
libplatform.so!ui::PlatformEventSource::DispatchEvent(ui::X11EventSourceGlib * this, ui::PlatformEvent platform_event) (/media/keyou/dev2/chromium64/src/ui/events/platform/platform_event_source.cc:101)
libx11_events_platform.so!ui::X11EventSourceGlib::ProcessXEvent(ui::X11EventSourceGlib * this, XEvent * xevent) (/media/keyou/dev2/chromium64/src/ui/events/platform/x11/x11_event_source_glib.cc:63)
libx11_events_platform.so!ui::X11EventSource::ExtractCookieDataDispatchEvent(ui::X11EventSource * this, XEvent * xevent) (/media/keyou/dev2/chromium64/src/ui/events/platform/x11/x11_event_source.cc:273)
libx11_events_platform.so!ui::X11EventSource::DispatchXEvents(ui::X11EventSource * this) (/media/keyou/dev2/chromium64/src/ui/events/platform/x11/x11_event_source.cc:140)
libx11_events_platform.so!ui::(anonymous namespace)::XSourceDispatch(GSource * source, GSourceFunc unused_func, gpointer data) (/media/keyou/dev2/chromium64/src/ui/events/platform/x11/x11_event_source_glib.cc:39)
libglib-2.0.so.0!g_main_context_dispatch (Unknown Source:0)
libglib-2.0.so.0![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libglib-2.0.so.0!g_main_context_iteration (Unknown Source:0)
libbase.so!base::MessagePumpGlib::Run(base::MessagePumpGlib * this, base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl * delegate) (/media/keyou/dev2/chromium64/src/base/message_loop/message_pump_glib.cc:437)
libbase.so!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run(base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl * this, bool application_tasks_allowed, base::TimeDelta timeout) (/media/keyou/dev2/chromium64/src/base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:463)

Run SingleThreadProxy::RequestNewLayerTreeFrameSink
创建LayerTreeFrameSink;
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::SetNeedsPrepareTiles(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:144)
libcc.so!cc::SingleThreadProxy::SetNeedsPrepareTilesOnImplThread(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:396)
libcc.so!cc::LayerTreeHostImpl::DidModifyTilePriorities(cc::LayerTreeHostImpl * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:1772)
libcc.so!cc::LayerTreeHostImpl::UpdateTileManagerMemoryPolicy(cc::LayerTreeHostImpl * this, const cc::ManagedMemoryPolicy & policy) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:1765)
libcc.so!cc::LayerTreeHostImpl::CreateTileManagerResources(cc::LayerTreeHostImpl * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:3269)
libcc.so!cc::LayerTreeHostImpl::InitializeFrameSink(cc::LayerTreeHostImpl * this, viz::DirectLayerTreeFrameSink * layer_tree_frame_sink) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:3536)
libcc.so!cc::SingleThreadProxy::SetLayerTreeFrameSink(cc::SingleThreadProxy * this, viz::DirectLayerTreeFrameSink * layer_tree_frame_sink) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:140)
libcc.so!cc::LayerTreeHost::SetLayerTreeFrameSink(cc::LayerTreeHost * this, std::__Cr::unique_ptr<cc::LayerTreeFrameSink, std::__Cr::default_delete<cc::LayerTreeFrameSink> > surface) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:487)
libcompositor.so!ui::Compositor::SetLayerTreeFrameSink(ui::Compositor * this, std::__Cr::unique_ptr<cc::LayerTreeFrameSink, std::__Cr::default_delete<cc::LayerTreeFrameSink> > layer_tree_frame_sink) (/media/keyou/dev2/chromium64/src/ui/compositor/compositor.cc:295)
ui::InProcessContextFactory::CreateLayerTreeFrameSink(ui::InProcessContextFactory * this, base::WeakPtr<ui::Compositor> compositor) (/media/keyou/dev2/chromium64/src/ui/compositor/test/in_process_context_factory.cc:306)
libcompositor.so!ui::Compositor::RequestNewLayerTreeFrameSink(ui::Compositor * this) (/media/keyou/dev2/chromium64/src/ui/compositor/compositor.cc:622)
libcc.so!cc::LayerTreeHost::RequestNewLayerTreeFrameSink(cc::LayerTreeHost * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:499)
libcc.so!cc::SingleThreadProxy::RequestNewLayerTreeFrameSink(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:120)
+
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::SetCanDraw(cc::Scheduler * this, bool can_draw) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:87)
libcc.so!cc::SingleThreadProxy::OnCanDrawStateChanged(cc::SingleThreadProxy * this, bool can_draw) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:361)
libcc.so!cc::LayerTreeHostImpl::InitializeFrameSink(cc::LayerTreeHostImpl * this, viz::DirectLayerTreeFrameSink * layer_tree_frame_sink) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:3539)
libcc.so!cc::SingleThreadProxy::SetLayerTreeFrameSink(cc::SingleThreadProxy * this, viz::DirectLayerTreeFrameSink * layer_tree_frame_sink) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:140)
libcc.so!cc::LayerTreeHost::SetLayerTreeFrameSink(cc::LayerTreeHost * this, std::__Cr::unique_ptr<cc::LayerTreeFrameSink, std::__Cr::default_delete<cc::LayerTreeFrameSink> > surface) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:487)
libcompositor.so!ui::Compositor::SetLayerTreeFrameSink(ui::Compositor * this, std::__Cr::unique_ptr<cc::LayerTreeFrameSink, std::__Cr::default_delete<cc::LayerTreeFrameSink> > layer_tree_frame_sink) (/media/keyou/dev2/chromium64/src/ui/compositor/compositor.cc:295)
ui::InProcessContextFactory::CreateLayerTreeFrameSink(ui::InProcessContextFactory * this, base::WeakPtr<ui::Compositor> compositor) (/media/keyou/dev2/chromium64/src/ui/compositor/test/in_process_context_factory.cc:306)
libcompositor.so!ui::Compositor::RequestNewLayerTreeFrameSink(ui::Compositor * this) (/media/keyou/dev2/chromium64/src/ui/compositor/compositor.cc:622)
libcc.so!cc::LayerTreeHost::RequestNewLayerTreeFrameSink(cc::LayerTreeHost * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:499)
libcc.so!cc::SingleThreadProxy::RequestNewLayerTreeFrameSink(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:120)
+
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::DidCreateAndInitializeLayerTreeFrameSink(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:223)
libcc.so!cc::SingleThreadProxy::SetLayerTreeFrameSink(cc::SingleThreadProxy * this, viz::DirectLayerTreeFrameSink * layer_tree_frame_sink) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:147)
libcc.so!cc::LayerTreeHost::SetLayerTreeFrameSink(cc::LayerTreeHost * this, std::__Cr::unique_ptr<cc::LayerTreeFrameSink, std::__Cr::default_delete<cc::LayerTreeFrameSink> > surface) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:487)
libcompositor.so!ui::Compositor::SetLayerTreeFrameSink(ui::Compositor * this, std::__Cr::unique_ptr<cc::LayerTreeFrameSink, std::__Cr::default_delete<cc::LayerTreeFrameSink> > layer_tree_frame_sink) (/media/keyou/dev2/chromium64/src/ui/compositor/compositor.cc:295)
ui::InProcessContextFactory::CreateLayerTreeFrameSink(ui::InProcessContextFactory * this, base::WeakPtr<ui::Compositor> compositor) (/media/keyou/dev2/chromium64/src/ui/compositor/test/in_process_context_factory.cc:306)
libcompositor.so!ui::Compositor::RequestNewLayerTreeFrameSink(ui::Compositor * this) (/media/keyou/dev2/chromium64/src/ui/compositor/compositor.cc:622)
libcc.so!cc::LayerTreeHost::RequestNewLayerTreeFrameSink(cc::LayerTreeHost * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:499)
libcc.so!cc::SingleThreadProxy::RequestNewLayerTreeFrameSink(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:120)

BFS触发首帧请求
Post Scheduler::HandlePendingBeginFrame
libcc.so!cc::Scheduler::PostPendingBeginFrameTask(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:306)
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::OnBeginFrameDerivedImpl(cc::Scheduler * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:379)
libviz_common.so!viz::BeginFrameObserverBase::OnBeginFrame(cc::Scheduler * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:93)
libviz_common.so!viz::(anonymous namespace)::FilterAndIssueBeginFrame(cc::Scheduler * observer, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:47)
libviz_common.so!viz::ExternalBeginFrameSource::OnBeginFrame(viz::ExternalBeginFrameSource * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:465)
libservice.so!viz::DirectLayerTreeFrameSink::OnBeginFrame(viz::DirectLayerTreeFrameSink * this, const viz::BeginFrameArgs & args, const viz::FrameTimingDetailsMap & timing_details) (/media/keyou/dev2/chromium64/src/components/viz/service/frame_sinks/direct_layer_tree_frame_sink.cc:321)
libservice.so!viz::CompositorFrameSinkSupport::OnBeginFrame(viz::CompositorFrameSinkSupport * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/service/frame_sinks/compositor_frame_sink_support.cc:670)
libviz_common.so!viz::(anonymous namespace)::FilterAndIssueBeginFrame(viz::CompositorFrameSinkSupport * observer, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:47)
libviz_common.so!viz::DelayBasedBeginFrameSource::IssueBeginFrameToObserver(viz::DelayBasedBeginFrameSource * this, viz::CompositorFrameSinkSupport * obs, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:365)
libviz_common.so!viz::DelayBasedBeginFrameSource::OnTimerTick(viz::DelayBasedBeginFrameSource * this) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:349)
libviz_common.so!viz::DelayBasedTimeSource::OnTimerTick(viz::DelayBasedTimeSource * this) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/delay_based_time_source.cc:77)
+++
Run Scheduler::HandlePendingBeginFrame
Post SingleThreadProxy::BeginMainFrame
case SchedulerStateMachine::Action::SEND_BEGIN_MAIN_FRAME:
libcc.so!cc::SingleThreadProxy::ScheduledActionSendBeginMainFrame(cc::SingleThreadProxy * this, const viz::BeginFrameArgs & begin_frame_args) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:769)
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::BeginImplFrame(cc::Scheduler * this, const viz::BeginFrameArgs & args, base::TimeTicks now) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:629)
libcc.so!cc::Scheduler::BeginImplFrameWithDeadline(cc::Scheduler * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:552)
libcc.so!cc::Scheduler::HandlePendingBeginFrame(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:420)
+++
SingleThreadProxy::BeginMainFrame中绘制内容,并请求Commit
DemoViewsWidgetDelegateView::OnPaint(DemoViewsWidgetDelegateView * this, gfx::Canvas * canvas) (/media/keyou/dev2/chromium64/src/demo/demo_views/demo_views.cc:124)
libviews.so!views::View::Paint(DemoViewsWidgetDelegateView * this, const views::PaintInfo & parent_paint_info) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:999)
libviews.so!views::View::RecursivePaintHelper(views::ClientView * this, void (views::View::*)(views::View * const, const views::PaintInfo &) func, const views::PaintInfo & info) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:2094)
libviews.so!views::View::PaintChildren(views::ClientView * this, const views::PaintInfo & paint_info) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:1649)
libviews.so!views::View::Paint(views::ClientView * this, const views::PaintInfo & parent_paint_info) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:1003)
libviews.so!views::View::RecursivePaintHelper(views::NonClientView * this, void (views::View::*)(views::View * const, const views::PaintInfo &) func, const views::PaintInfo & info) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:2094)
libviews.so!views::View::PaintChildren(views::NonClientView * this, const views::PaintInfo & paint_info) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:1649)
libviews.so!views::View::Paint(views::NonClientView * this, const views::PaintInfo & parent_paint_info) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:1003)
libviews.so!views::View::RecursivePaintHelper(views::internal::RootView * this, void (views::View::*)(views::View * const, const views::PaintInfo &) func, const views::PaintInfo & info) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:2094)
libviews.so!views::View::PaintChildren(views::internal::RootView * this, const views::PaintInfo & paint_info) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:1649)
libviews.so!views::View::Paint(views::internal::RootView * this, const views::PaintInfo & parent_paint_info) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:1003)
libviews.so!views::View::PaintFromPaintRoot(views::internal::RootView * this, const ui::PaintContext & parent_context) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:2101)
libviews.so!views::Widget::OnNativeWidgetPaint(views::Widget * this, const ui::PaintContext & context) (/media/keyou/dev2/chromium64/src/ui/views/widget/widget.cc:1232)
libviews.so!views::DesktopNativeWidgetAura::OnPaint(views::DesktopNativeWidgetAura * this, const ui::PaintContext & context) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc:1077)
libaura.so!aura::Window::Paint(aura::Window * this, const ui::PaintContext & context) (/media/keyou/dev2/chromium64/src/ui/aura/window.cc:916)
libaura.so!aura::Window::OnPaintLayer(aura::Window * this, const ui::PaintContext & context) (/media/keyou/dev2/chromium64/src/ui/aura/window.cc:1297)
libcompositor.so!ui::Layer::PaintContentsToDisplayList(ui::Layer * this, cc::ContentLayerClient::PaintingControlSetting painting_control) (/media/keyou/dev2/chromium64/src/ui/compositor/layer.cc:1258)
libcompositor.so!non-virtual thunk to ui::Layer::PaintContentsToDisplayList(cc::ContentLayerClient::PaintingControlSetting) (Unknown Source:0)
libcc.so!cc::PictureLayer::Update(cc::PictureLayer * this) (/media/keyou/dev2/chromium64/src/cc/layers/picture_layer.cc:140)
libcc.so!cc::LayerTreeHost::PaintContent(cc::LayerTreeHost * this, const cc::LayerList & update_layer_list) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:1402)
libcc.so!cc::LayerTreeHost::DoUpdateLayers(cc::LayerTreeHost * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:834)
libcc.so!cc::LayerTreeHost::UpdateLayers(cc::LayerTreeHost * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:703)
libcc.so!cc::SingleThreadProxy::DoPainting(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:871)
libcc.so!cc::SingleThreadProxy::BeginMainFrame(cc::SingleThreadProxy * this, const viz::BeginFrameArgs & begin_frame_args) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:848)
+
case SchedulerStateMachine::Action::COMMIT:
执行 commit:  LayerTreeHost 的数据commit LayerTreeHostImpl,注意commit操作是在impl线程中执行的(如果是单线程则在和main同一个线程),commit的核心代码在LayerTreeHost
libcc.so!cc::PictureLayer::PushPropertiesTo(cc::PictureLayer * this, cc::PictureLayerImpl * base_layer) (/media/keyou/dev2/chromium64/src/cc/layers/picture_layer.cc:52)
libcc.so!cc::PushLayerPropertiesInternal<std::__Cr::__wrap_iter<cc::Layer**> >(std::__Cr::__wrap_iter<cc::Layer**> source_layers_begin, std::__Cr::__wrap_iter<cc::Layer**> source_layers_end, cc::LayerTreeHost * host_tree, cc::LayerTreeImpl * target_impl_tree) (/media/keyou/dev2/chromium64/src/cc/trees/tree_synchronizer.cc:172)
libcc.so!cc::TreeSynchronizer::PushLayerProperties(cc::LayerTreeHost * host_tree, cc::LayerTreeImpl * impl_tree) (/media/keyou/dev2/chromium64/src/cc/trees/tree_synchronizer.cc:206)
libcc.so!cc::LayerTreeHost::FinishCommitOnImplThread(cc::LayerTreeHost * this, cc::LayerTreeHostImpl * host_impl) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:343)
libcc.so!cc::SingleThreadProxy::DoCommit(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:196)
libcc.so!cc::SingleThreadProxy::ScheduledActionCommit(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:912)
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::NotifyReadyToCommit(cc::Scheduler * this, std::__Cr::unique_ptr<cc::BeginMainFrameMetrics, std::__Cr::default_delete<cc::BeginMainFrameMetrics> > details) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:179)
libcc.so!cc::SingleThreadProxy::DoPainting(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:877)
libcc.so!cc::SingleThreadProxy::BeginMainFrame(cc::SingleThreadProxy * this, const viz::BeginFrameArgs & begin_frame_args) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:848)
+
Post Tiles任务(raster任务)到单独的Raster线程,注意这同时会在任务队列的最后放入结束任务,专门用于raster结束的通知,并且结束通知是运行在主线中
libcc.so!cc::SingleThreadTaskGraphRunner::ScheduleTasks(cc::TestTaskGraphRunner * this, cc::NamespaceToken token, cc::TaskGraph * graph) (/media/keyou/dev2/chromium64/src/cc/raster/single_thread_task_graph_runner.cc:68)
libcc.so!cc::TileTaskManagerImpl::ScheduleTasks(cc::TileTaskManagerImpl * this, cc::TaskGraph * graph) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_task_manager.cc:32)
libcc.so!cc::TileManager::ScheduleTasks(cc::TileManager * this, cc::TileManager::PrioritizedWorkToSchedule work_to_schedule) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:1108)
libcc.so!cc::TileManager::PrepareTiles(cc::TileManager * this, const cc::GlobalStateThatImpactsTilePriority & state) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:548)
libcc.so!cc::LayerTreeHostImpl::PrepareTiles(cc::LayerTreeHostImpl * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:762)
libcc.so!cc::LayerTreeHostImpl::NotifyPendingTreeFullyPainted(cc::LayerTreeHostImpl * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:651)
libcc.so!cc::LayerTreeHostImpl::UpdateSyncTreeAfterCommitOrImplSideInvalidation(cc::LayerTreeHostImpl * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:536)
libcc.so!cc::LayerTreeHostImpl::CommitComplete(cc::LayerTreeHostImpl * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:454)
libcc.so!cc::SingleThreadProxy::DoCommit(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:203)
libcc.so!cc::SingleThreadProxy::ScheduledActionCommit(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:912)
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:821)
libcc.so!cc::Scheduler::NotifyReadyToCommit(cc::Scheduler * this, std::__Cr::unique_ptr<cc::BeginMainFrameMetrics, std::__Cr::default_delete<cc::BeginMainFrameMetrics> > details) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:179)
libcc.so!cc::SingleThreadProxy::DoPainting(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:877)
libcc.so!cc::SingleThreadProxy::BeginMainFrame(cc::SingleThreadProxy * this, const viz::BeginFrameArgs & begin_frame_args) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:848)
+
case SchedulerStateMachine::Action::ACTIVATE_SYNC_TREE:
主要用于将pending_tree_ Sync  active_tree_ 上(在单线程中不使用pending_tree_;这个代码在LayerTreeHostImpl中;)
libcc.so!cc::LayerTreeHostImpl::ActivateSyncTree(cc::LayerTreeHostImpl * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:2979)
libcc.so!cc::SingleThreadProxy::ScheduledActionActivateSyncTree(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:917)
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::NotifyReadyToCommit(cc::Scheduler * this, std::__Cr::unique_ptr<cc::BeginMainFrameMetrics, std::__Cr::default_delete<cc::BeginMainFrameMetrics> > details) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:179)
libcc.so!cc::SingleThreadProxy::DoPainting(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:877)
libcc.so!cc::SingleThreadProxy::BeginMainFrame(cc::SingleThreadProxy * this, const viz::BeginFrameArgs & begin_frame_args) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:848)
+
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::NotifyReadyToCommit(cc::Scheduler * this, std::__Cr::unique_ptr<cc::BeginMainFrameMetrics, std::__Cr::default_delete<cc::BeginMainFrameMetrics> > details) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:179)
libcc.so!cc::SingleThreadProxy::DoPainting(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:877)
libcc.so!cc::SingleThreadProxy::BeginMainFrame(cc::SingleThreadProxy * this, const viz::BeginFrameArgs & begin_frame_args) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:848)

每次 Scheduler 的调度都会按以下顺序更新调度器的状态:

  • ScheduleBeginImplFrameDeadline: 用于设定一个 Deadline,在该 Deadline 之前都允许触发 SEND_BEGIN_MAIN_FRAME 事件,在 Deadline 触发后就不再允许触发该事件。它会 Post 一个延迟的 OnBeginImplFrameDeadline 事件,如果该事件执行了表示已经到了 Deadline(状态机进入 INSIDE_DEADLINE 状态),它会设置一些状态禁止触发 BeginMainFrame,然后进行下一次调度,这些调度都是需要在 Deadline 状态才能执行的操作,可能调度到 DRAW_IF_POSSIBLE,这会触发 client 提交 CF 到 viz,也可能调度到其他状态比如 PREPARE_TILES 等,当然也可能调度到 NONE 状态,在进入 Deadline 之后的所有操作都完成之后,调度器会进入空闲状态 IDLE,此时就算退出 Deadline 了,后续就允许触发 SEND_BEGIN_MAIN_FRAME 事件了。
  • PostPendingBeginFrameTask: 用于检测是否需要触发 SEND_BEGIN_MAIN_FRAME 事件,如果需要它会 Post HandlePendingBeginFrame 事件,该事件执行后会使状态机进入 INSIDE_BEGIN_FRAME 状态,随后调度器会在合适的时机触发 SEND_BEGIN_MAIN_FRAME 事件,这会调用 client 进行绘制,在 client 绘制完成之后会请求调度器执行提交 COMMIT 以及激活 ACTIVATE_SYNC_TREE。
  • StartOrStopBeginFrames: 用于检测当前是否处于 IDLE 状态,如果是则将自己从 BFS 移除,否则则将自己 加入 BFS。如果调度器将自己从 BFS 上移除,则会进入” 休眠状态 “,此时不会调度器不会占用 CPU,如果后续外部需要更新显示的画面,可以通过 cc::Scheduler::SetNeedsBeginFrame () 来激活调度器(注意 cc 模块外可以通过 cc::LayerTreeHost::SetNeedsCommit () 来间接调用它,如果在 cc::Layer 中,则可以直接调用它的 SetNeedsCommit 成员函数,如果 cc::Layer 没有任何变化,只调用 SetNeddsCommit () 则不会激活调度器,必须有实际的变更或者标记区域 demaged)。
BFS触发,设定FrameDeadline
Post Scheduler::OnBeginImplFrameDeadline
libcc.so!cc::Scheduler::ScheduleBeginImplFrameDeadline(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:702)
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:867)
libcc.so!cc::Scheduler::OnBeginFrameDerivedImpl(cc::Scheduler * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:379)
libviz_common.so!viz::BeginFrameObserverBase::OnBeginFrame(cc::Scheduler * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:93)
libviz_common.so!viz::(anonymous namespace)::FilterAndIssueBeginFrame(cc::Scheduler * observer, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:47)
libviz_common.so!viz::ExternalBeginFrameSource::OnBeginFrame(viz::ExternalBeginFrameSource * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:465)
libservice.so!viz::DirectLayerTreeFrameSink::OnBeginFrame(viz::DirectLayerTreeFrameSink * this, const viz::BeginFrameArgs & args, const viz::FrameTimingDetailsMap & timing_details) (/media/keyou/dev2/chromium64/src/components/viz/service/frame_sinks/direct_layer_tree_frame_sink.cc:321)
libservice.so!viz::CompositorFrameSinkSupport::OnBeginFrame(viz::CompositorFrameSinkSupport * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/service/frame_sinks/compositor_frame_sink_support.cc:670)
libviz_common.so!viz::(anonymous namespace)::FilterAndIssueBeginFrame(viz::CompositorFrameSinkSupport * observer, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:47)
libviz_common.so!viz::DelayBasedBeginFrameSource::IssueBeginFrameToObserver(viz::DelayBasedBeginFrameSource * this, viz::CompositorFrameSinkSupport * obs, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:365)
libviz_common.so!viz::DelayBasedBeginFrameSource::OnTimerTick(viz::DelayBasedBeginFrameSource * this) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:349)
libviz_common.so!viz::DelayBasedTimeSource::OnTimerTick(viz::DelayBasedTimeSource * this) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/delay_based_time_source.cc:77)

执行tile任务,运行在单独的Raster线程(在SingleThreadTaskGraphRunner中执行Raster操作)这会将DisplayItemList中保存的绘制操作执行真实的绘制,绘制到内存中,注意这里采用的是OnCopyRasterBufferProvider
libcc_paint.so!cc::PaintOpBuffer::Playback(const cc::PaintOpBuffer * this, SkCanvas * canvas, const cc::PlaybackParams & params, const std::__Cr::vector<unsigned long, std::__Cr::allocator<unsigned long> > * offsets) (/media/keyou/dev2/chromium64/src/cc/paint/paint_op_buffer.cc:2431)
libcc_paint.so!cc::DisplayItemList::Raster(const cc::DisplayItemList * this, SkCanvas * canvas, cc::(anonymous namespace)::DispatchingImageProvider * image_provider) (/media/keyou/dev2/chromium64/src/cc/paint/display_item_list.cc:81)
libcc.so!cc::RasterSource::PlaybackToCanvas(const cc::RasterSource * this, SkCanvas * raster_canvas, cc::(anonymous namespace)::DispatchingImageProvider * image_provider) (/media/keyou/dev2/chromium64/src/cc/raster/raster_source.cc:171)
libcc.so!cc::RasterSource::PlaybackToCanvas(const cc::RasterSource * this, SkCanvas * raster_canvas, const gfx::Size & content_size, const gfx::Rect & canvas_bitmap_rect, const gfx::Rect & canvas_playback_rect, const gfx::AxisTransform2d & raster_transform, const cc::RasterSource::PlaybackSettings & settings) (/media/keyou/dev2/chromium64/src/cc/raster/raster_source.cc:161)
libcc.so!cc::RasterBufferProvider::PlaybackToMemory(void * memory, viz::ResourceFormat format, const gfx::Size & size, size_t stride, const cc::RasterSource * raster_source, const gfx::Rect & canvas_bitmap_rect, const gfx::Rect & canvas_playback_rect, const gfx::AxisTransform2d & transform, const gfx::ColorSpace & target_color_space, bool gpu_compositing, const cc::RasterSource::PlaybackSettings & playback_settings) (/media/keyou/dev2/chromium64/src/cc/raster/raster_buffer_provider.cc:107)
libcc.so!cc::OneCopyRasterBufferProvider::PlaybackToStagingBuffer(cc::OneCopyRasterBufferProvider * this, cc::StagingBuffer * staging_buffer, const cc::RasterSource * raster_source, const gfx::Rect & raster_full_rect, const gfx::Rect & raster_dirty_rect, const gfx::AxisTransform2d & transform, viz::ResourceFormat format, const gfx::ColorSpace & dst_color_space, const cc::RasterSource::PlaybackSettings & playback_settings, uint64_t previous_content_id, uint64_t new_content_id) (/media/keyou/dev2/chromium64/src/cc/raster/one_copy_raster_buffer_provider.cc:347)
libcc.so!cc::OneCopyRasterBufferProvider::PlaybackAndCopyOnWorkerThread(cc::OneCopyRasterBufferProvider * this, gpu::Mailbox * mailbox, GLenum mailbox_texture_target, bool mailbox_texture_is_overlay_candidate, const gpu::SyncToken & sync_token, const cc::RasterSource * raster_source, const gfx::Rect & raster_full_rect, const gfx::Rect & raster_dirty_rect, const gfx::AxisTransform2d & transform, const gfx::Size & resource_size, viz::ResourceFormat resource_format, const gfx::ColorSpace & color_space, const cc::RasterSource::PlaybackSettings & playback_settings, uint64_t previous_content_id, uint64_t new_content_id) (/media/keyou/dev2/chromium64/src/cc/raster/one_copy_raster_buffer_provider.cc:270)
libcc.so!cc::OneCopyRasterBufferProvider::RasterBufferImpl::Playback(cc::OneCopyRasterBufferProvider::RasterBufferImpl * this, const cc::RasterSource * raster_source, const gfx::Rect & raster_full_rect, const gfx::Rect & raster_dirty_rect, uint64_t new_content_id, const gfx::AxisTransform2d & transform, const cc::RasterSource::PlaybackSettings & playback_settings, const GURL & url) (/media/keyou/dev2/chromium64/src/cc/raster/one_copy_raster_buffer_provider.cc:118)
libcc.so!cc::(anonymous namespace)::RasterTaskImpl::RunOnWorkerThread(cc::(anonymous namespace)::RasterTaskImpl * this) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:125)
libcc.so!cc::SingleThreadTaskGraphRunner::RunTaskWithLockAcquired(cc::TestTaskGraphRunner * this) (/media/keyou/dev2/chromium64/src/cc/raster/single_thread_task_graph_runner.cc:154)
libcc.so!cc::SingleThreadTaskGraphRunner::Run(cc::TestTaskGraphRunner * this) (/media/keyou/dev2/chromium64/src/cc/raster/single_thread_task_graph_runner.cc:117)
libbase.so!base::DelegateSimpleThread::Run(base::DelegateSimpleThread * this) (/media/keyou/dev2/chromium64/src/base/threading/simple_thread.cc:98)
libbase.so!base::SimpleThread::ThreadMain(base::DelegateSimpleThread * this) (/media/keyou/dev2/chromium64/src/base/threading/simple_thread.cc:75)
libbase.so!base::(anonymous namespace)::ThreadFunc(void * params) (/media/keyou/dev2/chromium64/src/base/threading/platform_thread_posix.cc:81)
libpthread.so.0!start_thread (Unknown Source:0)
libc.so.6!clone (Unknown Source:0)
+++
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::SetNeedsRedraw(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:138)
libcc.so!cc::SingleThreadProxy::SetNeedsRedrawOnImplThread(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:381)
libcc.so!cc::LayerTreeHostImpl::SetNeedsRedraw(cc::LayerTreeHostImpl * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:3186)
libcc.so!cc::LayerTreeHostImpl::NotifyTileStateChanged(cc::LayerTreeHostImpl * this, const cc::Tile * tile) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:1926)
libcc.so!cc::TileManager::OnRasterTaskCompleted(cc::TileManager * this, cc::Tile::Id tile_id, cc::ResourcePool::InUsePoolResource resource, bool was_canceled) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:1337)
libcc.so!cc::(anonymous namespace)::RasterTaskImpl::OnTaskCompleted(cc::(anonymous namespace)::RasterTaskImpl * this) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:138)
libcc.so!cc::TileTaskManagerImpl::CheckForCompletedTasks(cc::TileTaskManagerImpl * this) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_task_manager.cc:43)
libcc.so!cc::TileManager::FlushAndIssueSignals(cc::TileManager * this) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:1430)
+++
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::SetNeedsRedraw(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:138)
libcc.so!cc::SingleThreadProxy::SetNeedsRedrawOnImplThread(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:381)
libcc.so!cc::LayerTreeHostImpl::SetNeedsRedraw(cc::LayerTreeHostImpl * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:3186)
libcc.so!cc::LayerTreeHostImpl::NotifyTileStateChanged(cc::LayerTreeHostImpl * this, const cc::Tile * tile) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:1926)
libcc.so!cc::TileManager::OnRasterTaskCompleted(cc::TileManager * this, cc::Tile::Id tile_id, cc::ResourcePool::InUsePoolResource resource, bool was_canceled) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:1337)
libcc.so!cc::(anonymous namespace)::RasterTaskImpl::OnTaskCompleted(cc::(anonymous namespace)::RasterTaskImpl * this) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:138)
libcc.so!cc::TileTaskManagerImpl::CheckForCompletedTasks(cc::TileTaskManagerImpl * this) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_task_manager.cc:43)
libcc.so!cc::TileManager::FlushAndIssueSignals(cc::TileManager * this) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:1430)
+++
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::NotifyReadyToActivate(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:94)
libcc.so!cc::SingleThreadProxy::NotifyReadyToActivate(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:368)
libcc.so!cc::LayerTreeHostImpl::NotifyReadyToActivate(cc::LayerTreeHostImpl * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:1883)
libcc.so!cc::TileManager::IssueSignals(cc::TileManager * this) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:1446)
libcc.so!cc::TileManager::CheckPendingGpuWorkAndIssueSignals(cc::TileManager * this) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:1700)
libcc.so!cc::TileManager::FlushAndIssueSignals(cc::TileManager * this) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:1434)
+++
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::NotifyReadyToDraw(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:100)
libcc.so!cc::SingleThreadProxy::NotifyReadyToDraw(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:375)
libcc.so!cc::LayerTreeHostImpl::NotifyReadyToDraw(cc::LayerTreeHostImpl * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:1892)
libcc.so!cc::TileManager::IssueSignals(cc::TileManager * this) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:1457)
libcc.so!cc::TileManager::CheckPendingGpuWorkAndIssueSignals(cc::TileManager * this) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:1700)
libcc.so!cc::TileManager::FlushAndIssueSignals(cc::TileManager * this) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:1434)


Deadline时间到,触发绘制(Submit)操作
Run Scheduler::OnBeginImplFrameDeadline
case SchedulerStateMachine::Action::DRAW_IF_POSSIBLE:
PostTask DisplayScheduler::OnBeginFrameDeadline
libservice.so!viz::DisplayScheduler::ScheduleBeginFrameDeadline(viz::DisplayScheduler * this) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display_scheduler.cc:475)
libservice.so!viz::DisplayScheduler::OnBeginFrameDerivedImpl(viz::DisplayScheduler * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display_scheduler.cc:264)
libviz_common.so!viz::BeginFrameObserverBase::OnBeginFrame(viz::DisplayScheduler * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:93)
libviz_common.so!viz::(anonymous namespace)::FilterAndIssueBeginFrame(viz::DisplayScheduler * observer, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:47)
libviz_common.so!viz::DelayBasedBeginFrameSource::IssueBeginFrameToObserver(viz::DelayBasedBeginFrameSource * this, viz::DisplayScheduler * obs, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:365)
libviz_common.so!viz::DelayBasedBeginFrameSource::AddObserver(viz::DelayBasedBeginFrameSource * this, viz::DisplayScheduler * obs) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:299)
libservice.so!viz::DisplayScheduler::StartObservingBeginFrames(viz::DisplayScheduler * this) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display_scheduler.cc:282)
libservice.so!viz::DisplayScheduler::MaybeStartObservingBeginFrames(viz::DisplayScheduler * this) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display_scheduler.cc:277)
libservice.so!viz::DisplayScheduler::SetRootFrameMissing(viz::DisplayScheduler * this, bool missing) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display_scheduler.cc:79)
libservice.so!viz::Display::UpdateRootFrameMissing(viz::Display * this) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display.cc:445)
libservice.so!viz::Display::SurfaceDamaged(viz::Display * this, const viz::SurfaceId & surface_id, const viz::BeginFrameAck & ack) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display.cc:800)
libservice.so!viz::DisplayScheduler::OnSurfaceDamaged(viz::DisplayScheduler * this, const viz::SurfaceId & surface_id, const viz::BeginFrameAck & ack) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display_scheduler.cc:331)
libservice.so!viz::SurfaceManager::SurfaceModified(viz::SurfaceManager * this, const viz::SurfaceId & surface_id, const viz::BeginFrameAck & ack) (/media/keyou/dev2/chromium64/src/components/viz/service/surfaces/surface_manager.cc:464)
libservice.so!viz::SurfaceManager::SurfaceActivated(viz::SurfaceManager * this, viz::Surface * surface, base::Optional<base::TimeDelta> duration) (/media/keyou/dev2/chromium64/src/components/viz/service/surfaces/surface_manager.cc:480)
libservice.so!viz::Surface::ActivateFrame(viz::Surface * this, viz::Surface::FrameData frame_data, base::Optional<base::TimeDelta> duration) (/media/keyou/dev2/chromium64/src/components/viz/service/surfaces/surface.cc:446)
libservice.so!viz::Surface::QueueFrame(viz::Surface * this, viz::CompositorFrame frame, uint64_t frame_index, base::ScopedClosureRunner frame_rejected_callback) (/media/keyou/dev2/chromium64/src/components/viz/service/surfaces/surface.cc:240)
libservice.so!viz::CompositorFrameSinkSupport::MaybeSubmitCompositorFrameInternal(viz::LocalSurfaceId const&, viz::CompositorFrame, base::Optional<viz::HitTestRegionList>, unsigned long, base::OnceCallback<void (std::__Cr::vector<viz::ReturnedResource, std::__Cr::allocator<viz::ReturnedResource> > const&)>)(viz::CompositorFrameSinkSupport * this, const viz::LocalSurfaceId & local_surface_id, viz::CompositorFrame frame, base::Optional<viz::HitTestRegionList> hit_test_region_list, uint64_t submit_time, viz::mojom::CompositorFrameSink::SubmitCompositorFrameSyncCallback callback) (/media/keyou/dev2/chromium64/src/components/viz/service/frame_sinks/compositor_frame_sink_support.cc:534)
libservice.so!viz::CompositorFrameSinkSupport::MaybeSubmitCompositorFrame(viz::LocalSurfaceId const&, viz::CompositorFrame, base::Optional<viz::HitTestRegionList>, unsigned long, base::OnceCallback<void (std::__Cr::vector<viz::ReturnedResource, std::__Cr::allocator<viz::ReturnedResource> > const&)>)(viz::CompositorFrameSinkSupport * this, const viz::LocalSurfaceId & local_surface_id, viz::CompositorFrame frame, base::Optional<viz::HitTestRegionList> hit_test_region_list, uint64_t submit_time, viz::mojom::CompositorFrameSink::SubmitCompositorFrameSyncCallback callback) (/media/keyou/dev2/chromium64/src/components/viz/service/frame_sinks/compositor_frame_sink_support.cc:717)
libservice.so!viz::CompositorFrameSinkSupport::SubmitCompositorFrame(viz::CompositorFrameSinkSupport * this, const viz::LocalSurfaceId & local_surface_id, viz::CompositorFrame frame, base::Optional<viz::HitTestRegionList> hit_test_region_list, uint64_t submit_time) (/media/keyou/dev2/chromium64/src/components/viz/service/frame_sinks/compositor_frame_sink_support.cc:357)
libservice.so!viz::DirectLayerTreeFrameSink::SubmitCompositorFrame(viz::DirectLayerTreeFrameSink * this, viz::CompositorFrame frame, bool hit_test_data_changed, bool show_hit_test_borders) (/media/keyou/dev2/chromium64/src/components/viz/service/frame_sinks/direct_layer_tree_frame_sink.cc:184)
libcc.so!cc::LayerTreeHostImpl::DrawLayers(cc::LayerTreeHostImpl * this, cc::LayerTreeHostImpl::FrameData * frame) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:2294)
libcc.so!cc::SingleThreadProxy::DoComposite(cc::SingleThreadProxy * this, cc::LayerTreeHostImpl::FrameData * frame) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:691)
libcc.so!cc::SingleThreadProxy::ScheduledActionDrawIfPossible(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:902)
libcc.so!cc::Scheduler::DrawIfPossible(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:732)
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:838)
libcc.so!cc::Scheduler::OnBeginImplFrameDeadline(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:720)
+
TODO: 需要调查为什么每次Draw操作之后都会触发Tiles操作。猜测可能是deadline的时候不管tiles操作是否完成,Draw操作都会被触发,所以每次在draw完了之后都要再次触发tiles操作,这有点说不通。
触发 tiles(raster) 操作,由于此时并没有画面需要tiles,因此这个动作没有明显的效果,注释掉这里的代码后也没有看到异常。
case SchedulerStateMachine::Action::PREPARE_TILES:
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::OnBeginImplFrameDeadline(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:720)
+
libcc.so!cc::TileManager::PrepareTiles(cc::TileManager * this, const cc::GlobalStateThatImpactsTilePriority & state) (/media/keyou/dev2/chromium64/src/cc/tiles/tile_manager.cc:539)
libcc.so!cc::LayerTreeHostImpl::PrepareTiles(cc::LayerTreeHostImpl * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host_impl.cc:762)
libcc.so!cc::SingleThreadProxy::ScheduledActionPrepareTiles(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:937)
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:856)
libcc.so!cc::Scheduler::OnBeginImplFrameDeadline(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:720)
+
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::OnBeginImplFrameDeadline(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:720)
+
libcc.so!cc::SchedulerStateMachine::OnBeginImplFrameIdle(cc::SchedulerStateMachine * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler_state_machine.cc:1169)
libcc.so!cc::Scheduler::FinishImplFrame(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:571)
libcc.so!cc::Scheduler::OnBeginImplFrameDeadline(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:721)
+
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::FinishImplFrame(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:581)
libcc.so!cc::Scheduler::OnBeginImplFrameDeadline(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:721)
+
Post Scheduler::HandlePendingBeginFrame
libcc.so!cc::Scheduler::PostPendingBeginFrameTask(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:306)
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:869)
libcc.so!cc::Scheduler::FinishImplFrame(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:581)
libcc.so!cc::Scheduler::OnBeginImplFrameDeadline(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:721)

BFS触发,没有画面需要更新
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:795)
libcc.so!cc::Scheduler::OnBeginFrameDerivedImpl(cc::Scheduler * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:379)
libviz_common.so!viz::BeginFrameObserverBase::OnBeginFrame(cc::Scheduler * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:93)
libviz_common.so!viz::(anonymous namespace)::FilterAndIssueBeginFrame(cc::Scheduler * observer, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:47)
libviz_common.so!viz::ExternalBeginFrameSource::OnBeginFrame(viz::ExternalBeginFrameSource * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:465)
libservice.so!viz::DirectLayerTreeFrameSink::OnBeginFrame(viz::DirectLayerTreeFrameSink * this, const viz::BeginFrameArgs & args, const viz::FrameTimingDetailsMap & timing_details) (/media/keyou/dev2/chromium64/src/components/viz/service/frame_sinks/direct_layer_tree_frame_sink.cc:321)
libservice.so!viz::CompositorFrameSinkSupport::OnBeginFrame(viz::CompositorFrameSinkSupport * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/service/frame_sinks/compositor_frame_sink_support.cc:670)
libviz_common.so!viz::(anonymous namespace)::FilterAndIssueBeginFrame(viz::CompositorFrameSinkSupport * observer, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:47)
libviz_common.so!viz::DelayBasedBeginFrameSource::IssueBeginFrameToObserver(viz::DelayBasedBeginFrameSource * this, viz::CompositorFrameSinkSupport * obs, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:365)
libviz_common.so!viz::DelayBasedBeginFrameSource::OnTimerTick(viz::DelayBasedBeginFrameSource * this) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:349)
libviz_common.so!viz::DelayBasedTimeSource::OnTimerTick(viz::DelayBasedTimeSource * this) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/delay_based_time_source.cc:77)

BFS触发,viz执行渲染
ui::(anonymous namespace)::DirectOutputSurface::BindFramebuffer(ui::(anonymous namespace)::DirectOutputSurface * this) (/media/keyou/dev2/chromium64/src/ui/compositor/test/in_process_context_factory.cc:91)
libservice.so!viz::GLRenderer::BindFramebufferToOutputSurface(viz::GLRenderer * this) (/media/keyou/dev2/chromium64/src/components/viz/service/display/gl_renderer.cc:3132)
libservice.so!viz::DirectRenderer::UseRenderPass(viz::GLRenderer * this, const viz::RenderPass * render_pass) (/media/keyou/dev2/chromium64/src/components/viz/service/display/direct_renderer.cc:739)
libservice.so!viz::DirectRenderer::DrawRenderPass(viz::GLRenderer * this, const viz::RenderPass * render_pass) (/media/keyou/dev2/chromium64/src/components/viz/service/display/direct_renderer.cc:595)
libservice.so!viz::DirectRenderer::DrawRenderPassAndExecuteCopyRequests(viz::GLRenderer * this, viz::RenderPass * render_pass) (/media/keyou/dev2/chromium64/src/components/viz/service/display/direct_renderer.cc:555)
libservice.so!viz::DirectRenderer::DrawFrame(viz::GLRenderer * this, viz::RenderPassList * render_passes_in_draw_order, float device_scale_factor, const gfx::Size & device_viewport_size, float sdr_white_level) (/media/keyou/dev2/chromium64/src/components/viz/service/display/direct_renderer.cc:409)
libservice.so!viz::Display::DrawAndSwap(viz::Display * this) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display.cc:591)
libservice.so!viz::DisplayScheduler::DrawAndSwap(viz::DisplayScheduler * this) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display_scheduler.cc:215)
libservice.so!viz::DisplayScheduler::AttemptDrawAndSwap(viz::DisplayScheduler * this) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display_scheduler.cc:488)
libservice.so!viz::DisplayScheduler::OnBeginFrameDeadline(viz::DisplayScheduler * this) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display_scheduler.cc:504)
libservice.so!viz::DisplayScheduler::OnBeginFrameDerivedImpl(viz::DisplayScheduler * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display_scheduler.cc:256)
libviz_common.so!viz::BeginFrameObserverBase::OnBeginFrame(viz::DisplayScheduler * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:93)
libviz_common.so!viz::(anonymous namespace)::FilterAndIssueBeginFrame(viz::DisplayScheduler * observer, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:47)
libviz_common.so!viz::DelayBasedBeginFrameSource::IssueBeginFrameToObserver(viz::DelayBasedBeginFrameSource * this, viz::DisplayScheduler * obs, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:365)
libviz_common.so!viz::DelayBasedBeginFrameSource::OnTimerTick(viz::DelayBasedBeginFrameSource * this) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:349)
libviz_common.so!viz::DelayBasedTimeSource::OnTimerTick(viz::DelayBasedTimeSource * this) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/delay_based_time_source.cc:77)
+
ui::(anonymous namespace)::DirectOutputSurface::SwapBuffers(ui::(anonymous namespace)::DirectOutputSurface * this, viz::OutputSurfaceFrame frame) (/media/keyou/dev2/chromium64/src/ui/compositor/test/in_process_context_factory.cc:105)
libservice.so!viz::GLRenderer::SwapBuffers(viz::GLRenderer * this, viz::DirectRenderer::SwapFrameData swap_frame_data) (/media/keyou/dev2/chromium64/src/components/viz/service/display/gl_renderer.cc:3021)
libservice.so!viz::Display::DrawAndSwap(viz::Display * this) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display.cc:648)
libservice.so!viz::DisplayScheduler::DrawAndSwap(viz::DisplayScheduler * this) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display_scheduler.cc:215)
libservice.so!viz::DisplayScheduler::AttemptDrawAndSwap(viz::DisplayScheduler * this) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display_scheduler.cc:488)
libservice.so!viz::DisplayScheduler::OnBeginFrameDeadline(viz::DisplayScheduler * this) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display_scheduler.cc:504)
libservice.so!viz::DisplayScheduler::OnBeginFrameDerivedImpl(viz::DisplayScheduler * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/service/display/display_scheduler.cc:256)
libviz_common.so!viz::BeginFrameObserverBase::OnBeginFrame(viz::DisplayScheduler * this, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:93)
libviz_common.so!viz::(anonymous namespace)::FilterAndIssueBeginFrame(viz::DisplayScheduler * observer, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:47)
libviz_common.so!viz::DelayBasedBeginFrameSource::IssueBeginFrameToObserver(viz::DelayBasedBeginFrameSource * this, viz::DisplayScheduler * obs, const viz::BeginFrameArgs & args) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:365)
libviz_common.so!viz::DelayBasedBeginFrameSource::OnTimerTick(viz::DelayBasedBeginFrameSource * this) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:349)
libviz_common.so!viz::DelayBasedTimeSource::OnTimerTick(viz::DelayBasedTimeSource * this) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/delay_based_time_source.cc:77)

....此处省略了设置Deadline的过程

Deadline时间到,此时由于没有任务可做,scheduler会将自己从BFS的监听中移除,这会导致support也将自己从BFS的监听中移除,并停止BFS。这里可以看到如果画面不需要更新cc以及viz都不会占用CPU或者GPU
libviz_common.so!base::internal::CancelableCallbackImpl<base::OnceCallback<void ()> >::Cancel()(base::internal::CancelableCallbackImpl<base::OnceCallback<void ()> > * this) (/media/keyou/dev2/chromium64/src/base/cancelable_callback.h:77)
libviz_common.so!viz::DelayBasedTimeSource::SetActive(viz::DelayBasedTimeSource * this, bool active) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/delay_based_time_source.cc:48)
libviz_common.so!viz::DelayBasedBeginFrameSource::RemoveObserver(viz::DelayBasedBeginFrameSource * this, viz::CompositorFrameSinkSupport * obs) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:328)
libservice.so!viz::CompositorFrameSinkSupport::UpdateNeedsBeginFramesInternal(viz::CompositorFrameSinkSupport * this) (/media/keyou/dev2/chromium64/src/components/viz/service/frame_sinks/compositor_frame_sink_support.cc:706)
libservice.so!viz::CompositorFrameSinkSupport::SetNeedsBeginFrame(viz::CompositorFrameSinkSupport * this, bool needs_begin_frame) (/media/keyou/dev2/chromium64/src/components/viz/service/frame_sinks/compositor_frame_sink_support.cc:316)
libservice.so!viz::DirectLayerTreeFrameSink::OnNeedsBeginFrames(viz::DirectLayerTreeFrameSink * this, bool needs_begin_frames) (/media/keyou/dev2/chromium64/src/components/viz/service/frame_sinks/direct_layer_tree_frame_sink.cc:336)
libviz_common.so!viz::ExternalBeginFrameSource::RemoveObserver(viz::ExternalBeginFrameSource * this, cc::Scheduler * obs) (/media/keyou/dev2/chromium64/src/components/viz/common/frame_sinks/begin_frame_source.cc:414)
libcc.so!cc::Scheduler::StartOrStopBeginFrames(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:271)
libcc.so!cc::Scheduler::ProcessScheduledActions(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:870)
libcc.so!cc::Scheduler::FinishImplFrame(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:581)
libcc.so!cc::Scheduler::OnBeginImplFrameDeadline(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:721)


鼠标移到鼠标上时触发画面更新,这会导致scheduler被激活,将自己重新加入到BFS中,发起新的BeginMainFrame请求。
libcc.so!cc::SchedulerStateMachine::SetNeedsBeginMainFrame(cc::SchedulerStateMachine * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler_state_machine.cc:1405)
libcc.so!cc::Scheduler::SetNeedsBeginMainFrame(cc::Scheduler * this) (/media/keyou/dev2/chromium64/src/cc/scheduler/scheduler.cc:127)
libcc.so!cc::SingleThreadProxy::SetNeedsCommit(cc::SingleThreadProxy * this) (/media/keyou/dev2/chromium64/src/cc/trees/single_thread_proxy.cc:242)
libcc.so!cc::LayerTreeHost::SetNeedsCommit(cc::LayerTreeHost * this) (/media/keyou/dev2/chromium64/src/cc/trees/layer_tree_host.cc:601)
libcompositor.so!ui::Compositor::ScheduleDraw(ui::Compositor * this) (/media/keyou/dev2/chromium64/src/ui/compositor/compositor.cc:316)
libcompositor.so!ui::Layer::ScheduleDraw(ui::Layer * this) (/media/keyou/dev2/chromium64/src/ui/compositor/layer.cc:1092)
libcompositor.so!ui::Layer::SchedulePaint(ui::Layer * this, const gfx::Rect & invalid_rect) (/media/keyou/dev2/chromium64/src/ui/compositor/layer.cc:1085)
libviews.so!views::View::SchedulePaintInRectImpl(views::MdTextButton * this, const gfx::Rect & rect) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:2032)
libviews.so!views::View::SchedulePaintInRectImpl(views::ImageView * this, const gfx::Rect & rect) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:2036)
libviews.so!views::View::SchedulePaintInRect(views::ImageView * this, const gfx::Rect & rect) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:900)
libviews.so!views::View::SchedulePaint(views::ImageView * this) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:895)
libviews.so!views::ImageView::SetImage(views::ImageView * this, const gfx::ImageSkia & img) (/media/keyou/dev2/chromium64/src/ui/views/controls/image_view.cc:42)
libviews.so!views::LabelButton::UpdateImage(views::MdTextButton * this) (/media/keyou/dev2/chromium64/src/ui/views/controls/button/label_button.cc:385)
libviews.so!views::LabelButton::StateChanged(views::MdTextButton * this, views::Button::ButtonState old_state) (/media/keyou/dev2/chromium64/src/ui/views/controls/button/label_button.cc:489)
libviews.so!views::MdTextButton::StateChanged(views::MdTextButton * this, views::Button::ButtonState old_state) (/media/keyou/dev2/chromium64/src/ui/views/controls/button/md_text_button.cc:122)
libviews.so!views::Button::SetState(views::MdTextButton * this, views::Button::ButtonState state) (/media/keyou/dev2/chromium64/src/ui/views/controls/button/button.cc:202)
libviews.so!views::ButtonController::OnMouseEntered(views::ButtonController * this, const views::internal::(anonymous namespace)::MouseEnterExitEvent & event) (/media/keyou/dev2/chromium64/src/ui/views/controls/button/button_controller.cc:68)
libviews.so!views::Button::OnMouseEntered(views::MdTextButton * this, const views::internal::(anonymous namespace)::MouseEnterExitEvent & event) (/media/keyou/dev2/chromium64/src/ui/views/controls/button/button.cc:366)
libviews.so!views::View::OnMouseEvent(views::MdTextButton * this, views::internal::(anonymous namespace)::MouseEnterExitEvent * event) (/media/keyou/dev2/chromium64/src/ui/views/view.cc:1208)
libevents.so!ui::EventHandler::OnEvent(views::MdTextButton * this, views::internal::(anonymous namespace)::MouseEnterExitEvent * event) (/media/keyou/dev2/chromium64/src/ui/events/event_handler.cc:33)
libevents.so!ui::ScopedTargetHandler::OnEvent(ui::ScopedTargetHandler * this, views::internal::(anonymous namespace)::MouseEnterExitEvent * event) (/media/keyou/dev2/chromium64/src/ui/events/scoped_target_handler.cc:32)
libevents.so!ui::EventDispatcher::DispatchEvent(ui::EventDispatcher * this, ui::ScopedTargetHandler * handler, views::internal::(anonymous namespace)::MouseEnterExitEvent * event) (/media/keyou/dev2/chromium64/src/ui/events/event_dispatcher.cc:193)
libevents.so!ui::EventDispatcher::ProcessEvent(ui::EventDispatcher * this, views::MdTextButton * target, views::internal::(anonymous namespace)::MouseEnterExitEvent * event) (/media/keyou/dev2/chromium64/src/ui/events/event_dispatcher.cc:142)
libevents.so!ui::EventDispatcherDelegate::DispatchEventToTarget(views::internal::RootView * this, views::MdTextButton * target, views::internal::(anonymous namespace)::MouseEnterExitEvent * event) (/media/keyou/dev2/chromium64/src/ui/events/event_dispatcher.cc:86)
libevents.so!ui::EventDispatcherDelegate::DispatchEvent(views::internal::RootView * this, views::MdTextButton * target, views::internal::(anonymous namespace)::MouseEnterExitEvent * event) (/media/keyou/dev2/chromium64/src/ui/events/event_dispatcher.cc:58)
libviews.so!views::internal::RootView::OnMouseMoved(views::internal::RootView * this, const ui::MouseEvent & event) (/media/keyou/dev2/chromium64/src/ui/views/widget/root_view.cc:545)
libviews.so!views::Widget::OnMouseEvent(views::Widget * this, ui::MouseEvent * event) (/media/keyou/dev2/chromium64/src/ui/views/widget/widget.cc:1324)
libviews.so!views::DesktopNativeWidgetAura::OnMouseEvent(views::DesktopNativeWidgetAura * this, ui::MouseEvent * event) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc:1133)
libevents.so!ui::EventHandler::OnEvent(views::DesktopNativeWidgetAura * this, ui::MouseEvent * event) (/media/keyou/dev2/chromium64/src/ui/events/event_handler.cc:33)
libevents.so!ui::EventDispatcher::DispatchEvent(ui::EventDispatcher * this, views::DesktopNativeWidgetAura * handler, ui::MouseEvent * event) (/media/keyou/dev2/chromium64/src/ui/events/event_dispatcher.cc:193)
libevents.so!ui::EventDispatcher::ProcessEvent(ui::EventDispatcher * this, aura::Window * target, ui::MouseEvent * event) (/media/keyou/dev2/chromium64/src/ui/events/event_dispatcher.cc:142)
libevents.so!ui::EventDispatcherDelegate::DispatchEventToTarget(aura::WindowEventDispatcher * this, aura::Window * target, ui::MouseEvent * event) (/media/keyou/dev2/chromium64/src/ui/events/event_dispatcher.cc:86)
libevents.so!ui::EventDispatcherDelegate::DispatchEvent(aura::WindowEventDispatcher * this, aura::Window * target, ui::MouseEvent * event) (/media/keyou/dev2/chromium64/src/ui/events/event_dispatcher.cc:58)
libevents.so!ui::EventProcessor::OnEventFromSource(aura::WindowEventDispatcher * this, ui::MouseEvent * event) (/media/keyou/dev2/chromium64/src/ui/events/event_processor.cc:49)
libevents.so!non-virtual thunk to ui::EventProcessor::OnEventFromSource(ui::Event*) (Unknown Source:0)
libevents.so!ui::EventSource::DeliverEventToSink(views::DesktopWindowTreeHostX11 * this, ui::MouseEvent * event) (/media/keyou/dev2/chromium64/src/ui/events/event_source.cc:112)
libevents.so!ui::EventSource::SendEventToSinkFromRewriter(views::DesktopWindowTreeHostX11 * this, const ui::MouseEvent * event, const ui::EventRewriter * rewriter) (/media/keyou/dev2/chromium64/src/ui/events/event_source.cc:137)
libevents.so!ui::EventSource::SendEventToSink(views::DesktopWindowTreeHostX11 * this, const ui::MouseEvent * event) (/media/keyou/dev2/chromium64/src/ui/events/event_source.cc:106)
libaura.so!aura::WindowTreeHostPlatform::DispatchEvent(views::DesktopWindowTreeHostX11 * this, ui::MouseEvent * event) (/media/keyou/dev2/chromium64/src/ui/aura/window_tree_host_platform.cc:229)
libviews.so!views::DesktopWindowTreeHostLinux::DispatchEvent(views::DesktopWindowTreeHostX11 * this, ui::MouseEvent * event) (/media/keyou/dev2/chromium64/src/ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc:270)
libx11_window.so!ui::X11Window::OnXWindowEvent(ui::X11Window * this, ui::MouseEvent * event) (/media/keyou/dev2/chromium64/src/ui/platform_window/x11/x11_window.cc:660)
libui_base_x.so!ui::XWindow::ProcessEvent(ui::X11Window * this, XEvent * xev) (/media/keyou/dev2/chromium64/src/ui/base/x/x11_window.cc:1214)
libx11_window.so!ui::X11Window::DispatchEvent(ui::X11Window * this, const ui::PlatformEvent & event) (/media/keyou/dev2/chromium64/src/ui/platform_window/x11/x11_window.cc:513)
libplatform.so!ui::PlatformEventSource::DispatchEvent(ui::X11EventSourceGlib * this, ui::PlatformEvent platform_event) (/media/keyou/dev2/chromium64/src/ui/events/platform/platform_event_source.cc:101)
libx11_events_platform.so!ui::X11EventSourceGlib::ProcessXEvent(ui::X11EventSourceGlib * this, XEvent * xevent) (/media/keyou/dev2/chromium64/src/ui/events/platform/x11/x11_event_source_glib.cc:63)
libx11_events_platform.so!ui::X11EventSource::ExtractCookieDataDispatchEvent(ui::X11EventSource * this, XEvent * xevent) (/media/keyou/dev2/chromium64/src/ui/events/platform/x11/x11_event_source.cc:273)
libx11_events_platform.so!ui::X11EventSource::DispatchXEvents(ui::X11EventSource * this) (/media/keyou/dev2/chromium64/src/ui/events/platform/x11/x11_event_source.cc:140)
libx11_events_platform.so!ui::(anonymous namespace)::XSourceDispatch(GSource * source, GSourceFunc unused_func, gpointer data) (/media/keyou/dev2/chromium64/src/ui/events/platform/x11/x11_event_source_glib.cc:39)
libglib-2.0.so.0!g_main_context_dispatch (Unknown Source:0)
libglib-2.0.so.0![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libglib-2.0.so.0!g_main_context_iteration (Unknown Source:0)
libbase.so!base::MessagePumpGlib::Run(base::MessagePumpGlib * this, base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl * delegate) (/media/keyou/dev2/chromium64/src/base/message_loop/message_pump_glib.cc:437)
libbase.so!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run(base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl * this, bool application_tasks_allowed, base::TimeDelta timeout) (/media/keyou/dev2/chromium64/src/base/task/sequence_manager/thread_controller_with_message_pump_impl.cc:463)
libbase.so!base::RunLoop::Run(base::RunLoop * this) (/media/keyou/dev2/chromium64/src/base/run_loop.cc:156)
main(int argc, char ** argv) (/media/keyou/dev2/chromium64/src/demo/demo_views/demo_views.cc:226)