diff options
author | Jüri Valdmann <juri.valdmann@qt.io> | 2017-11-23 15:44:34 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-11-29 11:42:06 +0000 |
commit | 5bd5dff7b4267d26476043d7f89fe336dc9be5a6 (patch) | |
tree | dd46cb4d8e4a878d6803e3166f612d7925661177 /src/core/render_widget_host_view_qt.cpp | |
parent | 7827d7135628a2c9f20a4af33f396cd255dce15e (diff) |
Ensure BeginFrameSource is created before use
In RenderWidgetHostViewQt::RenderWidgetHostViewQt we first call
m_host->SetView(this) and then initialize the m_beginFrameSource member.
However, since Chromium 55, m_host->SetView(this) ends up calling
RenderWidgetHostViewQt::SetNeedsBeginFrames which already needs the
m_beginFrameSource member.
Fix by initializing m_beginFrameSource before calling m_host->SetView(this).
Task-number: QTBUG-64560
Change-Id: Idda188977d0eec0656297fb4e3f3b3d2302f5eba
Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core/render_widget_host_view_qt.cpp')
-rw-r--r-- | src/core/render_widget_host_view_qt.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/core/render_widget_host_view_qt.cpp b/src/core/render_widget_host_view_qt.cpp index 9c6f3d254..ef2834041 100644 --- a/src/core/render_widget_host_view_qt.cpp +++ b/src/core/render_widget_host_view_qt.cpp @@ -273,6 +273,10 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost* widget , m_cursorPosition(0) , m_emptyPreviousSelection(true) { + auto* task_runner = base::ThreadTaskRunnerHandle::Get().get(); + m_beginFrameSource.reset(new cc::DelayBasedBeginFrameSource( + base::MakeUnique<cc::DelayBasedTimeSource>(task_runner))); + m_host->SetView(this); #ifndef QT_NO_ACCESSIBILITY if (isAccessibilityEnabled()) { @@ -281,10 +285,6 @@ RenderWidgetHostViewQt::RenderWidgetHostViewQt(content::RenderWidgetHost* widget content::BrowserAccessibilityStateImpl::GetInstance()->EnableAccessibility(); } #endif // QT_NO_ACCESSIBILITY - auto* task_runner = base::ThreadTaskRunnerHandle::Get().get(); - m_beginFrameSource.reset(new cc::DelayBasedBeginFrameSource( - base::MakeUnique<cc::DelayBasedTimeSource>(task_runner))); - if (GetTextInputManager()) GetTextInputManager()->AddObserver(this); } @@ -1497,8 +1497,7 @@ void RenderWidgetHostViewQt::SetNeedsBeginFrames(bool needs_begin_frames) void RenderWidgetHostViewQt::updateNeedsBeginFramesInternal() { - if (!m_beginFrameSource) - return; + Q_ASSERT(m_beginFrameSource); if (m_addedFrameObserver == m_needsBeginFrames) return; |