Add st_texture_cache_load
Function for caching texture data from an arbitrary origin. https://bugzilla.gnome.org/show_bug.cgi?id=607500
This commit is contained in:
parent
394e01850b
commit
176487834a
@ -830,6 +830,45 @@ st_texture_cache_bind_pixbuf_property (StTextureCache *cache,
|
|||||||
return CLUTTER_ACTOR(texture);
|
return CLUTTER_ACTOR(texture);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* st_texture_cache_load:
|
||||||
|
* @cache: A #StTextureCache
|
||||||
|
* @key: Arbitrary string used to refer to item
|
||||||
|
* @policy: Caching policy
|
||||||
|
* @load: Function to create the texture, if not already cached
|
||||||
|
* @data: User data passed to @load
|
||||||
|
* @error: A #GError
|
||||||
|
*
|
||||||
|
* Load an arbitrary texture, caching it. The string chosen for @key
|
||||||
|
* should be of the form "type-prefix:type-uuid". For example,
|
||||||
|
* "url:file:///usr/share/icons/hicolor/48x48/apps/firefox.png", or
|
||||||
|
* "stock-icon:gtk-ok".
|
||||||
|
*
|
||||||
|
* Returns: (transfer full): A newly-referenced handle to the texture
|
||||||
|
*/
|
||||||
|
CoglHandle
|
||||||
|
st_texture_cache_load (StTextureCache *cache,
|
||||||
|
const char *key,
|
||||||
|
StTextureCachePolicy policy,
|
||||||
|
StTextureCacheLoader load,
|
||||||
|
void *data,
|
||||||
|
GError **error)
|
||||||
|
{
|
||||||
|
CoglHandle texture;
|
||||||
|
|
||||||
|
texture = g_hash_table_lookup (cache->priv->keyed_cache, key);
|
||||||
|
if (!texture)
|
||||||
|
{
|
||||||
|
texture = load (cache, key, data, error);
|
||||||
|
if (texture)
|
||||||
|
g_hash_table_insert (cache->priv->keyed_cache, g_strdup (key), texture);
|
||||||
|
else
|
||||||
|
return COGL_INVALID_HANDLE;
|
||||||
|
}
|
||||||
|
cogl_texture_ref (texture);
|
||||||
|
return texture;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* create_texture_and_ensure_request:
|
* create_texture_and_ensure_request:
|
||||||
* @cache:
|
* @cache:
|
||||||
|
@ -101,6 +101,15 @@ ClutterActor *st_texture_cache_load_from_raw (StTextureCache *cache,
|
|||||||
int size,
|
int size,
|
||||||
GError **error);
|
GError **error);
|
||||||
|
|
||||||
|
typedef CoglHandle (*StTextureCacheLoader) (StTextureCache *cache, const char *key, void *data, GError **error);
|
||||||
|
|
||||||
|
CoglHandle st_texture_cache_load (StTextureCache *cache,
|
||||||
|
const char *key,
|
||||||
|
StTextureCachePolicy policy,
|
||||||
|
StTextureCacheLoader load,
|
||||||
|
void *data,
|
||||||
|
GError **error);
|
||||||
|
|
||||||
gboolean st_texture_cache_pixbuf_equal (StTextureCache *cache, GdkPixbuf *a, GdkPixbuf *b);
|
gboolean st_texture_cache_pixbuf_equal (StTextureCache *cache, GdkPixbuf *a, GdkPixbuf *b);
|
||||||
|
|
||||||
#endif /* __ST_TEXTURE_CACHE_H__ */
|
#endif /* __ST_TEXTURE_CACHE_H__ */
|
||||||
|
Loading…
Reference in New Issue
Block a user