[Bf-blender-cvs] [7dd2d6f] soc-2013-paint: Misc minor changes - add WM_drag_free_list() - use len_manhattan_v2v2 to compare point distance - avoid calling BKE_scene_use_new_shading_nodes in a loop
Campbell Barton
noreply at git.blender.org
Mon Jun 23 15:39:49 CEST 2014
Commit: 7dd2d6f9c699409ab7d99e0603546efae4d03816
Author: Campbell Barton
Date: Mon Jun 23 23:38:38 2014 +1000
https://developer.blender.org/rB7dd2d6f9c699409ab7d99e0603546efae4d03816
Misc minor changes
- add WM_drag_free_list()
- use len_manhattan_v2v2 to compare point distance
- avoid calling BKE_scene_use_new_shading_nodes in a loop
===================================================================
M source/blender/blenkernel/BKE_DerivedMesh.h
M source/blender/blenkernel/intern/depsgraph.c
M source/blender/editors/sculpt_paint/paint_curve.c
M source/blender/windowmanager/WM_api.h
M source/blender/windowmanager/intern/wm.c
M source/blender/windowmanager/intern/wm_dragdrop.c
M source/blender/windowmanager/intern/wm_event_system.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h
index 6fe6171..6f4352d 100644
--- a/source/blender/blenkernel/BKE_DerivedMesh.h
+++ b/source/blender/blenkernel/BKE_DerivedMesh.h
@@ -153,7 +153,7 @@ typedef enum DMDrawFlag {
DM_DRAW_USE_COLORS = (1 << 0),
DM_DRAW_ALWAYS_SMOOTH = (1 << 1),
DM_DRAW_USE_ACTIVE_UV = (1 << 2),
- DM_DRAW_USE_TEXPAINT_UV = (1 << 4),
+ DM_DRAW_USE_TEXPAINT_UV = (1 << 3),
} DMDrawFlag;
typedef enum DMForeachFlag {
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index 944c662..4c8d1a3 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -2473,10 +2473,11 @@ static void dag_id_flush_update(Main *bmain, Scene *sce, ID *id)
}
if (ELEM(idtype, ID_MA, ID_TE)) {
+ const bool new_shading_nodes = BKE_scene_use_new_shading_nodes(sce);
for (obt = bmain->object.first; obt; obt = obt->id.next) {
if (obt->mode & OB_MODE_TEXTURE_PAINT) {
obt->recalc |= OB_RECALC_DATA;
- refresh_object_texpaint_images(obt, BKE_scene_use_new_shading_nodes(sce));
+ refresh_object_texpaint_images(obt, new_shading_nodes);
lib_id_recalc_data_tag(bmain, &obt->id);
}
}
diff --git a/source/blender/editors/sculpt_paint/paint_curve.c b/source/blender/editors/sculpt_paint/paint_curve.c
index ec4f693..b3748d5 100644
--- a/source/blender/editors/sculpt_paint/paint_curve.c
+++ b/source/blender/editors/sculpt_paint/paint_curve.c
@@ -373,7 +373,8 @@ static void paintcurve_point_select(bContext *C, wmOperator *op, const int loc[2
PaintCurve *pc;
PaintCurvePoint *pcp;
int i;
- int select = 0;
+ char select = 0;
+ const float loc_fl[2] = {UNPACK2(loc)};
pc = br->paint_curve;
@@ -393,8 +394,9 @@ static void paintcurve_point_select(bContext *C, wmOperator *op, const int loc[2
}
}
- if (!selected)
+ if (!selected) {
select = SELECT;
+ }
}
if (!extend) {
@@ -408,18 +410,14 @@ static void paintcurve_point_select(bContext *C, wmOperator *op, const int loc[2
for (i = 0; i < pc->tot_points; i++, pcp++) {
/* shift means constrained editing so exclude center handles from collision detection */
if (!handle) {
- if ((fabsf(loc[0] - pcp->bez.vec[1][0]) < PAINT_CURVE_SELECT_THRESHOLD) &&
- (fabsf(loc[1] - pcp->bez.vec[1][1]) < PAINT_CURVE_SELECT_THRESHOLD))
- {
+ if (len_manhattan_v2v2(loc_fl, pcp->bez.vec[1]) < PAINT_CURVE_SELECT_THRESHOLD) {
pcp->bez.f2 ^= SELECT;
pc->add_index = i + 1;
break;
}
}
- if ((fabsf(loc[0] - pcp->bez.vec[0][0]) < PAINT_CURVE_SELECT_THRESHOLD) &&
- (fabsf(loc[1] - pcp->bez.vec[0][1]) < PAINT_CURVE_SELECT_THRESHOLD))
- {
+ if (len_manhattan_v2v2(loc_fl, pcp->bez.vec[0]) < PAINT_CURVE_SELECT_THRESHOLD) {
pcp->bez.f1 ^= SELECT;
pc->add_index = i + 1;
if (handle)
@@ -427,9 +425,7 @@ static void paintcurve_point_select(bContext *C, wmOperator *op, const int loc[2
break;
}
- if ((fabsf(loc[0] - pcp->bez.vec[2][0]) < PAINT_CURVE_SELECT_THRESHOLD) &&
- (fabsf(loc[1] - pcp->bez.vec[2][1]) < PAINT_CURVE_SELECT_THRESHOLD))
- {
+ if (len_manhattan_v2v2(loc_fl, pcp->bez.vec[2]) < PAINT_CURVE_SELECT_THRESHOLD) {
pcp->bez.f3 ^= SELECT;
pc->add_index = i + 1;
if (handle)
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 69ae4ba..0f403f0 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -346,6 +346,7 @@ void WM_operator_region_active_win_set(struct bContext *C);
struct wmDrag *WM_event_start_drag(struct bContext *C, int icon, int type, void *poin, double value, unsigned int flags);
void WM_event_drag_image(struct wmDrag *, struct ImBuf *, float scale, int sx, int sy);
void WM_drag_free(struct wmDrag *drag);
+void WM_drag_free_list(struct ListBase *lb);
struct wmDropBox *WM_dropbox_add(ListBase *lb, const char *idname, int (*poll)(struct bContext *, struct wmDrag *, const struct wmEvent *event),
void (*copy)(struct wmDrag *, struct wmDropBox *));
diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c
index e81212b..d05cc57 100644
--- a/source/blender/windowmanager/intern/wm.c
+++ b/source/blender/windowmanager/intern/wm.c
@@ -441,7 +441,6 @@ void wm_close_and_free(bContext *C, wmWindowManager *wm)
wmWindow *win;
wmOperator *op;
wmKeyConfig *keyconf;
- wmDrag *drag;
if (wm->autosavetimer)
wm_autosave_timer_ended(wm);
@@ -464,10 +463,7 @@ void wm_close_and_free(bContext *C, wmWindowManager *wm)
BLI_freelistN(&wm->paintcursors);
- while ((drag = wm->drags.first)) {
- BLI_remlink(&wm->drags, drag);
- WM_drag_free(drag);
- }
+ WM_drag_free_list(&wm->drags);
wm_reports_free(wm);
diff --git a/source/blender/windowmanager/intern/wm_dragdrop.c b/source/blender/windowmanager/intern/wm_dragdrop.c
index 3fb3baf..e5bba92 100644
--- a/source/blender/windowmanager/intern/wm_dragdrop.c
+++ b/source/blender/windowmanager/intern/wm_dragdrop.c
@@ -181,6 +181,14 @@ void WM_drag_free(wmDrag *drag)
MEM_freeN(drag);
}
+void WM_drag_free_list(struct ListBase *lb)
+{
+ wmDrag *drag;
+ while ((drag = BLI_pophead(lb))) {
+ WM_drag_free(drag);
+ }
+}
+
static const char *dropbox_active(bContext *C, ListBase *handlers, wmDrag *drag, wmEvent *event)
{
wmEventHandler *handler = handlers->first;
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 136ef86..5d02dc1 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -113,14 +113,11 @@ void wm_event_free(wmEvent *event)
/* note: pointer to listbase struct elsewhere */
if (event->custom == EVT_DATA_DRAGDROP) {
ListBase *lb = event->customdata;
- wmDrag *drag;
- while ((drag = lb->first)) {
- BLI_remlink(lb, drag);
- WM_drag_free(drag);
- }
+ WM_drag_free_list(lb);
}
- else
+ else {
MEM_freeN(event->customdata);
+ }
}
}
@@ -1943,10 +1940,7 @@ static int wm_handlers_do_intern(bContext *C, wmEvent *event, ListBase *handlers
drop->copy(drag, drop);
/* free the drags before calling operator */
- while ((drag = lb->first)) {
- BLI_remlink(lb, drag);
- WM_drag_free(drag);
- }
+ WM_drag_free_list(lb);
event->customdata = NULL;
event->custom = 0;
@@ -2149,14 +2143,11 @@ static void wm_event_drag_test(wmWindowManager *wm, wmWindow *win, wmEvent *even
return;
}
- if (event->type == MOUSEMOVE || ISKEYMODIFIER(event->type))
+ if (event->type == MOUSEMOVE || ISKEYMODIFIER(event->type)) {
win->screen->do_draw_drag = true;
+ }
else if (event->type == ESCKEY) {
- wmDrag *drag;
- while ((drag = wm->drags.first)) {
- BLI_remlink(&wm->drags, drag);
- WM_drag_free(drag);
- }
+ WM_drag_free_list(&wm->drags);
win->screen->do_draw_drag = true;
}
More information about the Bf-blender-cvs
mailing list