[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18386] branches/blender2.5/blender/source /blender: 2.5 filebrowser

Andrea Weikert elubie at gmx.net
Tue Jan 6 23:48:58 CET 2009


Revision: 18386
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18386
Author:   elubie
Date:     2009-01-06 23:48:58 +0100 (Tue, 06 Jan 2009)

Log Message:
-----------
2.5 filebrowser
fixes for crashes that seem to have been introduced by changes in context handling.
TODO: initialization for windowtype pupmenu if a previous SpaceFile was there.

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
    branches/blender2.5/blender/source/blender/editors/include/ED_fileselect.h
    branches/blender2.5/blender/source/blender/editors/space_file/filelist.c
    branches/blender2.5/blender/source/blender/editors/space_file/filesel.c
    branches/blender2.5/blender/source/blender/editors/space_file/space_file.c
    branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.c

Modified: branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2009-01-06 22:42:39 UTC (rev 18385)
+++ branches/blender2.5/blender/source/blender/blenloader/intern/readfile.c	2009-01-06 22:48:58 UTC (rev 18386)
@@ -3956,7 +3956,7 @@
 					}
 					else if(sl->spacetype==SPACE_FILE) {
 						SpaceFile *sfile= (SpaceFile *)sl;
-
+						sfile->files= NULL;
 						sfile->params= NULL;
 						sfile->op= NULL;
 						/* sfile->returnfunc= NULL; 
@@ -4160,8 +4160,9 @@
 				else if(sl->spacetype==SPACE_FILE) {
 					
 					SpaceFile *sfile= (SpaceFile *)sl;
-					sfile->params = NULL;
-					sfile->op = NULL;
+					sfile->files= NULL;
+					sfile->params= NULL;
+					sfile->op= NULL;
 					/* XXX needs checking - best solve in filesel itself 
 					if(sfile->libfiledata)	
 						BLO_blendhandle_close(sfile->libfiledata);
@@ -5212,11 +5213,17 @@
 				ar->v2d.flag = V2D_VIEWSYNC_AREA_VERTICAL;
 				break;
 			case SPACE_FILE:
+				/* channel (bookmarks/directories) region */
 				ar= MEM_callocN(sizeof(ARegion), "area region from do_versions");
 				BLI_addtail(lb, ar);
 				ar->regiontype= RGN_TYPE_CHANNELS;
 				ar->alignment= RGN_ALIGN_LEFT;
 				ar->v2d.scroll= V2D_SCROLL_RIGHT;
+				/* button UI region */
+				ar= MEM_callocN(sizeof(ARegion), "area region from do_versions");
+				BLI_addtail(lb, ar);
+				ar->regiontype= RGN_TYPE_UI;
+				ar->alignment= RGN_ALIGN_TOP;
 				break;
 		}
 	}

Modified: branches/blender2.5/blender/source/blender/editors/include/ED_fileselect.h
===================================================================
--- branches/blender2.5/blender/source/blender/editors/include/ED_fileselect.h	2009-01-06 22:42:39 UTC (rev 18385)
+++ branches/blender2.5/blender/source/blender/editors/include/ED_fileselect.h	2009-01-06 22:48:58 UTC (rev 18386)
@@ -55,7 +55,7 @@
 
 FileSelectParams* ED_fileselect_get_params(const struct bContext *C);
 
-short ED_fileselect_set_params(const struct bContext *C, int type, const char *title, const char *path, 
+short ED_fileselect_set_params(FileSelectParams *params, int type, const char *title, const char *path, 
 						   short flag, short display, short filter);
 
 #endif /* ED_FILES_H */

Modified: branches/blender2.5/blender/source/blender/editors/space_file/filelist.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_file/filelist.c	2009-01-06 22:42:39 UTC (rev 18385)
+++ branches/blender2.5/blender/source/blender/editors/space_file/filelist.c	2009-01-06 22:48:58 UTC (rev 18386)
@@ -49,6 +49,7 @@
 #include "BLI_blenlib.h"
 #include "BLI_linklist.h"
 #include "BLI_storage_types.h"
+#include "BLI_threads.h"
 
 #ifdef WIN32
 #include "BLI_winstuff.h"
@@ -106,8 +107,16 @@
 	short prv_h;
 	short hide_dot;
 	unsigned int filter;
+	struct ThreadedWorker *worker;
+	LinkNode *worklist;
 } FileList;
 
+typedef struct WorkItem
+{
+	FileList* files;
+	int item;
+} WorkItem;
+
 int BIF_groupname_to_code(char *group)
 {
 	char buf[32];
@@ -367,6 +376,7 @@
 	p->type = 0;
 	p->has_func = 0;
 	p->filter = 0;
+	p->worker = 0; // BLI_create_worker(void *(*do_thread)(void *), int tot, int sleep_time);
 	return p;
 }
 

Modified: branches/blender2.5/blender/source/blender/editors/space_file/filesel.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_file/filesel.c	2009-01-06 22:42:39 UTC (rev 18385)
+++ branches/blender2.5/blender/source/blender/editors/space_file/filesel.c	2009-01-06 22:48:58 UTC (rev 18386)
@@ -76,37 +76,15 @@
 #include "filelist.h"
 
 
