Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/editors/space_view3d')
-rw-r--r--source/blender/editors/space_view3d/SConscript2
-rw-r--r--source/blender/editors/space_view3d/drawobject.c6
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c21
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c46
-rw-r--r--source/blender/editors/space_view3d/view3d_edit.c5
-rw-r--r--source/blender/editors/space_view3d/view3d_header.c5
-rw-r--r--source/blender/editors/space_view3d/view3d_intern.h3
-rw-r--r--source/blender/editors/space_view3d/view3d_ops.c1
-rw-r--r--source/blender/editors/space_view3d/view3d_snap.c198
-rw-r--r--source/blender/editors/space_view3d/view3d_view.c2
10 files changed, 63 insertions, 226 deletions
diff --git a/source/blender/editors/space_view3d/SConscript b/source/blender/editors/space_view3d/SConscript
index ba521a5fb1a..1d8e01f2b1b 100644
--- a/source/blender/editors/space_view3d/SConscript
+++ b/source/blender/editors/space_view3d/SConscript
@@ -13,5 +13,7 @@ incs += ' #source/kernel/gen_system'
if env['WITH_BF_GAMEENGINE']:
defs.append('GAMEBLENDER=1')
+if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'):
+ incs += ' ' + env['BF_PTHREADS_INC']
env.BlenderLib ( 'bf_editors_space_view3d', sources, Split(incs), defines = defs, libtype=['core'], priority=[40] )
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index c5cbb080b4c..b877266aeaf 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -625,14 +625,14 @@ void view3d_cached_text_draw_end(View3D *v3d, ARegion *ar, int depth_write, floa
}
if(tot) {
+#if 0
bglMats mats; /* ZBuffer depth vars */
double ux, uy, uz;
float depth;
if(v3d->zbuf)
bgl_get_mats(&mats);
-
-
+#endif
if(rv3d->rflag & RV3D_CLIPPING)
for(a=0; a<6; a++)
glDisable(GL_CLIP_PLANE0+a);
@@ -1885,7 +1885,7 @@ static int draw_dm_creases__setDrawOptions(void *userData, int index)
EditEdge *eed = EM_get_edge_for_index(index);
if (eed->h==0 && eed->crease!=0.0) {
- UI_ThemeColorBlend(TH_WIRE, TH_EDGE_SELECT, eed->crease);
+ UI_ThemeColorBlend(TH_WIRE, TH_EDGE_CREASE, eed->crease);
return 1;
} else {
return 0;
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 869d0c45f2f..bda7dfcabf1 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -770,6 +770,25 @@ static void view3d_tools_area_draw(const bContext *C, ARegion *ar)
ED_region_panels(C, ar, 1, CTX_data_mode_string(C), -1);
}
+static void view3d_props_area_listener(ARegion *ar, wmNotifier *wmn)
+{
+ /* context changes */
+ switch(wmn->category) {
+ case NC_WM:
+ if(wmn->data == ND_HISTORY)
+ ED_region_tag_redraw(ar);
+ break;
+ case NC_SCENE:
+ if(wmn->data == ND_MODE)
+ ED_region_tag_redraw(ar);
+ break;
+ case NC_SPACE:
+ if(wmn->data == ND_SPACE_VIEW3D)
+ ED_region_tag_redraw(ar);
+ break;
+ }
+}
+
static int view3d_context(const bContext *C, const char *member, bContextDataResult *result)
{
View3D *v3d= CTX_wm_view3d(C);
@@ -952,7 +971,7 @@ void ED_spacetype_view3d(void)
art->prefsizex= 0;
art->prefsizey= 120;
art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES;
- art->listener= view3d_buttons_area_listener;
+ art->listener= view3d_props_area_listener;
art->init= view3d_tools_area_init;
art->draw= view3d_tools_area_draw;
BLI_addhead(&st->regiontypes, art);
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index c75e068648f..47ff5c5d556 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -292,7 +292,7 @@ static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, char **grid_u
while(i--) {
scalar= bUnit_GetScaler(usys, i);
- dx_scalar = dx * scalar * unit->scale_length;
+ dx_scalar = dx * scalar / unit->scale_length;
if (dx_scalar < (GRID_MIN_PX*2))
continue;
@@ -855,14 +855,16 @@ static void view3d_get_viewborder_size(Scene *scene, ARegion *ar, float size_r[2
}
}
-void calc_viewborder(Scene *scene, ARegion *ar, View3D *v3d, rctf *viewborder_r)
+void calc_viewborder(Scene *scene, ARegion *ar, RegionView3D *rv3d, View3D *v3d, rctf *viewborder_r)
{
- RegionView3D *rv3d= ar->regiondata;
float zoomfac, size[2];
float dx= 0.0f, dy= 0.0f;
view3d_get_viewborder_size(scene, ar, size);
+ if (rv3d == NULL)
+ rv3d = ar->regiondata;
+
/* magic zoom calculation, no idea what
* it signifies, if you find out, tell me! -zr
*/
@@ -971,13 +973,14 @@ static void drawviewborder(Scene *scene, ARegion *ar, View3D *v3d)
float x3, y3, x4, y4;
rctf viewborder;
Camera *ca= NULL;
+ RegionView3D *rv3d= (RegionView3D *)ar->regiondata;
if(v3d->camera==NULL)
return;
if(v3d->camera->type==OB_CAMERA)
ca = v3d->camera->data;
- calc_viewborder(scene, ar, v3d, &viewborder);
+ calc_viewborder(scene, ar, rv3d, v3d, &viewborder);
x1= viewborder.xmin;
y1= viewborder.ymin;
x2= viewborder.xmax;
@@ -1306,7 +1309,7 @@ static void draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d)
if(rv3d->persp==RV3D_CAMOB) {
rctf vb;
- calc_viewborder(scene, ar, v3d, &vb);
+ calc_viewborder(scene, ar, rv3d, v3d, &vb);
x1= vb.xmin;
y1= vb.ymin;
@@ -1797,6 +1800,8 @@ static void gpu_update_lamps_shadows(Scene *scene, View3D *v3d)
Scene *sce;
Base *base;
Object *ob;
+ ARegion ar;
+ RegionView3D rv3d;
shadows.first= shadows.last= NULL;
@@ -1835,7 +1840,20 @@ static void gpu_update_lamps_shadows(Scene *scene, View3D *v3d)
v3d->flag2 &= ~V3D_SOLID_TEX;
GPU_lamp_shadow_buffer_bind(shadow->lamp, viewmat, &winsize, winmat);
-// XXX drawview3d_render(v3d, viewmat, winsize, winsize, winmat, 1);
+
+ memset(&ar, 0, sizeof(ar));
+ memset(&rv3d, 0, sizeof(rv3d));
+
+ ar.regiondata= &rv3d;
+ ar.regiontype= RGN_TYPE_WINDOW;
+ rv3d.persp= RV3D_CAMOB;
+ copy_m4_m4(rv3d.winmat, winmat);
+ copy_m4_m4(rv3d.viewmat, viewmat);
+ invert_m4_m4(rv3d.viewinv, rv3d.viewmat);
+ mul_m4_m4m4(rv3d.persmat, rv3d.viewmat, rv3d.winmat);
+ invert_m4_m4(rv3d.persinv, rv3d.viewinv);
+
+ ED_view3d_draw_offscreen(scene, v3d, &ar, winsize, winsize, viewmat, winmat);
GPU_lamp_shadow_buffer_unbind(shadow->lamp);
v3d->drawtype= drawtype;
@@ -1953,9 +1971,7 @@ void ED_view3d_draw_offscreen(Scene *scene, View3D *v3d, ARegion *ar, int winx,
glClearColor(scene->world->horr, scene->world->horg, scene->world->horb, 0.0);
}
else {
- float col[3];
- UI_GetThemeColor3fv(TH_BACK, col);
- glClearColor(col[0], col[1], col[2], 0.0);
+ UI_ThemeClearColor(TH_BACK);
}
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
@@ -2145,15 +2161,15 @@ static void draw_viewport_fps(Scene *scene, ARegion *ar)
fps = fps / tot;
}
#endif
-
+
/* is this more then half a frame behind? */
if (fps+0.5 < FPS) {
UI_ThemeColor(TH_REDALERT);
- sprintf(printable, "fps: %.2f", (float)fps);
+ BLI_snprintf(printable, sizeof(printable), "fps: %.2f", (float)fps);
}
else {
UI_ThemeColor(TH_TEXT_HI);
- sprintf(printable, "fps: %i", (int)(fps+0.5));
+ BLI_snprintf(printable, sizeof(printable), "fps: %i", (int)(fps+0.5));
}
BLF_draw_default(22, ar->winy-17, 0.0f, printable);
@@ -2167,7 +2183,6 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar)
Scene *sce;
Base *base;
Object *ob;
- float col[3];
int retopo= 0, sculptparticle= 0;
Object *obact = OBACT;
char *grid_unit= NULL;
@@ -2186,8 +2201,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar)
}
/* clear background */
- UI_GetThemeColor3fv(TH_BACK, col);
- glClearColor(col[0], col[1], col[2], 0.0);
+ UI_ThemeClearColor(TH_BACK);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
/* setup view matrices */
@@ -2366,7 +2380,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar)
}
if (grid_unit) { /* draw below the viewport name */
UI_ThemeColor(TH_TEXT_HI);
- BLF_draw_default(10, ar->winy-(USER_SHOW_VIEWPORTNAME?40:20), 0.0f, grid_unit);
+ BLF_draw_default(22, ar->winy-(USER_SHOW_VIEWPORTNAME?40:20), 0.0f, grid_unit);
}
ob= OBACT;
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index 996acd61c06..4e41314ef20 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -1482,6 +1482,7 @@ static int render_border_exec(bContext *C, wmOperator *op)
{
View3D *v3d = CTX_wm_view3d(C);
ARegion *ar= CTX_wm_region(C);
+ RegionView3D *rv3d= ED_view3d_context_rv3d(C);
Scene *scene= CTX_data_scene(C);
rcti rect;
@@ -1494,7 +1495,7 @@ static int render_border_exec(bContext *C, wmOperator *op)
rect.ymax= RNA_int_get(op->ptr, "ymax");
/* calculate range */
- calc_viewborder(scene, ar, v3d, &vb);
+ calc_viewborder(scene, ar, rv3d, v3d, &vb);
scene->r.border.xmin= ((float)rect.xmin-vb.xmin)/(vb.xmax-vb.xmin);
scene->r.border.ymin= ((float)rect.ymin-vb.ymin)/(vb.ymax-vb.ymin);
@@ -1527,7 +1528,7 @@ static int render_border_exec(bContext *C, wmOperator *op)
static int view3d_render_border_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- RegionView3D *rv3d= CTX_wm_region_view3d(C);
+ RegionView3D *rv3d= ED_view3d_context_rv3d(C);
/* if not in camera view do not exec the operator*/
if (rv3d->persp == RV3D_CAMOB) return WM_border_select_invoke(C, op, event);
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c
index e76546c6080..535b5695182 100644
--- a/source/blender/editors/space_view3d/view3d_header.c
+++ b/source/blender/editors/space_view3d/view3d_header.c
@@ -367,8 +367,9 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event)
case B_SEL_FACE:
if(em) {
if( shift==0 || em->selectmode==0){
- if( ((ts->selectmode ^ SCE_SELECT_FACE) == SCE_SELECT_VERTEX) || ((ts->selectmode ^ SCE_SELECT_FACE) == SCE_SELECT_EDGE)){
- if(ctrl) EM_convertsel(em, (ts->selectmode ^ SCE_SELECT_FACE),SCE_SELECT_FACE);
+ if( ((em->selectmode ^ SCE_SELECT_FACE) == SCE_SELECT_VERTEX) || ((em->selectmode ^ SCE_SELECT_FACE) == SCE_SELECT_EDGE)){
+ if(ctrl)
+ EM_convertsel(em, (em->selectmode ^ SCE_SELECT_FACE),SCE_SELECT_FACE);
}
em->selectmode = SCE_SELECT_FACE;
}
diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h
index e6ba2fa904f..53bc5b7c5d5 100644
--- a/source/blender/editors/space_view3d/view3d_intern.h
+++ b/source/blender/editors/space_view3d/view3d_intern.h
@@ -125,7 +125,7 @@ void draw_depth_gpencil(Scene *scene, ARegion *ar, View3D *v3d);
void view3d_clr_clipping(void);
void view3d_set_clipping(RegionView3D *rv3d);
void add_view3d_after(View3D *v3d, Base *base, int type, int flag);
-void calc_viewborder(Scene *scene, struct ARegion *ar, View3D *v3d, rctf *viewborder_r);
+void calc_viewborder(Scene *scene, struct ARegion *ar, struct RegionView3D *rv3d, View3D *v3d, rctf *viewborder_r);
void circf(float x, float y, float rad);
void circ(float x, float y, float rad);
@@ -175,7 +175,6 @@ int minmax_verts(Object *obedit, float *min, float *max);
void VIEW3D_OT_snap_selected_to_grid(struct wmOperatorType *ot);
void VIEW3D_OT_snap_selected_to_cursor(struct wmOperatorType *ot);
-void VIEW3D_OT_snap_selected_to_center(struct wmOperatorType *ot);
void VIEW3D_OT_snap_cursor_to_grid(struct wmOperatorType *ot);
void VIEW3D_OT_snap_cursor_to_center(struct wmOperatorType *ot);
void VIEW3D_OT_snap_cursor_to_selected(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c
index d2fda2f2f76..da4395e2309 100644
--- a/source/blender/editors/space_view3d/view3d_ops.c
+++ b/source/blender/editors/space_view3d/view3d_ops.c
@@ -93,7 +93,6 @@ void view3d_operatortypes(void)
WM_operatortype_append(VIEW3D_OT_snap_selected_to_grid);
WM_operatortype_append(VIEW3D_OT_snap_selected_to_cursor);
- WM_operatortype_append(VIEW3D_OT_snap_selected_to_center);
WM_operatortype_append(VIEW3D_OT_snap_cursor_to_grid);
WM_operatortype_append(VIEW3D_OT_snap_cursor_to_center);
WM_operatortype_append(VIEW3D_OT_snap_cursor_to_selected);
diff --git a/source/blender/editors/space_view3d/view3d_snap.c b/source/blender/editors/space_view3d/view3d_snap.c
index 48658b57297..424ffcc6ef8 100644
--- a/source/blender/editors/space_view3d/view3d_snap.c
+++ b/source/blender/editors/space_view3d/view3d_snap.c
@@ -872,204 +872,6 @@ void VIEW3D_OT_snap_cursor_to_active(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
-/* ************************************** */
-
-static int snap_selected_to_center(bContext *C, wmOperator *op)
-{
- extern float originmat[3][3]; /* XXX object.c */
- Object *obedit= CTX_data_edit_object(C);
- Scene *scene= CTX_data_scene(C);
- View3D *v3d= CTX_wm_view3d(C);
- TransVert *tv;
- float snaploc[3], imat[3][3], bmat[3][3], vec[3], min[3], max[3], centroid[3];
- int count, a;
-
- /*calculate the snaplocation (centerpoint) */
- count= 0;
- INIT_MINMAX(min, max);
- centroid[0]= centroid[1]= centroid[2]= 0.0f;
- snaploc[0]= snaploc[1]= snaploc[2]= 0.0f;
-
- if(obedit) {
- tottrans= 0;
-
- if ELEM6(obedit->type, OB_ARMATURE, OB_LATTICE, OB_MESH, OB_SURF, OB_CURVE, OB_MBALL)
- make_trans_verts(obedit, bmat[0], bmat[1], 0);
- if(tottrans==0) return OPERATOR_CANCELLED;
-
- copy_m3_m4(bmat, obedit->obmat);
- invert_m3_m3(imat, bmat);
-
- tv= transvmain;
- for(a=0; a<tottrans; a++, tv++) {
- VECCOPY(vec, tv->loc);
- mul_m3_v3(bmat, vec);
- add_v3_v3v3(vec, vec, obedit->obmat[3]);
- add_v3_v3v3(centroid, centroid, vec);
- DO_MINMAX(vec, min, max);
- }
-
- if(v3d->around==V3D_CENTROID) {
- mul_v3_fl(centroid, 1.0/(float)tottrans);
- VECCOPY(snaploc, centroid);
- }
- else {
- snaploc[0]= (min[0]+max[0])/2;
- snaploc[1]= (min[1]+max[1])/2;
- snaploc[2]= (min[2]+max[2])/2;
- }
-
- MEM_freeN(transvmain);
- transvmain= NULL;
- }
- else {
-
- CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
- if(ob->mode & OB_MODE_POSE) {
- bPoseChannel *pchan;
- bArmature *arm= ob->data;
-
- for (pchan = ob->pose->chanbase.first; pchan; pchan=pchan->next) {
- if(pchan->bone->flag & BONE_SELECTED) {
- if(pchan->bone->layer & arm->layer) {
- VECCOPY(vec, pchan->pose_mat[3]);
- add_v3_v3v3(centroid, centroid, vec);
- DO_MINMAX(vec, min, max);
- count++;
- }
- }
- }
- }
- else {
- /* not armature bones (i.e. objects) */
- VECCOPY(vec, ob->obmat[3]);
- add_v3_v3v3(centroid, centroid, vec);
- DO_MINMAX(vec, min, max);
- count++;
- }
- }
- CTX_DATA_END;
-
- if(count) {
- if(v3d->around==V3D_CENTROID) {
- mul_v3_fl(centroid, 1.0/(float)count);
- VECCOPY(snaploc, centroid);
- }
- else {
- snaploc[0]= (min[0]+max[0])/2;
- snaploc[1]= (min[1]+max[1])/2;
- snaploc[2]= (min[2]+max[2])/2;
- }
- }
- }
-
- /* Snap the selection to the snaplocation (duh!) */
- if(obedit) {
- tottrans= 0;
-
- if ELEM6(obedit->type, OB_ARMATURE, OB_LATTICE, OB_MESH, OB_SURF, OB_CURVE, OB_MBALL)
- make_trans_verts(obedit, bmat[0], bmat[1], 0);
- if(tottrans==0) return OPERATOR_CANCELLED;
-
- copy_m3_m4(bmat, obedit->obmat);
- invert_m3_m3(imat, bmat);
-
- tv= transvmain;
- for(a=0; a<tottrans; a++, tv++) {
- vec[0]= snaploc[0]-obedit->obmat[3][0];
- vec[1]= snaploc[1]-obedit->obmat[3][1];
- vec[2]= snaploc[2]-obedit->obmat[3][2];
-
- mul_m3_v3(imat, vec);
- VECCOPY(tv->loc, vec);
- }
-
- special_transvert_update(scene, obedit);
-
- MEM_freeN(transvmain);
- transvmain= NULL;
-
- }
- else {
-
- CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
- if(ob->mode & OB_MODE_POSE) {
- bPoseChannel *pchan;
- bArmature *arm= ob->data;
-
- for (pchan = ob->pose->chanbase.first; pchan; pchan=pchan->next) {
- if(pchan->bone->flag & BONE_SELECTED) {
- if(pchan->bone->layer & arm->layer) {
- if((pchan->bone->flag & BONE_CONNECTED)==0) {
- /* get location of cursor in bone-space */
- armature_loc_pose_to_bone(pchan, snaploc, vec);
-
- /* calculate new position */
- VECCOPY(pchan->loc, vec);
- }
- /* if the bone has a parent and is connected to the parent,
- * don't do anything - will break chain unless we do auto-ik.
- */
- }
- }
- }
-
- /* auto-keyframing */
- ob->pose->flag |= POSE_DO_UNLOCK;
-// XXX autokeyframe_pose_cb_func(ob, TFM_TRANSLATION, 0);
- DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
- }
- else {
- ob->recalc |= OB_RECALC_OB;
-
- vec[0]= -ob->obmat[3][0] + snaploc[0];
- vec[1]= -ob->obmat[3][1] + snaploc[1];
- vec[2]= -ob->obmat[3][2] + snaploc[2];
-
- if(ob->parent) {
- where_is_object(scene, ob);
-
- invert_m3_m3(imat, originmat);
- mul_m3_v3(imat, vec);
- ob->loc[0]+= vec[0];
- ob->loc[1]+= vec[1];
- ob->loc[2]+= vec[2];
- }
- else {
- ob->loc[0]+= vec[0];
- ob->loc[1]+= vec[1];
- ob->loc[2]+= vec[2];
- }
- /* auto-keyframing */
-// XXX autokeyframe_ob_cb_func(ob, TFM_TRANSLATION);
- }
- }
- CTX_DATA_END;
- }
-
- DAG_ids_flush_update(0);
- WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
-
- return OPERATOR_FINISHED;
-}
-
-void VIEW3D_OT_snap_selected_to_center(wmOperatorType *ot)
-{
-
- /* identifiers */
- ot->name= "Snap Selection to Center";
- ot->description= "Snap selected items to selections geometric center";
- ot->idname= "VIEW3D_OT_snap_selected_to_center";
-
- /* api callbacks */
- ot->exec= snap_selected_to_center;
- ot->poll= ED_operator_view3d_active;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-}
-
-
/* **************************************************** */
/*New Code - Snap Cursor to Center -*/
static int snap_curs_to_center(bContext *C, wmOperator *op)
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index 543af197370..78e6d5f5439 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -1820,7 +1820,7 @@ static int game_engine_exec(bContext *C, wmOperator *op)
if(rv3d->persp==RV3D_CAMOB && startscene->gm.framing.type == SCE_GAMEFRAMING_BARS && startscene->gm.stereoflag != STEREO_DOME) { /* Letterbox */
rctf cam_framef;
- calc_viewborder(startscene, ar, CTX_wm_view3d(C), &cam_framef);
+ calc_viewborder(startscene, ar, rv3d, CTX_wm_view3d(C), &cam_framef);
cam_frame.xmin = cam_framef.xmin + ar->winrct.xmin;
cam_frame.xmax = cam_framef.xmax + ar->winrct.xmin;
cam_frame.ymin = cam_framef.ymin + ar->winrct.ymin;