[Bf-blender-cvs] [1e3d6ae09b8] blender2.8: Gizmo: only use mousemove for generic gizmos

Campbell Barton noreply at git.blender.org
Thu Sep 13 16:00:04 CEST 2018


Commit: 1e3d6ae09b89cb6ab6c357d506af7d0c635aa50e
Author: Campbell Barton
Date:   Fri Sep 14 00:06:19 2018 +1000
Branches: blender2.8
https://developer.blender.org/rB1e3d6ae09b89cb6ab6c357d506af7d0c635aa50e

Gizmo: only use mousemove for generic gizmos

This caused slow performance for spin/bisect for eg.

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

M	source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c
M	source/blender/editors/gizmo_library/gizmo_types/cage2d_gizmo.c
M	source/blender/editors/gizmo_library/gizmo_types/cage3d_gizmo.c
M	source/blender/editors/gizmo_library/gizmo_types/dial3d_gizmo.c
M	source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c

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

diff --git a/source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c
index eff05a74ea5..97f45bd53fd 100644
--- a/source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c
+++ b/source/blender/editors/gizmo_library/gizmo_types/arrow3d_gizmo.c
@@ -234,6 +234,9 @@ static int gizmo_arrow_modal(
         bContext *C, wmGizmo *gz, const wmEvent *event,
         eWM_GizmoFlagTweak tweak_flag)
 {
+	if (event->type != MOUSEMOVE) {
+		return OPERATOR_RUNNING_MODAL;
+	}
 	ArrowGizmo3D *arrow = (ArrowGizmo3D *)gz;
 	GizmoInteraction *inter = gz->interaction_data;
 	View3D *v3d = CTX_wm_view3d(C);
diff --git a/source/blender/editors/gizmo_library/gizmo_types/cage2d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/cage2d_gizmo.c
index 00902588408..1cff5b82484 100644
--- a/source/blender/editors/gizmo_library/gizmo_types/cage2d_gizmo.c
+++ b/source/blender/editors/gizmo_library/gizmo_types/cage2d_gizmo.c
@@ -849,6 +849,9 @@ static int gizmo_cage2d_modal(
         bContext *C, wmGizmo *gz, const wmEvent *event,
         eWM_GizmoFlagTweak UNUSED(tweak_flag))
 {
+	if (event->type != MOUSEMOVE) {
+		return OPERATOR_RUNNING_MODAL;
+	}
 	/* For transform logic to be managable we operate in -0.5..0.5 2D space,
 	 * no matter the size of the rectangle, mouse coorts are scaled to unit space.
 	 * The mouse coords have been projected into the matrix so we don't need to worry about axis alignment.
diff --git a/source/blender/editors/gizmo_library/gizmo_types/cage3d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/cage3d_gizmo.c
index ae9a57205df..3b74311b800 100644
--- a/source/blender/editors/gizmo_library/gizmo_types/cage3d_gizmo.c
+++ b/source/blender/editors/gizmo_library/gizmo_types/cage3d_gizmo.c
@@ -477,6 +477,9 @@ static int gizmo_cage3d_modal(
         bContext *C, wmGizmo *gz, const wmEvent *event,
         eWM_GizmoFlagTweak UNUSED(tweak_flag))
 {
+	if (event->type != MOUSEMOVE) {
+		return OPERATOR_RUNNING_MODAL;
+	}
 	/* For transform logic to be managable we operate in -0.5..0.5 2D space,
 	 * no matter the size of the rectangle, mouse coorts are scaled to unit space.
 	 * The mouse coords have been projected into the matrix so we don't need to worry about axis alignment.
diff --git a/source/blender/editors/gizmo_library/gizmo_types/dial3d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/dial3d_gizmo.c
index 2432e2da3d2..f6108134cd9 100644
--- a/source/blender/editors/gizmo_library/gizmo_types/dial3d_gizmo.c
+++ b/source/blender/editors/gizmo_library/gizmo_types/dial3d_gizmo.c
@@ -396,6 +396,10 @@ static int gizmo_dial_modal(
         bContext *C, wmGizmo *gz, const wmEvent *event,
         eWM_GizmoFlagTweak UNUSED(tweak_flag))
 {
+	if (event->type != MOUSEMOVE) {
+		return OPERATOR_RUNNING_MODAL;
+	}
+
 	const float co_outer[4] = {0.0f, DIAL_WIDTH, 0.0f}; /* coordinate at which the arc drawing will be started */
 	float angle_ofs, angle_delta;
 
diff --git a/source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c
index c6090250db7..0f83e9a3514 100644
--- a/source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c
+++ b/source/blender/editors/gizmo_library/gizmo_types/value2d_gizmo.c
@@ -65,6 +65,7 @@ typedef struct ValueInteraction {
 	} init;
 	struct {
 		float prop_value;
+		eWM_GizmoFlagTweak tweak_flag;
 	} prev;
 	float range[2];
 } ValueInteraction;
@@ -78,8 +79,11 @@ static int gizmo_value_modal(
         bContext *C, wmGizmo *gz, const wmEvent *event,
         eWM_GizmoFlagTweak tweak_flag)
 {
-	ARegion *ar = CTX_wm_region(C);
 	ValueInteraction *inter = gz->interaction_data;
+	if ((event->type != MOUSEMOVE) && (inter->prev.tweak_flag == tweak_flag)) {
+		return OPERATOR_RUNNING_MODAL;
+	}
+	ARegion *ar = CTX_wm_region(C);
 	const float value_scale = 4.0f;  /* Could be option. */
 	const float value_range = inter->range[1] - inter->range[0];
 	float value_delta = (
@@ -108,8 +112,11 @@ static int gizmo_value_modal(
 			SNPRINTF(str, "%.4f", value_final);
 			ED_area_status_text(sa, str);
 		}
-		inter->prev.prop_value = value_final;
 	}
+
+	inter->prev.prop_value = value_final;
+	inter->prev.tweak_flag = tweak_flag;
+
 	return OPERATOR_RUNNING_MODAL;
 }



More information about the Bf-blender-cvs mailing list