[Bf-blender-cvs] [59bf863] multiview: Merge remote-tracking branch 'origin/master' into multiview

Dalai Felinto noreply at git.blender.org
Wed Oct 15 00:51:06 CEST 2014


Commit: 59bf8632734372ddc264af9db358cc9095dc88c5
Author: Dalai Felinto
Date:   Tue Oct 14 18:38:26 2014 -0300
Branches: multiview
https://developer.blender.org/rB59bf8632734372ddc264af9db358cc9095dc88c5

Merge remote-tracking branch 'origin/master' into multiview

Note: this also includes some house-keeping in the image_buttons.c to
handle the recent changes in the file.

Conflicts:
	release/datafiles/locale
	source/blender/blenloader/intern/versioning_270.c
	source/blender/editors/space_image/image_buttons.c

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



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

diff --cc source/blender/blenloader/intern/versioning_270.c
index 985c037,bd1b5f2..eb5ed13
--- a/source/blender/blenloader/intern/versioning_270.c
+++ b/source/blender/blenloader/intern/versioning_270.c
@@@ -411,90 -419,20 +424,107 @@@ void blo_do_versions_270(FileData *fd, 
  		}
  	}
  
+ 	if (!DNA_struct_elem_find(fd->filesdna, "bStretchToConstraint", "float", "bulge_min")) {
+ 		Object *ob;
+ 
+ 		/* Update Transform constraint (again :|). */
+ 		for (ob = main->object.first; ob; ob = ob->id.next) {
+ 			do_version_constraints_stretch_to_limits(&ob->constraints);
+ 
+ 			if (ob->pose) {
+ 				/* Bones constraints! */
+ 				bPoseChannel *pchan;
+ 				for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) {
+ 					do_version_constraints_stretch_to_limits(&pchan->constraints);
+ 				}
+ 			}
+ 		}
+ 	}
++
 +	{
 +		if (!DNA_struct_elem_find(fd->filesdna, "RenderData", "ListBase", "views")) {
 +			Scene *scene;
 +			SceneRenderView *srv;
 +			for (scene = main->scene.first; scene; scene = scene->id.next) {
 +				BKE_scene_add_render_view(scene, STEREO_LEFT_NAME);
 +				srv = (SceneRenderView *)scene->r.views.first;
 +				BLI_strncpy(srv->suffix, "_L", sizeof(srv->suffix));
 +
 +				BKE_scene_add_render_view(scene, STEREO_RIGHT_NAME);
 +				srv = (SceneRenderView *)scene->r.views.last;
 +				BLI_strncpy(srv->suffix, "_R", sizeof(srv->suffix));
 +			}
 +		}
 +
 +		if (!DNA_struct_elem_find(fd->filesdna, "View3D", "char", "stereo_camera")) {
 +			bScreen *screen;
 +			for (screen = main->screen.first; screen; screen = screen->id.next) {
 +				ScrArea *sa;
 +				for (sa = screen->areabase.first; sa; sa = sa->next) {
 +					SpaceLink *sl;
 +
 +					for (sl = sa->spacedata.first; sl; sl = sl->next) {
 +						switch (sl->spacetype) {
 +							case SPACE_VIEW3D:
 +							{
 +								View3D *v3d = (View3D *)sl;
 +								v3d->stereo3d_camera = STEREO_3D_ID;
 +								v3d->stereo3d_flag |= V3D_S3D_DISPPLANE;
 +								v3d->stereo3d_convergence_alpha = 0.15f;
 +								v3d->stereo3d_volume_alpha = 0.05f;
 +								break;
 +							}
 +							case SPACE_IMAGE:
 +							{
 +								SpaceImage *sima = (SpaceImage *) sl;
 +								sima->iuser.flag |= IMA_SHOW_STEREO;
 +								sima->iuser.passtype = SCE_PASS_COMBINED;
 +								break;
 +							}
 +						}
 +					}
 +				}
 +			}
 +		}
 +
 +		if (!DNA_struct_elem_find(fd->filesdna, "Camera", "CameraStereoSettings", "stereo")) {
 +			Camera *cam;
 +			for (cam = main->camera.first; cam; cam = cam->id.next) {
 +				cam->stereo.interocular_distance = 0.065;
 +				cam->stereo.convergence_distance = 30.f * 0.065;
 +			}
 +		}
 +
 +		if (!DNA_struct_elem_find(fd->filesdna, "Image", "Stereo3dFormat", "*stereo3d_format")) {
 +			Image *ima;
 +			for (ima = main->image.first; ima; ima = ima->id.next) {
 +				ima->stereo3d_format = MEM_callocN(sizeof(Stereo3dFormat), "Image Stereo 3d Format");
 +			}
 +		}
 +
 +		if (!DNA_struct_elem_find(fd->filesdna, "Image", "ListBase", "packedfiles")) {
 +			Image *ima;
 +			for (ima = main->image.first; ima; ima = ima->id.next) {
 +				if (ima->packedfile) {
 +					ImagePackedFile *imapf = MEM_mallocN(sizeof(ImagePackedFile), "Image Packed File");
 +					BLI_addtail(&ima->packedfiles, imapf);
 +
 +					imapf->packedfile = ima->packedfile;
 +					BLI_strncpy(imapf->filepath, ima->name, FILE_MAX);
 +					ima->packedfile = NULL;
 +				}
 +			}
 +		}
 +
 +		if (!DNA_struct_elem_find(fd->filesdna, "wmWindow", "Stereo3dFormat", "*stereo3d_format")) {
 +			wmWindowManager *wm;
 +			wmWindow *win;
 +
 +			for (wm = main->wm.first; wm; wm = wm->id.next) {
 +				for (win = wm->windows.first; win; win = win->next) {
 +					win->stereo3d_format = MEM_callocN(sizeof(Stereo3dFormat), "Stereo Display 3d Format");
 +				}
 +			}
 +		}
 +	}
  }
