File indexing completed on 2024-04-28 15:39:41

0001 // SPDX-FileCopyrightText: 2014-2022 Jesper K. Pedersen <blackie@kde.org>
0002 //
0003 // SPDX-License-Identifier: GPL-2.0-or-later
0004 
0005 #ifndef REMOTECONTROL_IMAGESTORE_H
0006 #define REMOTECONTROL_IMAGESTORE_H
0007 
0008 #include "Types.h"
0009 #include <QImage>
0010 #include <QMap>
0011 #include <QMutex>
0012 #include <QObject>
0013 
0014 namespace RemoteControl
0015 {
0016 class RemoteImage;
0017 
0018 class ImageStore : public QObject
0019 {
0020     Q_OBJECT
0021 
0022 public:
0023     static ImageStore &instance();
0024     void updateImage(ImageId imageId, const QImage &requestImage, const QString &label, ViewType type);
0025     void requestImage(RemoteImage *client, ImageId imageId, const QSize &size, ViewType type);
0026 
0027 private Q_SLOTS:
0028     void reset();
0029     void clientDeleted();
0030 
0031 private:
0032     explicit ImageStore();
0033 
0034     using RequestType = QPair<ImageId, ViewType>;
0035     QMap<RequestType, RemoteImage *> m_requestMap;
0036     QMap<RemoteImage *, RequestType> m_reverseRequestMap;
0037     QMutex m_mutex;
0038 };
0039 
0040 } // namespace RemoteControl
0041 
0042 #endif // REMOTECONTROL_IMAGESTORE_H