[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