mirror of
https://gitee.com/openharmony/window_window_manager
synced 2024-11-27 09:00:55 +00:00
修改预览中锁以及其他意见
Signed-off-by: lw19901203 <liuwei793@h-partners.com>
This commit is contained in:
parent
4d71c761a2
commit
e8aaf83a8e
@ -228,7 +228,7 @@ public:
|
||||
virtual WMError UpdateSystemBarProperty(bool status);
|
||||
|
||||
private:
|
||||
static sptr<Window> FindWindowById(uint32_t WinId);
|
||||
static sptr<Window> FindWindowById(uint32_t windowId);
|
||||
template<typename T1, typename T2, typename Ret>
|
||||
using EnableIfSame = typename std::enable_if<std::is_same_v<T1, T2>, Ret>::type;
|
||||
template<typename T> WMError RegisterListener(std::vector<sptr<T>>& holder, const sptr<T>& listener);
|
||||
@ -274,6 +274,7 @@ private:
|
||||
void NotifySystemBarChange(WindowType type, const SystemBarProperty& property);
|
||||
void NotifySetIgnoreSafeArea(bool value);
|
||||
void NotifyAvoidAreaChange(const sptr<AvoidArea>& avoidArea, AvoidAreaType type);
|
||||
static std::mutex globalMutex_;
|
||||
static std::map<std::string, std::pair<uint32_t, sptr<Window>>> windowMap_;
|
||||
static std::map<uint32_t, std::vector<sptr<WindowImpl>>> subWindowMap_;
|
||||
static std::map<uint32_t, std::vector<sptr<IWindowSystemBarEnableListener>>> systemBarEnableListeners_;
|
||||
@ -296,8 +297,8 @@ private:
|
||||
bool isIgnoreSafeArea_ = false;
|
||||
uint32_t windowId_ = 0;
|
||||
WindowMode windowMode_ = WindowMode::WINDOW_MODE_FULLSCREEN;
|
||||
static std::mutex globalMutex_;
|
||||
sptr<WindowProperty> property_;
|
||||
mutable std::mutex mutex_;
|
||||
std::unordered_map<WindowType, SystemBarProperty> sysBarPropMap_ {
|
||||
{ WindowType::WINDOW_TYPE_STATUS_BAR, SystemBarProperty(true, 0x00FFFFFF, 0xFF000000) },
|
||||
{ WindowType::WINDOW_TYPE_NAVIGATION_BAR, SystemBarProperty(true, 0x00FFFFFF, 0xFF000000) },
|
||||
|
@ -36,7 +36,7 @@ const std::string AVOID_AREA_CHANGE_CB = "avoidAreaChange";
|
||||
class JsWindowListener : public IAvoidAreaChangedListener {
|
||||
public:
|
||||
JsWindowListener(napi_env env, std::shared_ptr<NativeReference> callback)
|
||||
: env_(env), jsCallBack_(callback), weakRef_(wptr<JsWindowListener> (this)) {}
|
||||
: env_(env), jsCallBack_(callback), weakRef_(wptr<JsWindowListener>(this)) {}
|
||||
~JsWindowListener();
|
||||
void OnAvoidAreaChanged(const AvoidArea avoidArea, AvoidAreaType type) override;
|
||||
void CallJsMethod(const char* methodName, napi_value const* argv = nullptr, size_t argc = 0);
|
||||
|
@ -79,7 +79,7 @@ const std::shared_ptr<AbilityRuntime::Context> WindowImpl::GetContext() const
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
sptr<Window> WindowImpl::FindWindowById(uint32_t WinId)
|
||||
sptr<Window> WindowImpl::FindWindowById(uint32_t windowId)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(globalMutex_);
|
||||
if (windowMap_.empty()) {
|
||||
@ -87,8 +87,8 @@ sptr<Window> WindowImpl::FindWindowById(uint32_t WinId)
|
||||
return nullptr;
|
||||
}
|
||||
for (auto iter = windowMap_.begin(); iter != windowMap_.end(); iter++) {
|
||||
if (WinId == iter->second.first) {
|
||||
WLOGI("FindWindow id: %{public}u", WinId);
|
||||
if (windowId == iter->second.first) {
|
||||
WLOGI("FindWindow id: %{public}u", windowId);
|
||||
return iter->second.second;
|
||||
}
|
||||
}
|
||||
@ -202,6 +202,7 @@ bool WindowImpl::IsMainHandlerAvailable() const
|
||||
|
||||
SystemBarProperty WindowImpl::GetSystemBarPropertyByType(WindowType type) const
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(mutex_);
|
||||
auto it = sysBarPropMap_.find(type);
|
||||
if (it == sysBarPropMap_.end()) {
|
||||
return SystemBarProperty(false, 0x0, 0x0);
|
||||
@ -211,7 +212,7 @@ SystemBarProperty WindowImpl::GetSystemBarPropertyByType(WindowType type) const
|
||||
|
||||
WMError WindowImpl::GetAvoidAreaByType(AvoidAreaType type, AvoidArea& avoidArea)
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(globalMutex_);
|
||||
std::lock_guard<std::mutex> lock(mutex_);
|
||||
auto avoidAreaPtr = avoidAreaMap_[type];
|
||||
if (avoidAreaPtr == nullptr) {
|
||||
return WMError::WM_OK;
|
||||
@ -347,14 +348,17 @@ WMError WindowImpl::SetSystemBarProperty(WindowType type, const SystemBarPropert
|
||||
|
||||
WMError WindowImpl::SetSpecificBarProperty(WindowType type, const SystemBarProperty& property)
|
||||
{
|
||||
WLOGI("Window %{public}u type %{public}u enable:%{public}u, bgColor:%{public}x, Color:%{public}x ",
|
||||
WLOGI("Window %{public}u type %{public}u enable:%{public}u, bgColor:%{public}x, Color:%{public}x",
|
||||
GetWindowId(), static_cast<uint32_t>(type), property.enable_,
|
||||
property.backgroundColor_, property.contentColor_);
|
||||
|
||||
if (GetSystemBarPropertyByType(type) == property) {
|
||||
return WMError::WM_OK;
|
||||
}
|
||||
sysBarPropMap_[type] = property;
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(mutex_);
|
||||
sysBarPropMap_[type] = property;
|
||||
}
|
||||
NotifySystemBarChange(type, property);
|
||||
UpdateViewportConfig();
|
||||
return WMError::WM_OK;
|
||||
@ -829,7 +833,7 @@ void WindowImpl::UpdateAvoidArea(const sptr<AvoidArea>& avoidArea, AvoidAreaType
|
||||
avoidArea->bottomRect_.height_);
|
||||
|
||||
{
|
||||
std::lock_guard<std::mutex> lock(globalMutex_);
|
||||
std::lock_guard<std::mutex> lock(mutex_);
|
||||
avoidAreaMap_[type] = avoidArea;
|
||||
}
|
||||
NotifyAvoidAreaChange(avoidArea, type);
|
||||
|
Loading…
Reference in New Issue
Block a user