Commit 5c8619eb authored by Nathaniel Wesley Filardo's avatar Nathaniel Wesley Filardo Committed by Marcel Stör
Browse files

ws2812 mix: add all, then divide (#2032)

This achieves rounding between multiple summed frame buffers
parent ded599f8
...@@ -399,17 +399,19 @@ static int ws2812_buffer_mix(lua_State* L) { ...@@ -399,17 +399,19 @@ static int ws2812_buffer_mix(lua_State* L) {
size_t i; size_t i;
for (i = 0; i < cells; i++) { for (i = 0; i < cells; i++) {
int val = 0; int32_t val = 0;
for (src = 0; src < n_sources; src++) { for (src = 0; src < n_sources; src++) {
val += ((int)(source[src].values[i] * source[src].factor) >> 8); val += (int32_t)(source[src].values[i] * source[src].factor);
} }
val >>= 8;
if (val < 0) { if (val < 0) {
val = 0; val = 0;
} else if (val > 255) { } else if (val > 255) {
val = 255; val = 255;
} }
buffer->values[i] = val; buffer->values[i] = (uint8_t)val;
} }
return 0; return 0;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment