aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/qmlpuppetcommunication
diff options
context:
space:
mode:
authorAli Kianian <[email protected]>2024-06-06 17:35:25 +0300
committerAli Kianian <[email protected]>2024-06-07 09:23:29 +0000
commit1e3f8afdce3771504b1b8f2e3572fb9f8fa916b6 (patch)
tree4d64587c429d3d730166e8a41d2110ce0eadf282 /src/libs/qmlpuppetcommunication
parent79e6c6809b820b6b4f55f4e6d1d1bc085ba13cb5 (diff)
QmlDesigner: Get the material image based on request id
A request id is used for comparing requests instead of image sizes Returned image sizes was not always the same as requested ones because of pixelRateRatio. Fixes: QDS-12961 Change-Id: I2f0ed7ea00047f296872a02958322f3448984f09 Reviewed-by: Mahmoud Badri <[email protected]> Reviewed-by: Miikka Heikkinen <[email protected]>
Diffstat (limited to 'src/libs/qmlpuppetcommunication')
-rw-r--r--src/libs/qmlpuppetcommunication/commands/requestmodelnodepreviewimagecommand.cpp20
-rw-r--r--src/libs/qmlpuppetcommunication/commands/requestmodelnodepreviewimagecommand.h26
-rw-r--r--src/libs/qmlpuppetcommunication/container/imagecontainer.cpp21
-rw-r--r--src/libs/qmlpuppetcommunication/container/imagecontainer.h3
4 files changed, 53 insertions, 17 deletions
diff --git a/src/libs/qmlpuppetcommunication/commands/requestmodelnodepreviewimagecommand.cpp b/src/libs/qmlpuppetcommunication/commands/requestmodelnodepreviewimagecommand.cpp
index 0b8a17a31fa..758509d603d 100644
--- a/src/libs/qmlpuppetcommunication/commands/requestmodelnodepreviewimagecommand.cpp
+++ b/src/libs/qmlpuppetcommunication/commands/requestmodelnodepreviewimagecommand.cpp
@@ -10,13 +10,17 @@ namespace QmlDesigner {
RequestModelNodePreviewImageCommand::RequestModelNodePreviewImageCommand() = default;
-RequestModelNodePreviewImageCommand::RequestModelNodePreviewImageCommand(qint32 id, const QSize &size,
- const QString &componentPath,
- qint32 renderItemId)
+RequestModelNodePreviewImageCommand::RequestModelNodePreviewImageCommand(
+ qint32 id,
+ const QSize &size,
+ const QString &componentPath,
+ qint32 renderItemId,
+ const QByteArray &requestId)
: m_instanceId(id)
, m_size(size)
, m_componentPath(componentPath)
, m_renderItemId(renderItemId)
+ , m_requestId(requestId)
{
}
@@ -40,12 +44,18 @@ qint32 RequestModelNodePreviewImageCommand::renderItemId() const
return m_renderItemId;
}
+QByteArray RequestModelNodePreviewImageCommand::requestId() const
+{
+ return m_requestId;
+}
+
QDataStream &operator<<(QDataStream &out, const RequestModelNodePreviewImageCommand &command)
{
out << int(command.instanceId());
out << command.size();
out << command.componentPath();
out << command.renderItemId();
+ out << command.requestId();
return out;
}
@@ -56,6 +66,7 @@ QDataStream &operator>>(QDataStream &in, RequestModelNodePreviewImageCommand &co
in >> command.m_size;
in >> command.m_componentPath;
in >> command.m_renderItemId;
+ in >> command.m_requestId;
return in;
}
@@ -65,7 +76,8 @@ QDebug operator <<(QDebug debug, const RequestModelNodePreviewImageCommand &comm
<< "instanceId: " << command.instanceId() << ", "
<< "size: " << command.size() << ", "
<< "componentPath: " << command.componentPath() << ", "
- << "renderItemId: " << command.renderItemId() << ")";
+ << "renderItemId: " << command.renderItemId() << ", "
+ << "requestId: " << command.requestId() << ")";
}
} // namespace QmlDesigner
diff --git a/src/libs/qmlpuppetcommunication/commands/requestmodelnodepreviewimagecommand.h b/src/libs/qmlpuppetcommunication/commands/requestmodelnodepreviewimagecommand.h
index 414b8f6cc9d..33a1c97866b 100644
--- a/src/libs/qmlpuppetcommunication/commands/requestmodelnodepreviewimagecommand.h
+++ b/src/libs/qmlpuppetcommunication/commands/requestmodelnodepreviewimagecommand.h
@@ -18,38 +18,46 @@ class RequestModelNodePreviewImageCommand
public:
RequestModelNodePreviewImageCommand();
- explicit RequestModelNodePreviewImageCommand(qint32 id, const QSize &size,
- const QString &componentPath, qint32 renderItemId);
+ explicit RequestModelNodePreviewImageCommand(
+ qint32 id,
+ const QSize &size,
+ const QString &componentPath,
+ qint32 renderItemId,
+ const QByteArray &requestId = {});
qint32 instanceId() const;
QSize size() const;
QString componentPath() const;
qint32 renderItemId() const;
+ QByteArray requestId() const;
private:
qint32 m_instanceId;
QSize m_size;
QString m_componentPath;
qint32 m_renderItemId;
+ QByteArray m_requestId;
};
inline bool operator==(const RequestModelNodePreviewImageCommand &first,
const RequestModelNodePreviewImageCommand &second)
{
- return first.instanceId() == second.instanceId()
- && first.size() == second.size()
- && first.componentPath() == second.componentPath()
- && first.renderItemId() == second.renderItemId();
+ return first.instanceId() == second.instanceId() && first.size() == second.size()
+ && first.componentPath() == second.componentPath()
+ && first.renderItemId() == second.renderItemId()
+ && first.requestId() == second.requestId();
}
inline size_t qHash(const RequestModelNodePreviewImageCommand &key, size_t seed = 0)
{
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
return ::qHash(key.instanceId(), seed)
- ^ ::qHash(std::make_pair(key.size().width(), key.size().height()), seed)
- ^ ::qHash(key.componentPath(), seed) ^ ::qHash(key.renderItemId(), seed);
+ ^ ::qHash(std::make_pair(key.size().width(), key.size().height()), seed)
+ ^ ::qHash(key.componentPath(), seed) ^ ::qHash(key.renderItemId(), seed)
+ ^ ::qHash(key.requestId(), seed);
#else
- return qHashMulti(seed, key.instanceId(), key.size(), key.componentPath(), key.renderItemId());
+ return qHashMulti(
+ seed, key.instanceId(), key.size(), key.componentPath(), key.renderItemId(), key.requestId());
#endif
}
diff --git a/src/libs/qmlpuppetcommunication/container/imagecontainer.cpp b/src/libs/qmlpuppetcommunication/container/imagecontainer.cpp
index 7747a9d1188..5cfeb2967bc 100644
--- a/src/libs/qmlpuppetcommunication/container/imagecontainer.cpp
+++ b/src/libs/qmlpuppetcommunication/container/imagecontainer.cpp
@@ -56,6 +56,11 @@ QRectF ImageContainer::rect() const
return m_rect;
}
+QByteArray ImageContainer::requestId() const
+{
+ return m_requestId;
+}
+
void ImageContainer::setImage(const QImage &image)
{
QTC_ASSERT(m_image.isNull(), /**/);
@@ -68,6 +73,11 @@ void ImageContainer::setRect(const QRectF &rectangle)
m_rect = rectangle;
}
+void ImageContainer::setRequestId(const QByteArray &newRequestId)
+{
+ m_requestId = newRequestId;
+}
+
void ImageContainer::removeSharedMemorys(const QVector<qint32> &keyNumberVector)
{
for (qint32 keyNumber : keyNumberVector) {
@@ -151,6 +161,7 @@ QDataStream &operator<<(QDataStream &out, const ImageContainer &container)
out << container.instanceId();
out << container.keyNumber();
out << container.rect();
+ out << container.requestId();
const QImage image = container.image();
@@ -236,6 +247,7 @@ QDataStream &operator>>(QDataStream &in, ImageContainer &container)
in >> container.m_instanceId;
in >> container.m_keyNumber;
in >> container.m_rect;
+ in >> container.m_requestId;
in >> sharedMemoryIsUsed;
if (sharedMemoryIsUsed) {
@@ -259,10 +271,11 @@ bool operator <(const ImageContainer &first, const ImageContainer &second)
QDebug operator <<(QDebug debug, const ImageContainer &container)
{
- return debug.nospace() << "ImageContainer("
- << "instanceId: " << container.instanceId() << ", "
- << "size: " << container.image().size() << ")";
+ debug.nospace() << "ImageContainer("
+ << "instanceId: " << container.instanceId() << ", ";
+ if (!container.requestId().isEmpty())
+ debug << "requestId: " << container.requestId() << ", ";
+ return debug << "size: " << container.image().size() << ")";
}
-
} // namespace QmlDesigner
diff --git a/src/libs/qmlpuppetcommunication/container/imagecontainer.h b/src/libs/qmlpuppetcommunication/container/imagecontainer.h
index cc028d45c0f..214cf0f18f7 100644
--- a/src/libs/qmlpuppetcommunication/container/imagecontainer.h
+++ b/src/libs/qmlpuppetcommunication/container/imagecontainer.h
@@ -23,9 +23,11 @@ public:
QImage image() const;
qint32 keyNumber() const;
QRectF rect() const;
+ QByteArray requestId() const;
void setImage(const QImage &image);
void setRect(const QRectF &rectangle);
+ void setRequestId(const QByteArray &newRequestId);
static void removeSharedMemorys(const QVector<qint32> &keyNumberVector);
@@ -34,6 +36,7 @@ private:
qint32 m_instanceId;
qint32 m_keyNumber;
QRectF m_rect;
+ QByteArray m_requestId;
};
QDataStream &operator<<(QDataStream &out, const ImageContainer &container);