File indexing completed on 2024-04-21 04:58:40

0001 /* This file is part of the KDE project
0002    Copyright (C) 2009 Collabora Ltd <info@collabora.co.uk>
0003     @author George Goldberg <george.goldberg@collabora.co.uk>
0004 
0005    This program is free software; you can redistribute it and/or
0006    modify it under the terms of the GNU General Public
0007    License as published by the Free Software Foundation; either
0008    version 2 of the License, or (at your option) any later version.
0009 
0010    This program is distributed in the hope that it will be useful,
0011    but WITHOUT ANY WARRANTY; without even the implied warranty of
0012    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0013    General Public License for more details.
0014 
0015    You should have received a copy of the GNU General Public License
0016    along with this program; see the file COPYING.  If not, write to
0017    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0018    Boston, MA 02110-1301, USA.
0019 */
0020 
0021 #ifndef KRFB_FRAMEBUFFERMANAGER_H
0022 #define KRFB_FRAMEBUFFERMANAGER_H
0023 
0024 #include "framebuffer.h"
0025 
0026 #include "krfbprivate_export.h"
0027 
0028 #include <QMap>
0029 #include <QObject>
0030 #include <QSharedPointer>
0031 #include <QWeakPointer>
0032 
0033 #include <QWidget>
0034 
0035 class FrameBufferPlugin;
0036 class KPluginFactory;
0037 
0038 class KRFBPRIVATE_EXPORT FrameBufferManager : public QObject
0039 {
0040     Q_OBJECT
0041     friend class FrameBufferManagerStatic;
0042 
0043 public:
0044     static FrameBufferManager *instance();
0045 
0046     ~FrameBufferManager() override;
0047 
0048     QSharedPointer<FrameBuffer> frameBuffer(WId id, const QVariantMap &args);
0049 
0050 private:
0051     Q_DISABLE_COPY(FrameBufferManager)
0052 
0053     FrameBufferManager();
0054 
0055     QMap<QString, FrameBufferPlugin *> m_plugins;
0056     QMap<WId, QWeakPointer<FrameBuffer> > m_frameBuffers;
0057 };
0058 
0059 
0060 #endif  // Header guard
0061