summaryrefslogtreecommitdiffstats
path: root/src/core/delegated_frame_node.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/delegated_frame_node.h')
-rw-r--r--src/core/delegated_frame_node.h55
1 files changed, 36 insertions, 19 deletions
diff --git a/src/core/delegated_frame_node.h b/src/core/delegated_frame_node.h
index a031a464f..60a1535d2 100644
--- a/src/core/delegated_frame_node.h
+++ b/src/core/delegated_frame_node.h
@@ -1,7 +1,7 @@
/****************************************************************************
**
-** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
**
** This file is part of the QtWebEngine module of the Qt Toolkit.
**
@@ -10,15 +10,15 @@
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia. For licensing terms and
-** conditions see http://qt.digia.com/licensing. For further information
-** use the contact form at http://qt.digia.com/contact-us.
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
-** packaging of this file. Please review the following information to
+** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
@@ -26,7 +26,7 @@
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
-** the packaging of this file. Please review the following information to
+** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
@@ -38,6 +38,7 @@
#define DELEGATED_FRAME_NODE_H
#include "base/memory/scoped_ptr.h"
+#include "cc/quads/render_pass.h"
#include "cc/resources/transferable_resource.h"
#include <QMutex>
#include <QSGNode>
@@ -46,20 +47,27 @@
#include <QWaitCondition>
#include "chromium_gpu_helper.h"
+#include "render_widget_host_view_qt_delegate.h"
+
+QT_BEGIN_NAMESPACE
+class QSGLayer;
+QT_END_NAMESPACE
namespace cc {
class DelegatedFrameData;
}
+namespace QtWebEngineCore {
+
class MailboxTexture;
-class RenderPassTexture;
+class ResourceHolder;
// Separating this data allows another DelegatedFrameNode to reconstruct the QSGNode tree from the mailbox textures
// and render pass information.
-class DelegatedFrameNodeData : public QSharedData {
+class ChromiumCompositorData : public QSharedData {
public:
- DelegatedFrameNodeData() : frameDevicePixelRatio(1) { }
- QHash<unsigned, QSharedPointer<MailboxTexture> > mailboxTextures;
+ ChromiumCompositorData() : frameDevicePixelRatio(1) { }
+ QHash<unsigned, QSharedPointer<ResourceHolder> > resourceHolders;
scoped_ptr<cc::DelegatedFrameData> frameData;
qreal frameDevicePixelRatio;
};
@@ -69,20 +77,29 @@ public:
DelegatedFrameNode();
~DelegatedFrameNode();
void preprocess();
- void commit(DelegatedFrameNodeData* data, cc::ReturnedResourceArray *resourcesToRelease);
+ void commit(ChromiumCompositorData *chromiumCompositorData, cc::ReturnedResourceArray *resourcesToRelease, RenderWidgetHostViewQtDelegate *apiDelegate);
private:
- QExplicitlySharedDataPointer<DelegatedFrameNodeData> m_data;
- QList<QSharedPointer<RenderPassTexture> > m_renderPassTextures;
- int m_numPendingSyncPoints;
- QMap<uint32, gfx::TransferableFence> m_mailboxGLFences;
- QWaitCondition m_mailboxesFetchedWaitCond;
- QMutex m_mutex;
-
// Making those callbacks static bypasses base::Bind's ref-counting requirement
// of the this pointer when the callback is a method.
static void fetchTexturesAndUnlockQt(DelegatedFrameNode *frameNode, QList<MailboxTexture *> *mailboxesToFetch);
static void syncPointRetired(DelegatedFrameNode *frameNode, QList<MailboxTexture *> *mailboxesToFetch);
+
+ ResourceHolder *findAndHoldResource(unsigned resourceId, QHash<unsigned, QSharedPointer<ResourceHolder> > &candidates);
+ QSGTexture *initAndHoldTexture(ResourceHolder *resource, bool quadIsAllOpaque, RenderWidgetHostViewQtDelegate *apiDelegate = 0);
+
+ QExplicitlySharedDataPointer<ChromiumCompositorData> m_chromiumCompositorData;
+ struct SGObjects {
+ QList<QPair<cc::RenderPassId, QSharedPointer<QSGLayer> > > renderPassLayers;
+ QList<QSharedPointer<QSGRootNode> > renderPassRootNodes;
+ QList<QSharedPointer<QSGTexture> > textureStrongRefs;
+ } m_sgObjects;
+ int m_numPendingSyncPoints;
+ QMap<uint32, gfx::TransferableFence> m_mailboxGLFences;
+ QWaitCondition m_mailboxesFetchedWaitCond;
+ QMutex m_mutex;
};
+} // namespace QtWebEngineCore
+
#endif // DELEGATED_FRAME_NODE_H