• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)16 void 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)26 Window* 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)36 void 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