- int lb = barrier(state, GX(0), GY(y));
- int rb = barrier(state, GX(ds->width-1), GY(y));
- draw_barrier_corner(fe, -1, y, RU, phase, lb & UL);
- draw_barrier_corner(fe, -1, y, DR, phase, lb & LD);
- draw_barrier(fe, -1, y, R, phase, lb & L);
- draw_barrier_corner(fe, ds->width, y, UL, phase, rb & RU);
- draw_barrier_corner(fe, ds->width, y, LD, phase, rb & DR);
- draw_barrier(fe, ds->width, y, L, phase, rb & R);
+ if (y+1 < ds->height) {
+ if (barrier(state, GX(0), GY(y)) & D)
+ draw_barrier_corner(fe, -1, y, +1, +1, phase);
+ if (barrier(state, GX(ds->width-1), GY(y)) & D)
+ draw_barrier_corner(fe, ds->width, y, -1, +1, phase);
+ }
+ if (barrier(state, GX(0), GY(y)) & L) {
+ draw_barrier_corner(fe, -1, y, +1, -1, phase);
+ draw_barrier_corner(fe, -1, y, +1, +1, phase);
+ draw_barrier(fe, -1, y, R, phase);
+ }
+ if (barrier(state, GX(ds->width-1), GY(y)) & R) {
+ draw_barrier_corner(fe, ds->width, y, -1, -1, phase);
+ draw_barrier_corner(fe, ds->width, y, -1, +1, phase);
+ draw_barrier(fe, ds->width, y, L, phase);
+ }