diff options
author | David Walter Seikel | 2012-04-22 09:19:23 +1000 |
---|---|---|
committer | David Walter Seikel | 2012-04-22 09:19:23 +1000 |
commit | c963d75dfdeec11f82e79e727062fbf89afa2c04 (patch) | |
tree | 895633dbf641110be46f117c29890c49b3ffc0bd /libraries/evas/src/lib/canvas/evas_render.c | |
parent | Adding the new extantz viewer and grid manager. (diff) | |
download | SledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.zip SledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.tar.gz SledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.tar.bz2 SledjHamr-c963d75dfdeec11f82e79e727062fbf89afa2c04.tar.xz |
Update EFL to latest beta.
Diffstat (limited to '')
-rw-r--r-- | libraries/evas/src/lib/canvas/evas_render.c | 63 |
1 files changed, 49 insertions, 14 deletions
diff --git a/libraries/evas/src/lib/canvas/evas_render.c b/libraries/evas/src/lib/canvas/evas_render.c index cdedaec..32ce988 100644 --- a/libraries/evas/src/lib/canvas/evas_render.c +++ b/libraries/evas/src/lib/canvas/evas_render.c | |||
@@ -612,6 +612,8 @@ pending_change(void *data, void *gdata __UNUSED__) | |||
612 | obj->changed_move_only = 0; | 612 | obj->changed_move_only = 0; |
613 | obj->changed_nomove = 0; | 613 | obj->changed_nomove = 0; |
614 | obj->changed_move = 0; | 614 | obj->changed_move = 0; |
615 | obj->changed_map = 0; | ||
616 | obj->changed_pchange = 0; | ||
615 | } | 617 | } |
616 | return obj->changed ? EINA_TRUE : EINA_FALSE; | 618 | return obj->changed ? EINA_TRUE : EINA_FALSE; |
617 | } | 619 | } |
@@ -984,6 +986,8 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface, | |||
984 | o2->changed_move_only = 0; | 986 | o2->changed_move_only = 0; |
985 | o2->changed_nomove = 0; | 987 | o2->changed_nomove = 0; |
986 | o2->changed_move = 0; | 988 | o2->changed_move = 0; |
989 | o2->changed_map = 0; | ||
990 | o2->changed_pchange = 0; | ||
987 | continue; | 991 | continue; |
988 | } | 992 | } |
989 | if (o2->changed) | 993 | if (o2->changed) |
@@ -994,6 +998,8 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface, | |||
994 | o2->changed_move_only = 0; | 998 | o2->changed_move_only = 0; |
995 | o2->changed_nomove = 0; | 999 | o2->changed_nomove = 0; |
996 | o2->changed_move = 0; | 1000 | o2->changed_move = 0; |
1001 | o2->changed_map = 0; | ||
1002 | o2->changed_pchange = 0; | ||
997 | break; | 1003 | break; |
998 | } | 1004 | } |
999 | } | 1005 | } |
@@ -1002,16 +1008,21 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface, | |||
1002 | obj->changed_move_only = 0; | 1008 | obj->changed_move_only = 0; |
1003 | obj->changed_nomove = 0; | 1009 | obj->changed_nomove = 0; |
1004 | obj->changed_move = 0; | 1010 | obj->changed_move = 0; |
1011 | obj->changed_map = 0; | ||
1012 | obj->changed_pchange = 0; | ||
1005 | } | 1013 | } |
1006 | else | 1014 | else |
1007 | { | 1015 | { |
1008 | if (obj->changed) | 1016 | if (obj->changed) |
1009 | { | 1017 | { |
1010 | changed = 1; | 1018 | if ((obj->changed_pchange) && (obj->changed_map)) |
1019 | changed = 1; | ||
1011 | obj->changed = 0; | 1020 | obj->changed = 0; |
1012 | obj->changed_move_only = 0; | 1021 | obj->changed_move_only = 0; |
1013 | obj->changed_nomove = 0; | 1022 | obj->changed_nomove = 0; |
1014 | obj->changed_move = 0; | 1023 | obj->changed_move = 0; |
1024 | obj->changed_map = 0; | ||
1025 | obj->changed_pchange = 0; | ||
1015 | } | 1026 | } |
1016 | } | 1027 | } |
1017 | 1028 | ||
@@ -1144,10 +1155,12 @@ evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface, | |||
1144 | e->engine.data.context, | 1155 | e->engine.data.context, |
1145 | ecx, ecy, ecw, ech); | 1156 | ecx, ecy, ecw, ech); |
1146 | if (obj->cur.cache.clip.visible) | 1157 | if (obj->cur.cache.clip.visible) |
1147 | obj->layer->evas->engine.func->image_map_draw | 1158 | { |
1148 | (e->engine.data.output, e->engine.data.context, surface, | 1159 | obj->layer->evas->engine.func->image_map_draw |
1149 | obj->cur.map->surface, obj->cur.map->count, pts, | 1160 | (e->engine.data.output, e->engine.data.context, surface, |
1150 | obj->cur.map->smooth, 0); | 1161 | obj->cur.map->surface, obj->cur.map->count, pts, |
1162 | obj->cur.map->smooth, 0); | ||
1163 | } | ||
1151 | // FIXME: needs to cache these maps and | 1164 | // FIXME: needs to cache these maps and |
1152 | // keep them only rendering updates | 1165 | // keep them only rendering updates |
1153 | // obj->layer->evas->engine.func->image_map_surface_free | 1166 | // obj->layer->evas->engine.func->image_map_surface_free |
@@ -1500,6 +1513,12 @@ evas_render_updates_internal(Evas *e, | |||
1500 | off_x = cx - ux; | 1513 | off_x = cx - ux; |
1501 | off_y = cy - uy; | 1514 | off_y = cy - uy; |
1502 | /* build obscuring objects list (in order from bottom to top) */ | 1515 | /* build obscuring objects list (in order from bottom to top) */ |
1516 | if (alpha) | ||
1517 | { | ||
1518 | e->engine.func->context_clip_set(e->engine.data.output, | ||
1519 | e->engine.data.context, | ||
1520 | ux + off_x, uy + off_y, uw, uh); | ||
1521 | } | ||
1503 | for (i = 0; i < e->obscuring_objects.count; ++i) | 1522 | for (i = 0; i < e->obscuring_objects.count; ++i) |
1504 | { | 1523 | { |
1505 | obj = (Evas_Object *)eina_array_data_get | 1524 | obj = (Evas_Object *)eina_array_data_get |
@@ -1515,9 +1534,6 @@ evas_render_updates_internal(Evas *e, | |||
1515 | } | 1534 | } |
1516 | if (alpha) | 1535 | if (alpha) |
1517 | { | 1536 | { |
1518 | e->engine.func->context_clip_set(e->engine.data.output, | ||
1519 | e->engine.data.context, | ||
1520 | ux + off_x, uy + off_y, uw, uh); | ||
1521 | e->engine.func->context_color_set(e->engine.data.output, | 1537 | e->engine.func->context_color_set(e->engine.data.output, |
1522 | e->engine.data.context, | 1538 | e->engine.data.context, |
1523 | 0, 0, 0, 0); | 1539 | 0, 0, 0, 0); |
@@ -1548,7 +1564,7 @@ evas_render_updates_internal(Evas *e, | |||
1548 | (obj->cur.visible) && | 1564 | (obj->cur.visible) && |
1549 | (!obj->delete_me) && | 1565 | (!obj->delete_me) && |
1550 | (obj->cur.cache.clip.visible) && | 1566 | (obj->cur.cache.clip.visible) && |
1551 | // (!obj->smart.smart) && | 1567 | // (!obj->smart.smart) && |
1552 | ((obj->cur.color.a > 0 || obj->cur.render_op != EVAS_RENDER_BLEND))) | 1568 | ((obj->cur.color.a > 0 || obj->cur.render_op != EVAS_RENDER_BLEND))) |
1553 | { | 1569 | { |
1554 | int x, y, w, h; | 1570 | int x, y, w, h; |
@@ -1579,6 +1595,9 @@ evas_render_updates_internal(Evas *e, | |||
1579 | else | 1595 | else |
1580 | e->engine.func->context_mask_unset(e->engine.data.output, | 1596 | e->engine.func->context_mask_unset(e->engine.data.output, |
1581 | e->engine.data.context); | 1597 | e->engine.data.context); |
1598 | e->engine.func->context_clip_set(e->engine.data.output, | ||
1599 | e->engine.data.context, | ||
1600 | x, y, w, h); | ||
1582 | #if 1 /* FIXME: this can slow things down... figure out optimum... coverage */ | 1601 | #if 1 /* FIXME: this can slow things down... figure out optimum... coverage */ |
1583 | for (j = offset; j < e->temporary_objects.count; ++j) | 1602 | for (j = offset; j < e->temporary_objects.count; ++j) |
1584 | { | 1603 | { |
@@ -1589,9 +1608,6 @@ evas_render_updates_internal(Evas *e, | |||
1589 | _evas_render_cutout_add(e, obj2, off_x, off_y); | 1608 | _evas_render_cutout_add(e, obj2, off_x, off_y); |
1590 | } | 1609 | } |
1591 | #endif | 1610 | #endif |
1592 | e->engine.func->context_clip_set(e->engine.data.output, | ||
1593 | e->engine.data.context, | ||
1594 | x, y, w, h); | ||
1595 | clean_them |= evas_render_mapped(e, obj, e->engine.data.context, | 1611 | clean_them |= evas_render_mapped(e, obj, e->engine.data.context, |
1596 | surface, off_x, off_y, 0, | 1612 | surface, off_x, off_y, 0, |
1597 | cx, cy, cw, ch | 1613 | cx, cy, cw, ch |
@@ -1637,6 +1653,8 @@ evas_render_updates_internal(Evas *e, | |||
1637 | obj->changed_move_only = 0; | 1653 | obj->changed_move_only = 0; |
1638 | obj->changed_nomove = 0; | 1654 | obj->changed_nomove = 0; |
1639 | obj->changed_move = 0; | 1655 | obj->changed_move = 0; |
1656 | obj->changed_map = 0; | ||
1657 | obj->changed_pchange = 0; | ||
1640 | } | 1658 | } |
1641 | else if ((obj->cur.map != obj->prev.map) || | 1659 | else if ((obj->cur.map != obj->prev.map) || |
1642 | (obj->cur.usemap != obj->prev.usemap)) | 1660 | (obj->cur.usemap != obj->prev.usemap)) |
@@ -1648,6 +1666,8 @@ evas_render_updates_internal(Evas *e, | |||
1648 | obj->changed_move_only = 0; | 1666 | obj->changed_move_only = 0; |
1649 | obj->changed_nomove = 0; | 1667 | obj->changed_nomove = 0; |
1650 | obj->changed_move = 0; | 1668 | obj->changed_move = 0; |
1669 | obj->changed_map = 0; | ||
1670 | obj->changed_pchange = 0; | ||
1651 | } | 1671 | } |
1652 | /* moved to other pre-process phase 1 | 1672 | /* moved to other pre-process phase 1 |
1653 | if (obj->delete_me == 2) | 1673 | if (obj->delete_me == 2) |
@@ -1684,6 +1704,7 @@ evas_render_updates_internal(Evas *e, | |||
1684 | e->framespace.changed = 0; | 1704 | e->framespace.changed = 0; |
1685 | e->invalidate = 0; | 1705 | e->invalidate = 0; |
1686 | 1706 | ||
1707 | // always clean... lots of mem waste! | ||
1687 | /* If their are some object to restack or some object to delete, | 1708 | /* If their are some object to restack or some object to delete, |
1688 | * it's useless to keep the render object list around. */ | 1709 | * it's useless to keep the render object list around. */ |
1689 | if (clean_them) | 1710 | if (clean_them) |
@@ -1693,6 +1714,17 @@ evas_render_updates_internal(Evas *e, | |||
1693 | eina_array_clean(&e->restack_objects); | 1714 | eina_array_clean(&e->restack_objects); |
1694 | eina_array_clean(&e->delete_objects); | 1715 | eina_array_clean(&e->delete_objects); |
1695 | eina_array_clean(&e->obscuring_objects); | 1716 | eina_array_clean(&e->obscuring_objects); |
1717 | eina_array_clean(&e->temporary_objects); | ||
1718 | eina_array_clean(&e->clip_changes); | ||
1719 | /* we should flush here and have a mempool system for this | ||
1720 | eina_array_flush(&e->active_objects); | ||
1721 | eina_array_flush(&e->render_objects); | ||
1722 | eina_array_flush(&e->restack_objects); | ||
1723 | eina_array_flush(&e->delete_objects); | ||
1724 | eina_array_flush(&e->obscuring_objects); | ||
1725 | eina_array_flush(&e->temporary_objects); | ||
1726 | eina_array_flush(&e->clip_changes); | ||
1727 | */ | ||
1696 | e->invalidate = 1; | 1728 | e->invalidate = 1; |
1697 | } | 1729 | } |
1698 | 1730 | ||
@@ -1768,11 +1800,14 @@ evas_render_idle_flush(Evas *e) | |||
1768 | (e->engine.data.output)) | 1800 | (e->engine.data.output)) |
1769 | e->engine.func->output_idle_flush(e->engine.data.output); | 1801 | e->engine.func->output_idle_flush(e->engine.data.output); |
1770 | 1802 | ||
1771 | eina_array_flush(&e->delete_objects); | ||
1772 | eina_array_flush(&e->active_objects); | 1803 | eina_array_flush(&e->active_objects); |
1773 | eina_array_flush(&e->restack_objects); | ||
1774 | eina_array_flush(&e->render_objects); | 1804 | eina_array_flush(&e->render_objects); |
1805 | eina_array_flush(&e->restack_objects); | ||
1806 | eina_array_flush(&e->delete_objects); | ||
1807 | eina_array_flush(&e->obscuring_objects); | ||
1808 | eina_array_flush(&e->temporary_objects); | ||
1775 | eina_array_flush(&e->clip_changes); | 1809 | eina_array_flush(&e->clip_changes); |
1810 | eina_array_flush(&e->temporary_objects); | ||
1776 | 1811 | ||
1777 | e->invalidate = 1; | 1812 | e->invalidate = 1; |
1778 | } | 1813 | } |