summaryrefslogtreecommitdiffstats
path: root/src/core/render_widget_host_view_qt.cpp
diff options
context:
space:
mode:
authorJüri Valdmann <juri.valdmann@qt.io>2017-11-23 15:44:34 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-11-29 11:42:06 +0000
commit5bd5dff7b4267d26476043d7f89fe336dc9be5a6 (patch)
treedd46cb4d8e4a878d6803e3166f612d7925661177 /src/core/render_widget_host_view_qt.cpp
parent7827d7135628a2c9f20a4af33f396cd255dce15e (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.cpp11
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;