summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2012-10-09 18:11:48 -0400
committerSøren Sandmann Pedersen <ssp@redhat.com>2012-10-09 18:11:48 -0400
commit5247a449cb90ee09759595bdcea89f57e38d542b (patch)
tree01c763c164c8ceb634a9d816db253a1313a60e68
parent60277ff2731a71e4d2e366d28fa0080a626c719a (diff)
more bug fixing
-rw-r--r--demo.c4
-rw-r--r--region-iter.c39
2 files changed, 23 insertions, 20 deletions
diff --git a/demo.c b/demo.c
index 828fede..24586e5 100644
--- a/demo.c
+++ b/demo.c
@@ -128,13 +128,13 @@ on_allocate (GtkWidget *widget, GtkAllocation *allocation)
int
main (int argc, char **argv)
{
- GtkWindow *window;
+ GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_window_set_default_size (window, 1200, 768);
+ gtk_window_set_default_size (GTK_WINDOW (window), 1200, 768);
g_signal_connect (window, "size_allocate", G_CALLBACK (on_allocate), NULL);
g_signal_connect (window, "expose_event", G_CALLBACK (on_expose), NULL);
diff --git a/region-iter.c b/region-iter.c
index 062164d..0c58f1f 100644
--- a/region-iter.c
+++ b/region-iter.c
@@ -3,6 +3,7 @@
*
* - builder
* - move api from pixman-region.c
+ * - make it generate 'broken' regions when out of memory
* - test suite
*
* - consider an iterator that will combine
@@ -293,6 +294,8 @@ region_builder_add_row (region_builder_t *builder, const row_t *row)
first++;
}
+
+ return TRUE;
}
static pixman_bool_t
@@ -314,32 +317,32 @@ region_builder_finish (region_builder_t *builder, pixman_region32_t *region)
pixman_region32_init_rect (
region, b->x1, b->y1, b->x2 - b->x1, b->y2 - b->y1);
+
+ return TRUE;
}
else
{
- pixman_box32_t *extents = &(region->extents);
+ pixman_box32_t extents = { INT32_MAX, INT32_MAX, INT32_MIN, INT32_MIN };
int i;
- extents->x1 = INT32_MAX;
- extents->y1 = INT32_MAX;
- extents->x2 = INT32_MIN;
- extents->y2 = INT32_MIN;
-
for (i = 0; i < builder->data->numRects; ++i)
{
pixman_box32_t *b = (pixman_box32_t *)(builder->data + 1 + i);
- if (b->x1 < extents->x1)
- extents->x1 = b->x1;
- if (b->y1 < extents->y1)
- extents->y1 = b->y1;
- if (b->x2 > extents->x2)
- extents->x2 = b->x2;
- if (b->y2 > extents->y2)
- extents->y2 = b->y2;
+ if (b->x1 < extents.x1)
+ extents.x1 = b->x1;
+ if (b->y1 < extents.y1)
+ extents.y1 = b->y1;
+ if (b->x2 > extents.x2)
+ extents.x2 = b->x2;
+ if (b->y2 > extents.y2)
+ extents.y2 = b->y2;
}
+ region->extents = extents;
region->data = builder->data;
+
+ return TRUE;
}
}
@@ -759,7 +762,8 @@ region_op (ops_t op,
}
pixman_region32_fini (dst);
- region_builder_finish (&builder, dst);
+
+ return region_builder_finish (&builder, dst);
}
static int
@@ -767,7 +771,6 @@ compare_boxes (const void *box1v, const void *box2v)
{
const pixman_box32_t *box1 = box1v;
const pixman_box32_t *box2 = box2v;
- int c;
if (box1->y1 == box2->y1)
return 0;
@@ -809,9 +812,9 @@ make_region_from_sorted (pixman_region32_t *region,
return FALSE;
}
-
- return TRUE;
}
+
+ return TRUE;
}
pixman_bool_t