summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2013-06-14 16:25:21 +0200
committerJocelyn Turcotte <jocelyn.turcotte@digia.com>2013-06-19 12:23:52 +0200
commitddc65ad9a8462321279024ec1ae6931e11f8fa23 (patch)
treeb36db91a8cf410b2d9982d270ef49189eb3067ef /lib
parentbbeaf3278de08da00f56aba3511951aaf6a8d233 (diff)
Simplify the BackingStore handling.
This patch removes the black borders around the widget when resizing. - No need to resize the BackingStore direcly, RenderWidgetHostImpl::WasResized takes care of allocating a new one with the correct size. - Get the backing store just before painting instead of pushing it when scheduling an update. Getting the backing store has side effects that assumes it is done that way. - Remove the about_to_validate_and_paint_ check as all our painting updates are scheduled back to the event loop and that we are now only fetching the BackingStore at this point.
Diffstat (limited to 'lib')
-rw-r--r--lib/render_widget_host_view_qt_delegate_quick.cpp26
-rw-r--r--lib/render_widget_host_view_qt_delegate_quick.h6
-rw-r--r--lib/render_widget_host_view_qt_delegate_widget.cpp22
-rw-r--r--lib/render_widget_host_view_qt_delegate_widget.h2
4 files changed, 18 insertions, 38 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)
diff --git a/lib/render_widget_host_view_qt_delegate_quick.h b/lib/render_widget_host_view_qt_delegate_quick.h
index 20725c621..20bd263f8 100644
--- a/lib/render_widget_host_view_qt_delegate_quick.h
+++ b/lib/render_widget_host_view_qt_delegate_quick.h
@@ -23,7 +23,6 @@ class RenderWidgetHostViewQtDelegateQuick : public QQuickPaintedItem, public Ren
public:
RenderWidgetHostViewQtDelegateQuick(content::RenderWidgetHostViewQt* view, QQuickItem *parent = 0);
- virtual void setBackingStore(BackingStoreQt* backingStore);
virtual QRectF screenRect() const;
virtual void show();
virtual void hide();
@@ -43,11 +42,8 @@ public:
void keyReleaseEvent(QKeyEvent*);
void wheelEvent(QWheelEvent*);
-protected Q_SLOTS:
- void resizeBackingStore();
-
protected:
- QSGNode* updatePaintNode(QSGNode * oldNode, UpdatePaintNodeData * data);
+ void updatePolish();
void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry);
private:
diff --git a/lib/render_widget_host_view_qt_delegate_widget.cpp b/lib/render_widget_host_view_qt_delegate_widget.cpp
index 8be1d308f..9a659069f 100644
--- a/lib/render_widget_host_view_qt_delegate_widget.cpp
+++ b/lib/render_widget_host_view_qt_delegate_widget.cpp
@@ -3,13 +3,14 @@
#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 <QResizeEvent>
#include <QPaintEvent>
RenderWidgetHostViewQtDelegateWidget::RenderWidgetHostViewQtDelegateWidget(content::RenderWidgetHostViewQt* view, QWidget *parent)
: QWidget(parent)
, m_painter(0)
- , m_backingStore(0)
, m_view(view)
{
setFocusPolicy(Qt::ClickFocus);
@@ -47,19 +48,12 @@ void RenderWidgetHostViewQtDelegateWidget::update(const QRect& rect)
QWidget::update(rect);
}
-void RenderWidgetHostViewQtDelegateWidget::setBackingStore(BackingStoreQt* backingStore)
-{
- m_backingStore = backingStore;
- if (m_backingStore)
- m_backingStore->resize(size());
-}
-
void RenderWidgetHostViewQtDelegateWidget::paintEvent(QPaintEvent * event)
{
- if (!m_backingStore)
- return;
- QPainter painter(this);
- m_backingStore->paintToTarget(&painter, event->rect());
+ if (BackingStoreQt *backingStore = m_view->GetBackingStore()) {
+ QPainter painter(this);
+ backingStore->paintToTarget(&painter, event->rect());
+ }
}
QPainter* RenderWidgetHostViewQtDelegateWidget::painter()
@@ -71,9 +65,7 @@ QPainter* RenderWidgetHostViewQtDelegateWidget::painter()
void RenderWidgetHostViewQtDelegateWidget::resizeEvent(QResizeEvent *resizeEvent)
{
- if (m_backingStore)
- m_backingStore->resize(resizeEvent->size());
- QWidget::update();
+ m_view->GetRenderWidgetHost()->WasResized();
}
bool RenderWidgetHostViewQtDelegateWidget::event(QEvent *event)
diff --git a/lib/render_widget_host_view_qt_delegate_widget.h b/lib/render_widget_host_view_qt_delegate_widget.h
index 9087ba017..f6da4f484 100644
--- a/lib/render_widget_host_view_qt_delegate_widget.h
+++ b/lib/render_widget_host_view_qt_delegate_widget.h
@@ -17,7 +17,6 @@ class RenderWidgetHostViewQtDelegateWidget : public QWidget, public RenderWidget
public:
RenderWidgetHostViewQtDelegateWidget(content::RenderWidgetHostViewQt* view, QWidget *parent = 0);
- virtual void setBackingStore(BackingStoreQt* backingStore);
virtual QRectF screenRect() const;
virtual void show();
virtual void hide();
@@ -33,7 +32,6 @@ protected:
void resizeEvent(QResizeEvent *resizeEvent);
private:
- BackingStoreQt* m_backingStore;
QPainter* m_painter;
content::RenderWidgetHostViewQt *m_view;
};