[Bf-blender-cvs] [51a3024] asset-engine: Merge branch 'asset-experiments' into asset-engine

Bastien Montagne noreply at git.blender.org
Mon May 11 09:46:29 CEST 2015


Commit: 51a3024f330b9e0b8292fd194109741c8e7fa51f
Author: Bastien Montagne
Date:   Mon May 11 09:41:54 2015 +0200
Branches: asset-engine
https://developer.blender.org/rB51a3024f330b9e0b8292fd194109741c8e7fa51f

Merge branch 'asset-experiments' into asset-engine

Conflicts:
	source/blender/editors/space_file/filelist.c

===================================================================



===================================================================

diff --cc source/blender/editors/space_file/filelist.c
index 25d9cbc,45ef4e1..3041ea9
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@@ -659,96 -735,6 +663,96 @@@ void filelist_setfilter_options(FileLis
  	}
  }
  
 +
 +void filelist_sort_filter(struct FileList *filelist, FileSelectParams *params)
 +{
 +	if (filelist->ae) {
 +		if (filelist->ae->type->sort_filter) {
 +			const bool changed = filelist->ae->type->sort_filter(filelist->ae, true, true,
 +			                                                     params, &filelist->filelist);
 +			printf("%s: changed: %d\n", __func__, changed);
 +		}
- 		filelist_cache_clear(&filelist->filelist_cache);
++		filelist_cache_clear(&filelist->filelist_cache, filelist->filelist_cache.size);
 +		filelist->need_sorting = false;
 +		filelist->need_filtering = false;
 +	}
 +	else {
 +		if (filelist_need_sorting(filelist)) {
 +			filelist->need_sorting = false;
 +
 +			switch (filelist->sort) {
 +				case FILE_SORT_ALPHA:
 +					BLI_listbase_sort_r(&filelist->filelist_intern.entries, NULL, compare_name);
 +					break;
 +				case FILE_SORT_TIME:
 +					BLI_listbase_sort_r(&filelist->filelist_intern.entries, NULL, compare_date);
 +					break;
 +				case FILE_SORT_SIZE:
 +					BLI_listbase_sort_r(&filelist->filelist_intern.entries, NULL, compare_size);
 +					break;
 +				case FILE_SORT_EXTENSION:
 +					BLI_listbase_sort_r(&filelist->filelist_intern.entries, NULL, compare_extension);
 +					break;
 +				case FILE_SORT_NONE:  /* Should never reach this point! */
 +				default:
 +					BLI_assert(0);
 +			}
 +
 +			filelist_filter_clear(filelist);
 +		}
 +
 +		{
 +			int num_filtered = 0;
 +			const int num_files = filelist->filelist.nbr_entries;
 +			FileListInternEntry **filtered_tmp, *file;
 +
 +			if (filelist->filelist.nbr_entries == 0) {
 +				return;
 +			}
 +
 +			if (!filelist->need_filtering) {
 +				/* Assume it has already been filtered, nothing else to do! */
 +				return;
 +			}
 +
 +			filelist->filter_data.hide_lib_dir = false;
 +			if (filelist->max_recursion) {
 +				/* Never show lib ID 'categories' directories when we are in 'flat' mode, unless
 +				 * root path is a blend file. */
 +				char dir[FILE_MAXDIR];
 +				if (!filelist_islibrary(filelist, dir, NULL)) {
 +					filelist->filter_data.hide_lib_dir = true;
 +				}
 +			}
 +
 +			filtered_tmp = MEM_mallocN(sizeof(*filtered_tmp) * (size_t)num_files, __func__);
 +
 +			/* Filter remap & count how many files are left after filter in a single loop. */
 +			for (file = filelist->filelist_intern.entries.first; file; file = file->next) {
 +				if (filelist->filterf(file, filelist->filelist.root, &filelist->filter_data)) {
 +					filtered_tmp[num_filtered++] = file;
 +				}
 +			}
 +
 +			if (filelist->filelist_intern.filtered) {
 +				MEM_freeN(filelist->filelist_intern.filtered);
 +			}
 +			filelist->filelist_intern.filtered = MEM_mallocN(sizeof(*filelist->filelist_intern.filtered) * (size_t)num_filtered,
 +															 __func__);
 +			memcpy(filelist->filelist_intern.filtered, filtered_tmp,
 +				   sizeof(*filelist->filelist_intern.filtered) * (size_t)num_filtered);
 +			filelist->filelist.nbr_entries_filtered = num_filtered;
 +		//	printf("Filetered: %d over %d entries\n", num_filtered, filelist->filelist.nbr_entries);
 +
- 			filelist_cache_clear(&filelist->filelist_cache);
++			filelist_cache_clear(&filelist->filelist_cache, filelist->filelist_cache.size);
 +			filelist->need_filtering = false;
 +
 +			MEM_freeN(filtered_tmp);
 +		}
 +	}
 +}
 +
 +
  /* ********** Icon/image helpers ********** */
  
  void filelist_init_icons(void)
