[Bf-blender-cvs] [ec364df] ui-preview-buttons: minor tweaks/rename API calls
Campbell Barton
noreply at git.blender.org
Mon May 11 04:50:48 CEST 2015
Commit: ec364df6d4e8d40f049b6b5b12e2542378392dcd
Author: Campbell Barton
Date: Mon May 11 12:49:03 2015 +1000
Branches: ui-preview-buttons
https://developer.blender.org/rBec364df6d4e8d40f049b6b5b12e2542378392dcd
minor tweaks/rename API calls
===================================================================
M source/blender/blenkernel/BKE_icons.h
M source/blender/blenkernel/intern/icons.c
M source/blender/makesrna/intern/rna_ID.c
M source/blender/python/intern/bpy_app_previews.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_icons.h b/source/blender/blenkernel/BKE_icons.h
index 729406d..9dc0d2d 100644
--- a/source/blender/blenkernel/BKE_icons.h
+++ b/source/blender/blenkernel/BKE_icons.h
@@ -82,7 +82,10 @@ void BKE_previewimg_freefunc(void *link);
void BKE_previewimg_free(struct PreviewImage **prv);
/* clear the preview image or icon, but does not free it */
-void BKE_previewimg_clear(struct PreviewImage *prv, enum eIconSizes size);
+void BKE_previewimg_clear(struct PreviewImage *prv);
+
+/* clear the preview image or icon at a specific size */
+void BKE_previewimg_clear_single(struct PreviewImage *prv, enum eIconSizes size);
/* free the preview image belonging to the id */
void BKE_previewimg_id_free(struct ID *id);
@@ -100,7 +103,9 @@ void BKE_previewimg_ensure(struct PreviewImage *prv, const int size);
struct PreviewImage *BKE_previewimg_cached_get(const char *name);
-struct PreviewImage *BKE_previewimg_cached_thumbnail_get(
+struct PreviewImage *BKE_previewimg_cached_ensure(const char *name);
+
+struct PreviewImage *BKE_previewimg_cached_thumbnail_read(
const char *name, const char *path, const int source, bool force_update);
void BKE_previewimg_cached_release(const char *name);
diff --git a/source/blender/blenkernel/intern/icons.c b/source/blender/blenkernel/intern/icons.c
index 9971afe..3110470 100644
--- a/source/blender/blenkernel/intern/icons.c
+++ b/source/blender/blenkernel/intern/icons.c
@@ -164,7 +164,6 @@ void BKE_previewimg_freefunc(void *link)
for (i = 0; i < NUM_ICON_SIZES; ++i) {
if (prv->rect[i]) {
MEM_freeN(prv->rect[i]);
- prv->rect[i] = NULL;
}
if (prv->gputexture[i])
GPU_texture_free(prv->gputexture[i]);
@@ -182,12 +181,9 @@ void BKE_previewimg_free(PreviewImage **prv)
}
}
-void BKE_previewimg_clear(struct PreviewImage *prv, enum eIconSizes size)
+void BKE_previewimg_clear_single(struct PreviewImage *prv, enum eIconSizes size)
{
- if (prv->rect[size]) {
- MEM_freeN(prv->rect[size]);
- prv->rect[size] = NULL;
- }
+ MEM_SAFE_FREE(prv->rect[size]);
if (prv->gputexture[size]) {
GPU_texture_free(prv->gputexture[size]);
}
@@ -196,6 +192,14 @@ void BKE_previewimg_clear(struct PreviewImage *prv, enum eIconSizes size)
prv->changed_timestamp[size] = 0;
}
+void BKE_previewimg_clear(struct PreviewImage *prv)
+{
+ int i;
+ for (i = 0; i < NUM_ICON_SIZES; ++i) {
+ BKE_previewimg_clear_single(prv, i);
+ }
+}
+
PreviewImage *BKE_previewimg_copy(PreviewImage *prv)
{
PreviewImage *prv_img = NULL;
@@ -279,31 +283,24 @@ PreviewImage *BKE_previewimg_id_get(ID *id)
return prv_img;
}
+PreviewImage *BKE_previewimg_cached_get(const char *name)
+{
+ return BLI_ghash_lookup(gCachedPreviews, name);
+}
+
/**
* Generate an empty PreviewImage, if not yet existing.
*/
-PreviewImage *BKE_previewimg_cached_get(const char *name)
+PreviewImage *BKE_previewimg_cached_ensure(const char *name)
{
PreviewImage *prv = NULL;
- void **prv_v;
+ void **prv_p;
- prv_v = BLI_ghash_lookup_p(gCachedPreviews, name);
-
- if (prv_v) {
- prv = *prv_v;
- BLI_assert(prv);
- }
-
- if (!prv) {
- prv = BKE_previewimg_create();
- }
-
- if (prv_v) {
- *prv_v = prv;
- }
- else {
- BLI_ghash_insert(gCachedPreviews, (void *)BLI_strdup(name), prv);
+ if (!BLI_ghash_ensure_p_ex(gCachedPreviews, name, &prv_p, (GHashKeyCopyFP)BLI_strdup)) {
+ *prv_p = BKE_previewimg_create();
}
+ prv = *prv_p;
+ BLI_assert(prv);
return prv;
}
@@ -311,7 +308,7 @@ PreviewImage *BKE_previewimg_cached_get(const char *name)
/**
* Generate a PreviewImage from given file path, using thumbnails management, if not yet existing.
*/
-PreviewImage *BKE_previewimg_cached_thumbnail_get(
+PreviewImage *BKE_previewimg_cached_thumbnail_read(
const char *name, const char *path, const int source, bool force_update)
{
PreviewImage *prv = NULL;
@@ -328,8 +325,7 @@ PreviewImage *BKE_previewimg_cached_thumbnail_get(
const char *prv_deferred_data = PRV_DEFERRED_DATA(prv);
if (((int)prv_deferred_data[0] == source) && STREQ(&prv_deferred_data[1], path)) {
/* If same path, no need to re-allocate preview, just clear it up. */
- BKE_previewimg_clear(prv, ICON_SIZE_ICON);
- BKE_previewimg_clear(prv, ICON_SIZE_PREVIEW);
+ BKE_previewimg_clear(prv);
}
else {
BKE_previewimg_free(&prv);
@@ -354,7 +350,7 @@ PreviewImage *BKE_previewimg_cached_thumbnail_get(
*prv_v = prv;
}
else {
- BLI_ghash_insert(gCachedPreviews, (void *)BLI_strdup(name), prv);
+ BLI_ghash_insert(gCachedPreviews, BLI_strdup(name), prv);
}
}
@@ -363,7 +359,7 @@ PreviewImage *BKE_previewimg_cached_thumbnail_get(
void BKE_previewimg_cached_release(const char *name)
{
- PreviewImage *prv = BLI_ghash_popkey(gCachedPreviews, (void *)name, MEM_freeN);
+ PreviewImage *prv = BLI_ghash_popkey(gCachedPreviews, name, MEM_freeN);
if (prv) {
if (prv->icon_id) {
diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c
index 65677c8..cb58313 100644
--- a/source/blender/makesrna/intern/rna_ID.c
+++ b/source/blender/makesrna/intern/rna_ID.c
@@ -430,7 +430,7 @@ static void rna_Preview_is_custom_set(PointerRNA *ptr, int value, enum eIconSize
prv_img->flag[size] |= PRV_CHANGED;
- BKE_previewimg_clear(prv_img, size);
+ BKE_previewimg_clear_single(prv_img, size);
}
static void rna_Preview_size_get(PointerRNA *ptr, int *values, enum eIconSizes size)
diff --git a/source/blender/python/intern/bpy_app_previews.c b/source/blender/python/intern/bpy_app_previews.c
index f0803dd..a1d85f4 100644
--- a/source/blender/python/intern/bpy_app_previews.c
+++ b/source/blender/python/intern/bpy_app_previews.c
@@ -77,7 +77,7 @@ static PyObject *app_previews_meth_new(PyObject *UNUSED(self), PyObject *args, P
return NULL;
}
- prv = BKE_previewimg_cached_get(name);
+ prv = BKE_previewimg_cached_ensure(name);
RNA_pointer_create(NULL, &RNA_ImagePreview, prv, &ptr);
return pyrna_struct_CreatePyObject(&ptr);
@@ -134,7 +134,7 @@ static PyObject *app_previews_meth_load(PyObject *UNUSED(self), PyObject *args,
return NULL;
}
- prv = BKE_previewimg_cached_thumbnail_get(name, path, path_type, force_reload);
+ prv = BKE_previewimg_cached_thumbnail_read(name, path, path_type, force_reload);
RNA_pointer_create(NULL, &RNA_ImagePreview, prv, &ptr);
return pyrna_struct_CreatePyObject(&ptr);
More information about the Bf-blender-cvs
mailing list