diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-06-14 16:25:21 +0200 |
---|---|---|
committer | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-06-19 12:23:52 +0200 |
commit | ddc65ad9a8462321279024ec1ae6931e11f8fa23 (patch) | |
tree | b36db91a8cf410b2d9982d270ef49189eb3067ef /lib | |
parent | bbeaf3278de08da00f56aba3511951aaf6a8d233 (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.cpp | 26 | ||||
-rw-r--r-- | lib/render_widget_host_view_qt_delegate_quick.h | 6 | ||||
-rw-r--r-- | lib/render_widget_host_view_qt_delegate_widget.cpp | 22 | ||||
-rw-r--r-- | lib/render_widget_host_view_qt_delegate_widget.h | 2 |
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; }; |