@@@ -1485,23 -1457,22 +1506,24 @@@ static FileDirEntry *filelist_file_ex(s
  
  	/* Else, we have to add new entry to 'misc' cache - and possibly make room for it first! */
  	ret = filelist_file_create_entry(filelist, index);
 -	old_index = cache->misc_entries_indices[cache->misc_cursor];
 -	if ((old = BLI_ghash_popkey(cache->misc_entries, SET_INT_IN_POINTER(old_index), NULL))) {
 -		BLI_ghash_remove(cache->uuids, old->uuid, NULL, NULL);
 -		filelist_file_release_entry(filelist, old);
 -	}
 -	BLI_ghash_insert(cache->misc_entries, SET_INT_IN_POINTER(index), ret);
 -	BLI_ghash_insert(cache->uuids, ret->uuid, ret);
 +	if (ret) {
 +		old_index = cache->misc_entries_indices[cache->misc_cursor];
 +		if ((old = BLI_ghash_popkey(cache->misc_entries, SET_INT_IN_POINTER(old_index), NULL))) {
 +			BLI_ghash_remove(cache->uuids, old->uuid, NULL, NULL);
 +			filelist_file_release_entry(filelist, old);
 +		}
 +		BLI_ghash_insert(cache->misc_entries, SET_INT_IN_POINTER(index), ret);
 +		BLI_ghash_insert(cache->uuids, ret->uuid, ret);
+ 
 -	cache->misc_entries_indices[cache->misc_cursor] = index;
 -	cache->misc_cursor = (cache->misc_cursor + 1) % cache_size;
 +		cache->misc_entries_indices[cache->misc_cursor] = index;
- 		cache->misc_cursor = (cache->misc_cursor + 1) % FILELIST_ENTRYCACHESIZE;
++		cache->misc_cursor = (cache->misc_cursor + 1) % cache_size;
  
  #if 0  /* Actually no, only block cached entries should have preview imho. */
 -	if (cache->previews_pool) {
 -		filelist_cache_previews_push(filelist, ret, index);
 -	}
 +		if (cache->previews_pool) {
 +			filelist_cache_previews_push(filelist, ret, index);
 +		}
  #endif
 +	}
  
  	return ret;
  }
diff --cc source/blender/editors/space_file/filelist.h
index fda2795,e0bb431..a170c00
--- a/source/blender/editors/space_file/filelist.h
+++ b/source/blender/editors/space_file/filelist.h
@@@ -89,9 -90,10 +89,10 @@@ void                filelist_setdir(str
  
  int                 filelist_empty(struct FileList *filelist);
  int                 filelist_numfiles(struct FileList *filelist);
 -FileDirEntry *      filelist_file(struct FileList *filelist, int index);
 +struct FileDirEntry *filelist_file(struct FileList *filelist, int index);
  int                 filelist_file_findpath(struct FileList *filelist, const char *file);
  FileDirEntry *      filelist_entry_find_uuid(struct FileList *filelist, const int uuid[4]);
+ void                filelist_file_cache_slidingwindow_set(struct FileList *filelist, size_t window_size);
  bool                filelist_file_cache_block(struct FileList *filelist, const int index);
  
  bool                filelist_force_reset(struct FileList *filelist);




More information about the Bf-blender-cvs mailing list