1 // Copyright 2013 The Flutter Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 // 2021.2.10 Framework adapted to ACE. 5 // Copyright (c) 2021 Huawei Device Co., Ltd. All rights reserved. 6 7 #include "flutter/runtime/window_manager.h" 8 9 #include "flutter/fml/logging.h" 10 11 namespace flutter { 12 13 std::map<int32_t, std::unique_ptr<Window>> WindowManager::window_map_; 14 std::mutex WindowManager::mutex_; 15 AddWindow(int32_t instance_id,std::unique_ptr<Window> window)16void WindowManager::AddWindow(int32_t instance_id, std::unique_ptr<Window> window) { 17 std::lock_guard<std::mutex> lock(mutex_); 18 auto iter = window_map_.find(instance_id); 19 if (iter == window_map_.end()) { 20 window_map_.emplace(instance_id, std::move(window)); 21 } else { 22 FML_LOG(WARNING) << "already have window of this instance id:" << instance_id; 23 } 24 } 25 GetWindow(int32_t instance_id)26Window* WindowManager::GetWindow(int32_t instance_id) { 27 std::lock_guard<std::mutex> lock(mutex_); 28 auto iter = window_map_.find(instance_id); 29 if (iter != window_map_.end()) { 30 return iter->second.get(); 31 } else { 32 return nullptr; 33 } 34 } 35 RemoveWindow(int32_t instance_id)36void WindowManager::RemoveWindow(int32_t instance_id) { 37 std::lock_guard<std::mutex> lock(mutex_); 38 window_map_.erase(instance_id); 39 } 40 41 } // namespace flutter 42