void update(void* instance) { InstancePtr inst = (InstancePtr) instance; MyInstancePtr my = inst->my; FrameBufferAttributes attribs; int xsize = inst->in_b->xsize; int ysize = inst->in_b->ysize; attribs.xsize = xsize; attribs.ysize = ysize; framebuffer_changeAttributes(inst->out_r, &attribs); if (inst->in_cubebits->number != my->old_cubebits) { if(g_cube_bits >= MIN_CUBE_BITS && g_cube_bits <= MAX_CUBE_BITS) g_cube_bits = trim_int(inst->in_cubebits->number, 0, INT_MAX); diceCreateMap(); my->old_cubebits = inst->in_cubebits->number; } if(inst->in_update->number != my->old_update) { diceCreateMap(); my->old_update = inst->in_update->number; } effectv_draw(my->effect, (unsigned char*) inst->in_b->framebuffer, (unsigned char*) inst->out_r->framebuffer, xsize, ysize); }
static int start(effect * e) { dice_t * priv = e->priv; priv->dicemap = malloc(e->video_height * e->video_width * sizeof(char)); if(priv->dicemap == NULL) { return -1; } diceCreateMap(e); priv->state = 1; return 0; }
static void set_parameter(void * data, const char * name, const bg_parameter_value_t *val) { int changed; bg_effectv_plugin_t * vp = data; dice_t * priv = vp->e->priv; if(!name) return; EFFECTV_SET_PARAM_INT(g_cube_bits); if(changed) diceCreateMap(vp->e); }