#include "flutter/runtime/window_manager.h"
#include "flutter/fml/logging.h"
namespace flutter {
std::map<int32_t, std::unique_ptr<Window>> WindowManager::window_map_;
std::mutex WindowManager::mutex_;
void WindowManager::AddWindow(int32_t instance_id, std::unique_ptr<Window> window) {
std::lock_guard<std::mutex> lock(mutex_);
auto iter = window_map_.find(instance_id);
if (iter == window_map_.end()) {
window_map_.emplace(instance_id, std::move(window));
} else {
FML_LOG(WARNING) << "already have window of this instance id:" << instance_id;
}
}
Window* WindowManager::GetWindow(int32_t instance_id) {
std::lock_guard<std::mutex> lock(mutex_);
auto iter = window_map_.find(instance_id);
if (iter != window_map_.end()) {
return iter->second.get();
} else {
return nullptr;
}
}
void WindowManager::RemoveWindow(int32_t instance_id) {
std::lock_guard<std::mutex> lock(mutex_);
window_map_.erase(instance_id);
}
}