Fix crash using non-camera object as camera

Also sync with master to avoid conflicts
This commit is contained in:
Campbell Barton 2017-06-02 15:12:39 +10:00
parent f59b1179c5
commit 7beb173d70

@ -514,9 +514,9 @@ static void drawviewborder(Scene *scene, ARegion *ar, View3D *v3d)
} }
/* And now, the dashed lines! */ /* And now, the dashed lines! */
{
immBindBuiltinProgram(GPU_SHADER_2D_LINE_DASHED_COLOR); immBindBuiltinProgram(GPU_SHADER_2D_LINE_DASHED_COLOR);
{
float viewport_size[4]; float viewport_size[4];
glGetFloatv(GL_VIEWPORT, viewport_size); glGetFloatv(GL_VIEWPORT, viewport_size);
immUniform2f("viewport_size", viewport_size[2], viewport_size[3]); immUniform2f("viewport_size", viewport_size[2], viewport_size[3]);
@ -533,6 +533,7 @@ static void drawviewborder(Scene *scene, ARegion *ar, View3D *v3d)
immUniformThemeColor(TH_VIEW_OVERLAY); immUniformThemeColor(TH_VIEW_OVERLAY);
imm_draw_line_box(shdr_pos, x1i, y1i, x2i, y2i); imm_draw_line_box(shdr_pos, x1i, y1i, x2i, y2i);
}
/* border */ /* border */
if (scene->r.mode & R_BORDER) { if (scene->r.mode & R_BORDER) {
@ -605,15 +606,16 @@ static void drawviewborder(Scene *scene, ARegion *ar, View3D *v3d)
} }
if (ca->flag & CAM_SHOW_SAFE_MARGINS) { if (ca->flag & CAM_SHOW_SAFE_MARGINS) {
UI_draw_safe_areas(shdr_pos, x1, x2, y1, y2, UI_draw_safe_areas(
shdr_pos, x1, x2, y1, y2,
scene->safe_areas.title, scene->safe_areas.action); scene->safe_areas.title, scene->safe_areas.action);
if (ca->flag & CAM_SHOW_SAFE_CENTER) { if (ca->flag & CAM_SHOW_SAFE_CENTER) {
UI_draw_safe_areas(shdr_pos, x1, x2, y1, y2, UI_draw_safe_areas(
shdr_pos, x1, x2, y1, y2,
scene->safe_areas.title_center, scene->safe_areas.action_center); scene->safe_areas.title_center, scene->safe_areas.action_center);
} }
} }
}
if (ca->flag & CAM_SHOWSENSOR) { if (ca->flag & CAM_SHOWSENSOR) {
/* determine sensor fit, and get sensor x/y, for auto fit we /* determine sensor fit, and get sensor x/y, for auto fit we
@ -654,14 +656,16 @@ static void drawviewborder(Scene *scene, ARegion *ar, View3D *v3d)
* 2.0f round corner effect was nearly not visible anyway... */ * 2.0f round corner effect was nearly not visible anyway... */
imm_draw_line_box(shdr_pos, rect.xmin, rect.ymin, rect.xmax, rect.ymax); imm_draw_line_box(shdr_pos, rect.xmin, rect.ymin, rect.xmax, rect.ymax);
} }
}
immUnbindProgram(); immUnbindProgram();
} /* end dashed lines */
/* camera name - draw in highlighted text color */ /* camera name - draw in highlighted text color */
if (ca && (ca->flag & CAM_SHOWNAME)) { if (ca && (ca->flag & CAM_SHOWNAME)) {
UI_FontThemeColor(BLF_default(), TH_TEXT_HI); UI_FontThemeColor(BLF_default(), TH_TEXT_HI);
BLF_draw_default(x1i, y1i - (0.7f * U.widget_unit), 0.0f, BLF_draw_default(
x1i, y1i - (0.7f * U.widget_unit), 0.0f,
v3d->camera->id.name + 2, sizeof(v3d->camera->id.name) - 2); v3d->camera->id.name + 2, sizeof(v3d->camera->id.name) - 2);
} }
} }