Commit: 959a7a5c4217238fadbe7d2ac7e4d9f94e9f40c5 Author: Lukas Tönne Date: Fri May 30 16:17:30 2014 +0200 https://developer.blender.org/rB959a7a5c4217238fadbe7d2ac7e4d9f94e9f40c5
Simple stats drawing for the depsgraph info mode. =================================================================== M source/blender/depsgraph/CMakeLists.txt M source/blender/depsgraph/DEG_depsgraph_debug.h M source/blender/depsgraph/intern/depsgraph_debug.cpp M source/blender/depsgraph/intern/depsgraph_debug.h M source/blender/editors/space_info/depsgraphview.c M source/blender/editors/space_info/info_draw.c M source/blender/editors/space_info/space_info.c =================================================================== diff --git a/source/blender/depsgraph/CMakeLists.txt b/source/blender/depsgraph/CMakeLists.txt index 25bce3e..27846f4 100644 --- a/source/blender/depsgraph/CMakeLists.txt +++ b/source/blender/depsgraph/CMakeLists.txt @@ -33,6 +33,7 @@ set(INC ../makesdna ../makesrna ../modifiers + ../windowmanager ../../../intern/guardedalloc ) diff --git a/source/blender/depsgraph/DEG_depsgraph_debug.h b/source/blender/depsgraph/DEG_depsgraph_debug.h index ce5ea26..8ac8c9b 100644 --- a/source/blender/depsgraph/DEG_depsgraph_debug.h +++ b/source/blender/depsgraph/DEG_depsgraph_debug.h @@ -72,6 +72,8 @@ struct DepsgraphStats *DEG_stats(void); void DEG_stats_verify(struct DepsgraphSettings *settings); +struct DepsgraphStatsID *DEG_stats_id(struct ID *id); + /* ************************************************ */ /* Graphviz Debugging */ diff --git a/source/blender/depsgraph/intern/depsgraph_debug.cpp b/source/blender/depsgraph/intern/depsgraph_debug.cpp index c415850..44a7d28 100644 --- a/source/blender/depsgraph/intern/depsgraph_debug.cpp +++ b/source/blender/depsgraph/intern/depsgraph_debug.cpp @@ -50,6 +50,9 @@ extern "C" { #include "RNA_access.h" #include "RNA_types.h" + +#include "WM_api.h" +#include "WM_types.h" } /* extern "C" */ #include "depsgraph_debug.h" @@ -715,6 +718,7 @@ void DepsgraphDebug::eval_begin(eEvaluationContextType context_type) void DepsgraphDebug::eval_end(eEvaluationContextType context_type) { + WM_main_add_notifier(NC_SPACE | ND_SPACE_INFO_REPORT, NULL); } void DepsgraphDebug::eval_step(eEvaluationContextType context_type, const char *message) @@ -857,3 +861,11 @@ void DEG_stats_verify(DepsgraphSettings *settings) { DepsgraphDebug::verify_stats(settings); } + +DepsgraphStatsID *DEG_stats_id(ID *id) +{ + if (!DepsgraphDebug::stats) + return NULL; + + return DepsgraphDebug::get_id_stats(id, false); +} diff --git a/source/blender/depsgraph/intern/depsgraph_debug.h b/source/blender/depsgraph/intern/depsgraph_debug.h index e3a1b29..6f9c974 100644 --- a/source/blender/depsgraph/intern/depsgraph_debug.h +++ b/source/blender/depsgraph/intern/depsgraph_debug.h @@ -67,15 +67,15 @@ struct DepsgraphDebug { static void task_started(const DepsgraphTask &task); static void task_completed(const DepsgraphTask &task, double time); -protected: - static ThreadMutex stats_mutex; - static DepsgraphStatsID *get_id_stats(ID *id, bool create); static DepsgraphStatsComponent *get_component_stats(DepsgraphStatsID *id_stats, const string &name, bool create); static DepsgraphStatsComponent *get_component_stats(ID *id, const string &name, bool create) { return get_component_stats(get_id_stats(id, create), name, create); } + +protected: + static ThreadMutex stats_mutex; }; #endif // __DEPSGRAPH_DEBUG_H__ diff --git a/source/blender/editors/space_info/depsgraphview.c b/source/blender/editors/space_info/depsgraphview.c index e81cf65..3e1afec 100644 --- a/source/blender/editors/space_info/depsgraphview.c +++ b/source/blender/editors/space_info/depsgraphview.c @@ -30,15 +30,55 @@ #include "MEM_guardedalloc.h" +#include "BLI_string.h" #include "BLI_utildefines.h" +#include "BKE_context.h" +#include "BKE_main.h" + #include "DEG_depsgraph_debug.h" #include "UI_interface.h" #include "depsgraphview.h" +static void draw_fields_header(uiLayout *layout) +{ + uiLayout *row = uiLayoutRow(layout, true); + + uiItemL(row, "Name", 0); + uiItemL(row, "Last Duration [ms]", 0); +} + +static void draw_fields_id(uiLayout *layout, ID *id, DepsgraphStatsID *id_stats) +{ + uiLayout *row = uiLayoutRow(layout, true); + char num[256]; + + uiItemL(row, id->name+2, 0); + + if (id_stats) { + BLI_snprintf(num, sizeof(num), "%.3f", id_stats->times.duration_last); + uiItemL(row, num, 0); + } + else { + uiItemL(row, "-", 0); + } +} + void depsgraphview_draw(const struct bContext *C, uiLayout *layout) { + Main *bmain = CTX_data_main(C); + DepsgraphStats *stats = DEG_stats(); + uiLayout *col = uiLayoutColumn(layout, true); + ID *id; + + if (!stats) + return; + + draw_fields_header(col); + for (id = bmain->object.first; id; id = id->next) { + draw_fields_id(col, id, DEG_stats_id(id)); + } } diff --git a/source/blender/editors/space_info/info_draw.c b/source/blender/editors/space_info/info_draw.c index 59737fe..1106b8c 100644 --- a/source/blender/editors/space_info/info_draw.c +++ b/source/blender/editors/space_info/info_draw.c @@ -300,19 +300,26 @@ void info_depsgraphview_main(const struct bContext *C, struct ARegion *ar)\ View2D *v2d = &ar->v2d; uiBlock *block; uiLayout *layout; - float width, em; + float x, y, width, em; + int xco, yco; block = uiBeginBlock(C, ar, __func__, UI_EMBOSS); + x = v2d->cur.xmin; + y = v2d->cur.ymax; width = BLI_rctf_size_x(&v2d->cur); + em = (ar->type->prefsizex) ? 10 : 20; /* works out to 10*UI_UNIT_X or 20*UI_UNIT_X */ layout = uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, - 0, 0, width, em, 0, UI_GetStyle()); + x, y, width, em, 0, UI_GetStyle()); depsgraphview_draw(C, layout); - uiBlockLayoutResolve(block, NULL, NULL); + uiBlockLayoutResolve(block, &xco, &yco); uiEndBlock(C, block); + uiDrawBlock(C, block); + +// UI_view2d_totRect_set(v2d, 1000, 1000); } diff --git a/source/blender/editors/space_info/space_info.c b/source/blender/editors/space_info/space_info.c index 45f36d5..befe8c0 100644 --- a/source/blender/editors/space_info/space_info.c +++ b/source/blender/editors/space_info/space_info.c @@ -163,10 +163,9 @@ static void info_main_area_init(wmWindowManager *wm, ARegion *ar) wmKeyMap *keymap; /* force it on init, for old files, until it becomes config */ - ar->v2d.scroll = (V2D_SCROLL_RIGHT); + ar->v2d.scroll = (V2D_SCROLL_RIGHT | V2D_SCROLL_BOTTOM); UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy); - /* own keymap */ keymap = WM_keymap_find(wm->defaultconf, "Info Generic", SPACE_INFO, 0); WM_event_add_keymap_handler(&ar->handlers, keymap); @@ -211,7 +210,12 @@ static void info_main_area_draw(const bContext *C, ARegion *ar) UI_view2d_view_restore(C); break; case INFO_MODE_DEPSGRAPH: + UI_view2d_view_ortho(v2d); + info_depsgraphview_main(C, ar); + + /* reset view matrix */ + UI_view2d_view_restore(C); break; } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs