Merge branch 'master' into branch-1.9
[fw/altos] / src / draw / ao_copy.c
index 47067bb829a2fc62240cff5e2f32ddc7647fda1b..a506aed7737b203fefe17e919e0fe89bf0eddeb8 100644 (file)
  * General Public License for more details.
  */
 
-#include "ao.h"
-#include "ao_draw.h"
-#include "ao_draw_int.h"
+#include <ao_draw.h>
+#include <ao_draw_int.h>
 
 #define bound(val,max,other) do {              \
                if (val < 0) {                  \
-                       other -= val;           \
+                       other += (typeof(other)) (-val);        \
                        val = 0;                \
                }                               \
                if (val > max) {                \
-                       other -= (val - max);   \
+                       other -= (typeof(other)) (val - max);   \
                        val = max;              \
                }                               \
        } while (0)
@@ -33,7 +32,7 @@
        } while (0)
 
 void
-ao_copy(const struct ao_bitmap *dst,
+ao_copy(struct ao_bitmap       *dst,
        int16_t                 dst_x,
        int16_t                 dst_y,
        int16_t                 width,
@@ -58,6 +57,8 @@ ao_copy(const struct ao_bitmap        *dst,
                upsidedown = (dst_y > src_y);
        }
 
+       ao_damage(dst, dst_x, dst_y, dst_x2, dst_y2);
+
        if (dst_x < dst_x2 && dst_y < dst_y2) {
                ao_blt(src->base + src_y * src->stride,
                       src->stride,