Commit: e13a3896d1b95461a3aaaf4ae18eaa5d67d96358 Author: Jacques Lucke Date: Tue Apr 27 17:14:44 2021 +0200 Branches: profiler-editor https://developer.blender.org/rBe13a3896d1b95461a3aaaf4ae18eaa5d67d96358
compute vertical extends =================================================================== M source/blender/editors/space_profiler/profiler_draw.cc M source/blender/editors/space_profiler/profiler_layout.hh M source/blender/editors/space_profiler/space_profiler.cc =================================================================== diff --git a/source/blender/editors/space_profiler/profiler_draw.cc b/source/blender/editors/space_profiler/profiler_draw.cc index 6957461f129..00dde364304 100644 --- a/source/blender/editors/space_profiler/profiler_draw.cc +++ b/source/blender/editors/space_profiler/profiler_draw.cc @@ -41,6 +41,8 @@ class ProfilerDrawer { SpaceProfiler *sprofiler_; SpaceProfiler_Runtime *runtime_; ProfilerLayout *profiler_layout_; + int row_height_; + int parallel_padding_; public: ProfilerDrawer(const bContext *C, ARegion *region) : C(C), region_(region) @@ -53,11 +55,45 @@ class ProfilerDrawer { } profile::ProfileListener::flush_to_all(); profiler_layout_ = runtime_->profiler_layout.get(); + + row_height_ = UI_UNIT_Y; + parallel_padding_ = UI_UNIT_Y * 0.2f; } void draw() { UI_ThemeClearColor(TH_BACK); + this->compute_vertical_extends_of_all_nodes(); + } + + void compute_vertical_extends_of_all_nodes() + { + int top_y = region_->winy; + for (Span<ProfileNode *> nodes : profiler_layout_->root_nodes()) { + top_y = this->compute_vertical_extends_of_nodes(nodes, top_y); + top_y -= parallel_padding_; + } + } + + float compute_vertical_extends_of_nodes(Span<ProfileNode *> nodes, const float top_y) + { + int bottom_y = top_y; + for (ProfileNode *node : nodes) { + node->top_y = top_y; + this->compute_vertical_extends_of_node(*node); + bottom_y = std::min(bottom_y, node->bottom_y); + } + return bottom_y; + } + + void compute_vertical_extends_of_node(ProfileNode &node) + { + node.bottom_y = node.top_y - row_height_; + node.bottom_y = this->compute_vertical_extends_of_nodes(node.direct_children(), node.bottom_y); + for (Span<ProfileNode *> children : node.parallel_children()) { + node.bottom_y -= parallel_padding_; + node.bottom_y = this->compute_vertical_extends_of_nodes(children, node.bottom_y); + } } }; diff --git a/source/blender/editors/space_profiler/profiler_layout.hh b/source/blender/editors/space_profiler/profiler_layout.hh index 7f8c375b73f..57a91d15e40 100644 --- a/source/blender/editors/space_profiler/profiler_layout.hh +++ b/source/blender/editors/space_profiler/profiler_layout.hh @@ -45,11 +45,12 @@ class ProfileNode { /* These nodes still have to be inserted into the vectors above. They are not sorted. */ Vector<ProfileNode *> children_to_pack_; + friend ProfilerLayout; + + public: int top_y; int bottom_y; - friend ProfilerLayout; - public: StringRefNull name() const { @@ -81,12 +82,12 @@ class ProfileNode { return thread_id_; } - Span<const ProfileNode *> children_on_same_thread() const + Span<ProfileNode *> direct_children() { return direct_children_; } - Span<Vector<ProfileNode *>> stacked_children_in_other_threads() const + Span<Vector<ProfileNode *>> parallel_children() const { return parallel_children_; } diff --git a/source/blender/editors/space_profiler/space_profiler.cc b/source/blender/editors/space_profiler/space_profiler.cc index 32d980ea5e2..9e21bde224d 100644 --- a/source/blender/editors/space_profiler/space_profiler.cc +++ b/source/blender/editors/space_profiler/space_profiler.cc @@ -63,8 +63,10 @@ static SpaceLink *profiler_create(const ScrArea *UNUSED(area), const Scene *UNUS return (SpaceLink *)sprofiler; } -static void profiler_free(SpaceLink *UNUSED(sl)) +static void profiler_free(SpaceLink *sl) { + SpaceProfiler *sprofiler = (SpaceProfiler *)sl; + delete sprofiler->runtime; } static void profiler_init(wmWindowManager *UNUSED(wm), ScrArea *area) _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs