summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2006-01-08 06:11:18 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2006-01-08 06:11:18 +0000
commitea8167d9194cc3aac2b747f88df628faa7288629 (patch)
tree4246326cc354590f4c77444a5dcfa3b1b26c2266 /gdk
parent4c19425693da331f43cc6cd19a97a77a8b684fe3 (diff)
downloadgtk+-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.c23
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;