void *loader_data; //loader specific local data
+ Eina_Bool no_share : 1; //Shareable VFD through multiple file open requests.
Eina_Bool static_viewbox: 1;
Eina_Bool preserve_aspect : 1; //Used in SVG
};
if (vg_entry->vfd)
{
vg_entry->vfd->ref--;
- if (vg_entry->vfd->ref <= 0)
+ if (vg_entry->vfd->ref <= 0 && !vg_entry->vfd->no_share)
{
Eina_Strbuf *hash_key = eina_strbuf_new();
eina_strbuf_append_printf(hash_key, "%s/%s",
hash_key = eina_strbuf_new();
eina_strbuf_append_printf(hash_key, "%s/%s", eina_file_filename_get(file), key);
vfd = eina_hash_find(vg_cache->vfd_hash, eina_strbuf_string_get(hash_key));
- if (!vfd)
+ if (!vfd || vfd->no_share)
{
vfd = _vg_load_from_file(file, key, mmap);
//File exists.
- if (vfd) eina_hash_add(vg_cache->vfd_hash, eina_strbuf_string_get(hash_key), vfd);
+ if (vfd && !vfd->no_share)
+ eina_hash_add(vg_cache->vfd_hash, eina_strbuf_string_get(hash_key), vfd);
}
eina_strbuf_free(hash_key);
return vfd;