summaryrefslogtreecommitdiff
path: root/src/modules/roto
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2023-06-15 18:19:50 -0700
committerVito Caputo <vcaputo@pengaru.com>2023-06-15 18:19:50 -0700
commit64a5b1747b41f8dcb1d8cf6e6108c386e2904585 (patch)
tree127587127e7b92b6eecf13afbc216e1e7ed67d1e /src/modules/roto
parentf89689ba9f198755a3f2ce05dec11b7ea185f374 (diff)
til_module_context: s/ticks/last_ticks/ in context
And just maintain it as the last ticks value after rendering with the context... A couple modules were already doing this manually in an ad-hoc fashion, just make it a general thing. Updated those modules to reflect the new situation Especially in a rkt world with modules::mixer doing fades, it becomes common to render the same context twice in the same frame for the blending. We need to prevent accelerated animations in such situations. For now let's just rely on ticks in a delta-T fashion to prevent animating the context when ticks is the same. modules::stars in particular needs this fixed up, upcoming commit
Diffstat (limited to 'src/modules/roto')
-rw-r--r--src/modules/roto/roto.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/modules/roto/roto.c b/src/modules/roto/roto.c
index 8564870..28e27e1 100644
--- a/src/modules/roto/roto.c
+++ b/src/modules/roto/roto.c
@@ -189,9 +189,9 @@ static void roto_prepare_frame(til_module_context_t *context, til_stream_t *stre
*res_frame_plan = (til_frame_plan_t){ .fragmenter = til_fragmenter_slice_per_cpu };
// This governs the rotation and color cycle.
- if (ticks != context->ticks) {
+ if (ticks != context->last_ticks) {
ctxt->r += FIXED_TO_INT(FIXED_MULT(FIXED_SIN(ctxt->rr), FIXED_NEW(16)));
- ctxt->rr += (ticks - context->ticks) >> 2;
+ ctxt->rr += (ticks - context->last_ticks) >> 2;
/* Vary the colors, this is just a mashup of sinusoidal rgb values. */
ctxt->palette[0].r = (FIXED_MULT(FIXED_COS(ctxt->rr), FIXED_NEW(127)) + FIXED_NEW(128));
@@ -201,8 +201,6 @@ static void roto_prepare_frame(til_module_context_t *context, til_stream_t *stre
ctxt->palette[1].r = (FIXED_MULT(FIXED_SIN(ctxt->rr / 2), FIXED_NEW(127)) + FIXED_NEW(128));
ctxt->palette[1].g = (FIXED_MULT(FIXED_COS(ctxt->rr / 2), FIXED_NEW(127)) + FIXED_NEW(128));
ctxt->palette[1].b = (FIXED_MULT(FIXED_SIN(ctxt->rr), FIXED_NEW(127)) + FIXED_NEW(128));
-
- context->ticks = ticks;
}
}
© All Rights Reserved