From 726bb4c3cf2e6fb7d8b848c5ec6e30cd76ba5c6b Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sun, 9 Jan 2011 04:20:13 +0000 Subject: [PATCH] realtime: movpos: when calling movpos_change on a no-change indep, immediately finish the motion --- hostside/movpos.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hostside/movpos.c b/hostside/movpos.c index b73a2ab..e919f47 100644 --- a/hostside/movpos.c +++ b/hostside/movpos.c @@ -692,6 +692,8 @@ static Method nomove_method= { #define METH_DPFX_FMT "%s " INDEP_DBG_FMT " " #define METH_DPFX_ARGS(indep, meth) ((meth).pname), INDEP_DBG_ARGS((indep)) +static void indep_indep_done(Indep *indep); + static Method *methods[]= { [mfk_none] = (Method*)&nomove_method, [mfk_point] = (Method*)&points_method, @@ -729,6 +731,10 @@ static void method_change_done(Method *m, Change *chg) { return; } + indep_indep_done(indep); +} + +static void indep_indep_done(Indep *indep) { /* all done */ Segment *move= indep->move; move->moving= 0; @@ -1108,6 +1114,10 @@ ErrorCode movpos_change(Segment *move, MovPosComb target, ouposn_moving(inst); indep_check_execute(); + if (!inst->n_changes) + /* oh! */ + indep_indep_done(inst); + DPRINTF(movpos,entry, "movpos change %s/%s ok\n", move->i->pname, movpos_pname(move, target)); return 0; -- 2.30.2