summaryrefslogtreecommitdiff
path: root/src/modules/pixbounce
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/pixbounce')
-rw-r--r--src/modules/pixbounce/pixbounce.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/modules/pixbounce/pixbounce.c b/src/modules/pixbounce/pixbounce.c
index c26eb88..310a509 100644
--- a/src/modules/pixbounce/pixbounce.c
+++ b/src/modules/pixbounce/pixbounce.c
@@ -118,10 +118,10 @@ static void * pixbounce_create_context(unsigned ticks, unsigned num_cpus, til_se
return NULL;
ctxt->n_cpus = num_cpus;
- ctxt->x = 0;
- ctxt->y = 8;
- ctxt->x_dir = 1;
- ctxt->y_dir = 1;
+ ctxt->x = -1;
+ ctxt->y = -1;
+ ctxt->x_dir = 0;
+ ctxt->y_dir = 0;
ctxt->pix_num = rand() % num_pix;
return ctxt;
@@ -140,9 +140,6 @@ static void pixbounce_render_fragment(void *context, unsigned ticks, unsigned cp
int multiplier_x, multiplier_y, multiplier;
int width = fragment->width, height = fragment->height;
- /* blank the frame */
- til_fb_fragment_clear(fragment);
-
/* check for very small fragment */
if(pix_width*2>width||pix_height*2>height)
return;
@@ -157,6 +154,17 @@ static void pixbounce_render_fragment(void *context, unsigned ticks, unsigned cp
multiplier = multiplier_x * 77 / 100;
}
+ /* randomly initialize location and direction of pixmap */
+ if(ctxt->x == -1) {
+ ctxt->x = rand() % (width - pix_width * multiplier) + 1;
+ ctxt->y = rand() % (height - pix_height * multiplier) + 1;
+ ctxt->x_dir = (rand() % 3) - 1;
+ ctxt->y_dir = (rand() % 3) - 1;
+ }
+
+ /* blank the frame */
+ til_fb_fragment_clear(fragment);
+
/* translate pixmap to multiplier size and draw it to the fragment */
for(int cursor_y=0; cursor_y < pix_height*multiplier; cursor_y++) {
for(int cursor_x=0; cursor_x < pix_width*multiplier; cursor_x++) {
© All Rights Reserved