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);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to