From 629ddec45898fe83e8b41b59c5eea91c29f20e5b Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Mon, 23 Sep 2024 17:41:26 -0700 Subject: [PATCH] begin sketching out watch-window-driven scheduler replacement --- .../eval_visualization_core.c | 2 + src/raddbg/raddbg_views.c | 48 ++++++++++++++++++- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/eval_visualization/eval_visualization_core.c b/src/eval_visualization/eval_visualization_core.c index 1178971d..76cea7bb 100644 --- a/src/eval_visualization/eval_visualization_core.c +++ b/src/eval_visualization/eval_visualization_core.c @@ -478,6 +478,7 @@ ev_view_rule_list_copy(Arena *arena, EV_ViewRuleList *src) internal E_Expr * ev_expr_from_expr_view_rules(Arena *arena, E_Expr *expr, EV_ViewRuleList *view_rules) { + ProfBeginFunction(); for(EV_ViewRuleNode *n = view_rules->first; n != 0; n = n->next) { EV_ViewRuleInfo *info = ev_view_rule_info_from_string(n->v.root->string); @@ -486,6 +487,7 @@ ev_expr_from_expr_view_rules(Arena *arena, E_Expr *expr, EV_ViewRuleList *view_r expr = info->expr_resolution(arena, expr, n->v.root); } } + ProfEnd(); return expr; } diff --git a/src/raddbg/raddbg_views.c b/src/raddbg/raddbg_views.c index aaf226e4..a9aa88b8 100644 --- a/src/raddbg/raddbg_views.c +++ b/src/raddbg/raddbg_views.c @@ -2467,7 +2467,32 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo }break; case RD_EvalSpaceKind_MetaCtrlEntity: { - + CTRL_Entity *entity = rd_ctrl_entity_from_eval_space(row_eval.space); + UI_Box *box = ui_build_box_from_stringf(UI_BoxFlag_Clickable|UI_BoxFlag_DrawHotEffects|UI_BoxFlag_DrawActiveEffects, "###entity_%p", entity); + UI_Parent(box) UI_Focus(UI_FocusKind_Null) + { + if(entity->kind == CTRL_EntityKind_Thread) UI_PrefWidth(ui_em(3.f, 1.f)) + { + rd_icon_buttonf(RD_IconKind_Locked, 0, "###freeze"); + } + if(row_is_expandable) UI_PrefWidth(ui_em(2.f, 1.f)) + { + if(ui_pressed(ui_expanderf(next_row_expanded, "###expand_%p", entity))) + { + next_row_expanded ^= 1; + } + } + DR_FancyStringList fstrs = rd_title_fstrs_from_ctrl_entity(scratch.arena, entity, rd_rgba_from_theme_color(RD_ThemeColor_TextWeak), ui_top_font_size()); + UI_Box *label = ui_build_box_from_key(UI_BoxFlag_DrawText, ui_key_zero()); + ui_box_equip_display_fancy_strings(label, &fstrs); + } + UI_Signal sig = ui_signal_from_box(box); + if(ui_pressed(sig)) + { + RD_WatchViewPoint cell_pt = {0, row->parent_key, row->key}; + ewv->next_cursor = ewv->next_mark = cell_pt; + pressed = 1; + } }break; } } @@ -5643,6 +5668,26 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(watch_pins) //////////////////////////////// //~ rjf: scheduler @view_hook_impl +RD_VIEW_RULE_UI_FUNCTION_DEF(scheduler) +{ + ProfBeginFunction(); + RD_WatchViewState *wv = rd_view_state(RD_WatchViewState); + if(!wv->initialized) + { + rd_watch_view_init(wv); + rd_watch_view_column_alloc(wv, RD_WatchViewColumnKind_Expr, 0.30f, .display_string = str8_lit("Expression")); + rd_watch_view_column_alloc(wv, RD_WatchViewColumnKind_Value, 0.70f, .display_string = str8_lit("Value")); + } + rd_watch_view_build(wv, + RD_WatchViewFlag_NoHeader| + RD_WatchViewFlag_RootButtons| + RD_WatchViewFlag_PrettyNameMembers, + str8_lit("threads"), + str8_lit("only:label str id frozen callstack v count"), 0, 10, rect); + ProfEnd(); +} + +#if 0 RD_VIEW_RULE_UI_FUNCTION_DEF(scheduler) { ProfBeginFunction(); @@ -5863,6 +5908,7 @@ RD_VIEW_RULE_UI_FUNCTION_DEF(scheduler) scratch_end(scratch); ProfEnd(); } +#endif //////////////////////////////// //~ rjf: call_stack @view_hook_impl