Revision: 43791
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43791
Author:   nazgul
Date:     2012-01-31 11:11:56 +0000 (Tue, 31 Jan 2012)
Log Message:
-----------
Cache limiter will now work properly with limits >= 4Gb

Modified Paths:
--------------
    trunk/blender/intern/memutil/MEM_CacheLimiter.h
    trunk/blender/intern/memutil/MEM_CacheLimiterC-Api.h
    trunk/blender/intern/memutil/intern/MEM_CacheLimiterC-Api.cpp
    trunk/blender/source/blender/imbuf/intern/moviecache.c
    trunk/blender/source/blender/windowmanager/intern/wm_files.c

Modified: trunk/blender/intern/memutil/MEM_CacheLimiter.h
===================================================================
--- trunk/blender/intern/memutil/MEM_CacheLimiter.h     2012-01-31 05:02:24 UTC 
(rev 43790)
+++ trunk/blender/intern/memutil/MEM_CacheLimiter.h     2012-01-31 11:11:56 UTC 
(rev 43791)
@@ -65,8 +65,8 @@
 
 #ifndef __MEM_cache_limiter_c_api_h_included__
 extern "C" {
-       extern void MEM_CacheLimiter_set_maximum(intptr_t m);
-       extern intptr_t MEM_CacheLimiter_get_maximum();
+       extern void MEM_CacheLimiter_set_maximum(size_t m);
+       extern size_t MEM_CacheLimiter_get_maximum();
 };
 #endif
 
@@ -125,7 +125,7 @@
 public:
        typedef typename std::list<MEM_CacheLimiterHandle<T> *,
          MEM_Allocator<MEM_CacheLimiterHandle<T> *> >::iterator iterator;
-       typedef intptr_t (*MEM_CacheLimiter_DataSize_Func) (void *data);
+       typedef size_t (*MEM_CacheLimiter_DataSize_Func) (void *data);
        MEM_CacheLimiter(MEM_CacheLimiter_DataSize_Func getDataSize_)
                : getDataSize(getDataSize_) {
        }
@@ -146,8 +146,8 @@
                delete handle;
        }
        void enforce_limits() {
-               intptr_t max = MEM_CacheLimiter_get_maximum();
-               intptr_t mem_in_use, cur_size;
+               size_t max = MEM_CacheLimiter_get_maximum();
+               size_t mem_in_use, cur_size;
 
                if (max == 0) {
                        return;
@@ -188,8 +188,8 @@
                handle->me = it;
        }
 private:
-       intptr_t total_size() {
-               intptr_t size = 0;
+       size_t total_size() {
+               size_t size = 0;
                for (iterator it = queue.begin(); it != queue.end(); it++) {
                        size+= getDataSize((*it)->get()->get_data());
                }

Modified: trunk/blender/intern/memutil/MEM_CacheLimiterC-Api.h
===================================================================
--- trunk/blender/intern/memutil/MEM_CacheLimiterC-Api.h        2012-01-31 
05:02:24 UTC (rev 43790)
+++ trunk/blender/intern/memutil/MEM_CacheLimiterC-Api.h        2012-01-31 
11:11:56 UTC (rev 43791)
@@ -42,10 +42,10 @@
 typedef void(*MEM_CacheLimiter_Destruct_Func)(void*);
 
 /* function used to measure stored data element size */
-typedef intptr_t(*MEM_CacheLimiter_DataSize_Func) (void*);
+typedef size_t(*MEM_CacheLimiter_DataSize_Func) (void*);
 
 #ifndef MEM_CACHELIMITER_H
-extern void MEM_CacheLimiter_set_maximum(int m);
+extern void MEM_CacheLimiter_set_maximum(size_t m);
 extern int MEM_CacheLimiter_get_maximum(void);
 #endif // MEM_CACHELIMITER_H
 /** 

Modified: trunk/blender/intern/memutil/intern/MEM_CacheLimiterC-Api.cpp
===================================================================
--- trunk/blender/intern/memutil/intern/MEM_CacheLimiterC-Api.cpp       
2012-01-31 05:02:24 UTC (rev 43790)
+++ trunk/blender/intern/memutil/intern/MEM_CacheLimiterC-Api.cpp       
2012-01-31 11:11:56 UTC (rev 43791)
@@ -29,18 +29,18 @@
 #include "MEM_CacheLimiter.h"
 #include "MEM_CacheLimiterC-Api.h"
 
-static intptr_t & get_max() 
+static size_t & get_max()
 {
-       static intptr_t m = 32*1024*1024;
+       static size_t m = 32*1024*1024;
        return m;
 }
 
-void MEM_CacheLimiter_set_maximum(intptr_t m)
+void MEM_CacheLimiter_set_maximum(size_t m)
 {
        get_max() = m;
 }
 
-intptr_t MEM_CacheLimiter_get_maximum()
+size_t MEM_CacheLimiter_get_maximum()
 {
        return get_max();
 }

Modified: trunk/blender/source/blender/imbuf/intern/moviecache.c
===================================================================
--- trunk/blender/source/blender/imbuf/intern/moviecache.c      2012-01-31 
05:02:24 UTC (rev 43790)
+++ trunk/blender/source/blender/imbuf/intern/moviecache.c      2012-01-31 
11:11:56 UTC (rev 43791)
@@ -147,10 +147,10 @@
 }
 
 /* approximate size of ImBuf in memory */
-static intptr_t IMB_get_size_in_memory(ImBuf *ibuf)
+static size_t IMB_get_size_in_memory(ImBuf *ibuf)
 {
        int a;
-       intptr_t size= 0, channel_size= 0;
+       size_t size= 0, channel_size= 0;
 
        size+= sizeof(ImBuf);
 
@@ -176,9 +176,9 @@
        return size;
 }
 
-static intptr_t get_item_size (void *p)
+static size_t get_item_size (void *p)
 {
-       intptr_t size= sizeof(MovieCacheItem);
+       size_t size= sizeof(MovieCacheItem);
        MovieCacheItem *item= (MovieCacheItem *) p;
 
        if(item->ibuf)

Modified: trunk/blender/source/blender/windowmanager/intern/wm_files.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_files.c        
2012-01-31 05:02:24 UTC (rev 43790)
+++ trunk/blender/source/blender/windowmanager/intern/wm_files.c        
2012-01-31 11:11:56 UTC (rev 43791)
@@ -277,7 +277,7 @@
 static void wm_init_userdef(bContext *C)
 {
        UI_init_userdef();
-       MEM_CacheLimiter_set_maximum(U.memcachelimit * 1024 * 1024);
+       MEM_CacheLimiter_set_maximum(((size_t)U.memcachelimit) * 1024 * 1024);
        sound_init(CTX_data_main(C));
 
        /* needed so loading a file from the command line respects user-pref 
[#26156] */

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

Reply via email to