Beispiel #1
0
static void
_evas_gl_common_shader_binary_hash(Evas_GL_Shared *shared)
{
   if (shared->shaders_checksum)
     return;

   /* This hash makes it sure that if the shaders code changes, then we
    * will not reuse the old binaries. */
   shared->shaders_checksum = eina_stringshare_printf
         ("%#x:%#x",
          eina_hash_superfast(fragment_glsl, strlen(fragment_glsl)),
          eina_hash_superfast(vertex_glsl, strlen(vertex_glsl)));
}
Beispiel #2
0
//FIXME proper hash calculation
Tilehash tile_hash_calc(Filter *f, Rect *area)
{
  Tilehash h;
  char buf[1024];
  int len;
  
  h.filterhash = filter_hash_get(f);
  
  len = sprintf(buf, "%d%d%d%d%d%dtail", h.filterhash->hash, area->corner.x, area->corner.y, area->width, area->height, area->corner.scale);
  
  h.tilehash = eina_hash_superfast(buf, len);
  h.area = *area;
  
  return h;
}
Beispiel #3
0
void filter_hash_recalc(Filter *f)
{
  Filter *next;
  int i;
  int len;
    
  len = snprintf(f->hash.data, 1020, "%u%s", f->hash.prevhash, f->fc->shortname);
  
  if (len >= 1020)
    abort();
  
  for(i=0;i<ea_count(f->settings);i++) {
    len += mt_data_snprint(&f->hash.data[len], 
			   1024-len,
			   ((Meta*)ea_data(f->settings, i))->type,
			   ((Meta*)ea_data(f->settings, i))->data);
    if (len >= 1020)
      abort();
  }
  
  for(i=0;i<ea_count(f->tune);i++) {
    if (!((Meta*)ea_data(f->tune, i))->data) {
      printf("FIXME! no data for tune %d (%s) in %s\n", i, ((Meta*)ea_data(f->tune, i))->name, f->fc->shortname);
      continue;
    }
    //assert(((Meta*)ea_data(f->tune, i))->data);
    len += mt_data_snprint(&f->hash.data[len], 
			   1024-len,
			   ((Meta*)ea_data(f->tune, i))->type,
			   ((Meta*)ea_data(f->tune, i))->data);
    if (len >= 1020)
      abort();
  }
  
  len += snprintf(&f->hash.data[len], 1024-len, "tail");
  
  f->hash.len = len;
  f->hash.hash = eina_hash_superfast(f->hash.data, len);
    
  if (f->node->con_trees_out && ea_count(f->node->con_trees_out)) {
    assert(ea_count(f->node->con_trees_out) == 1);
    
    next = ((Con *)ea_data(f->node->con_trees_out, 0))->sink->filter;
    next->hash.prevhash = f->hash.hash;
    filter_hash_recalc(next);
  }
}