From c3d7dd19ed1fada9d91237c5a094116ff03f732d Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Sat, 18 Nov 2023 14:09:09 -0800 Subject: til: introduce til_module_t.render_proxy() method Like til_module_t.render_audio(), this hooks into the render path without triggering the implicit fragment clearing of the usual render_fragment/prepare_frame/finish_frame methods. But unlike render_audio(), it receives the full suite of parameters including the fragment pointer. The impetus for this is implementing builtins that serve as a sort of pass-thru or proxy to another module, like the "ref" builtin (which should probably change to use this instead of its current render_fragment() hook). Because sometimes the proxied module isn't something drawing to the fragment, so the implicit fragment clearing shouldn't occur. But if the proxied module /does/ touch the fragment by implementing one of those methods, then the proxy module's use of til_module_render() would still trigger the implicit clear when appropriate. --- src/til.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/til.c') diff --git a/src/til.c b/src/til.c index 9355f5f..e7de53d 100644 --- a/src/til.c +++ b/src/til.c @@ -297,6 +297,8 @@ static void _til_module_render(til_module_context_t *context, til_stream_t *stre */ if (context->module->render_audio) context->module->render_audio(context, stream, ticks); + else if (context->module->render_proxy) + context->module->render_proxy(context, stream, ticks, fragment_ptr); else module_render_fragment(context, stream, til_threads, n_cpus, ticks, fragment_ptr); -- cgit v1.2.1