diff options
author | 2025-04-16 02:13:01 +0100 | |
---|---|---|
committer | 2025-04-16 21:31:20 +0100 | |
commit | 4fddfa831d2a33ab3eee7ceb5f181c82d5aa78d2 (patch) | |
tree | f62a0fc1a0b3d7ffcd7967b98885453636309686 /src/fov.c | |
parent | 5c805aac744df43dd96f70bc7e39337d9c3a966a (diff) | |
download | sst-4fddfa831d2a33ab3eee7ceb5f181c82d5aa78d2.tar.gz sst-4fddfa831d2a33ab3eee7ceb5f181c82d5aa78d2.zip |
Rework API for inline hooking
This both simplifies and complicates things, but probably hopefully
maybe simplifies things overall. Certainly in cases like the L4D1 demo
thing where there's 3 inline hooks at once, it seems simpler to be able
to batch the fallible stuff to avoid rollbacks. In cases where you only
need one hook, it's a bit more verbose, but what can you do.
Thanks bill for discussing this with me pretty exhaustively and giving a
lot of good input.
I think both of us still kind of hate it actually.
Diffstat (limited to 'src/fov.c')
-rw-r--r-- | src/fov.c | 12 |
1 files changed, 6 insertions, 6 deletions
@@ -100,12 +100,12 @@ INIT { errmsg_errorx("couldn't find SetDefaultFOV function"); return FEAT_INCOMPAT; } - orig_SetDefaultFOV = (SetDefaultFOV_func)hook_inline( - (void *)orig_SetDefaultFOV, (void *)&hook_SetDefaultFOV); - if_cold (!orig_SetDefaultFOV) { - errmsg_errorsys("couldn't hook SetDefaultFOV function"); - return FEAT_FAIL; - } + + struct hook_inline_featsetup_ret h = hook_inline_featsetup( + (void *)orig_SetDefaultFOV, (void **)&orig_SetDefaultFOV, + "SetDefaultFov"); + if_cold (h.err) return h.err; + hook_inline_commit(h.prologue, (void *)&hook_SetDefaultFOV); // we might not be using our cvar but simpler to do this unconditionally fov_desired->cb = &fovcb; |