From 9262938b2f4c7215c6060da057990c07517e4d4c Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Wed, 7 Oct 2026 13:05:08 -0700 Subject: [PATCH] raddbg: store connected remote controller address correctly, ui: fix tooltips escaping window --- project.raddbg | 2 +- src/raddbg/generated/raddbg.meta.c | 4 ++-- src/raddbg/raddbg.mdesk | 4 ++-- src/raddbg/raddbg_core.c | 19 +++++++++++-------- src/raddbg/raddbg_core.h | 1 + src/raddbg/raddbg_main.c | 9 +++++---- src/ui/ui_core.c | 10 +++++----- 7 files changed, 27 insertions(+), 22 deletions(-) diff --git a/project.raddbg b/project.raddbg index fc0f4280..08f38bb0 100755 --- a/project.raddbg +++ b/project.raddbg @@ -7,6 +7,7 @@ target: working_directory: build arguments: "--user:raddbg_test.user" debug_subprocesses: 0 + enabled: 1 } target: { @@ -35,7 +36,6 @@ target: executable: "build/raddbg" working_directory: build arguments: "--user:raddbg_test.user" - enabled: 1 } target: { diff --git a/src/raddbg/generated/raddbg.meta.c b/src/raddbg/generated/raddbg.meta.c index cbe210e7..039ab39d 100644 --- a/src/raddbg/generated/raddbg.meta.c +++ b/src/raddbg/generated/raddbg.meta.c @@ -224,7 +224,7 @@ RD_VocabInfo rd_vocab_info_table[374] = {str8_lit_comp("eval"), str8_lit_comp(""), str8_lit_comp("Eval"), str8_lit_comp(""), RD_IconKind_Null}, {str8_lit_comp("line_from_vaddr"), str8_lit_comp(""), str8_lit_comp("Line From Virtual Address"), str8_lit_comp(""), RD_IconKind_Null}, {str8_lit_comp("remote_controller_connect"), str8_lit_comp(""), str8_lit_comp("Remote Controller Connect"), str8_lit_comp(""), RD_IconKind_Null}, -{str8_lit_comp("remote_controller_connect"), str8_lit_comp(""), str8_lit_comp("Remote Controller Connect"), str8_lit_comp(""), RD_IconKind_Null}, +{str8_lit_comp("remote_controller_disconnect"), str8_lit_comp(""), str8_lit_comp("Remote Controller Disconnect"), str8_lit_comp(""), RD_IconKind_Null}, {str8_lit_comp("wm_event"), str8_lit_comp(""), str8_lit_comp("OS Event"), str8_lit_comp(""), RD_IconKind_Null}, {str8_lit_comp("select_thread"), str8_lit_comp(""), str8_lit_comp("Select Thread"), str8_lit_comp(""), RD_IconKind_Thread}, {str8_lit_comp("select_unwind"), str8_lit_comp(""), str8_lit_comp("Select Unwind"), str8_lit_comp(""), RD_IconKind_Null}, @@ -652,7 +652,7 @@ RD_CmdKindInfo rd_cmd_kind_info_table[261] = { str8_lit_comp("eval"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), (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_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Expr, str8_lit_comp("")}}, { str8_lit_comp("line_from_vaddr"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), (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_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Vaddr, str8_lit_comp("")}}, { str8_lit_comp("remote_controller_connect"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), (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_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp("")}}, -{ str8_lit_comp("remote_controller_connect"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), (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_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp("")}}, +{ str8_lit_comp("remote_controller_disconnect"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), (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_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp("")}}, { str8_lit_comp("wm_event"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp("")}}, { str8_lit_comp("select_thread"), str8_lit_comp("Selects a thread."), str8_lit_comp(""), str8_lit_comp(""), (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_Floating*1)|(RD_QueryFlag_Required*1), RD_RegSlot_Thread, str8_lit_comp("query:threads")}}, { str8_lit_comp("select_unwind"), str8_lit_comp("Selects an unwind frame number for the selected thread."), str8_lit_comp(""), str8_lit_comp(""), (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_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp("query:call_stack")}}, diff --git a/src/raddbg/raddbg.mdesk b/src/raddbg/raddbg.mdesk index 836bff3e..c069fac5 100644 --- a/src/raddbg/raddbg.mdesk +++ b/src/raddbg/raddbg.mdesk @@ -1047,8 +1047,8 @@ RD_CmdTable: // | | | | {Eval 0 0 1 "" Expr 0 0 0 0 0 0 0 Null "eval" "Eval" "" "" "" } {LineFromVAddr 0 0 1 "" Vaddr 0 0 0 0 0 0 0 Null "line_from_vaddr" "Line From Virtual Address" "" "" "" } {RemoteControllerConnect 0 0 1 "" Null 0 0 0 0 0 0 0 Null "remote_controller_connect" "Remote Controller Connect" "" "" "" } - {RemoteControllerDisconnect 0 0 1 "" Null 0 0 0 0 0 0 0 Null "remote_controller_connect" "Remote Controller Connect" "" "" "" } - + {RemoteControllerDisconnect 0 0 1 "" Null 0 0 0 0 0 0 0 Null "remote_controller_disconnect" "Remote Controller Disconnect" "" "" "" } + //- rjf: os event passthrough {WMEvent 0 0 0 "" Null 0 0 0 0 0 0 0 Null "wm_event" "OS Event" "" "" "" } diff --git a/src/raddbg/raddbg_core.c b/src/raddbg/raddbg_core.c index 1e1dfd1c..f1406967 100644 --- a/src/raddbg/raddbg_core.c +++ b/src/raddbg/raddbg_core.c @@ -7912,16 +7912,19 @@ rd_window_frame(void) { CFG_Node *rc = n->v; String8 ip_addr = rc->first->string; - UI_VisualMargin(ui_top_font_size()*0.5f) - UI_CornerRadius(ui_top_font_size()*0.5f) { ui_set_next_pref_width(ui_children_sum(1)); ui_set_next_child_layout_axis(Axis2_X); - UI_Box *rc_box = ui_build_box_from_stringf(UI_BoxFlag_Clickable| - UI_BoxFlag_DrawBackground| - UI_BoxFlag_DrawHotEffects| - UI_BoxFlag_DrawActiveEffects, - "###rc_button"); + UI_Box *rc_box = &ui_nil_box; + UI_VisualMargin(ui_top_font_size()*0.5f) + UI_CornerRadius(ui_top_font_size()*0.5f) + { + rc_box = ui_build_box_from_stringf(UI_BoxFlag_Clickable| + UI_BoxFlag_DrawBackground| + UI_BoxFlag_DrawHotEffects| + UI_BoxFlag_DrawActiveEffects, + "###rc_button"); + } wm_window_push_custom_title_bar_client_area(ws->os, rc_box->rect); UI_Parent(rc_box) UI_PrefWidth(ui_text_dim(10, 0)) @@ -13976,7 +13979,7 @@ rd_frame(void) { CFG_Node *transient = cfg_node_child_from_string(cfg_node_root(), s("transient")); CFG_Node *ctrlr = cfg_node_new(rd_state->cfg, transient, s("remote_controller")); - cfg_node_new(rd_state->cfg, ctrlr, rd_regs()->string); + cfg_node_new(rd_state->cfg, ctrlr, sock_string_from_endpoint(scratch.arena, rd_state->ipc_sock_endpoint)); }break; case RD_CmdKind_RemoteControllerDisconnect: { diff --git a/src/raddbg/raddbg_core.h b/src/raddbg/raddbg_core.h index 7015ffd5..1884b2ec 100644 --- a/src/raddbg/raddbg_core.h +++ b/src/raddbg/raddbg_core.h @@ -421,6 +421,7 @@ struct RD_State B32 override_focus_on_stop; S32 frame_depth; U64 frame_eval_memread_endt_us; + SOCK_Endpoint ipc_sock_endpoint; // rjf: installation setting state B32 installed; diff --git a/src/raddbg/raddbg_main.c b/src/raddbg/raddbg_main.c index 84f55d04..a3f69200 100644 --- a/src/raddbg/raddbg_main.c +++ b/src/raddbg/raddbg_main.c @@ -690,8 +690,8 @@ entry_point(CmdLine *cmd_line) d_set_wakeup_hook(wakeup_hook_ctrl); } - //- rjf: set up socket session for ICP - SOCK_Session icp_sock_session = sock_session_open((U16)ipc_port, wakeup_hook_ctrl); + //- rjf: set up socket session for IPC + SOCK_Session ipc_sock_session = sock_session_open((U16)ipc_port, wakeup_hook_ctrl); //- rjf: main application loop { @@ -704,7 +704,7 @@ entry_point(CmdLine *cmd_line) { Temp scratch = scratch_begin(0, 0); String8 packet = {0}; - if(sock_recv(scratch.arena, icp_sock_session, &ipc_protocol, &ipc_endpoint, &packet, 0)) + if(sock_recv(scratch.arena, ipc_sock_session, &ipc_protocol, &ipc_endpoint, &packet, 0)) { // rjf: use header to determine message portion String8 msg = {0}; @@ -761,6 +761,7 @@ entry_point(CmdLine *cmd_line) } rd_request_frame(); ipc_command_frame = 1; + rd_state->ipc_sock_endpoint = ipc_endpoint; } } } @@ -798,7 +799,7 @@ entry_point(CmdLine *cmd_line) str8_list_push_front(scratch.arena, &rd_state->cmd_outputs, str8_struct(&packet_size)); str8_list_push_front(scratch.arena, &rd_state->cmd_outputs, str8_struct(&ipc_packet_magic_start)); String8 msg = str8_list_join(scratch.arena, &rd_state->cmd_outputs, 0); - sock_send(icp_sock_session, ipc_protocol, ipc_endpoint, msg, now_time_us()+5000000); + sock_send(ipc_sock_session, ipc_protocol, ipc_endpoint, msg, now_time_us()+5000000); } } } diff --git a/src/ui/ui_core.c b/src/ui/ui_core.c index 43f5d13b..e383d7a2 100644 --- a/src/ui/ui_core.c +++ b/src/ui/ui_core.c @@ -1256,8 +1256,8 @@ ui_end_build(void) } else { - ui_state->tooltip_root->rect.x0 = 10000; - ui_state->tooltip_root->rect.y0 = 10000; + ui_state->tooltip_root->rect.x0 = ui_state->tooltip_root->rect.x1 = 10000; + ui_state->tooltip_root->rect.y0 = ui_state->tooltip_root->rect.y1 = 10000; } } @@ -1951,8 +1951,8 @@ ui_tooltip_begin_base(void) ui_push_flags(0); ui_push_text_raster_flags(ui_bottom_text_raster_flags()); ui_push_font_size(ui_bottom_font_size()); - ui_push_tag(str8_lit(".")); - ui_push_tag(str8_lit("floating")); + ui_push_tag(s(".")); + ui_push_tag(s("floating")); } internal void @@ -1973,7 +1973,7 @@ ui_tooltip_begin(void) ui_tooltip_begin_base(); ui_set_next_squish(0.1f-ui_state->tooltip_open_t*0.1f); ui_set_next_transparency(1-ui_state->tooltip_open_t); - UI_Flags(UI_BoxFlag_Floating|UI_BoxFlag_DrawBorder|UI_BoxFlag_DrawBackground|UI_BoxFlag_DrawBackgroundBlur|UI_BoxFlag_DrawDropShadow|UI_BoxFlag_SquishAnchored) + UI_Flags(UI_BoxFlag_DrawBorder|UI_BoxFlag_DrawBackground|UI_BoxFlag_DrawBackgroundBlur|UI_BoxFlag_DrawDropShadow|UI_BoxFlag_SquishAnchored) UI_PrefWidth(ui_children_sum(1)) UI_PrefHeight(ui_children_sum(1)) UI_CornerRadius(ui_top_font_size()*0.25f)