blob: 75d20e039fc77ce18c0d428e80fc560df196036e [file] [log] [blame]
// Copyright 2016 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "device/vr/android/gvr/gvr_api_manager.h"
namespace device {
namespace {
GvrApiManager* g_gvr_api_manager = nullptr;
}
GvrApiManager* GvrApiManager::GetInstance() {
if (!g_gvr_api_manager)
g_gvr_api_manager = new GvrApiManager();
return g_gvr_api_manager;
}
GvrApiManager::GvrApiManager() {}
GvrApiManager::~GvrApiManager() {}
void GvrApiManager::AddClient(GvrApiManagerClient* client) {
clients_.push_back(client);
if (gvr_api_)
client->OnGvrApiInitialized(gvr_api_.get());
}
void GvrApiManager::RemoveClient(GvrApiManagerClient* client) {
clients_.erase(std::remove(clients_.begin(), clients_.end(), client),
clients_.end());
}
void GvrApiManager::Initialize(gvr_context* context) {
gvr_api_ = gvr::GvrApi::WrapNonOwned(context);
for (const auto& client : clients_)
client->OnGvrApiInitialized(gvr_api_.get());
}
void GvrApiManager::Shutdown() {
if (!gvr_api_)
return;
gvr_api_.reset(nullptr);
for (const auto& client : clients_)
client->OnGvrApiShutdown();
}
gvr::GvrApi* GvrApiManager::gvr_api() {
return gvr_api_.get();
}
} // namespace device