diff options
author | Matthias Clasen <mclasen@redhat.com> | 2006-01-08 06:11:18 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2006-01-08 06:11:18 +0000 |
commit | ea8167d9194cc3aac2b747f88df628faa7288629 (patch) | |
tree | 4246326cc354590f4c77444a5dcfa3b1b26c2266 /gdk | |
parent | 4c19425693da331f43cc6cd19a97a77a8b684fe3 (diff) | |
download | gtk+-ea8167d9194cc3aac2b747f88df628faa7288629.tar.gz |
Fix this for the single-rectangle case. (#326127, Benjamin Berg)
2006-01-08 Matthias Clasen <mclasen@redhat.com>
* gdk/gdkregion-generic.c (miRegionCopy): Fix this for the
single-rectangle case. (#326127, Benjamin Berg)
(gdk_region_copy): Use miRegionCopy() here.
Diffstat (limited to 'gdk')
-rw-r--r-- | gdk/gdkregion-generic.c | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/gdk/gdkregion-generic.c b/gdk/gdkregion-generic.c index 267b44a159..2d1524bbcb 100644 --- a/gdk/gdkregion-generic.c +++ b/gdk/gdkregion-generic.c @@ -168,19 +168,9 @@ gdk_region_copy (GdkRegion *region) g_return_val_if_fail (region != NULL, NULL); - temp = g_slice_new (GdkRegion); + temp = gdk_region_new (); - temp->numRects = region->numRects; - temp->extents = region->extents; - temp->size = region->numRects; - - if (region->numRects == 1) - temp->rects = &temp->extents; - else - { - temp->rects = g_new (GdkRegionBox, region->numRects); - memcpy (temp->rects, region->rects, region->numRects * sizeof (GdkRegionBox)); - } + miRegionCopy (temp, region); return temp; } @@ -600,15 +590,20 @@ gdk_region_intersect (GdkRegion *source1, } static void -miRegionCopy(GdkRegion *dstrgn, GdkRegion *rgn) +miRegionCopy (GdkRegion *dstrgn, + GdkRegion *rgn) { if (dstrgn != rgn) /* don't want to copy to itself */ { if (dstrgn->size < rgn->numRects) { - dstrgn->rects = g_renew (GdkRegionBox, dstrgn->rects, rgn->numRects); + if (dstrgn->rects != &dstrgn->extents) + g_free (dstrgn->rects); + + dstrgn->rects = g_new (GdkRegionBox, rgn->numRects); dstrgn->size = rgn->numRects; } + dstrgn->numRects = rgn->numRects; dstrgn->extents = rgn->extents; |