diff options
Diffstat (limited to 'generic')
-rw-r--r-- | generic/Group.c | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/generic/Group.c b/generic/Group.c index 9f117a3..3c061eb 100644 --- a/generic/Group.c +++ b/generic/Group.c @@ -487,7 +487,9 @@ PushClip(GroupItem group, ((((Item) group) != wi->top_group) || !wi->reshape)) { simple = group->clip->class->GetClipVertices(group->clip, &tristrip); /*printf("Group: PushClip group %d\n", ((Item) group)->id);*/ - ZnPushClip(wi, &tristrip, simple, set_gc); + if (tristrip.num_strips) { + ZnPushClip(wi, &tristrip, simple, set_gc); + } } } @@ -616,6 +618,7 @@ CallRegularCC(Item item) * Do some generic post-work in behalf of the (regular) children. */ #ifdef GLX +#ifdef GL_LIST /* * Remove the item display list so that it will be recreated * to reflect the changes. @@ -625,6 +628,7 @@ CallRegularCC(Item item) item->gl_list = 0; } #endif +#endif if (ISSET(item->inv_flags, ZN_REPICK_FLAG)) { SET(wi->events_flags, INTERNAL_NEED_REPICK); } @@ -941,10 +945,11 @@ Draw(Item item) PushTransform(item); PushClip(group, True); if (group->clip != ZN_NO_ITEM) { - ZnCurrentClip(wi, NULL, &clip_box, NULL); old_damaged_area = wi->damaged_area; - IntersectBBox(&wi->damaged_area, clip_box, &bbox); - wi->damaged_area = bbox; + if (ZnCurrentClip(wi, NULL, &clip_box, NULL)) { + IntersectBBox(&wi->damaged_area, clip_box, &bbox); + wi->damaged_area = bbox; + } } current_item = group->tail; @@ -1022,10 +1027,11 @@ Render(Item item) PushClip(group, True); #ifdef GLX_DAMAGE if (group->clip != ZN_NO_ITEM) { - ZnCurrentClip(wi, NULL, &clip_box, NULL); old_damaged_area = wi->damaged_area; - IntersectBBox(&wi->damaged_area, clip_box, &bbox); - wi->damaged_area = bbox; + if (ZnCurrentClip(wi, NULL, &clip_box, NULL)) { + IntersectBBox(&wi->damaged_area, clip_box, &bbox); + wi->damaged_area = bbox; + } } #endif |