diff --cc source/blender/editors/space_image/image_buttons.c
index fa38857,154437a..7fda23c
--- a/source/blender/editors/space_image/image_buttons.c
+++ b/source/blender/editors/space_image/image_buttons.c
@@@ -373,20 -382,30 +383,31 @@@ static const char *ui_imageuser_pass_fa
  	}
  }
  
--static void ui_imageuser_pass_menu(bContext *UNUSED(C), uiLayout *layout, void *ptrpair_p)
++static void ui_imageuser_pass_menu(bContext *UNUSED(C), uiLayout *layout, void *rnd_pt)
  {
- 	void **ptrpair = ptrpair_p;
 -	void **rnd_data = ptrpair_p;
++	void **rnd_data = rnd_pt;
  	uiBlock *block = uiLayoutGetBlock(layout);
- 	// RenderResult *rr = ptrpair[0];
- 	ImageUser *iuser = ptrpair[1];
- 	/* rl==NULL means composite result */
- 	RenderLayer *rl = ptrpair[2];
+ 	Image *image = rnd_data[0];
+ 	ImageUser *iuser = rnd_data[1];
+ 	/* (rpass_index == -1) means composite result */
+ 	const int rpass_index = GET_INT_FROM_POINTER(rnd_data[2]);
+ 	Scene *scene = iuser->scene;
+ 	RenderResult *rr;
+ 	RenderLayer *rl;
  	RenderPass rpass_fake = {NULL};
  	RenderPass *rpass;
  	const char *fake_name;
  	int nr;
 +	int passflag = 0;
  
+ 	/* may have been freed since drawing */
+ 	rr = BKE_image_acquire_renderresult(scene, image);
+ 	if (UNLIKELY(rr == NULL)) {
+ 		return;
+ 	}
+ 
+ 	rl = BLI_findlink(&rr->layers, rpass_index);
+ 
  	uiBlockSetCurLayout(block, layout);
  	uiLayoutColumn(layout, false);
  
@@@ -424,57 -436,10 +445,69 @@@ final
  	}
  
  	BLI_assert(nr == -1);
+ 
+ 	BKE_image_release_renderresult(scene, image);
  }
  
 +/**************************** view menus *****************************/
- static void ui_imageuser_view_menu_rr(bContext *UNUSED(C), uiLayout *layout, void *ptrpair_p)
++static void ui_imageuser_view_menu_rr(bContext *UNUSED(C), uiLayout *layout, void *rnd_pt)
 +{
- 	void **ptrpair = ptrpair_p;
++	void **rnd_data = rnd_pt;
 +	uiBlock *block = uiLayoutGetBlock(layout);
- 	RenderResult *rr = ptrpair[0];
- 	ImageUser *iuser = ptrpair[1];
++	Image *image = rnd_data[0];
++	ImageUser *iuser = rnd_data[1];
++	RenderResult *rr;
 +	RenderView *rview;
 +	int nr;
++	Scene *scene = iuser->scene;
++
++	/* may have been freed since drawing */
++	rr = BKE_image_acquire_renderresult(scene, image);
++	if (UNLIKELY(rr == NULL)) {
++		return;
++	}
 +
 +	uiBlockSetCurLayout(block, layout);
 +	uiLayoutColumn(layout, false);
 +
 +	uiDefBut(block, LABEL, 0, IFACE_("View"),
 +	         0, 0, UI_UNIT_X * 5, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "");
 +
 +	uiItemS(layout);
 +
 +	nr = (rr ? BLI_countlist(&rr->views) : 0) - 1;
 +	for (rview = rr ? rr->views.last : NULL; rview; rview = rview->prev, nr--) {
 +		uiDefButS(block, BUTM, B_NOP, IFACE_(rview->name), 0, 0,
 +		          UI_UNIT_X * 5, UI_UNIT_X, &iuser->view, (float) nr, 0.0, 0, -1, "");
 +	}
++
++	BKE_image_release_renderresult(scene, image);
 +}
 +
