organization pass & straightening some things out before entity simplification/replacement

This commit is contained in:
Ryan Fleury
2024-09-13 16:12:55 -07:00
parent 8ffc9f4a9b
commit 4b526db0dd
9 changed files with 196 additions and 180 deletions
+4 -4
View File
@@ -1685,7 +1685,7 @@ d_tick(Arena *arena, D_TargetArray *targets, D_BreakpointArray *breakpoints, D_P
MTX_Op op = {r1u64(0, 0xffffffffffffffffull), str8_lit("[new session]\n")}; MTX_Op op = {r1u64(0, 0xffffffffffffffffull), str8_lit("[new session]\n")};
mtx_push_op(d_state->output_log_key, op); mtx_push_op(d_state->output_log_key, op);
#if 0 // TODO(rjf): @msgs #if 0 // TODO(rjf): @msgs
RD_EntityList bps = d_query_cached_entity_list_with_kind(RD_EntityKind_Breakpoint); RD_EntityList bps = rd_query_cached_entity_list_with_kind(RD_EntityKind_Breakpoint);
for(RD_EntityNode *n = bps.first; n != 0; n = n->next) for(RD_EntityNode *n = bps.first; n != 0; n = n->next)
{ {
n->entity->u64 = 0; n->entity->u64 = 0;
@@ -1719,7 +1719,7 @@ d_tick(Arena *arena, D_TargetArray *targets, D_BreakpointArray *breakpoints, D_P
// rjf: find any pending thread names correllating with this TID -> equip name if found match // rjf: find any pending thread names correllating with this TID -> equip name if found match
{ {
RD_EntityList pending_thread_names = d_query_cached_entity_list_with_kind(RD_EntityKind_PendingThreadName); RD_EntityList pending_thread_names = rd_query_cached_entity_list_with_kind(RD_EntityKind_PendingThreadName);
for(RD_EntityNode *n = pending_thread_names.first; n != 0; n = n->next) for(RD_EntityNode *n = pending_thread_names.first; n != 0; n = n->next)
{ {
RD_Entity *pending_thread_name = n->entity; RD_Entity *pending_thread_name = n->entity;
@@ -1790,7 +1790,7 @@ d_tick(Arena *arena, D_TargetArray *targets, D_BreakpointArray *breakpoints, D_P
// rjf: is first -> find target, equip process & module & first thread with target color // rjf: is first -> find target, equip process & module & first thread with target color
if(is_first) if(is_first)
{ {
RD_EntityList targets = d_query_cached_entity_list_with_kind(RD_EntityKind_Target); RD_EntityList targets = rd_query_cached_entity_list_with_kind(RD_EntityKind_Target);
for(RD_EntityNode *n = targets.first; n != 0; n = n->next) for(RD_EntityNode *n = targets.first; n != 0; n = n->next)
{ {
RD_Entity *target = n->entity; RD_Entity *target = n->entity;
@@ -2357,7 +2357,7 @@ d_tick(Arena *arena, D_TargetArray *targets, D_BreakpointArray *breakpoints, D_P
// rjf: gather targets corresponding to all launched processes // rjf: gather targets corresponding to all launched processes
RD_EntityList targets = {0}; RD_EntityList targets = {0};
{ {
RD_EntityList processes = d_query_cached_entity_list_with_kind(RD_EntityKind_Process); RD_EntityList processes = rd_query_cached_entity_list_with_kind(RD_EntityKind_Process);
for(RD_EntityNode *n = processes.first; n != 0; n = n->next) for(RD_EntityNode *n = processes.first; n != 0; n = n->next)
{ {
RD_Entity *process = n->entity; RD_Entity *process = n->entity;
+11 -1
View File
@@ -129,7 +129,7 @@ typedef enum MD_NodeKind
} }
MD_NodeKind; MD_NodeKind;
typedef U64 MD_NodeFlags; typedef U32 MD_NodeFlags;
enum enum
{ {
MD_NodeFlag_MaskSetDelimiters = (0x3F<<0), MD_NodeFlag_MaskSetDelimiters = (0x3F<<0),
@@ -182,6 +182,16 @@ struct MD_Node
// rjf: source code info // rjf: source code info
U64 src_offset; U64 src_offset;
// rjf: user-controlled generation number
//
// (unused by mdesk layer, but can be used by usage code to use MD_Node trees
// in a "retained mode" way, where stable generational handles can be formed
// to nodes)
U64 user_gen;
// rjf: extra padding to 128 bytes
U64 _unused_[2];
}; };
typedef struct MD_NodeRec MD_NodeRec; typedef struct MD_NodeRec MD_NodeRec;
+2 -2
View File
@@ -290,8 +290,8 @@ RD_CmdKindInfo rd_cmd_kind_info_table[219] =
{ str8_lit_comp("open_window"), str8_lit_comp("Opens a new window."), str8_lit_comp(""), str8_lit_comp("Open New Window"), RD_IconKind_Window, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}}, { str8_lit_comp("open_window"), str8_lit_comp("Opens a new window."), str8_lit_comp(""), str8_lit_comp("Open New Window"), RD_IconKind_Window, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}},
{ str8_lit_comp("close_window"), str8_lit_comp("Closes an opened window."), str8_lit_comp(""), str8_lit_comp("Close Window"), RD_IconKind_Window, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}}, { str8_lit_comp("close_window"), str8_lit_comp("Closes an opened window."), str8_lit_comp(""), str8_lit_comp("Close Window"), RD_IconKind_Window, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}},
{ str8_lit_comp("toggle_fullscreen"), str8_lit_comp("Toggles fullscreen view on the active window."), str8_lit_comp(""), str8_lit_comp("Toggle Fullscreen"), RD_IconKind_Window, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}}, { str8_lit_comp("toggle_fullscreen"), str8_lit_comp("Toggles fullscreen view on the active window."), str8_lit_comp(""), str8_lit_comp("Toggle Fullscreen"), RD_IconKind_Window, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}},
{ str8_lit_comp("confirm_accept"), str8_lit_comp("Accepts the active confirmation prompt."), str8_lit_comp(""), str8_lit_comp("Confirm Accept"), RD_IconKind_Null, (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}}, { str8_lit_comp("popup_accept"), str8_lit_comp("Accepts the active popup prompt."), str8_lit_comp(""), str8_lit_comp("Popup Accept"), RD_IconKind_Null, (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}},
{ str8_lit_comp("confirm_cancel"), str8_lit_comp("Cancels the active confirmation prompt."), str8_lit_comp(""), str8_lit_comp("Confirm Cancel"), RD_IconKind_Null, (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}}, { str8_lit_comp("popup_cancel"), str8_lit_comp("Cancels the active popup prompt."), str8_lit_comp(""), str8_lit_comp("Popup Cancel"), RD_IconKind_Null, (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}},
{ str8_lit_comp("reset_to_default_panels"), str8_lit_comp("Resets the window to the default panel layout."), str8_lit_comp("panel"), str8_lit_comp("Reset To Default Panel Layout"), RD_IconKind_Window, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}}, { str8_lit_comp("reset_to_default_panels"), str8_lit_comp("Resets the window to the default panel layout."), str8_lit_comp("panel"), str8_lit_comp("Reset To Default Panel Layout"), RD_IconKind_Window, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}},
{ str8_lit_comp("reset_to_compact_panels"), str8_lit_comp("Resets the window to the compact panel layout."), str8_lit_comp("panel"), str8_lit_comp("Reset To Compact Panel Layout"), RD_IconKind_Window, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}}, { str8_lit_comp("reset_to_compact_panels"), str8_lit_comp("Resets the window to the compact panel layout."), str8_lit_comp("panel"), str8_lit_comp("Reset To Compact Panel Layout"), RD_IconKind_Window, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}},
{ str8_lit_comp("new_panel_left"), str8_lit_comp("Creates a new panel to the left of the active panel."), str8_lit_comp("panel"), str8_lit_comp("Split Panel Left"), RD_IconKind_XSplit, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}}, { str8_lit_comp("new_panel_left"), str8_lit_comp("Creates a new panel to the left of the active panel."), str8_lit_comp("panel"), str8_lit_comp("Split Panel Left"), RD_IconKind_XSplit, (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), RD_EntityKind_Nil}},
+2 -2
View File
@@ -135,8 +135,8 @@ RD_CmdKind_DecCodeFontScale,
RD_CmdKind_OpenWindow, RD_CmdKind_OpenWindow,
RD_CmdKind_CloseWindow, RD_CmdKind_CloseWindow,
RD_CmdKind_ToggleFullscreen, RD_CmdKind_ToggleFullscreen,
RD_CmdKind_ConfirmAccept, RD_CmdKind_PopupAccept,
RD_CmdKind_ConfirmCancel, RD_CmdKind_PopupCancel,
RD_CmdKind_ResetToDefaultPanels, RD_CmdKind_ResetToDefaultPanels,
RD_CmdKind_ResetToCompactPanels, RD_CmdKind_ResetToCompactPanels,
RD_CmdKind_NewPanelLeft, RD_CmdKind_NewPanelLeft,
+3 -3
View File
@@ -256,9 +256,9 @@ RD_CmdTable: // | | | |
{CloseWindow 1 1 Null null Nil 0 0 0 0 0 0 Window "close_window" "Close Window" "Closes an opened window." "" } {CloseWindow 1 1 Null null Nil 0 0 0 0 0 0 Window "close_window" "Close Window" "Closes an opened window." "" }
{ToggleFullscreen 1 1 Null null Nil 0 0 0 0 0 0 Window "toggle_fullscreen" "Toggle Fullscreen" "Toggles fullscreen view on the active window." "" } {ToggleFullscreen 1 1 Null null Nil 0 0 0 0 0 0 Window "toggle_fullscreen" "Toggle Fullscreen" "Toggles fullscreen view on the active window." "" }
//- rjf: confirmations //- rjf: popups
{ConfirmAccept 0 1 Null null Nil 0 0 0 0 0 0 Null "confirm_accept" "Confirm Accept" "Accepts the active confirmation prompt." "" } {PopupAccept 0 1 Null null Nil 0 0 0 0 0 0 Null "popup_accept" "Popup Accept" "Accepts the active popup prompt." "" }
{ConfirmCancel 0 1 Null null Nil 0 0 0 0 0 0 Null "confirm_cancel" "Confirm Cancel" "Cancels the active confirmation prompt." "" } {PopupCancel 0 1 Null null Nil 0 0 0 0 0 0 Null "popup_cancel" "Popup Cancel" "Cancels the active popup prompt." "" }
//- rjf: panel splitting //- rjf: panel splitting
{ResetToDefaultPanels 1 1 Null null Nil 0 0 0 0 0 0 Window "reset_to_default_panels" "Reset To Default Panel Layout" "Resets the window to the default panel layout." "panel" } {ResetToDefaultPanels 1 1 Null null Nil 0 0 0 0 0 0 Window "reset_to_default_panels" "Reset To Default Panel Layout" "Resets the window to the default panel layout." "panel" }
+64 -64
View File
@@ -1115,7 +1115,7 @@ rd_name_alloc(String8 string)
// which is not undoable; the free lists we control, and are thus // which is not undoable; the free lists we control, and are thus
// trivially undoable) // trivially undoable)
// //
D_NameChunkNode *node = 0; RD_NameChunkNode *node = 0;
for(;node == 0;) for(;node == 0;)
{ {
node = rd_state->free_name_chunks[bucket_idx]; node = rd_state->free_name_chunks[bucket_idx];
@@ -1126,8 +1126,8 @@ rd_name_alloc(String8 string)
if(bucket_idx == ArrayCount(rd_state->free_name_chunks)-1) if(bucket_idx == ArrayCount(rd_state->free_name_chunks)-1)
{ {
node = 0; node = 0;
D_NameChunkNode *prev = 0; RD_NameChunkNode *prev = 0;
for(D_NameChunkNode *n = rd_state->free_name_chunks[bucket_idx]; for(RD_NameChunkNode *n = rd_state->free_name_chunks[bucket_idx];
n != 0; n != 0;
prev = n, n = n->next) prev = n, n = n->next)
{ {
@@ -1165,7 +1165,7 @@ rd_name_alloc(String8 string)
chunk_size = u64_up_to_pow2(string.size); chunk_size = u64_up_to_pow2(string.size);
} }
U8 *chunk_memory = push_array(rd_state->arena, U8, chunk_size); U8 *chunk_memory = push_array(rd_state->arena, U8, chunk_size);
D_NameChunkNode *chunk = (D_NameChunkNode *)chunk_memory; RD_NameChunkNode *chunk = (RD_NameChunkNode *)chunk_memory;
SLLStackPush(rd_state->free_name_chunks[bucket_idx], chunk); SLLStackPush(rd_state->free_name_chunks[bucket_idx], chunk);
} }
} }
@@ -1181,7 +1181,7 @@ rd_name_release(String8 string)
{ {
if(string.size == 0) {return;} if(string.size == 0) {return;}
U64 bucket_idx = rd_name_bucket_idx_from_string_size(string.size); U64 bucket_idx = rd_name_bucket_idx_from_string_size(string.size);
D_NameChunkNode *node = (D_NameChunkNode *)string.str; RD_NameChunkNode *node = (RD_NameChunkNode *)string.str;
node->size = u64_up_to_pow2(string.size); node->size = u64_up_to_pow2(string.size);
SLLStackPush(rd_state->free_name_chunks[bucket_idx], node); SLLStackPush(rd_state->free_name_chunks[bucket_idx], node);
} }
@@ -1500,7 +1500,7 @@ rd_possible_overrides_from_file_path(Arena *arena, String8 file_path)
PathStyle pth_style = PathStyle_Relative; PathStyle pth_style = PathStyle_Relative;
String8List pth_parts = path_normalized_list_from_string(scratch.arena, file_path, &pth_style); String8List pth_parts = path_normalized_list_from_string(scratch.arena, file_path, &pth_style);
{ {
RD_EntityList links = d_query_cached_entity_list_with_kind(RD_EntityKind_FilePathMap); RD_EntityList links = rd_query_cached_entity_list_with_kind(RD_EntityKind_FilePathMap);
for(RD_EntityNode *n = links.first; n != 0; n = n->next) for(RD_EntityNode *n = links.first; n != 0; n = n->next)
{ {
//- rjf: unpack link //- rjf: unpack link
@@ -1665,7 +1665,7 @@ internal RD_Entity *
rd_entity_from_name_and_kind(String8 string, RD_EntityKind kind) rd_entity_from_name_and_kind(String8 string, RD_EntityKind kind)
{ {
RD_Entity *result = &d_nil_entity; RD_Entity *result = &d_nil_entity;
RD_EntityList all_of_this_kind = d_query_cached_entity_list_with_kind(kind); RD_EntityList all_of_this_kind = rd_query_cached_entity_list_with_kind(kind);
for(RD_EntityNode *n = all_of_this_kind.first; n != 0; n = n->next) for(RD_EntityNode *n = all_of_this_kind.first; n != 0; n = n->next)
{ {
if(str8_match(n->entity->string, string, 0)) if(str8_match(n->entity->string, string, 0))
@@ -2738,13 +2738,13 @@ rd_window_frame(RD_Window *ws)
//- rjf: unpack context //- rjf: unpack context
// //
B32 window_is_focused = os_window_is_focused(ws->os) || ws->window_temporarily_focused_ipc; B32 window_is_focused = os_window_is_focused(ws->os) || ws->window_temporarily_focused_ipc;
B32 confirm_open = rd_state->confirm_active; B32 popup_open = rd_state->popup_active;
B32 query_is_open = !rd_view_is_nil(ws->query_view_stack_top); B32 query_is_open = !rd_view_is_nil(ws->query_view_stack_top);
B32 hover_eval_is_open = (!confirm_open && B32 hover_eval_is_open = (!popup_open &&
ws->hover_eval_string.size != 0 && ws->hover_eval_string.size != 0 &&
ws->hover_eval_first_frame_idx+20 < ws->hover_eval_last_frame_idx && ws->hover_eval_first_frame_idx+20 < ws->hover_eval_last_frame_idx &&
rd_state->frame_index-ws->hover_eval_last_frame_idx < 20); rd_state->frame_index-ws->hover_eval_last_frame_idx < 20);
if(!window_is_focused || confirm_open) if(!window_is_focused || popup_open)
{ {
ws->menu_bar_key_held = 0; ws->menu_bar_key_held = 0;
} }
@@ -3912,19 +3912,19 @@ rd_window_frame(RD_Window *ws)
} }
//////////////////////////// ////////////////////////////
//- rjf: confirmation popup //- rjf: popup
// //
{ {
if(rd_state->confirm_t > 0.005f) UI_TextAlignment(UI_TextAlign_Center) UI_Focus(rd_state->confirm_active ? UI_FocusKind_Root : UI_FocusKind_Off) if(rd_state->popup_t > 0.005f) UI_TextAlignment(UI_TextAlign_Center) UI_Focus(rd_state->popup_active ? UI_FocusKind_Root : UI_FocusKind_Off)
{ {
Vec2F32 window_dim = dim_2f32(window_rect); Vec2F32 window_dim = dim_2f32(window_rect);
UI_Box *bg_box = &ui_g_nil_box; UI_Box *bg_box = &ui_g_nil_box;
UI_Palette *palette = ui_build_palette(rd_palette_from_code(RD_PaletteCode_Floating)); UI_Palette *palette = ui_build_palette(rd_palette_from_code(RD_PaletteCode_Floating));
palette->background.w *= rd_state->confirm_t; palette->background.w *= rd_state->popup_t;
UI_Rect(window_rect) UI_Rect(window_rect)
UI_ChildLayoutAxis(Axis2_X) UI_ChildLayoutAxis(Axis2_X)
UI_Focus(UI_FocusKind_On) UI_Focus(UI_FocusKind_On)
UI_BlurSize(10*rd_state->confirm_t) UI_BlurSize(10*rd_state->popup_t)
UI_Palette(palette) UI_Palette(palette)
{ {
bg_box = ui_build_box_from_stringf(UI_BoxFlag_FixedSize| bg_box = ui_build_box_from_stringf(UI_BoxFlag_FixedSize|
@@ -3934,15 +3934,15 @@ rd_window_frame(RD_Window *ws)
UI_BoxFlag_DefaultFocusNav| UI_BoxFlag_DefaultFocusNav|
UI_BoxFlag_DisableFocusOverlay| UI_BoxFlag_DisableFocusOverlay|
UI_BoxFlag_DrawBackgroundBlur| UI_BoxFlag_DrawBackgroundBlur|
UI_BoxFlag_DrawBackground, "###confirm_popup_%p", ws); UI_BoxFlag_DrawBackground, "###popup_%p", ws);
} }
if(rd_state->confirm_active) UI_Parent(bg_box) UI_Transparency(1-rd_state->confirm_t) if(rd_state->popup_active) UI_Parent(bg_box) UI_Transparency(1-rd_state->popup_t)
{ {
ui_ctx_menu_close(); ui_ctx_menu_close();
UI_WidthFill UI_PrefHeight(ui_children_sum(1.f)) UI_Column UI_Padding(ui_pct(1, 0)) UI_WidthFill UI_PrefHeight(ui_children_sum(1.f)) UI_Column UI_Padding(ui_pct(1, 0))
{ {
UI_TextRasterFlags(rd_raster_flags_from_slot(RD_FontSlot_Main)) UI_FontSize(ui_top_font_size()*2.f) UI_PrefHeight(ui_em(3.f, 1.f)) ui_label(rd_state->confirm_title); UI_TextRasterFlags(rd_raster_flags_from_slot(RD_FontSlot_Main)) UI_FontSize(ui_top_font_size()*2.f) UI_PrefHeight(ui_em(3.f, 1.f)) ui_label(rd_state->popup_title);
UI_PrefHeight(ui_em(3.f, 1.f)) UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) ui_label(rd_state->confirm_desc); UI_PrefHeight(ui_em(3.f, 1.f)) UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) ui_label(rd_state->popup_desc);
ui_spacer(ui_em(1.5f, 1.f)); ui_spacer(ui_em(1.5f, 1.f));
UI_Row UI_Padding(ui_pct(1.f, 0.f)) UI_WidthFill UI_PrefHeight(ui_em(5.f, 1.f)) UI_Row UI_Padding(ui_pct(1.f, 0.f)) UI_WidthFill UI_PrefHeight(ui_em(5.f, 1.f))
{ {
@@ -3951,13 +3951,13 @@ rd_window_frame(RD_Window *ws)
RD_Palette(RD_PaletteCode_NeutralPopButton) RD_Palette(RD_PaletteCode_NeutralPopButton)
if(ui_clicked(ui_buttonf("OK")) || (ui_key_match(bg_box->default_nav_focus_hot_key, ui_key_zero()) && ui_slot_press(UI_EventActionSlot_Accept))) if(ui_clicked(ui_buttonf("OK")) || (ui_key_match(bg_box->default_nav_focus_hot_key, ui_key_zero()) && ui_slot_press(UI_EventActionSlot_Accept)))
{ {
rd_cmd(RD_CmdKind_ConfirmAccept); rd_cmd(RD_CmdKind_PopupAccept);
} }
UI_CornerRadius10(ui_top_font_size()*0.25f) UI_CornerRadius10(ui_top_font_size()*0.25f)
UI_CornerRadius11(ui_top_font_size()*0.25f) UI_CornerRadius11(ui_top_font_size()*0.25f)
if(ui_clicked(ui_buttonf("Cancel")) || ui_slot_press(UI_EventActionSlot_Cancel)) if(ui_clicked(ui_buttonf("Cancel")) || ui_slot_press(UI_EventActionSlot_Cancel))
{ {
rd_cmd(RD_CmdKind_ConfirmCancel); rd_cmd(RD_CmdKind_PopupCancel);
} }
} }
ui_spacer(ui_em(3.f, 1.f)); ui_spacer(ui_em(3.f, 1.f));
@@ -4503,7 +4503,7 @@ rd_window_frame(RD_Window *ws)
Assert(ArrayCount(codepoints) == ArrayCount(cmds)); Assert(ArrayCount(codepoints) == ArrayCount(cmds));
rd_cmd_list_menu_buttons(ArrayCount(cmds), cmds, codepoints); rd_cmd_list_menu_buttons(ArrayCount(cmds), cmds, codepoints);
RD_Palette(RD_PaletteCode_Floating) ui_divider(ui_em(1.f, 1.f)); RD_Palette(RD_PaletteCode_Floating) ui_divider(ui_em(1.f, 1.f));
RD_EntityList targets_list = d_query_cached_entity_list_with_kind(RD_EntityKind_Target); RD_EntityList targets_list = rd_query_cached_entity_list_with_kind(RD_EntityKind_Target);
for(RD_EntityNode *n = targets_list.first; n != 0; n = n->next) for(RD_EntityNode *n = targets_list.first; n != 0; n = n->next)
{ {
RD_Entity *target = n->entity; RD_Entity *target = n->entity;
@@ -4708,7 +4708,7 @@ rd_window_frame(RD_Window *ws)
RD_Palette(RD_PaletteCode_NeutralPopButton) RD_Palette(RD_PaletteCode_NeutralPopButton)
{ {
Temp scratch = scratch_begin(0, 0); Temp scratch = scratch_begin(0, 0);
RD_EntityList tasks = d_query_cached_entity_list_with_kind(RD_EntityKind_ConversionTask); RD_EntityList tasks = rd_query_cached_entity_list_with_kind(RD_EntityKind_ConversionTask);
for(RD_EntityNode *n = tasks.first; n != 0; n = n->next) for(RD_EntityNode *n = tasks.first; n != 0; n = n->next)
{ {
RD_Entity *task = n->entity; RD_Entity *task = n->entity;
@@ -4739,8 +4739,8 @@ rd_window_frame(RD_Window *ws)
UI_FontSize(ui_top_font_size()*0.85f) UI_FontSize(ui_top_font_size()*0.85f)
{ {
Temp scratch = scratch_begin(0, 0); Temp scratch = scratch_begin(0, 0);
RD_EntityList targets = d_push_active_target_list(scratch.arena); RD_EntityList targets = rd_push_active_target_list(scratch.arena);
RD_EntityList processes = d_query_cached_entity_list_with_kind(RD_EntityKind_Process); RD_EntityList processes = rd_query_cached_entity_list_with_kind(RD_EntityKind_Process);
B32 have_targets = targets.count != 0; B32 have_targets = targets.count != 0;
B32 can_send_signal = !d_ctrl_targets_running(); B32 can_send_signal = !d_ctrl_targets_running();
B32 can_play = (have_targets && (can_send_signal || d_ctrl_last_run_frame_idx()+4 > rd_state->frame_index)); B32 can_play = (have_targets && (can_send_signal || d_ctrl_last_run_frame_idx()+4 > rd_state->frame_index));
@@ -8531,7 +8531,7 @@ rd_cfg_strings_from_gfx(Arena *arena, String8 root_path, RD_CfgSrc source)
continue; continue;
} }
B32 first = 1; B32 first = 1;
RD_EntityList entities = d_query_cached_entity_list_with_kind(k); RD_EntityList entities = rd_query_cached_entity_list_with_kind(k);
for(RD_EntityNode *n = entities.first; n != 0; n = n->next) for(RD_EntityNode *n = entities.first; n != 0; n = n->next)
{ {
RD_Entity *entity = n->entity; RD_Entity *entity = n->entity;
@@ -9199,10 +9199,10 @@ rd_cfg_path_from_src(RD_CfgSrc src)
//- rjf: entity cache queries //- rjf: entity cache queries
internal RD_EntityList internal RD_EntityList
d_query_cached_entity_list_with_kind(RD_EntityKind kind) rd_query_cached_entity_list_with_kind(RD_EntityKind kind)
{ {
ProfBeginFunction(); ProfBeginFunction();
D_EntityListCache *cache = &rd_state->kind_caches[kind]; RD_EntityListCache *cache = &rd_state->kind_caches[kind];
// rjf: build cached list if we're out-of-date // rjf: build cached list if we're out-of-date
if(cache->alloc_gen != rd_state->kind_alloc_gens[kind]) if(cache->alloc_gen != rd_state->kind_alloc_gens[kind])
@@ -9223,10 +9223,10 @@ d_query_cached_entity_list_with_kind(RD_EntityKind kind)
} }
internal RD_EntityList internal RD_EntityList
d_push_active_target_list(Arena *arena) rd_push_active_target_list(Arena *arena)
{ {
RD_EntityList active_targets = {0}; RD_EntityList active_targets = {0};
RD_EntityList all_targets = d_query_cached_entity_list_with_kind(RD_EntityKind_Target); RD_EntityList all_targets = rd_query_cached_entity_list_with_kind(RD_EntityKind_Target);
for(RD_EntityNode *n = all_targets.first; n != 0; n = n->next) for(RD_EntityNode *n = all_targets.first; n != 0; n = n->next)
{ {
if(!n->entity->disabled) if(!n->entity->disabled)
@@ -9238,10 +9238,10 @@ d_push_active_target_list(Arena *arena)
} }
internal RD_Entity * internal RD_Entity *
d_entity_from_ev_key_and_kind(EV_Key key, RD_EntityKind kind) rd_entity_from_ev_key_and_kind(EV_Key key, RD_EntityKind kind)
{ {
RD_Entity *result = &d_nil_entity; RD_Entity *result = &d_nil_entity;
RD_EntityList list = d_query_cached_entity_list_with_kind(kind); RD_EntityList list = rd_query_cached_entity_list_with_kind(kind);
for(RD_EntityNode *n = list.first; n != 0; n = n->next) for(RD_EntityNode *n = list.first; n != 0; n = n->next)
{ {
RD_Entity *entity = n->entity; RD_Entity *entity = n->entity;
@@ -9497,7 +9497,7 @@ rd_init(CmdLine *cmdln)
rd_state->entities_count = 0; rd_state->entities_count = 0;
rd_state->entities_root = rd_entity_alloc(&d_nil_entity, RD_EntityKind_Root); rd_state->entities_root = rd_entity_alloc(&d_nil_entity, RD_EntityKind_Root);
rd_state->key_map_arena = arena_alloc(); rd_state->key_map_arena = arena_alloc();
rd_state->confirm_arena = arena_alloc(); rd_state->popup_arena = arena_alloc();
rd_state->view_spec_table_size = 256; rd_state->view_spec_table_size = 256;
rd_state->view_spec_table = push_array(arena, RD_ViewSpec *, rd_state->view_spec_table_size); rd_state->view_spec_table = push_array(arena, RD_ViewSpec *, rd_state->view_spec_table_size);
rd_state->view_rule_spec_table_size = 1024; rd_state->view_rule_spec_table_size = 1024;
@@ -9743,7 +9743,7 @@ rd_frame(void)
////////////////////////////// //////////////////////////////
//- rjf: bind change //- rjf: bind change
// //
if(!rd_state->confirm_active && rd_state->bind_change_active) if(!rd_state->popup_active && rd_state->bind_change_active)
{ {
if(os_key_press(&events, os_handle_zero(), 0, OS_Key_Esc)) if(os_key_press(&events, os_handle_zero(), 0, OS_Key_Esc))
{ {
@@ -10044,7 +10044,7 @@ rd_frame(void)
}; };
for(U64 idx = 0; idx < ArrayCount(evallable_kinds); idx += 1) for(U64 idx = 0; idx < ArrayCount(evallable_kinds); idx += 1)
{ {
RD_EntityList entities = d_query_cached_entity_list_with_kind(evallable_kinds[idx]); RD_EntityList entities = rd_query_cached_entity_list_with_kind(evallable_kinds[idx]);
for(RD_EntityNode *n = entities.first; n != 0; n = n->next) for(RD_EntityNode *n = entities.first; n != 0; n = n->next)
{ {
RD_Entity *entity = n->entity; RD_Entity *entity = n->entity;
@@ -10062,7 +10062,7 @@ rd_frame(void)
} }
//- rjf: add macros for all watches which define identifiers //- rjf: add macros for all watches which define identifiers
RD_EntityList watches = d_query_cached_entity_list_with_kind(RD_EntityKind_Watch); RD_EntityList watches = rd_query_cached_entity_list_with_kind(RD_EntityKind_Watch);
for(RD_EntityNode *n = watches.first; n != 0; n = n->next) for(RD_EntityNode *n = watches.first; n != 0; n = n->next)
{ {
RD_Entity *watch = n->entity; RD_Entity *watch = n->entity;
@@ -10223,19 +10223,19 @@ rd_frame(void)
// get confirmation from user // get confirmation from user
CTRL_EntityList processes = ctrl_entity_list_from_kind(d_state->ctrl_entity_store, CTRL_EntityKind_Process); CTRL_EntityList processes = ctrl_entity_list_from_kind(d_state->ctrl_entity_store, CTRL_EntityKind_Process);
UI_Key key = ui_key_from_string(ui_key_zero(), str8_lit("lossy_exit_confirmation")); UI_Key key = ui_key_from_string(ui_key_zero(), str8_lit("lossy_exit_confirmation"));
if(processes.count != 0 && !rd_regs()->force_confirm && !ui_key_match(rd_state->confirm_key, key)) if(processes.count != 0 && !rd_regs()->force_confirm && !ui_key_match(rd_state->popup_key, key))
{ {
rd_state->confirm_key = key; rd_state->popup_key = key;
rd_state->confirm_active = 1; rd_state->popup_active = 1;
arena_clear(rd_state->confirm_arena); arena_clear(rd_state->popup_arena);
MemoryZeroStruct(&rd_state->confirm_cmds); MemoryZeroStruct(&rd_state->popup_cmds);
rd_state->confirm_title = push_str8f(rd_state->confirm_arena, "Are you sure you want to exit?"); rd_state->popup_title = push_str8f(rd_state->popup_arena, "Are you sure you want to exit?");
rd_state->confirm_desc = push_str8f(rd_state->confirm_arena, "The debugger is still attached to %slive process%s.", rd_state->popup_desc = push_str8f(rd_state->popup_arena, "The debugger is still attached to %slive process%s.",
processes.count == 1 ? "a " : "", processes.count == 1 ? "a " : "",
processes.count == 1 ? "" : "es"); processes.count == 1 ? "" : "es");
RD_Regs *regs = rd_regs_copy(rd_frame_arena(), rd_regs()); RD_Regs *regs = rd_regs_copy(rd_frame_arena(), rd_regs());
regs->force_confirm = 1; regs->force_confirm = 1;
rd_cmd_list_push_new(rd_state->confirm_arena, &rd_state->confirm_cmds, rd_cmd_kind_info_table[RD_CmdKind_Exit].string, regs); rd_cmd_list_push_new(rd_state->popup_arena, &rd_state->popup_cmds, rd_cmd_kind_info_table[RD_CmdKind_Exit].string, regs);
} }
// rjf: otherwise, actually exit // rjf: otherwise, actually exit
@@ -10307,19 +10307,19 @@ rd_frame(void)
}break; }break;
//- rjf: confirmations //- rjf: confirmations
case RD_CmdKind_ConfirmAccept: case RD_CmdKind_PopupAccept:
{ {
rd_state->confirm_active = 0; rd_state->popup_active = 0;
rd_state->confirm_key = ui_key_zero(); rd_state->popup_key = ui_key_zero();
for(RD_CmdNode *n = rd_state->confirm_cmds.first; n != 0; n = n->next) for(RD_CmdNode *n = rd_state->popup_cmds.first; n != 0; n = n->next)
{ {
rd_push_cmd(n->cmd.name, n->cmd.regs); rd_push_cmd(n->cmd.name, n->cmd.regs);
} }
}break; }break;
case RD_CmdKind_ConfirmCancel: case RD_CmdKind_PopupCancel:
{ {
rd_state->confirm_active = 0; rd_state->popup_active = 0;
rd_state->confirm_key = ui_key_zero(); rd_state->popup_key = ui_key_zero();
}break; }break;
//- rjf: config path saving/loading/applying //- rjf: config path saving/loading/applying
@@ -10500,7 +10500,7 @@ rd_frame(void)
//- rjf: keep track of recent projects //- rjf: keep track of recent projects
if(src == RD_CfgSrc_Project) if(src == RD_CfgSrc_Project)
{ {
RD_EntityList recent_projects = d_query_cached_entity_list_with_kind(RD_EntityKind_RecentProject); RD_EntityList recent_projects = rd_query_cached_entity_list_with_kind(RD_EntityKind_RecentProject);
RD_Entity *recent_project = &d_nil_entity; RD_Entity *recent_project = &d_nil_entity;
for(RD_EntityNode *n = recent_projects.first; n != 0; n = n->next) for(RD_EntityNode *n = recent_projects.first; n != 0; n = n->next)
{ {
@@ -10525,7 +10525,7 @@ rd_frame(void)
RD_EntityKindFlags k_flags = rd_entity_kind_flags_table[k]; RD_EntityKindFlags k_flags = rd_entity_kind_flags_table[k];
if(k_flags & RD_EntityKindFlag_IsSerializedToConfig) if(k_flags & RD_EntityKindFlag_IsSerializedToConfig)
{ {
RD_EntityList entities = d_query_cached_entity_list_with_kind(k); RD_EntityList entities = rd_query_cached_entity_list_with_kind(k);
for(RD_EntityNode *n = entities.first; n != 0; n = n->next) for(RD_EntityNode *n = entities.first; n != 0; n = n->next)
{ {
if(n->entity->cfg_src == src) if(n->entity->cfg_src == src)
@@ -12580,7 +12580,7 @@ rd_frame(void)
// rjf: try to find root folder as if it's inside of a path we've already loaded // rjf: try to find root folder as if it's inside of a path we've already loaded
if(rd_entity_is_nil(root_folder)) if(rd_entity_is_nil(root_folder))
{ {
RD_EntityList all_files = d_query_cached_entity_list_with_kind(RD_EntityKind_File); RD_EntityList all_files = rd_query_cached_entity_list_with_kind(RD_EntityKind_File);
for(RD_EntityNode *n = all_files.first; n != 0; n = n->next) for(RD_EntityNode *n = all_files.first; n != 0; n = n->next)
{ {
if(n->entity->flags & RD_EntityFlag_IsFolder) if(n->entity->flags & RD_EntityFlag_IsFolder)
@@ -13239,7 +13239,7 @@ rd_frame(void)
B32 removed_already_existing = 0; B32 removed_already_existing = 0;
if(kind == RD_CmdKind_ToggleBreakpoint) if(kind == RD_CmdKind_ToggleBreakpoint)
{ {
RD_EntityList bps = d_query_cached_entity_list_with_kind(RD_EntityKind_Breakpoint); RD_EntityList bps = rd_query_cached_entity_list_with_kind(RD_EntityKind_Breakpoint);
for(RD_EntityNode *n = bps.first; n != 0; n = n->next) for(RD_EntityNode *n = bps.first; n != 0; n = n->next)
{ {
RD_Entity *bp = n->entity; RD_Entity *bp = n->entity;
@@ -13291,7 +13291,7 @@ rd_frame(void)
B32 removed_already_existing = 0; B32 removed_already_existing = 0;
if(kind == RD_CmdKind_ToggleWatchPin) if(kind == RD_CmdKind_ToggleWatchPin)
{ {
RD_EntityList wps = d_query_cached_entity_list_with_kind(RD_EntityKind_WatchPin); RD_EntityList wps = rd_query_cached_entity_list_with_kind(RD_EntityKind_WatchPin);
for(RD_EntityNode *n = wps.first; n != 0; n = n->next) for(RD_EntityNode *n = wps.first; n != 0; n = n->next)
{ {
RD_Entity *wp = n->entity; RD_Entity *wp = n->entity;
@@ -13451,7 +13451,7 @@ rd_frame(void)
RD_Entity *entity = rd_entity_from_handle(rd_regs()->entity); RD_Entity *entity = rd_entity_from_handle(rd_regs()->entity);
if(entity->kind == RD_EntityKind_Target) if(entity->kind == RD_EntityKind_Target)
{ {
RD_EntityList all_targets = d_query_cached_entity_list_with_kind(RD_EntityKind_Target); RD_EntityList all_targets = rd_query_cached_entity_list_with_kind(RD_EntityKind_Target);
B32 is_selected = !entity->disabled; B32 is_selected = !entity->disabled;
for(RD_EntityNode *n = all_targets.first; n != 0; n = n->next) for(RD_EntityNode *n = all_targets.first; n != 0; n = n->next)
{ {
@@ -14056,7 +14056,7 @@ rd_frame(void)
// //
D_TargetArray targets = {0}; D_TargetArray targets = {0};
{ {
RD_EntityList target_entities = d_query_cached_entity_list_with_kind(RD_EntityKind_Target); RD_EntityList target_entities = rd_query_cached_entity_list_with_kind(RD_EntityKind_Target);
targets.count = target_entities.count; targets.count = target_entities.count;
targets.v = push_array(scratch.arena, D_Target, targets.count); targets.v = push_array(scratch.arena, D_Target, targets.count);
U64 idx = 0; U64 idx = 0;
@@ -14080,7 +14080,7 @@ rd_frame(void)
// //
D_BreakpointArray breakpoints = {0}; D_BreakpointArray breakpoints = {0};
{ {
RD_EntityList bp_entities = d_query_cached_entity_list_with_kind(RD_EntityKind_Breakpoint); RD_EntityList bp_entities = rd_query_cached_entity_list_with_kind(RD_EntityKind_Breakpoint);
breakpoints.count = bp_entities.count; breakpoints.count = bp_entities.count;
breakpoints.v = push_array(scratch.arena, D_Breakpoint, breakpoints.count); breakpoints.v = push_array(scratch.arena, D_Breakpoint, breakpoints.count);
U64 idx = 0; U64 idx = 0;
@@ -14181,7 +14181,7 @@ rd_frame(void)
// rjf: increment breakpoint hit counts // rjf: increment breakpoint hit counts
if(evt->cause == D_EventCause_UserBreakpoint) if(evt->cause == D_EventCause_UserBreakpoint)
{ {
RD_EntityList user_bps = d_query_cached_entity_list_with_kind(RD_EntityKind_Breakpoint); RD_EntityList user_bps = rd_query_cached_entity_list_with_kind(RD_EntityKind_Breakpoint);
for(RD_EntityNode *n = user_bps.first; n != 0; n = n->next) for(RD_EntityNode *n = user_bps.first; n != 0; n = n->next)
{ {
RD_Entity *bp = n->entity; RD_Entity *bp = n->entity;
@@ -14221,9 +14221,9 @@ rd_frame(void)
// //
{ {
F32 rate = rd_setting_val_from_code(RD_SettingCode_MenuAnimations).s32 ? 1 - pow_f32(2, (-10.f * rd_state->frame_dt)) : 1.f; F32 rate = rd_setting_val_from_code(RD_SettingCode_MenuAnimations).s32 ? 1 - pow_f32(2, (-10.f * rd_state->frame_dt)) : 1.f;
B32 confirm_open = rd_state->confirm_active; B32 popup_open = rd_state->popup_active;
rd_state->confirm_t += rate * ((F32)!!confirm_open-rd_state->confirm_t); rd_state->popup_t += rate * ((F32)!!popup_open-rd_state->popup_t);
if(abs_f32(rd_state->confirm_t - (F32)!!confirm_open) > 0.005f) if(abs_f32(rd_state->popup_t - (F32)!!popup_open) > 0.005f)
{ {
rd_request_frame(); rd_request_frame();
} }
+55 -49
View File
@@ -899,15 +899,15 @@ struct RD_EvalVizViewCacheSlot
//////////////////////////////// ////////////////////////////////
//~ rjf: Main Per-Process Graphical State //~ rjf: Main Per-Process Graphical State
typedef struct D_NameChunkNode D_NameChunkNode; typedef struct RD_NameChunkNode RD_NameChunkNode;
struct D_NameChunkNode struct RD_NameChunkNode
{ {
D_NameChunkNode *next; RD_NameChunkNode *next;
U64 size; U64 size;
}; };
typedef struct D_EntityListCache D_EntityListCache; typedef struct RD_EntityListCache RD_EntityListCache;
struct D_EntityListCache struct RD_EntityListCache
{ {
Arena *arena; Arena *arena;
U64 alloc_gen; U64 alloc_gen;
@@ -917,39 +917,70 @@ struct D_EntityListCache
typedef struct RD_State RD_State; typedef struct RD_State RD_State;
struct RD_State struct RD_State
{ {
// rjf: top-level state // rjf: basics
Arena *arena; Arena *arena;
B32 quit; B32 quit;
F64 time_in_seconds;
// rjf: log
Log *log; Log *log;
String8 log_path; String8 log_path;
// rjf: frame state // rjf: frame history info
F32 frame_dt;
U64 frame_index; U64 frame_index;
Arena *frame_arenas[2]; Arena *frame_arenas[2];
// rjf: frame time history
U64 frame_time_us_history[64]; U64 frame_time_us_history[64];
U64 num_frames_requested;
F64 time_in_seconds;
// rjf: frame parameters
F32 frame_dt;
// rjf: registers stack // rjf: registers stack
RD_RegsNode base_regs; RD_RegsNode base_regs;
RD_RegsNode *top_regs; RD_RegsNode *top_regs;
// rjf: autosave state
F32 seconds_until_autosave;
// rjf: commands // rjf: commands
Arena *cmds_arena; Arena *cmds_arena;
RD_CmdList cmds; RD_CmdList cmds;
// rjf: frame request state // rjf: popup state
U64 num_frames_requested; UI_Key popup_key;
B32 popup_active;
F32 popup_t;
Arena *popup_arena;
RD_CmdList popup_cmds;
String8 popup_title;
String8 popup_desc;
// rjf: autosave timer // rjf: string search state
F32 seconds_until_autosave; Arena *string_search_arena;
String8 string_search_string;
// rjf: name allocator // rjf: eval visualization view cache
D_NameChunkNode *free_name_chunks[8]; U64 eval_viz_view_cache_slots_count;
RD_EvalVizViewCacheSlot *eval_viz_view_cache_slots;
RD_EvalVizViewCacheNode *eval_viz_view_cache_node_free;
// rjf: contextual hover info
RD_Regs *hover_regs;
RD_Regs *next_hover_regs;
// rjf: icon texture
R_Handle icon_texture;
// rjf: current path
Arena *current_path_arena;
String8 current_path;
//-
// TODO(rjf): TO BE ELIMINATED OR REPLACED VVVVVVVVVVVVVVVV
//-
// rjf: entity state // rjf: entity state
RD_NameChunkNode *free_name_chunks[8];
Arena *entities_arena; Arena *entities_arena;
RD_Entity *entities_base; RD_Entity *entities_base;
U64 entities_count; U64 entities_count;
@@ -961,7 +992,7 @@ struct RD_State
// rjf: entity query caches // rjf: entity query caches
U64 kind_alloc_gens[RD_EntityKind_COUNT]; U64 kind_alloc_gens[RD_EntityKind_COUNT];
D_EntityListCache kind_caches[RD_EntityKind_COUNT]; RD_EntityListCache kind_caches[RD_EntityKind_COUNT];
// rjf: key map table // rjf: key map table
Arena *key_map_arena; Arena *key_map_arena;
@@ -981,19 +1012,6 @@ struct RD_State
UI_Key entity_ctx_menu_key; UI_Key entity_ctx_menu_key;
UI_Key tab_ctx_menu_key; UI_Key tab_ctx_menu_key;
// rjf: confirmation popup state
UI_Key confirm_key;
B32 confirm_active;
F32 confirm_t;
Arena *confirm_arena;
RD_CmdList confirm_cmds;
String8 confirm_title;
String8 confirm_desc;
// rjf: string search state
Arena *string_search_arena;
String8 string_search_string;
// rjf: view specs // rjf: view specs
U64 view_spec_table_size; U64 view_spec_table_size;
RD_ViewSpec **view_spec_table; RD_ViewSpec **view_spec_table;
@@ -1010,11 +1028,6 @@ struct RD_State
B32 last_window_queued_save; B32 last_window_queued_save;
RD_Handle last_focused_window; RD_Handle last_focused_window;
// rjf: eval visualization view cache
U64 eval_viz_view_cache_slots_count;
RD_EvalVizViewCacheSlot *eval_viz_view_cache_slots;
RD_EvalVizViewCacheNode *eval_viz_view_cache_node_free;
// rjf: view state // rjf: view state
RD_View *first_view; RD_View *first_view;
RD_View *last_view; RD_View *last_view;
@@ -1025,10 +1038,6 @@ struct RD_State
// rjf: drag/drop state machine // rjf: drag/drop state machine
RD_DragDropState drag_drop_state; RD_DragDropState drag_drop_state;
// rjf: rich hover info
RD_Regs *hover_regs;
RD_Regs *next_hover_regs;
// rjf: config reading state // rjf: config reading state
Arena *cfg_path_arenas[RD_CfgSrc_COUNT]; Arena *cfg_path_arenas[RD_CfgSrc_COUNT];
String8 cfg_paths[RD_CfgSrc_COUNT]; String8 cfg_paths[RD_CfgSrc_COUNT];
@@ -1049,12 +1058,9 @@ struct RD_State
// rjf: global settings // rjf: global settings
RD_SettingVal cfg_setting_vals[RD_CfgSrc_COUNT][RD_SettingCode_COUNT]; RD_SettingVal cfg_setting_vals[RD_CfgSrc_COUNT][RD_SettingCode_COUNT];
// rjf: icon texture //-
R_Handle icon_texture; // TODO(rjf): TO BE ELIMINATED OR REPLACED ^^^^^^^^^^^^^^^^^^
//-
// rjf: current path
Arena *current_path_arena;
String8 current_path;
}; };
//////////////////////////////// ////////////////////////////////
@@ -1503,9 +1509,9 @@ internal Arena *rd_frame_arena(void);
internal String8 rd_cfg_path_from_src(RD_CfgSrc src); internal String8 rd_cfg_path_from_src(RD_CfgSrc src);
//- rjf: entity cache queries //- rjf: entity cache queries
internal RD_EntityList d_query_cached_entity_list_with_kind(RD_EntityKind kind); internal RD_EntityList rd_query_cached_entity_list_with_kind(RD_EntityKind kind);
internal RD_EntityList d_push_active_target_list(Arena *arena); internal RD_EntityList rd_push_active_target_list(Arena *arena);
internal RD_Entity *d_entity_from_ev_key_and_kind(EV_Key key, RD_EntityKind kind); internal RD_Entity *rd_entity_from_ev_key_and_kind(EV_Key key, RD_EntityKind kind);
//- rjf: config state //- rjf: config state
internal RD_CfgTable *rd_cfg_table(void); internal RD_CfgTable *rd_cfg_table(void);
+27 -27
View File
@@ -6,19 +6,6 @@
// //
// [ ] empty user file causing failure to launch // [ ] empty user file causing failure to launch
// //
// [ ] engine/frontend commands situation
// - currently, there is an interesting bifurcation of commands in the
// frontend; you can either push a command *at a root level*, or push a
// command to a locally-accessible list if you want that command to run
// on the same frame (root level commands are deferred by a frame, since
// the engine must see them first).
// - things would be simpler if there was only a single "push command"
// mechanism, and codepaths only ever saw these commands at most once.
// this would require an alternate strategy of the initial "gather" of
// commands, and instead it would just be a global queue, or something...
// it is a little weird since commands are not just consumed in order...
// - this will clean up the various different ways that codepaths
// parameterize commands.
// [ ] frontend entities vs. engine entities // [ ] frontend entities vs. engine entities
// - currently, the engine has entities like "watch", and the frontend // - currently, the engine has entities like "watch", and the frontend
// has entities like "windows", "panels", and "views". // has entities like "windows", "panels", and "views".
@@ -32,20 +19,6 @@
// all of the stateful windows/panel/view/watch mechanisms, and then // all of the stateful windows/panel/view/watch mechanisms, and then
// the frontend pure-functionally queries stuff like os/r handles // the frontend pure-functionally queries stuff like os/r handles
// on-demand, and then prunes them, immediate-mode cache style. // on-demand, and then prunes them, immediate-mode cache style.
// [ ] command params -> d_regs
// - currently there are two almost-identical concepts relating to commands:
// the parameters struct, and D_Regs. D_Regs is a registers struct which
// is used to manage a stack of contextual information in various debugger
// codepaths. it is used so that codepaths can register information they
// know about, without passing it down to everyone explicitly - but those
// later codepaths can still pass that information along. e.g. a window
// calls into a watch window, watch window calls into visualizer, visualizer
// pushes command, which needs to pass which window it occurred on along.
// - i think D_Regs needs to expand a bit in order to encompass all of the
// things that the command parameters were being used for, but at that point
// commands can just be a spec * regs, and then the push-command API can
// just have ways of overriding regs values explicitly, when the codepath
// needs to be opinionated about which things are affected by which commands
// //
// [ ] transient view timeout releasing // [ ] transient view timeout releasing
// //
@@ -478,6 +451,33 @@
// parameters, and then 99% of the UI code does not have to care. // parameters, and then 99% of the UI code does not have to care.
// [x] @cleanup simplification pass over eval visualization pipeline & types, // [x] @cleanup simplification pass over eval visualization pipeline & types,
// including view rule hooks // including view rule hooks
// [x] engine/frontend commands situation
// - currently, there is an interesting bifurcation of commands in the
// frontend; you can either push a command *at a root level*, or push a
// command to a locally-accessible list if you want that command to run
// on the same frame (root level commands are deferred by a frame, since
// the engine must see them first).
// - things would be simpler if there was only a single "push command"
// mechanism, and codepaths only ever saw these commands at most once.
// this would require an alternate strategy of the initial "gather" of
// commands, and instead it would just be a global queue, or something...
// it is a little weird since commands are not just consumed in order...
// - this will clean up the various different ways that codepaths
// parameterize commands.
// [x] command params -> d_regs
// - currently there are two almost-identical concepts relating to commands:
// the parameters struct, and D_Regs. D_Regs is a registers struct which
// is used to manage a stack of contextual information in various debugger
// codepaths. it is used so that codepaths can register information they
// know about, without passing it down to everyone explicitly - but those
// later codepaths can still pass that information along. e.g. a window
// calls into a watch window, watch window calls into visualizer, visualizer
// pushes command, which needs to pass which window it occurred on along.
// - i think D_Regs needs to expand a bit in order to encompass all of the
// things that the command parameters were being used for, but at that point
// commands can just be a spec * regs, and then the push-command API can
// just have ways of overriding regs values explicitly, when the codepath
// needs to be opinionated about which things are affected by which commands
//////////////////////////////// ////////////////////////////////
//~ rjf: Build Options //~ rjf: Build Options
+28 -28
View File
@@ -199,7 +199,7 @@ rd_code_view_build(Arena *arena, RD_View *view, RD_CodeViewState *cv, RD_CodeVie
// rjf: find visible breakpoints for source code // rjf: find visible breakpoints for source code
ProfScope("find visible breakpoints") ProfScope("find visible breakpoints")
{ {
RD_EntityList bps = d_query_cached_entity_list_with_kind(RD_EntityKind_Breakpoint); RD_EntityList bps = rd_query_cached_entity_list_with_kind(RD_EntityKind_Breakpoint);
for(RD_EntityNode *n = bps.first; n != 0; n = n->next) for(RD_EntityNode *n = bps.first; n != 0; n = n->next)
{ {
RD_Entity *bp = n->entity; RD_Entity *bp = n->entity;
@@ -245,7 +245,7 @@ rd_code_view_build(Arena *arena, RD_View *view, RD_CodeViewState *cv, RD_CodeVie
// rjf: find visible watch pins for source code // rjf: find visible watch pins for source code
ProfScope("find visible watch pins") ProfScope("find visible watch pins")
{ {
RD_EntityList wps = d_query_cached_entity_list_with_kind(RD_EntityKind_WatchPin); RD_EntityList wps = rd_query_cached_entity_list_with_kind(RD_EntityKind_WatchPin);
for(RD_EntityNode *n = wps.first; n != 0; n = n->next) for(RD_EntityNode *n = wps.first; n != 0; n = n->next)
{ {
RD_Entity *wp = n->entity; RD_Entity *wp = n->entity;
@@ -297,7 +297,7 @@ rd_code_view_build(Arena *arena, RD_View *view, RD_CodeViewState *cv, RD_CodeVie
// rjf: find breakpoints mapping to this disasm // rjf: find breakpoints mapping to this disasm
if(dasm_lines) ProfScope("find breakpoints mapping to this disassembly") if(dasm_lines) ProfScope("find breakpoints mapping to this disassembly")
{ {
RD_EntityList bps = d_query_cached_entity_list_with_kind(RD_EntityKind_Breakpoint); RD_EntityList bps = rd_query_cached_entity_list_with_kind(RD_EntityKind_Breakpoint);
for(RD_EntityNode *n = bps.first; n != 0; n = n->next) for(RD_EntityNode *n = bps.first; n != 0; n = n->next)
{ {
RD_Entity *bp = n->entity; RD_Entity *bp = n->entity;
@@ -319,7 +319,7 @@ rd_code_view_build(Arena *arena, RD_View *view, RD_CodeViewState *cv, RD_CodeVie
// rjf: find watch pins mapping to this disasm // rjf: find watch pins mapping to this disasm
if(dasm_lines) ProfScope("find watch pins mapping to this disassembly") if(dasm_lines) ProfScope("find watch pins mapping to this disassembly")
{ {
RD_EntityList pins = d_query_cached_entity_list_with_kind(RD_EntityKind_WatchPin); RD_EntityList pins = rd_query_cached_entity_list_with_kind(RD_EntityKind_WatchPin);
for(RD_EntityNode *n = pins.first; n != 0; n = n->next) for(RD_EntityNode *n = pins.first; n != 0; n = n->next)
{ {
RD_Entity *pin = n->entity; RD_Entity *pin = n->entity;
@@ -1007,7 +1007,7 @@ rd_watch_view_build(RD_View *view, RD_WatchViewState *ewv, B32 modifiable, U32 d
case RD_WatchViewFillKind_Watch: case RD_WatchViewFillKind_Watch:
{ {
mutable_entity_kind = RD_EntityKind_Watch; mutable_entity_kind = RD_EntityKind_Watch;
RD_EntityList watches = d_query_cached_entity_list_with_kind(mutable_entity_kind); RD_EntityList watches = rd_query_cached_entity_list_with_kind(mutable_entity_kind);
for(RD_EntityNode *n = watches.first; n != 0; n = n->next) for(RD_EntityNode *n = watches.first; n != 0; n = n->next)
{ {
RD_Entity *watch = n->entity; RD_Entity *watch = n->entity;
@@ -1036,7 +1036,7 @@ rd_watch_view_build(RD_View *view, RD_WatchViewState *ewv, B32 modifiable, U32 d
{ {
mutable_entity_kind = RD_EntityKind_Breakpoint; mutable_entity_kind = RD_EntityKind_Breakpoint;
ev_view_rule_list_push_string(scratch.arena, &top_level_view_rules, str8_lit("no_addr")); ev_view_rule_list_push_string(scratch.arena, &top_level_view_rules, str8_lit("no_addr"));
RD_EntityList bps = d_query_cached_entity_list_with_kind(mutable_entity_kind); RD_EntityList bps = rd_query_cached_entity_list_with_kind(mutable_entity_kind);
for(RD_EntityNode *n = bps.first; n != 0; n = n->next) for(RD_EntityNode *n = bps.first; n != 0; n = n->next)
{ {
RD_Entity *bp = n->entity; RD_Entity *bp = n->entity;
@@ -1075,7 +1075,7 @@ rd_watch_view_build(RD_View *view, RD_WatchViewState *ewv, B32 modifiable, U32 d
case RD_WatchViewFillKind_WatchPins: case RD_WatchViewFillKind_WatchPins:
{ {
mutable_entity_kind = RD_EntityKind_WatchPin; mutable_entity_kind = RD_EntityKind_WatchPin;
RD_EntityList wps = d_query_cached_entity_list_with_kind(mutable_entity_kind); RD_EntityList wps = rd_query_cached_entity_list_with_kind(mutable_entity_kind);
for(RD_EntityNode *n = wps.first; n != 0; n = n->next) for(RD_EntityNode *n = wps.first; n != 0; n = n->next)
{ {
RD_Entity *wp = n->entity; RD_Entity *wp = n->entity;
@@ -1727,7 +1727,7 @@ rd_watch_view_build(RD_View *view, RD_WatchViewState *ewv, B32 modifiable, U32 d
if(modifiable) if(modifiable)
{ {
RD_WatchViewPoint pt = rd_watch_view_point_from_tbl(&blocks, tbl); RD_WatchViewPoint pt = rd_watch_view_point_from_tbl(&blocks, tbl);
RD_Entity *watch = d_entity_from_ev_key_and_kind(pt.key, mutable_entity_kind); RD_Entity *watch = rd_entity_from_ev_key_and_kind(pt.key, mutable_entity_kind);
if(!rd_entity_is_nil(watch)) if(!rd_entity_is_nil(watch))
{ {
rd_entity_equip_name(watch, new_string); rd_entity_equip_name(watch, new_string);
@@ -1773,7 +1773,7 @@ rd_watch_view_build(RD_View *view, RD_WatchViewState *ewv, B32 modifiable, U32 d
{ {
RD_WatchViewPoint pt = rd_watch_view_point_from_tbl(&blocks, tbl); RD_WatchViewPoint pt = rd_watch_view_point_from_tbl(&blocks, tbl);
ev_key_set_view_rule(eval_view, pt.key, new_string); ev_key_set_view_rule(eval_view, pt.key, new_string);
RD_Entity *watch = d_entity_from_ev_key_and_kind(pt.key, mutable_entity_kind); RD_Entity *watch = rd_entity_from_ev_key_and_kind(pt.key, mutable_entity_kind);
RD_Entity *view_rule = rd_entity_child_from_kind(watch, RD_EntityKind_ViewRule); RD_Entity *view_rule = rd_entity_child_from_kind(watch, RD_EntityKind_ViewRule);
if(new_string.size != 0 && rd_entity_is_nil(view_rule)) if(new_string.size != 0 && rd_entity_is_nil(view_rule))
{ {
@@ -1857,14 +1857,14 @@ rd_watch_view_build(RD_View *view, RD_WatchViewState *ewv, B32 modifiable, U32 d
{ {
RD_WatchViewPoint fallback_pt_prev = rd_watch_view_point_from_tbl(&blocks, v2s64(0, y - 1)); RD_WatchViewPoint fallback_pt_prev = rd_watch_view_point_from_tbl(&blocks, v2s64(0, y - 1));
RD_WatchViewPoint fallback_pt_next = rd_watch_view_point_from_tbl(&blocks, v2s64(0, y + 1)); RD_WatchViewPoint fallback_pt_next = rd_watch_view_point_from_tbl(&blocks, v2s64(0, y + 1));
RD_Entity *watch = d_entity_from_ev_key_and_kind(pt.key, mutable_entity_kind); RD_Entity *watch = rd_entity_from_ev_key_and_kind(pt.key, mutable_entity_kind);
if(!rd_entity_is_nil(watch)) if(!rd_entity_is_nil(watch))
{ {
EV_Key new_cursor_key = empty_row_key; EV_Key new_cursor_key = empty_row_key;
EV_Key new_cursor_parent_key = empty_row_parent_key; EV_Key new_cursor_parent_key = empty_row_parent_key;
if((evt->delta_2s32.x < 0 || evt->delta_2s32.y < 0) && !ev_key_match(ev_key_zero(), fallback_pt_prev.key)) if((evt->delta_2s32.x < 0 || evt->delta_2s32.y < 0) && !ev_key_match(ev_key_zero(), fallback_pt_prev.key))
{ {
RD_Entity *fallback_watch = d_entity_from_ev_key_and_kind(fallback_pt_prev.key, mutable_entity_kind); RD_Entity *fallback_watch = rd_entity_from_ev_key_and_kind(fallback_pt_prev.key, mutable_entity_kind);
if(!rd_entity_is_nil(fallback_watch)) if(!rd_entity_is_nil(fallback_watch))
{ {
new_cursor_key = fallback_pt_prev.key; new_cursor_key = fallback_pt_prev.key;
@@ -1873,7 +1873,7 @@ rd_watch_view_build(RD_View *view, RD_WatchViewState *ewv, B32 modifiable, U32 d
} }
else if(!ev_key_match(ev_key_zero(), fallback_pt_next.key)) else if(!ev_key_match(ev_key_zero(), fallback_pt_next.key))
{ {
RD_Entity *fallback_watch = d_entity_from_ev_key_and_kind(fallback_pt_next.key, mutable_entity_kind); RD_Entity *fallback_watch = rd_entity_from_ev_key_and_kind(fallback_pt_next.key, mutable_entity_kind);
if(!rd_entity_is_nil(fallback_watch)) if(!rd_entity_is_nil(fallback_watch))
{ {
new_cursor_key = fallback_pt_next.key; new_cursor_key = fallback_pt_next.key;
@@ -1889,7 +1889,7 @@ rd_watch_view_build(RD_View *view, RD_WatchViewState *ewv, B32 modifiable, U32 d
// rjf: view rule deletions // rjf: view rule deletions
else if(selection_tbl.min.x <= RD_WatchViewColumnKind_ViewRule && RD_WatchViewColumnKind_ViewRule <= selection_tbl.max.x) else if(selection_tbl.min.x <= RD_WatchViewColumnKind_ViewRule && RD_WatchViewColumnKind_ViewRule <= selection_tbl.max.x)
{ {
RD_Entity *watch = d_entity_from_ev_key_and_kind(pt.key, mutable_entity_kind); RD_Entity *watch = rd_entity_from_ev_key_and_kind(pt.key, mutable_entity_kind);
RD_Entity *view_rule = rd_entity_child_from_kind(watch, RD_EntityKind_ViewRule); RD_Entity *view_rule = rd_entity_child_from_kind(watch, RD_EntityKind_ViewRule);
rd_entity_mark_for_deletion(view_rule); rd_entity_mark_for_deletion(view_rule);
ev_key_set_view_rule(eval_view, pt.key, str8_zero()); ev_key_set_view_rule(eval_view, pt.key, str8_zero());
@@ -1992,16 +1992,16 @@ rd_watch_view_build(RD_View *view, RD_WatchViewState *ewv, B32 modifiable, U32 d
EV_Key first_watch_key = ev_key_from_block_list_row_num(&blocks, selection_tbl.min.y); EV_Key first_watch_key = ev_key_from_block_list_row_num(&blocks, selection_tbl.min.y);
EV_Key reorder_group_prev_watch_key = ev_key_from_block_list_row_num(&blocks, selection_tbl.min.y - 1); EV_Key reorder_group_prev_watch_key = ev_key_from_block_list_row_num(&blocks, selection_tbl.min.y - 1);
EV_Key reorder_group_next_watch_key = ev_key_from_block_list_row_num(&blocks, selection_tbl.max.y + 1); EV_Key reorder_group_next_watch_key = ev_key_from_block_list_row_num(&blocks, selection_tbl.max.y + 1);
RD_Entity *reorder_group_prev = d_entity_from_ev_key_and_kind(reorder_group_prev_watch_key, mutable_entity_kind); RD_Entity *reorder_group_prev = rd_entity_from_ev_key_and_kind(reorder_group_prev_watch_key, mutable_entity_kind);
RD_Entity *reorder_group_next = d_entity_from_ev_key_and_kind(reorder_group_next_watch_key, mutable_entity_kind); RD_Entity *reorder_group_next = rd_entity_from_ev_key_and_kind(reorder_group_next_watch_key, mutable_entity_kind);
RD_Entity *first_watch = d_entity_from_ev_key_and_kind(first_watch_key, mutable_entity_kind); RD_Entity *first_watch = rd_entity_from_ev_key_and_kind(first_watch_key, mutable_entity_kind);
RD_Entity *last_watch = first_watch; RD_Entity *last_watch = first_watch;
if(!rd_entity_is_nil(first_watch)) if(!rd_entity_is_nil(first_watch))
{ {
for(S64 y = selection_tbl.min.y+1; y <= selection_tbl.max.y; y += 1) for(S64 y = selection_tbl.min.y+1; y <= selection_tbl.max.y; y += 1)
{ {
EV_Key key = ev_key_from_block_list_row_num(&blocks, y); EV_Key key = ev_key_from_block_list_row_num(&blocks, y);
RD_Entity *new_last = d_entity_from_ev_key_and_kind(key, mutable_entity_kind); RD_Entity *new_last = rd_entity_from_ev_key_and_kind(key, mutable_entity_kind);
if(!rd_entity_is_nil(new_last)) if(!rd_entity_is_nil(new_last))
{ {
last_watch = new_last; last_watch = new_last;
@@ -2911,8 +2911,8 @@ RD_VIEW_UI_FUNCTION_DEF(getting_started)
UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) UI_FlagsAdd(UI_BoxFlag_DrawTextWeak)
UI_Padding(ui_pct(1, 0)) UI_Focus(UI_FocusKind_Null) UI_Padding(ui_pct(1, 0)) UI_Focus(UI_FocusKind_Null)
{ {
RD_EntityList targets = d_push_active_target_list(scratch.arena); RD_EntityList targets = rd_push_active_target_list(scratch.arena);
RD_EntityList processes = d_query_cached_entity_list_with_kind(RD_EntityKind_Process); RD_EntityList processes = rd_query_cached_entity_list_with_kind(RD_EntityKind_Process);
//- rjf: icon & info //- rjf: icon & info
UI_Padding(ui_em(2.f, 1.f)) UI_Padding(ui_em(2.f, 1.f))
@@ -3952,7 +3952,7 @@ rd_process_info_list_from_query(Arena *arena, String8 query)
U64 attached_process_count = 0; U64 attached_process_count = 0;
U32 *attached_process_pids = 0; U32 *attached_process_pids = 0;
{ {
RD_EntityList processes = d_query_cached_entity_list_with_kind(RD_EntityKind_Process); RD_EntityList processes = rd_query_cached_entity_list_with_kind(RD_EntityKind_Process);
attached_process_count = processes.count; attached_process_count = processes.count;
attached_process_pids = push_array(scratch.arena, U32, attached_process_count); attached_process_pids = push_array(scratch.arena, U32, attached_process_count);
U64 idx = 0; U64 idx = 0;
@@ -4266,7 +4266,7 @@ rd_entity_lister_item_list_from_needle(Arena *arena, RD_EntityKind kind, RD_Enti
{ {
Temp scratch = scratch_begin(&arena, 1); Temp scratch = scratch_begin(&arena, 1);
RD_EntityListerItemList result = {0}; RD_EntityListerItemList result = {0};
RD_EntityList ent_list = d_query_cached_entity_list_with_kind(kind); RD_EntityList ent_list = rd_query_cached_entity_list_with_kind(kind);
for(RD_EntityNode *n = ent_list.first; n != 0; n = n->next) for(RD_EntityNode *n = ent_list.first; n != 0; n = n->next)
{ {
RD_Entity *entity = n->entity; RD_Entity *entity = n->entity;
@@ -4981,7 +4981,7 @@ RD_VIEW_UI_FUNCTION_DEF(targets)
{ {
ProfBeginFunction(); ProfBeginFunction();
Temp scratch = scratch_begin(0, 0); Temp scratch = scratch_begin(0, 0);
RD_EntityList targets_list = d_query_cached_entity_list_with_kind(RD_EntityKind_Target); RD_EntityList targets_list = rd_query_cached_entity_list_with_kind(RD_EntityKind_Target);
RD_EntityFuzzyItemArray targets = rd_entity_fuzzy_item_array_from_entity_list_needle(scratch.arena, &targets_list, string); RD_EntityFuzzyItemArray targets = rd_entity_fuzzy_item_array_from_entity_list_needle(scratch.arena, &targets_list, string);
F32 row_height_px = floor_f32(ui_top_font_size()*2.5f); F32 row_height_px = floor_f32(ui_top_font_size()*2.5f);
@@ -5194,7 +5194,7 @@ RD_VIEW_UI_FUNCTION_DEF(file_path_map)
{ {
ProfBeginFunction(); ProfBeginFunction();
Temp scratch = scratch_begin(0, 0); Temp scratch = scratch_begin(0, 0);
RD_EntityList maps_list = d_query_cached_entity_list_with_kind(RD_EntityKind_FilePathMap); RD_EntityList maps_list = rd_query_cached_entity_list_with_kind(RD_EntityKind_FilePathMap);
RD_EntityArray maps = rd_entity_array_from_list(scratch.arena, &maps_list); RD_EntityArray maps = rd_entity_array_from_list(scratch.arena, &maps_list);
F32 row_height_px = floor_f32(ui_top_font_size()*2.5f); F32 row_height_px = floor_f32(ui_top_font_size()*2.5f);
@@ -5533,9 +5533,9 @@ RD_VIEW_UI_FUNCTION_DEF(scheduler)
RD_SchedulerViewState *sv = rd_view_user_state(view, RD_SchedulerViewState); RD_SchedulerViewState *sv = rd_view_user_state(view, RD_SchedulerViewState);
//- rjf: get entities //- rjf: get entities
RD_EntityList machines = d_query_cached_entity_list_with_kind(RD_EntityKind_Machine); RD_EntityList machines = rd_query_cached_entity_list_with_kind(RD_EntityKind_Machine);
RD_EntityList processes = d_query_cached_entity_list_with_kind(RD_EntityKind_Process); RD_EntityList processes = rd_query_cached_entity_list_with_kind(RD_EntityKind_Process);
RD_EntityList threads = d_query_cached_entity_list_with_kind(RD_EntityKind_Thread); RD_EntityList threads = rd_query_cached_entity_list_with_kind(RD_EntityKind_Thread);
//- rjf: produce list of items; no query -> all entities, in tree; query -> only show threads //- rjf: produce list of items; no query -> all entities, in tree; query -> only show threads
RD_EntityFuzzyItemArray items = {0}; RD_EntityFuzzyItemArray items = {0};
@@ -5843,8 +5843,8 @@ RD_VIEW_UI_FUNCTION_DEF(modules)
F32 *col_pcts[] = {&mv->idx_col_pct, &mv->desc_col_pct, &mv->range_col_pct, &mv->dbg_col_pct}; F32 *col_pcts[] = {&mv->idx_col_pct, &mv->desc_col_pct, &mv->range_col_pct, &mv->dbg_col_pct};
//- rjf: get entities //- rjf: get entities
RD_EntityList processes = d_query_cached_entity_list_with_kind(RD_EntityKind_Process); RD_EntityList processes = rd_query_cached_entity_list_with_kind(RD_EntityKind_Process);
RD_EntityList modules = d_query_cached_entity_list_with_kind(RD_EntityKind_Module); RD_EntityList modules = rd_query_cached_entity_list_with_kind(RD_EntityKind_Module);
//- rjf: make filtered item array //- rjf: make filtered item array
RD_EntityFuzzyItemArray items = {0}; RD_EntityFuzzyItemArray items = {0};