[Bf-blender-cvs] [23beab2] asset-engine: Fix asset engine resetting on every resize!

Bastien Montagne noreply at git.blender.org
Tue May 26 17:23:25 CEST 2015


Commit: 23beab242ad8a101cc567d42e10e340f779b9434
Author: Bastien Montagne
Date:   Tue May 26 17:02:45 2015 +0200
Branches: asset-engine
https://developer.blender.org/rB23beab242ad8a101cc567d42e10e340f779b9434

Fix asset engine resetting on every resize!

Only reset AE type to default in `file_init()` if current type is invalid!

Also, better handling of getting default AE type now.

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

M	source/blender/blenkernel/BKE_asset.h
M	source/blender/blenkernel/intern/asset.c
M	source/blender/editors/space_file/space_file.c

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

diff --git a/source/blender/blenkernel/BKE_asset.h b/source/blender/blenkernel/BKE_asset.h
index aa23f8e..d20472b 100644
--- a/source/blender/blenkernel/BKE_asset.h
+++ b/source/blender/blenkernel/BKE_asset.h
@@ -163,6 +163,7 @@ void BKE_asset_engines_init(void);
 void BKE_asset_engines_exit(void);
 
 AssetEngineType *BKE_asset_engines_find(const char *idname);
+AssetEngineType *BKE_asset_engines_get_default(char *r_idname, const size_t len);
 
 /* Engine Instances */
 AssetEngine *BKE_asset_engine_create(AssetEngineType *type);
diff --git a/source/blender/blenkernel/intern/asset.c b/source/blender/blenkernel/intern/asset.c
index c2ea630..7b1d298 100644
--- a/source/blender/blenkernel/intern/asset.c
+++ b/source/blender/blenkernel/intern/asset.c
@@ -99,6 +99,19 @@ AssetEngineType *BKE_asset_engines_find(const char *idname)
 	return type;
 }
 
+AssetEngineType *BKE_asset_engines_get_default(char *r_idname, const size_t len)
+{
+	AssetEngineType *type = asset_engines.first;
+
+	BLI_assert(type);
+
+	if (r_idname) {
+		BLI_strncpy(r_idname, type->idname, len);
+	}
+
+	return type;
+}
+
 /* Asset engine instances. */
 
 /* Create, Free */
diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c
index 23f40b2..4181da2 100644
--- a/source/blender/editors/space_file/space_file.c
+++ b/source/blender/editors/space_file/space_file.c
@@ -76,6 +76,8 @@ static SpaceLink *file_new(const bContext *UNUSED(C))
 	sfile = MEM_callocN(sizeof(SpaceFile), "initfile");
 	sfile->spacetype = SPACE_FILE;
 
+	BKE_asset_engines_get_default(sfile->asset_engine, sizeof(sfile->asset_engine));
+
 	/* header */
 	ar = MEM_callocN(sizeof(ARegion), "header for file");
 	BLI_addtail(&sfile->regionbase, ar);
@@ -166,9 +168,13 @@ static void file_init(wmWindowManager *UNUSED(wm), ScrArea *sa)
 	 */
 	fsmenu_refresh_bookmarks_status(ED_fsmenu_get());
 
-	if (sfile->layout) sfile->layout->dirty = true;
+	if (!BKE_asset_engines_find(sfile->asset_engine)) {
+		BKE_asset_engines_get_default(sfile->asset_engine, sizeof(sfile->asset_engine));
+		ED_area_tag_refresh(sa);
+		ED_area_tag_redraw(sa);
+	}
 
-	BLI_strncpy(sfile->asset_engine, ((AssetEngineType *)asset_engines.first)->idname, sizeof(sfile->asset_engine));
+	if (sfile->layout) sfile->layout->dirty = true;
 }
 
 static void file_exit(wmWindowManager *wm, ScrArea *sa)
@@ -187,7 +193,7 @@ static SpaceLink *file_duplicate(SpaceLink *sl)
 {
 	SpaceFile *sfileo = (SpaceFile *)sl;
 	SpaceFile *sfilen = MEM_dupallocN(sl);
-	
+
 	/* clear or remove stuff from old */
 	sfilen->op = NULL; /* file window doesn't own operators */




More information about the Bf-blender-cvs mailing list