summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJocelyn Turcotte <jocelyn.turcotte@digia.com>2013-09-16 16:19:10 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-09-25 19:54:56 +0200
commitb7dc59562ccd44c57114415b6a121f04f84a40a3 (patch)
treeadb35ff0e9d25b0a628bd17ef5d322c385d0c04d
parent57f8c26c77095d2dc7c5b67f33444add7e7d181a (diff)
Use an enum at creation to initialize the compositing mode.
This value won't change and this will force us to avoid spreading runtime checks. Change-Id: I7928cbe12d75bacddb5ad5c0578ae9a25d7c138e Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
-rw-r--r--lib/quick/qquickwebengineview.cpp2
-rw-r--r--lib/quick/qquickwebengineview_p_p.h2
-rw-r--r--lib/render_widget_host_view_qt_delegate.cpp7
-rw-r--r--lib/render_widget_host_view_qt_delegate.h2
-rw-r--r--lib/web_contents_adapter_client.h7
-rw-r--r--lib/web_contents_view_qt.cpp8
-rw-r--r--lib/widgets/Api/qwebenginepage.cpp4
-rw-r--r--lib/widgets/Api/qwebenginepage_p.h2
-rw-r--r--lib/widgets/render_widget_host_view_qt_delegate_widget.cpp4
-rw-r--r--lib/widgets/render_widget_host_view_qt_delegate_widget.h3
10 files changed, 22 insertions, 19 deletions
diff --git a/lib/quick/qquickwebengineview.cpp b/lib/quick/qquickwebengineview.cpp
index ee01e15f9..3856cbb8e 100644
--- a/lib/quick/qquickwebengineview.cpp
+++ b/lib/quick/qquickwebengineview.cpp
@@ -55,7 +55,7 @@ QQuickWebEngineViewPrivate::QQuickWebEngineViewPrivate()
adapter->initialize(this);
}
-RenderWidgetHostViewQtDelegate *QQuickWebEngineViewPrivate::CreateRenderWidgetHostViewQtDelegate()
+RenderWidgetHostViewQtDelegate *QQuickWebEngineViewPrivate::CreateRenderWidgetHostViewQtDelegate(CompositingMode)
{
return new RenderWidgetHostViewQtDelegateQuick;
}
diff --git a/lib/quick/qquickwebengineview_p_p.h b/lib/quick/qquickwebengineview_p_p.h
index 50e84d194..7ea45f2fe 100644
--- a/lib/quick/qquickwebengineview_p_p.h
+++ b/lib/quick/qquickwebengineview_p_p.h
@@ -59,7 +59,7 @@ class QQuickWebEngineViewPrivate : public QQuickItemPrivate, public WebContentsA
public:
QQuickWebEngineViewPrivate();
- virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate() Q_DECL_OVERRIDE;
+ virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate(CompositingMode mode) Q_DECL_OVERRIDE;
virtual void titleChanged(const QString&) Q_DECL_OVERRIDE;
virtual void urlChanged(const QUrl&) Q_DECL_OVERRIDE;
virtual void loadingStateChanged() Q_DECL_OVERRIDE;
diff --git a/lib/render_widget_host_view_qt_delegate.cpp b/lib/render_widget_host_view_qt_delegate.cpp
index 5b6f25fce..0a3a5106f 100644
--- a/lib/render_widget_host_view_qt_delegate.cpp
+++ b/lib/render_widget_host_view_qt_delegate.cpp
@@ -44,16 +44,9 @@
#include "backing_store_qt.h"
#include "render_widget_host_view_qt.h"
-#include "base/command_line.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
-#include "content/public/common/content_switches.h"
#include <QPainter>
-bool RenderWidgetHostViewQtDelegate::isCompositingModeForced()
-{
- return CommandLine::ForCurrentProcess()->HasSwitch(switches::kForceCompositingMode);
-}
-
RenderWidgetHostViewQtDelegate::RenderWidgetHostViewQtDelegate()
: m_view(0), m_backingStore(0)
{
diff --git a/lib/render_widget_host_view_qt_delegate.h b/lib/render_widget_host_view_qt_delegate.h
index efcff1fc2..c73aa9aec 100644
--- a/lib/render_widget_host_view_qt_delegate.h
+++ b/lib/render_widget_host_view_qt_delegate.h
@@ -78,8 +78,6 @@ public:
virtual void resize(int width, int height) = 0;
protected:
- static bool isCompositingModeForced();
-
RenderWidgetHostViewQtDelegate();
void paint(QPainter*, const QRectF& boundingRect);
void fetchBackingStore();
diff --git a/lib/web_contents_adapter_client.h b/lib/web_contents_adapter_client.h
index e17929025..b0ab502c8 100644
--- a/lib/web_contents_adapter_client.h
+++ b/lib/web_contents_adapter_client.h
@@ -55,6 +55,11 @@ class WebContentsDelegateQt;
class QWEBENGINE_EXPORT WebContentsAdapterClient {
public:
+ enum CompositingMode {
+ NoCompositing,
+ ForcedGpuProcessCompositing
+ };
+
// This must match window_open_disposition_list.h.
enum WindowOpenDisposition {
UnknownDisposition = 0,
@@ -72,7 +77,7 @@ public:
virtual ~WebContentsAdapterClient() { }
- virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate() = 0;
+ virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate(CompositingMode mode) = 0;
virtual void titleChanged(const QString&) = 0;
virtual void urlChanged(const QUrl&) = 0;
virtual void loadingStateChanged() = 0;
diff --git a/lib/web_contents_view_qt.cpp b/lib/web_contents_view_qt.cpp
index b74b7325a..340075c9a 100644
--- a/lib/web_contents_view_qt.cpp
+++ b/lib/web_contents_view_qt.cpp
@@ -45,7 +45,9 @@
#include "content_browser_client_qt.h"
#include "render_widget_host_view_qt_delegate.h"
+#include "base/command_line.h"
#include "content/browser/renderer_host/render_view_host_impl.h"
+#include "content/public/common/content_switches.h"
void WebContentsViewQt::initialize(WebContentsAdapterClient* client)
{
@@ -60,8 +62,12 @@ content::RenderWidgetHostView* WebContentsViewQt::CreateViewForWidget(content::R
{
RenderWidgetHostViewQt *view = new RenderWidgetHostViewQt(render_widget_host);
+ WebContentsAdapterClient::CompositingMode compositingMode = WebContentsAdapterClient::NoCompositing;
+ if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kForceCompositingMode))
+ compositingMode = WebContentsAdapterClient::ForcedGpuProcessCompositing;
+
Q_ASSERT(m_factoryClient);
- RenderWidgetHostViewQtDelegate* viewDelegate = m_factoryClient->CreateRenderWidgetHostViewQtDelegate();
+ RenderWidgetHostViewQtDelegate* viewDelegate = m_factoryClient->CreateRenderWidgetHostViewQtDelegate(compositingMode);
view->setDelegate(viewDelegate);
if (m_client)
view->setAdapterClient(m_client);
diff --git a/lib/widgets/Api/qwebenginepage.cpp b/lib/widgets/Api/qwebenginepage.cpp
index cfcae35c4..365101e99 100644
--- a/lib/widgets/Api/qwebenginepage.cpp
+++ b/lib/widgets/Api/qwebenginepage.cpp
@@ -52,9 +52,9 @@ QWebEnginePagePrivate::~QWebEnginePagePrivate()
delete history;
}
-RenderWidgetHostViewQtDelegate *QWebEnginePagePrivate::CreateRenderWidgetHostViewQtDelegate()
+RenderWidgetHostViewQtDelegate *QWebEnginePagePrivate::CreateRenderWidgetHostViewQtDelegate(CompositingMode mode)
{
- return new RenderWidgetHostViewQtDelegateWidget;
+ return new RenderWidgetHostViewQtDelegateWidget(mode);
}
void QWebEnginePagePrivate::titleChanged(const QString &title)
diff --git a/lib/widgets/Api/qwebenginepage_p.h b/lib/widgets/Api/qwebenginepage_p.h
index 6ef22531a..22066b5bc 100644
--- a/lib/widgets/Api/qwebenginepage_p.h
+++ b/lib/widgets/Api/qwebenginepage_p.h
@@ -64,7 +64,7 @@ public:
QWebEnginePagePrivate();
~QWebEnginePagePrivate();
- virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate() Q_DECL_OVERRIDE;
+ virtual RenderWidgetHostViewQtDelegate* CreateRenderWidgetHostViewQtDelegate(CompositingMode mode) Q_DECL_OVERRIDE;
virtual void titleChanged(const QString&) Q_DECL_OVERRIDE;
virtual void urlChanged(const QUrl&) Q_DECL_OVERRIDE;
virtual void loadingStateChanged() Q_DECL_OVERRIDE;
diff --git a/lib/widgets/render_widget_host_view_qt_delegate_widget.cpp b/lib/widgets/render_widget_host_view_qt_delegate_widget.cpp
index 1c7af34d8..5d0a7960b 100644
--- a/lib/widgets/render_widget_host_view_qt_delegate_widget.cpp
+++ b/lib/widgets/render_widget_host_view_qt_delegate_widget.cpp
@@ -50,7 +50,7 @@
#include <QPaintEvent>
#include <QWindow>
-RenderWidgetHostViewQtDelegateWidget::RenderWidgetHostViewQtDelegateWidget(QWidget *parent)
+RenderWidgetHostViewQtDelegateWidget::RenderWidgetHostViewQtDelegateWidget(WebContentsAdapterClient::CompositingMode mode, QWidget *parent)
: QWidget(parent)
{
setFocusPolicy(Qt::ClickFocus);
@@ -62,7 +62,7 @@ RenderWidgetHostViewQtDelegateWidget::RenderWidgetHostViewQtDelegateWidget(QWidg
// FOR TESTING ONLY, use at your own risks.
// Supporting this properly on all platforms would require duplicating
// many tricks done by RenderWidgetHostView[Win|Mac].
- if (isCompositingModeForced()) {
+ if (mode == WebContentsAdapterClient::ForcedGpuProcessCompositing) {
// This sets Qt::WA_NativeWindow and force a native window creation
// that we can give to the GPU process for it to render directly
// on through windowHandle().
diff --git a/lib/widgets/render_widget_host_view_qt_delegate_widget.h b/lib/widgets/render_widget_host_view_qt_delegate_widget.h
index ac3daeb05..264f8f4af 100644
--- a/lib/widgets/render_widget_host_view_qt_delegate_widget.h
+++ b/lib/widgets/render_widget_host_view_qt_delegate_widget.h
@@ -43,6 +43,7 @@
#define RENDER_WIDGET_HOST_VIEW_QT_DELEGATE_WIDGET_H
#include "render_widget_host_view_qt_delegate.h"
+#include "web_contents_adapter_client.h"
#include <QWidget>
@@ -55,7 +56,7 @@ QT_END_NAMESPACE
class RenderWidgetHostViewQtDelegateWidget : public QWidget, public RenderWidgetHostViewQtDelegate
{
public:
- RenderWidgetHostViewQtDelegateWidget(QWidget *parent = 0);
+ RenderWidgetHostViewQtDelegateWidget(WebContentsAdapterClient::CompositingMode mode, QWidget *parent = 0);
virtual void initAsChild(WebContentsAdapterClient* container);
virtual QRectF screenRect() const;