overte/plugins/steamClient/src/SteamClientProvider.cpp
2016-12-14 15:37:49 -08:00

41 lines
1.1 KiB
C++

//
// Created by Clément Brisset on 12/14/16
// Copyright 2016 High Fidelity, Inc.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
#include <mutex>
#include <QtCore/QObject>
#include <QtCore/QtPlugin>
#include <QtCore/QStringList>
#include <plugins/RuntimePlugin.h>
#include <plugins/SteamClientPlugin.h>
#include "SteamAPIPlugin.h"
class SteamAPIProvider : public QObject, public SteamClientProvider {
Q_OBJECT
Q_PLUGIN_METADATA(IID SteamClientProvider_iid FILE "plugin.json")
Q_INTERFACES(SteamClientProvider)
public:
SteamAPIProvider(QObject* parent = nullptr) : QObject(parent) {}
virtual ~SteamAPIProvider() {}
virtual SteamClientPluginPointer getSteamClientPlugin() override {
static std::once_flag once;
std::call_once(once, [&] {
_steamClientPlugin = std::make_shared<SteamAPIPlugin>();
});
return _steamClientPlugin;
}
private:
SteamClientPluginPointer _steamClientPlugin;
};
#include "SteamClientProvider.moc"