diff options
author | Campbell Barton <ideasman42@gmail.com> | 2019-08-15 22:41:43 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2019-08-15 23:44:25 +0300 |
commit | 8f565f5a6ffa4f6170caca2de50a733e8c72367a (patch) | |
tree | 95545357cdaefc10a0d11821c82a483c9aa382cb /source/blender/editors/space_view3d/view3d_gizmo_navigate.c | |
parent | 266e7b67fd3e2c219d8646e37a2fb3e393df4bda (diff) |
WM: reuse visible region calculation
Avoids calculating the visible part of a region whenever
on-screen overlays are drawn.
Diffstat (limited to 'source/blender/editors/space_view3d/view3d_gizmo_navigate.c')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_gizmo_navigate.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/source/blender/editors/space_view3d/view3d_gizmo_navigate.c b/source/blender/editors/space_view3d/view3d_gizmo_navigate.c index ad1a57eb71f..3c911e266a9 100644 --- a/source/blender/editors/space_view3d/view3d_gizmo_navigate.c +++ b/source/blender/editors/space_view3d/view3d_gizmo_navigate.c @@ -246,18 +246,17 @@ static void WIDGETGROUP_navigate_draw_prepare(const bContext *C, wmGizmoGroup *g copy_v3_v3(navgroup->gz_array[GZ_INDEX_ROTATE]->matrix_offset[i], rv3d->viewmat[i]); } - rcti rect_visible; - ED_region_visible_rect(ar, &rect_visible); + const rcti *rect_visible = ED_region_visible_rect(ar); - if ((navgroup->state.rect_visible.xmax == rect_visible.xmax) && - (navgroup->state.rect_visible.ymax == rect_visible.ymax) && + if ((navgroup->state.rect_visible.xmax == rect_visible->xmax) && + (navgroup->state.rect_visible.ymax == rect_visible->ymax) && (navgroup->state.rv3d.is_persp == rv3d->is_persp) && (navgroup->state.rv3d.is_camera == (rv3d->persp == RV3D_CAMOB)) && (navgroup->state.rv3d.viewlock == rv3d->viewlock)) { return; } - navgroup->state.rect_visible = rect_visible; + navgroup->state.rect_visible = *rect_visible; navgroup->state.rv3d.is_persp = rv3d->is_persp; navgroup->state.rv3d.is_camera = (rv3d->persp == RV3D_CAMOB); navgroup->state.rv3d.viewlock = rv3d->viewlock; @@ -268,8 +267,8 @@ static void WIDGETGROUP_navigate_draw_prepare(const bContext *C, wmGizmoGroup *g const float icon_offset = (icon_size * 0.52f) * GIZMO_OFFSET_FAC * UI_DPI_FAC; const float icon_offset_mini = icon_size * GIZMO_MINI_OFFSET_FAC * UI_DPI_FAC; const float co_rotate[2] = { - rect_visible.xmax - icon_offset, - rect_visible.ymax - icon_offset, + rect_visible->xmax - icon_offset, + rect_visible->ymax - icon_offset, }; float icon_offset_from_axis = 0.0f; @@ -286,8 +285,8 @@ static void WIDGETGROUP_navigate_draw_prepare(const bContext *C, wmGizmoGroup *g } const float co[2] = { - rect_visible.xmax - icon_offset_from_axis, - rect_visible.ymax - icon_offset_mini * 0.75f, + rect_visible->xmax - icon_offset_from_axis, + rect_visible->ymax - icon_offset_mini * 0.75f, }; wmGizmo *gz; |