summaryrefslogtreecommitdiffstats
path: root/lib/render_widget_host_view_qt_delegate_quick.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/render_widget_host_view_qt_delegate_quick.cpp')
-rw-r--r--lib/render_widget_host_view_qt_delegate_quick.cpp26
1 files changed, 10 insertions, 16 deletions
diff --git a/lib/render_widget_host_view_qt_delegate_quick.cpp b/lib/render_widget_host_view_qt_delegate_quick.cpp
index 754e68239..13e4ef29f 100644
--- a/lib/render_widget_host_view_qt_delegate_quick.cpp
+++ b/lib/render_widget_host_view_qt_delegate_quick.cpp
@@ -2,6 +2,9 @@
#include "shared/backing_store_qt.h"
#include "shared/render_widget_host_view_qt.h"
+
+#include "content/browser/renderer_host/render_view_host_impl.h"
+
#include <QQuickWindow>
#include <QWindow>
@@ -42,6 +45,7 @@ QWindow* RenderWidgetHostViewQtDelegateQuick::window() const
void RenderWidgetHostViewQtDelegateQuick::update(const QRect& rect)
{
+ polish();
QQuickPaintedItem::update(rect);
}
@@ -53,29 +57,19 @@ void RenderWidgetHostViewQtDelegateQuick::paint(QPainter *painter)
m_backingStore->paintToTarget(painter, boundingRect());
}
-void RenderWidgetHostViewQtDelegateQuick::setBackingStore(BackingStoreQt* backingStore)
-{
- m_backingStore = backingStore;
- if (m_backingStore)
- m_backingStore->resize(QSize(width(), height()));
-}
-
-QSGNode * RenderWidgetHostViewQtDelegateQuick::updatePaintNode(QSGNode * oldNode, UpdatePaintNodeData * data)
+void RenderWidgetHostViewQtDelegateQuick::updatePolish()
{
- return QQuickPaintedItem::updatePaintNode(oldNode, data);
+ // paint will be called from the scene graph thread and this doesn't play well
+ // with chromium's use of TLS while getting the backing store.
+ // updatePolish() should be called from the GUI thread right before the rendering thread starts.
+ m_backingStore = m_view->GetBackingStore();
}
void RenderWidgetHostViewQtDelegateQuick::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
{
QQuickPaintedItem::geometryChanged(newGeometry, oldGeometry);
- resizeBackingStore();
-}
-
-void RenderWidgetHostViewQtDelegateQuick::resizeBackingStore()
-{
- if (m_backingStore)
- m_backingStore->resize(QSize(width(), height()));
+ m_view->GetRenderWidgetHost()->WasResized();
}
void RenderWidgetHostViewQtDelegateQuick::focusInEvent(QFocusEvent *event)