diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-09-16 16:19:10 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-09-25 19:54:56 +0200 |
commit | b7dc59562ccd44c57114415b6a121f04f84a40a3 (patch) | |
tree | adb35ff0e9d25b0a628bd17ef5d322c385d0c04d | |
parent | 57f8c26c77095d2dc7c5b67f33444add7e7d181a (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.cpp | 2 | ||||
-rw-r--r-- | lib/quick/qquickwebengineview_p_p.h | 2 | ||||
-rw-r--r-- | lib/render_widget_host_view_qt_delegate.cpp | 7 | ||||
-rw-r--r-- | lib/render_widget_host_view_qt_delegate.h | 2 | ||||
-rw-r--r-- | lib/web_contents_adapter_client.h | 7 | ||||
-rw-r--r-- | lib/web_contents_view_qt.cpp | 8 | ||||
-rw-r--r-- | lib/widgets/Api/qwebenginepage.cpp | 4 | ||||
-rw-r--r-- | lib/widgets/Api/qwebenginepage_p.h | 2 | ||||
-rw-r--r-- | lib/widgets/render_widget_host_view_qt_delegate_widget.cpp | 4 | ||||
-rw-r--r-- | lib/widgets/render_widget_host_view_qt_delegate_widget.h | 3 |
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; |