Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/imbuf/CMakeLists.txt11
-rw-r--r--source/blender/imbuf/intern/allocimbuf.c56
2 files changed, 59 insertions, 8 deletions
diff --git a/source/blender/imbuf/CMakeLists.txt b/source/blender/imbuf/CMakeLists.txt
index a03d6ce280d..1b190ae96de 100644
--- a/source/blender/imbuf/CMakeLists.txt
+++ b/source/blender/imbuf/CMakeLists.txt
@@ -23,6 +23,11 @@
#
# ***** END GPL LICENSE BLOCK *****
+if(WITH_CODEC_FFMPEG)
+ # FFMPEG gives warnigns which are hard to avoid across multiple versions.
+ remove_strict_flags()
+endif()
+
set(INC
.
../avi
@@ -155,12 +160,6 @@ if(WITH_CODEC_FFMPEG)
${FFMPEG_INCLUDE_DIRS}
)
add_definitions(-DWITH_FFMPEG)
-
- remove_strict_flags_file(
- intern/indexer.c
- intern/util.c
- intern/anim_movie.c
- )
endif()
if(WITH_IMAGE_DDS)
diff --git a/source/blender/imbuf/intern/allocimbuf.c b/source/blender/imbuf/intern/allocimbuf.c
index 1d82c862dbd..da08671341a 100644
--- a/source/blender/imbuf/intern/allocimbuf.c
+++ b/source/blender/imbuf/intern/allocimbuf.c
@@ -164,9 +164,8 @@ void IMB_freeImBuf(ImBuf *ibuf)
IMB_freezbufImBuf(ibuf);
IMB_freezbuffloatImBuf(ibuf);
freeencodedbufferImBuf(ibuf);
+ IMB_cache_limiter_unmanage(ibuf);
IMB_metadata_free(ibuf);
- if (ibuf->dds_data.data != NULL)
- free(ibuf->dds_data.data);
MEM_freeN(ibuf);
}
}
@@ -472,3 +471,56 @@ static MEM_CacheLimiterC **get_imbuf_cache_limiter(void)
return &c;
}
+
+void IMB_free_cache_limiter(void)
+{
+ delete_MEM_CacheLimiter(*get_imbuf_cache_limiter());
+ *get_imbuf_cache_limiter() = NULL;
+}
+
+void IMB_cache_limiter_insert(ImBuf *i)
+{
+ if(!i->c_handle) {
+ i->c_handle = MEM_CacheLimiter_insert(
+ *get_imbuf_cache_limiter(), i);
+ MEM_CacheLimiter_ref(i->c_handle);
+ MEM_CacheLimiter_enforce_limits(
+ *get_imbuf_cache_limiter());
+ MEM_CacheLimiter_unref(i->c_handle);
+ }
+}
+
+void IMB_cache_limiter_unmanage(ImBuf *i)
+{
+ if(i->c_handle) {
+ MEM_CacheLimiter_unmanage(i->c_handle);
+ i->c_handle = NULL;
+ }
+}
+
+void IMB_cache_limiter_touch(ImBuf *i)
+{
+ if(i->c_handle)
+ MEM_CacheLimiter_touch(i->c_handle);
+}
+
+void IMB_cache_limiter_ref(ImBuf *i)
+{
+ if(i->c_handle)
+ MEM_CacheLimiter_ref(i->c_handle);
+}
+
+void IMB_cache_limiter_unref(ImBuf *i)
+{
+ if(i->c_handle)
+ MEM_CacheLimiter_unref(i->c_handle);
+}
+
+int IMB_cache_limiter_get_refcount(ImBuf *i)
+{
+ if(i->c_handle)
+ return MEM_CacheLimiter_get_refcount(i->c_handle);
+
+ return 0;
+}
+