From 3e057a6365ba6793531ba2930aa53453ee3f0d8e Mon Sep 17 00:00:00 2001 From: Michael Smith Date: Fri, 28 Nov 2025 22:28:17 +0000 Subject: Fix sst_mouse_factor always being hidden Kind of unpleasant and probably something to revisit at some point to see if there's a more straightforward approach we can come up with. --- src/con_.h | 6 ++++++ src/rinput.c | 7 +++++-- src/sst.c | 1 + 3 files changed, 12 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/con_.h b/src/con_.h index a10488b..8bef5d0 100644 --- a/src/con_.h +++ b/src/con_.h @@ -464,6 +464,12 @@ void con_regcmd(struct con_cmd *c); * doing so. In practice this means anything that's not OE. On OE, these * functions currently just do nothing, although it would be possible in theory * to patch in command-hiding support if deemed important enough. + * + * Note: con_hide() will not work on an unregistered command or variable with + * CON_INIT_HIDDEN; this includes any of a feature's commands/variables during + * feature initialisation, except those that are manually registered first. + * In cases where a variable/command is to be registered automatically, the + * CON_INIT_HIDDEN flag can be removed using bitwise ops. */ void con_hide(struct con_cmdbase *b); void con_unhide(struct con_cmdbase *b); diff --git a/src/rinput.c b/src/rinput.c index 554577c..a7ed1a4 100644 --- a/src/rinput.c +++ b/src/rinput.c @@ -205,8 +205,11 @@ INIT { hook_inline_commit(h1.prologue, (void *)&hook_GetCursorPos); hook_inline_commit(h2.prologue, (void *)&hook_SetCursorPos); -ok: con_unhide(&m_rawinput->base); - con_unhide(&sst_mouse_factor->base); +ok: // XXX: this is a little tricky and a little clunky. we have registered + // m_rawinput above but sst_mouse_factor will get auto-registered after init + // returns, so the flags are different. + con_unhide(&m_rawinput->base); + sst_mouse_factor->base.flags &= ~CON_INIT_HIDDEN; return FEAT_OK; e1: DestroyWindow(inwin); diff --git a/src/sst.c b/src/sst.c index 6a0d810..8bdb56c 100644 --- a/src/sst.c +++ b/src/sst.c @@ -270,6 +270,7 @@ static bool already_loaded = false, skip_unload = false; // auto-update message. see below in do_featureinit() static const char *updatenotes = "\ +* Fix sst_mouse_factor being hidden, causing toggle binds to break\n\ "; enum { // used in generated code, must line up with featmsgs arrays below -- cgit v1.2.3-54-g00ecf