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);
}
示例#2
0
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;
  }
示例#3
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);

  }