# HG changeset patch # User Matthias Luescher # Date 1294330755 -3600 # Node ID 7fbc7bb7b95a3a102b0f702ad230a52d74610d19 # Parent 72a4e043e67d51ff9afe461c258fd7d301b084f0 properly deactivate slaves if there is no eoe slave diff -r 72a4e043e67d -r 7fbc7bb7b95a master/master.c --- a/master/master.c Thu Jan 06 13:11:21 2011 +0100 +++ b/master/master.c Thu Jan 06 17:19:15 2011 +0100 @@ -1958,6 +1958,7 @@ ec_slave_t *slave; #ifdef EC_EOE ec_eoe_t *eoe; + int is_eoe_slave; #endif EC_MASTER_DBG(master, 1, "%s(master = 0x%p)\n", __func__, master); @@ -1981,15 +1982,18 @@ // set state to PREOP for all but eoe slaves #ifdef EC_EOE + is_eoe_slave = 0; // ... but leave EoE slaves in OP list_for_each_entry(eoe, &master->eoe_handlers, list) { - if (slave != eoe->slave || !ec_eoe_is_open(eoe)) { - ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP); - // mark for reconfiguration, because the master could have no - // possibility for a reconfiguration between two sequential operation - // phases. - slave->force_config = 1; - } + if (slave == eoe->slave && ec_eoe_is_open(eoe)) + is_eoe_slave = 1; + } + if (!is_eoe_slave) { + ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP); + // mark for reconfiguration, because the master could have no + // possibility for a reconfiguration between two sequential operation + // phases. + slave->force_config = 1; } #else ec_slave_request_state(slave, EC_SLAVE_STATE_PREOP);