- static void ui_imageuser_view_menu_multiview(bContext *UNUSED(C), uiLayout *layout, void *ptrpair_p)
++static void ui_imageuser_view_menu_multiview(bContext *UNUSED(C), uiLayout *layout, void *rnd_pt)
 +{
- 	void **ptrpair = ptrpair_p;
++	void **rnd_data = rnd_pt;
 +	uiBlock *block = uiLayoutGetBlock(layout);
- 	Image *ima = ptrpair[3];
- 	ImageUser *iuser = ptrpair[1];
++	Image *image = rnd_data[0];
++	ImageUser *iuser = rnd_data[1];
 +	int nr;
 +	ImageView *iv;
 +
 +	uiBlockSetCurLayout(block, layout);
 +	uiLayoutColumn(layout, false);
 +
 +	uiDefBut(block, LABEL, 0, IFACE_("View"),
 +	         0, 0, UI_UNIT_X * 5, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, "");
 +
 +	uiItemS(layout);
 +
- 	nr = BLI_countlist(&ima->views) - 1;
- 	for (iv = ima->views.last; iv; iv = iv->prev, nr--) {
++	nr = BLI_countlist(&image->views) - 1;
++	for (iv = image->views.last; iv; iv = iv->prev, nr--) {
 +		uiDefButS(block, BUTM, B_NOP, IFACE_(iv->name), 0, 0,
 +		          UI_UNIT_X * 5, UI_UNIT_X, &iuser->view, (float) nr, 0.0, 0, -1, "");
 +	}
 +}
 +
  /* 5 layer button callbacks... */
  static void image_multi_cb(bContext *C, void *rr_v, void *iuser_v) 
  {
@@@ -583,12 -536,10 +616,11 @@@ static void uiblock_layer_pass_buttons(
  	wmenu1 = (2 * w) / 5;
  	wmenu2 = (3 * w) / 5;
  	wmenu3 = (3 * w) / 6;
 +	wmenu4 = (3 * w) / 6;
  	
- 	rnd_pt[0] = rr;
+ 	rnd_pt[0] = image;
  	rnd_pt[1] = iuser;
  	rnd_pt[2] = NULL;
- 	rnd_pt[3] = NULL;
  
  	/* menu buts */
  	if (render_slot) {
@@@ -606,19 -557,19 +638,21 @@@
  
  	if (rr) {
  		RenderPass *rpass;
 +		RenderView *rview;
+ 		int rpass_index;
  
  		/* layer */
  		fake_name = ui_imageuser_layer_fake_name(rr);
- 		rl = BLI_findlink(&rr->layers, iuser->layer  - (fake_name ? 1 : 0));
- 		rnd_pt[2] = rl;
+ 		rpass_index = iuser->layer  - (fake_name ? 1 : 0);
+ 		rl = BLI_findlink(&rr->layers, rpass_index);
+ 		rnd_pt[2] = SET_INT_IN_POINTER(rpass_index);
  
 -		display_name = rl ? rl->name : (fake_name ? fake_name : "");
 -		but = uiDefMenuBut(block, ui_imageuser_layer_menu, rnd_pt, display_name, 0, 0, wmenu2, UI_UNIT_Y, TIP_("Select Layer"));
 -		uiButSetFunc(but, image_multi_cb, rr, iuser);
 -		uiButSetMenuFromPulldown(but);
 -
 +		if (RE_layers_have_name(rr)) {
 +			display_name = rl ? rl->name : (fake_name ? fake_name : "");
 +			but = uiDefMenuBut(block, ui_imageuser_layer_menu, rnd_pt, display_name, 0, 0, wmenu2, UI_UNIT_Y, TIP_("Select Layer"));
 +			uiButSetFunc(but, image_multi_cb, rr, iuser);
 +			uiButSetMenuFromPulldown(but);
 +		}
  
  		/* pass */
  		fake_name = ui_imageuser_pass_fake_name(rl);
@@@ -628,36 -579,6 +662,35 @@@
  		but = uiDefMenuBut(block, ui_imageuser_pass_menu, rnd_pt, display_name, 0, 0, wmenu3, UI_UNIT_Y, TIP_("Select Pass"));
  		uiButSetFunc(but, image_multi_cb, rr, iuser);
  		uiButSetMenuFromPulldown(but);
 +
 +		/* view */
 +		if (BLI_countlist(&rr->views) > 1 && !show_stereo) {
 +			rview = BLI_findlink(&rr->views, iuser->view);
 +			display_name = rview ? rview->name : "";
 +
 +			but = uiDefMenuBut(block, ui_imageuser_view_menu_rr, rnd_pt, display_name, 0, 0, wmenu4, UI_UNIT_Y, TIP_("Select View"));
 +			uiButSetFunc(but, image_multi_cb, rr, iuser);
 +			uiButSetMenuFromPulldown(but);
 +		}
 +	}
 +
 +	/* stereo image */
 +	else if (((image->flag & IMA_IS_STEREO) && (!show_stereo)) ||
 +	         ((image->flag & IMA_IS_MULTIVIEW) && ((image->flag & IMA_IS_STEREO) == 0)))
 +	{
 +		ImageView *iv;
 +		int nr = 0;
- 		rnd_pt[3] = image;
 +
 +		for (iv = image->views.first; iv; iv = iv->next) {
 +			if (nr++ == iuser->view) {
 +				display_name = iv->name;
 +				break;
 +			}
 +		}
 +
 +		but = uiDefMenuBut(block

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list