diff --git a/katana/src/Manipulator.cpp b/katana/src/Manipulator.cpp index 1e229620..a290ea61 100644 --- a/katana/src/Manipulator.cpp +++ b/katana/src/Manipulator.cpp @@ -1176,7 +1176,7 @@ namespace Katana { cdebug_log(159,0) << "Manipulator::moveUp() " << _segment << endl; Flags kflags = Flags::WithNeighbors; - //kflags |= (flags & AllowLocalMoveUp ) ? Flags::AutoSegment::AllowLocal : 0; + kflags |= (flags & AllowLocalMoveUp ) ? Flags::AllowLocal : Flags::NoFlags; kflags |= (flags & AllowTerminalMoveUp) ? Flags::AllowTerminal : Flags::NoFlags; kflags |= (flags & IgnoreContacts ) ? Flags::IgnoreContacts : Flags::NoFlags; diff --git a/katana/src/SegmentFsm.cpp b/katana/src/SegmentFsm.cpp index 09c2be30..fa5124bf 100644 --- a/katana/src/SegmentFsm.cpp +++ b/katana/src/SegmentFsm.cpp @@ -1286,6 +1286,13 @@ namespace Katana { if (nextState == DataNegociate::Minimize) { if (isFullBlocked() and not segment->isTerminal()) { cdebug_log(159,0) << "Is Fully blocked." << endl; + if (_costs.size() > 7) { + success = manipulator.moveUp( Manipulator::AllowLocalMoveUp ); + if (success) { + cdebug_log(159,0) << "Was able to move up." << endl; + break; + } + } nextState = DataNegociate::Unimplemented; break; } @@ -1388,7 +1395,8 @@ namespace Katana { << ((manipulator.getEvent()) ? manipulator.getEvent()->getConstraints() : "(no event yet)") << endl; if ( manipulator.getEvent() - and manipulator.getEvent()->getConstraints().isPonctual() + and ( manipulator.getEvent()->getConstraints().isPonctual() + or (isFullBlocked() and (_costs.size() > 7))) and segment->canMoveUp(1.0,Flags::CheckLowUpDensity|Flags::AllowTerminal) ) { moveUpFlags |= Manipulator::AllowTerminalMoveUp; } else { diff --git a/katana/src/katana/SegmentFsm.h b/katana/src/katana/SegmentFsm.h index af6e6453..98da32a0 100644 --- a/katana/src/katana/SegmentFsm.h +++ b/katana/src/katana/SegmentFsm.h @@ -14,9 +14,7 @@ // +-----------------------------------------------------------------+ -#ifndef KATANA_SEGMENT_FSM_H -#define KATANA_SEGMENT_FSM_H - +#pragma once #include "katana/TrackCost.h" namespace Katana { @@ -240,5 +238,3 @@ namespace Katana { } } // Katana namespace. - -#endif // KATANA_SEGMENT_FSM_H