-FileSelectParams* ED_fileselect_get_params(const struct bContext *C)
-{
-	SpaceLink *sl= CTX_wm_space_data(C);
-	SpaceFile *sfile;
-	FileSelectParams *params = 0;
-
-	if (sl->spacetype == SPACE_FILE) {
-		sfile= (SpaceFile*)sl;
-		params = sfile->params;
-	}
-	return params;
-}
-
-short ED_fileselect_set_params(const struct bContext *C, int type, const char *title, const char *path,
+short ED_fileselect_set_params(FileSelectParams *params, int type, const char *title, const char *path,
 							   short flag, short display, short filter)
 {
 	char name[FILE_MAX], dir[FILE_MAX], file[FILE_MAX];
-	SpaceLink *sl= CTX_wm_space_data(C);
-	SpaceFile *sfile;
-	FileSelectParams *params;
 
-	if (sl->spacetype != SPACE_FILE) {
+	if (!params) {
 		return 0;
 	}
-	sfile= (SpaceFile*)sl;
 
-	if (!sfile->params) {
-		sfile->params = MEM_callocN(sizeof(FileSelectParams), "fileselparams");
-	}
-	params = sfile->params;
-
 	params->type = type;
 	params->flag = flag;
 	params->display = display;
@@ -129,17 +107,7 @@
 				BLI_split_dirfile(name, dir, file);
 				BLI_strncpy(params->file, file, sizeof(params->file));
 				BLI_strncpy(params->dir, dir, sizeof(params->dir));
-				BLI_make_file_string(G.sce, params->dir, dir, ""); /* XXX needed ? - also solve G.sce */
-				
-				filelist_settype(sfile->files, type);
-				filelist_setdir(sfile->files, params->dir);
-				BLI_cleanup_dir(G.sce, params->dir); /* XXX solve G.sce */
-
-				/* free: filelist and libfiledata became incorrect */
-				if (sfile->files) {
-					filelist_free(sfile->files);
-					filelist_freelib(sfile->files);
-				}				
+				BLI_make_file_string(G.sce, params->dir, dir, ""); /* XXX needed ? - also solve G.sce */			
 			}
 			break;
 	}

Modified: branches/blender2.5/blender/source/blender/editors/space_file/space_file.c
===================================================================
--- branches/blender2.5/blender/source/blender/editors/space_file/space_file.c	2009-01-06 22:42:39 UTC (rev 18385)
+++ branches/blender2.5/blender/source/blender/editors/space_file/space_file.c	2009-01-06 22:48:58 UTC (rev 18386)
@@ -78,7 +78,7 @@
 	sfile->params= MEM_callocN(sizeof(FileSelectParams), "fileselparams");
 	sfile->files = filelist_new();
 	
-	ED_fileselect_set_params(C, FILE_UNIX, "", "/", 0, 0, 0);
+	ED_fileselect_set_params(sfile->params, FILE_UNIX, "", "/", 0, 0, 0);
 	filelist_setdir(sfile->files, sfile->params->dir);
 	filelist_settype(sfile->files, sfile->params->type);
 
@@ -141,6 +141,17 @@
 /* spacetype; init callback */
 static void file_init(struct wmWindowManager *wm, ScrArea *sa)
 {
+	SpaceFile *sfile= sa->spacedata.first;	/* XXX get through context? */
+	if (!sfile->params) {
+		sfile->params= MEM_callocN(sizeof(FileSelectParams), "fileselparams");
+		ED_fileselect_set_params(sfile->params, FILE_UNIX, "", "/", 0, 0, 0);
+	}
+	if (!sfile->files) {
+		sfile->files = filelist_new();
+	}
+	
+	filelist_setdir(sfile->files, sfile->params->dir);
+	filelist_settype(sfile->files, sfile->params->type);
 }
 
 static SpaceLink *file_duplicate(SpaceLink *sl)
@@ -152,7 +163,11 @@
 	sfilen->op = NULL; // XXX check if operator can be duplicated
 
 	sfilen->params= MEM_dupallocN(sfileo->params);
-	sfilen->params->pupmenu = NULL;
+	if (!sfilen->params) {
+		sfilen->params= MEM_callocN(sizeof(FileSelectParams), "fileselparams");
+		ED_fileselect_set_params(sfilen->params, FILE_UNIX, "", "/", 0, 0, 0);
+		sfilen->params->pupmenu = NULL;
+	}
 	sfilen->files = filelist_new();
 	filelist_setdir(sfilen->files, sfilen->params->dir);
 	filelist_settype(sfilen->files, sfilen->params->type);
@@ -177,7 +192,7 @@
 {
 	/* draw entirely, view changes should be handled here */
 	SpaceFile *sfile= (SpaceFile*)CTX_wm_space_data(C);
-	FileSelectParams* params = ED_fileselect_get_params(C);
+	FileSelectParams* params = sfile->params;
 	View2D *v2d= &ar->v2d;
 	View2DScrollers *scrollers;
 	float col[3];

Modified: branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.c	2009-01-06 22:42:39 UTC (rev 18385)
+++ branches/blender2.5/blender/source/blender/windowmanager/intern/wm_operators.c	2009-01-06 22:48:58 UTC (rev 18386)
@@ -336,7 +336,7 @@
 	sfile= (SpaceFile*)CTX_wm_space_data(C);
 	sfile->op = op;
 
-	ED_fileselect_set_params(C, FILE_BLENDER, "Load", "C:\\", 0, 0, 0);
+	ED_fileselect_set_params(sfile->params, FILE_BLENDER, "Load", "C:\\", 0, 0, 0);
 
 	/* screen, areas init */
 	WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL);





More information about the Bf-blender-cvs mailing list