浏览代码

throw a C# exception when window.instance is null instead of crashing down the app

/siyaoH-1.17-PlatformMessage
Xingwei Zhu 3 年前
当前提交
847f8c4f
共有 6 个文件被更改,包括 21 次插入1 次删除
  1. 8
      com.unity.uiwidgets/Runtime/ui2/window.cs
  2. 4
      engine/src/lib/ui/ui_mono_state.cc
  3. 2
      engine/src/lib/ui/ui_mono_state.h
  4. 3
      engine/src/lib/ui/window/window.cc
  5. 4
      engine/src/runtime/mono_state.cc
  6. 1
      engine/src/runtime/mono_state.h

8
com.unity.uiwidgets/Runtime/ui2/window.cs


public static Window instance {
get {
GCHandle gcHandle = (GCHandle) Window_instance();
IntPtr ptr = Window_instance();
if (ptr == IntPtr.Zero) {
D.assert(false, () => "AssertionError: Window.instance is null. Please enclose your code with window scope (detailed examples can be found in the README file)");
return null;
}
GCHandle gcHandle = (GCHandle) ptr;
return (Window) gcHandle.Target;
}
}

4
engine/src/lib/ui/ui_mono_state.cc


return static_cast<UIMonoState*>(MonoState::Current());
}
bool UIMonoState::EnsureCurrentIsolate() {
return MonoState::EnsureCurrentIsolate();
}
void UIMonoState::SetWindow(std::unique_ptr<Window> window) {
window_ = std::move(window);
}

2
engine/src/lib/ui/ui_mono_state.h


public:
static UIMonoState* Current();
static bool EnsureCurrentIsolate();
Window* window() const { return window_.get(); }
const TaskRunners& GetTaskRunners() const;

3
engine/src/lib/ui/window/window.cc


}
UIWIDGETS_API(Mono_Handle) Window_instance() {
if (!UIMonoState::EnsureCurrentIsolate()) {
return nullptr;
}
return UIMonoState::Current()->window()->mono_window();
}

4
engine/src/runtime/mono_state.cc


return isolate_data->get();
}
bool MonoState::EnsureCurrentIsolate() {
return Mono_CurrentIsolate() != nullptr;
}
MonoState* MonoState::Current() {
auto isolate_data =
static_cast<std::shared_ptr<MonoState>*>(Mono_CurrentIsolateData());

1
engine/src/runtime/mono_state.h


static MonoState* From(Mono_Isolate isolate);
static MonoState* Current();
static bool EnsureCurrentIsolate();
std::weak_ptr<MonoState> GetWeakPtr();

正在加载...
取消
保存