blob: 216b78e8d5fbba7844fb4924197c482027f703c0 [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.
#ifndef DEVICE_VR_ANDROID_GVR_API_MANAGER_H
#define DEVICE_VR_ANDROID_GVR_API_MANAGER_H
#include "device/vr/vr_export.h"
#include "third_party/gvr-android-sdk/src/ndk-beta/include/vr/gvr/capi/include/gvr.h"
namespace device {
class DEVICE_VR_EXPORT GvrApiManagerClient {
public:
virtual void OnGvrApiInitialized(gvr::GvrApi* gvr_api) = 0;
virtual void OnGvrApiShutdown() = 0;
};
class DEVICE_VR_EXPORT GvrApiManager {
public:
static GvrApiManager* GetInstance();
void AddClient(GvrApiManagerClient* client);
void RemoveClient(GvrApiManagerClient* client);
void Initialize(gvr_context* context);
void Shutdown();
gvr::GvrApi* gvr_api();
private:
GvrApiManager();
~GvrApiManager();
std::unique_ptr<gvr::GvrApi> gvr_api_;
using ClientList = std::vector<GvrApiManagerClient*>;
ClientList clients_;
};
} // namespace device
#endif // DEVICE_VR_ANDROID_GVR_API_MANAGER_H