Fixing formatting with astyle in common/*
This commit is contained in:
@@ -47,7 +47,9 @@ fifo_delete(FIFO *self)
|
||||
USER_DATA *udp;
|
||||
|
||||
if (!self)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!self->head)
|
||||
{
|
||||
@@ -60,7 +62,9 @@ fifo_delete(FIFO *self)
|
||||
{
|
||||
/* only one item in FIFO */
|
||||
if (self->auto_free)
|
||||
{
|
||||
g_free(self->head->item);
|
||||
}
|
||||
|
||||
g_free(self->head);
|
||||
g_free(self);
|
||||
@@ -73,7 +77,9 @@ fifo_delete(FIFO *self)
|
||||
udp = self->head;
|
||||
|
||||
if (self->auto_free)
|
||||
{
|
||||
g_free(udp->item);
|
||||
}
|
||||
|
||||
self->head = udp->next;
|
||||
g_free(udp);
|
||||
@@ -97,10 +103,14 @@ fifo_add_item(FIFO *self, void *item)
|
||||
USER_DATA *udp;
|
||||
|
||||
if (!self || !item)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ((udp = (USER_DATA *) g_malloc(sizeof(USER_DATA), 0)) == 0)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
udp->item = item;
|
||||
udp->next = 0;
|
||||
@@ -135,7 +145,9 @@ fifo_remove_item(FIFO *self)
|
||||
USER_DATA *udp;
|
||||
|
||||
if (!self || !self->head)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (self->head == self->tail)
|
||||
{
|
||||
@@ -167,7 +179,9 @@ int
|
||||
fifo_is_empty(FIFO *self)
|
||||
{
|
||||
if (!self)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return (self->head == 0);
|
||||
}
|
||||
|
||||
+2
-1
@@ -648,7 +648,8 @@ g_sck_get_peer_cred(int sck, int *pid, int *uid, int *gid)
|
||||
{
|
||||
*uid = xucred.cr_uid;
|
||||
}
|
||||
if (gid != 0) {
|
||||
if (gid != 0)
|
||||
{
|
||||
*gid = xucred.cr_gid;
|
||||
}
|
||||
return 0;
|
||||
|
||||
+222
-3
@@ -200,10 +200,14 @@ PIXREGION_SZOF (size_t n)
|
||||
size_t size = n * sizeof(box_type_t);
|
||||
|
||||
if (n > UINT32_MAX / sizeof(box_type_t))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (sizeof(region_data_type_t) > UINT32_MAX - size)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return size + sizeof(region_data_type_t);
|
||||
}
|
||||
@@ -214,7 +218,9 @@ alloc_data (size_t n)
|
||||
size_t sz = PIXREGION_SZOF (n);
|
||||
|
||||
if (!sz)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return (region_data_type_t *) malloc(sz);
|
||||
}
|
||||
@@ -305,19 +311,29 @@ PREFIX (_equal) (region_type_t *reg1, region_type_t *reg2)
|
||||
box_type_t *rects2;
|
||||
|
||||
if (reg1->extents.x1 != reg2->extents.x1)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (reg1->extents.x2 != reg2->extents.x2)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (reg1->extents.y1 != reg2->extents.y1)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (reg1->extents.y2 != reg2->extents.y2)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (PIXREGION_NUMRECTS (reg1) != PIXREGION_NUMRECTS (reg2))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
rects1 = PIXREGION_RECTS (reg1);
|
||||
rects2 = PIXREGION_RECTS (reg2);
|
||||
@@ -325,17 +341,25 @@ PREFIX (_equal) (region_type_t *reg1, region_type_t *reg2)
|
||||
for (i = 0; i != PIXREGION_NUMRECTS (reg1); i++)
|
||||
{
|
||||
if (rects1[i].x1 != rects2[i].x1)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (rects1[i].x2 != rects2[i].x2)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (rects1[i].y1 != rects2[i].y1)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (rects1[i].y2 != rects2[i].y2)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -392,7 +416,9 @@ PREFIX (_init_rect) (region_type_t * region,
|
||||
if (!GOOD_RECT (®ion->extents))
|
||||
{
|
||||
if (BAD_RECT (®ion->extents))
|
||||
{
|
||||
_pixman_log_error (FUNC, "Invalid rectangle passed");
|
||||
}
|
||||
PREFIX (_init) (region);
|
||||
return;
|
||||
}
|
||||
@@ -406,7 +432,9 @@ PREFIX (_init_with_extents) (region_type_t *region, box_type_t *extents)
|
||||
if (!GOOD_RECT (extents))
|
||||
{
|
||||
if (BAD_RECT (extents))
|
||||
{
|
||||
_pixman_log_error (FUNC, "Invalid rectangle passed");
|
||||
}
|
||||
PREFIX (_init) (region);
|
||||
return;
|
||||
}
|
||||
@@ -433,7 +461,9 @@ PREFIX (_rectangles) (region_type_t *region,
|
||||
int *n_rects)
|
||||
{
|
||||
if (n_rects)
|
||||
{
|
||||
*n_rects = PIXREGION_NUMRECTS (region);
|
||||
}
|
||||
|
||||
return PIXREGION_RECTS (region);
|
||||
}
|
||||
@@ -461,7 +491,9 @@ pixman_rect_alloc (region_type_t * region,
|
||||
region->data = alloc_data (n);
|
||||
|
||||
if (!region->data)
|
||||
{
|
||||
return pixman_break (region);
|
||||
}
|
||||
|
||||
region->data->numRects = 1;
|
||||
*PIXREGION_BOXPTR (region) = region->extents;
|
||||
@@ -471,7 +503,9 @@ pixman_rect_alloc (region_type_t * region,
|
||||
region->data = alloc_data (n);
|
||||
|
||||
if (!region->data)
|
||||
{
|
||||
return pixman_break (region);
|
||||
}
|
||||
|
||||
region->data->numRects = 0;
|
||||
}
|
||||
@@ -483,8 +517,10 @@ pixman_rect_alloc (region_type_t * region,
|
||||
{
|
||||
n = region->data->numRects;
|
||||
if (n > 500) /* XXX pick numbers out of a hat */
|
||||
{
|
||||
n = 250;
|
||||
}
|
||||
}
|
||||
|
||||
n += region->data->numRects;
|
||||
data_size = PIXREGION_SZOF (n);
|
||||
@@ -500,7 +536,9 @@ pixman_rect_alloc (region_type_t * region,
|
||||
}
|
||||
|
||||
if (!data)
|
||||
{
|
||||
return pixman_break (region);
|
||||
}
|
||||
|
||||
region->data = data;
|
||||
}
|
||||
@@ -517,7 +555,9 @@ PREFIX (_copy) (region_type_t *dst, region_type_t *src)
|
||||
GOOD (src);
|
||||
|
||||
if (dst == src)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
dst->extents = src->extents;
|
||||
|
||||
@@ -535,7 +575,9 @@ PREFIX (_copy) (region_type_t *dst, region_type_t *src)
|
||||
dst->data = alloc_data (src->data->numRects);
|
||||
|
||||
if (!dst->data)
|
||||
{
|
||||
return pixman_break (dst);
|
||||
}
|
||||
|
||||
dst->data->size = src->data->numRects;
|
||||
}
|
||||
@@ -586,7 +628,10 @@ pixman_coalesce (region_type_t * region, /* Region to coalesce
|
||||
numRects = cur_start - prev_start;
|
||||
critical_if_fail (numRects == region->data->numRects - cur_start);
|
||||
|
||||
if (!numRects) return cur_start;
|
||||
if (!numRects)
|
||||
{
|
||||
return cur_start;
|
||||
}
|
||||
|
||||
/*
|
||||
* The bands may only be coalesced if the bottom of the previous
|
||||
@@ -594,7 +639,10 @@ pixman_coalesce (region_type_t * region, /* Region to coalesce
|
||||
*/
|
||||
prev_box = PIXREGION_BOX (region, prev_start);
|
||||
cur_box = PIXREGION_BOX (region, cur_start);
|
||||
if (prev_box->y2 != cur_box->y1) return cur_start;
|
||||
if (prev_box->y2 != cur_box->y1)
|
||||
{
|
||||
return cur_start;
|
||||
}
|
||||
|
||||
/*
|
||||
* Make sure the bands have boxes in the same places. This
|
||||
@@ -607,7 +655,9 @@ pixman_coalesce (region_type_t * region, /* Region to coalesce
|
||||
do
|
||||
{
|
||||
if ((prev_box->x1 != cur_box->x1) || (prev_box->x2 != cur_box->x2))
|
||||
{
|
||||
return (cur_start);
|
||||
}
|
||||
|
||||
prev_box++;
|
||||
cur_box++;
|
||||
@@ -788,7 +838,9 @@ pixman_op (region_type_t * new_reg, /* Place to store result
|
||||
* Break any region computed from a broken region
|
||||
*/
|
||||
if (PIXREGION_NAR (reg1) || PIXREGION_NAR (reg2))
|
||||
{
|
||||
return pixman_break (new_reg);
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialization:
|
||||
@@ -820,14 +872,20 @@ pixman_op (region_type_t * new_reg, /* Place to store result
|
||||
|
||||
/* guess at new size */
|
||||
if (numRects > new_size)
|
||||
{
|
||||
new_size = numRects;
|
||||
}
|
||||
|
||||
new_size <<= 1;
|
||||
|
||||
if (!new_reg->data)
|
||||
{
|
||||
new_reg->data = pixman_region_empty_data;
|
||||
}
|
||||
else if (new_reg->data->size)
|
||||
{
|
||||
new_reg->data->numRects = 0;
|
||||
}
|
||||
|
||||
if (new_size > new_reg->data->size)
|
||||
{
|
||||
@@ -898,7 +956,9 @@ pixman_op (region_type_t * new_reg, /* Place to store result
|
||||
{
|
||||
cur_band = new_reg->data->numRects;
|
||||
if (!pixman_region_append_non_o (new_reg, r1, r1_band_end, top, bot))
|
||||
{
|
||||
goto bail;
|
||||
}
|
||||
COALESCE (new_reg, prev_band, cur_band);
|
||||
}
|
||||
}
|
||||
@@ -916,7 +976,9 @@ pixman_op (region_type_t * new_reg, /* Place to store result
|
||||
cur_band = new_reg->data->numRects;
|
||||
|
||||
if (!pixman_region_append_non_o (new_reg, r2, r2_band_end, top, bot))
|
||||
{
|
||||
goto bail;
|
||||
}
|
||||
|
||||
COALESCE (new_reg, prev_band, cur_band);
|
||||
}
|
||||
@@ -953,10 +1015,14 @@ pixman_op (region_type_t * new_reg, /* Place to store result
|
||||
* in the region to the next band.
|
||||
*/
|
||||
if (r1->y2 == ybot)
|
||||
{
|
||||
r1 = r1_band_end;
|
||||
}
|
||||
|
||||
if (r2->y2 == ybot)
|
||||
{
|
||||
r2 = r2_band_end;
|
||||
}
|
||||
|
||||
}
|
||||
while (r1 != r1_end && r2 != r2_end);
|
||||
@@ -1055,7 +1121,9 @@ pixman_set_extents (region_type_t *region)
|
||||
box_type_t *box, *box_end;
|
||||
|
||||
if (!region->data)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!region->data->size)
|
||||
{
|
||||
@@ -1084,9 +1152,13 @@ pixman_set_extents (region_type_t *region)
|
||||
while (box <= box_end)
|
||||
{
|
||||
if (box->x1 < region->extents.x1)
|
||||
{
|
||||
region->extents.x1 = box->x1;
|
||||
}
|
||||
if (box->x2 > region->extents.x2)
|
||||
{
|
||||
region->extents.x2 = box->x2;
|
||||
}
|
||||
box++;
|
||||
}
|
||||
|
||||
@@ -1138,7 +1210,9 @@ pixman_region_intersect_o (region_type_t *region,
|
||||
* overlap to the new region.
|
||||
*/
|
||||
if (x1 < x2)
|
||||
{
|
||||
NEWRECT (region, next_rect, x1, y1, x2, y2);
|
||||
}
|
||||
|
||||
/*
|
||||
* Advance the pointer(s) with the leftmost right side, since the next
|
||||
@@ -1215,7 +1289,9 @@ PREFIX (_intersect) (region_type_t * new_reg,
|
||||
/* General purpose intersection */
|
||||
|
||||
if (!pixman_op (new_reg, reg1, reg2, pixman_region_intersect_o, FALSE, FALSE))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
pixman_set_extents (new_reg);
|
||||
}
|
||||
@@ -1296,10 +1372,14 @@ pixman_region_union_o (region_type_t *region,
|
||||
while (r1 != r1_end && r2 != r2_end)
|
||||
{
|
||||
if (r1->x1 < r2->x1)
|
||||
{
|
||||
MERGERECT (r1);
|
||||
}
|
||||
else
|
||||
{
|
||||
MERGERECT (r2);
|
||||
}
|
||||
}
|
||||
|
||||
/* Finish off whoever (if any) is left */
|
||||
if (r1 != r1_end)
|
||||
@@ -1361,7 +1441,9 @@ PREFIX (_union) (region_type_t *new_reg,
|
||||
* Region 1 and 2 are the same
|
||||
*/
|
||||
if (reg1 == reg2)
|
||||
{
|
||||
return PREFIX (_copy) (new_reg, reg1);
|
||||
}
|
||||
|
||||
/*
|
||||
* Region 1 is empty
|
||||
@@ -1369,10 +1451,14 @@ PREFIX (_union) (region_type_t *new_reg,
|
||||
if (PIXREGION_NIL (reg1))
|
||||
{
|
||||
if (PIXREGION_NAR (reg1))
|
||||
{
|
||||
return pixman_break (new_reg);
|
||||
}
|
||||
|
||||
if (new_reg != reg2)
|
||||
{
|
||||
return PREFIX (_copy) (new_reg, reg2);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1383,10 +1469,14 @@ PREFIX (_union) (region_type_t *new_reg,
|
||||
if (PIXREGION_NIL (reg2))
|
||||
{
|
||||
if (PIXREGION_NAR (reg2))
|
||||
{
|
||||
return pixman_break (new_reg);
|
||||
}
|
||||
|
||||
if (new_reg != reg1)
|
||||
{
|
||||
return PREFIX (_copy) (new_reg, reg1);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1397,7 +1487,9 @@ PREFIX (_union) (region_type_t *new_reg,
|
||||
if (!reg1->data && SUBSUMES (®1->extents, ®2->extents))
|
||||
{
|
||||
if (new_reg != reg1)
|
||||
{
|
||||
return PREFIX (_copy) (new_reg, reg1);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1408,13 +1500,17 @@ PREFIX (_union) (region_type_t *new_reg,
|
||||
if (!reg2->data && SUBSUMES (®2->extents, ®1->extents))
|
||||
{
|
||||
if (new_reg != reg2)
|
||||
{
|
||||
return PREFIX (_copy) (new_reg, reg2);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (!pixman_op (new_reg, reg1, reg2, pixman_region_union_o, TRUE, TRUE))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
new_reg->extents.x1 = MIN (reg1->extents.x1, reg2->extents.x1);
|
||||
new_reg->extents.y1 = MIN (reg1->extents.y1, reg2->extents.y1);
|
||||
@@ -1447,7 +1543,9 @@ PREFIX (_union_rect) (region_type_t *dest,
|
||||
if (!GOOD_RECT (®ion.extents))
|
||||
{
|
||||
if (BAD_RECT (®ion.extents))
|
||||
{
|
||||
_pixman_log_error (FUNC, "Invalid rectangle passed");
|
||||
}
|
||||
return PREFIX (_copy) (dest, source);
|
||||
}
|
||||
|
||||
@@ -1521,8 +1619,10 @@ quick_sort_rects (
|
||||
while (y1 < r->y1 || (y1 == r->y1 && x1 < r->x1));
|
||||
|
||||
if (i < j)
|
||||
{
|
||||
EXCHANGE_RECTS (i, j);
|
||||
}
|
||||
}
|
||||
while (i < j);
|
||||
|
||||
/* Move partition element back to middle */
|
||||
@@ -1530,7 +1630,9 @@ quick_sort_rects (
|
||||
|
||||
/* Recurse */
|
||||
if (numRects - j - 1 > 1)
|
||||
{
|
||||
quick_sort_rects (&rects[j + 1], numRects - j - 1);
|
||||
}
|
||||
|
||||
numRects = j;
|
||||
}
|
||||
@@ -1606,7 +1708,9 @@ validate (region_type_t * badreg)
|
||||
if (!numRects)
|
||||
{
|
||||
if (PIXREGION_NAR (badreg))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
GOOD (badreg);
|
||||
return TRUE;
|
||||
}
|
||||
@@ -1670,8 +1774,10 @@ validate (region_type_t * badreg)
|
||||
{
|
||||
/* Merge it with ri_box */
|
||||
if (box->x2 > ri_box->x2)
|
||||
{
|
||||
ri_box->x2 = box->x2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
RECTALLOC_BAIL (reg, 1, bail);
|
||||
@@ -1685,10 +1791,14 @@ validate (region_type_t * badreg)
|
||||
{
|
||||
/* Put box into new band */
|
||||
if (reg->extents.x2 < ri_box->x2)
|
||||
{
|
||||
reg->extents.x2 = ri_box->x2;
|
||||
}
|
||||
|
||||
if (reg->extents.x1 > box->x1)
|
||||
{
|
||||
reg->extents.x1 = box->x1;
|
||||
}
|
||||
|
||||
COALESCE (reg, rit->prev_band, rit->cur_band);
|
||||
rit->cur_band = reg->data->numRects;
|
||||
@@ -1711,21 +1821,27 @@ validate (region_type_t * badreg)
|
||||
|
||||
data_size = size_ri * sizeof(region_info_t);
|
||||
if (data_size / size_ri != sizeof(region_info_t))
|
||||
{
|
||||
goto bail;
|
||||
}
|
||||
|
||||
if (ri == stack_regions)
|
||||
{
|
||||
rit = (region_info_t *) malloc(data_size);
|
||||
if (!rit)
|
||||
{
|
||||
goto bail;
|
||||
}
|
||||
memcpy (rit, ri, num_ri * sizeof (region_info_t));
|
||||
}
|
||||
else
|
||||
{
|
||||
rit = (region_info_t *) realloc (ri, data_size);
|
||||
if (!rit)
|
||||
{
|
||||
goto bail;
|
||||
}
|
||||
}
|
||||
ri = rit;
|
||||
rit = &ri[num_ri];
|
||||
}
|
||||
@@ -1737,9 +1853,12 @@ validate (region_type_t * badreg)
|
||||
|
||||
/* MUST force allocation */
|
||||
if (!pixman_rect_alloc (&rit->reg, (i + num_ri) / num_ri))
|
||||
{
|
||||
goto bail;
|
||||
}
|
||||
|
||||
next_rect: ;
|
||||
next_rect:
|
||||
;
|
||||
} /* for i */
|
||||
|
||||
/* Make a final pass over each region in order to COALESCE and set
|
||||
@@ -1752,7 +1871,9 @@ validate (region_type_t * badreg)
|
||||
reg->extents.y2 = ri_box->y2;
|
||||
|
||||
if (reg->extents.x2 < ri_box->x2)
|
||||
{
|
||||
reg->extents.x2 = ri_box->x2;
|
||||
}
|
||||
|
||||
COALESCE (reg, rit->prev_band, rit->cur_band);
|
||||
|
||||
@@ -1773,19 +1894,29 @@ validate (region_type_t * badreg)
|
||||
hreg = &ri[j + half].reg;
|
||||
|
||||
if (!pixman_op (reg, reg, hreg, pixman_region_union_o, TRUE, TRUE))
|
||||
{
|
||||
ret = FALSE;
|
||||
}
|
||||
|
||||
if (hreg->extents.x1 < reg->extents.x1)
|
||||
{
|
||||
reg->extents.x1 = hreg->extents.x1;
|
||||
}
|
||||
|
||||
if (hreg->extents.y1 < reg->extents.y1)
|
||||
{
|
||||
reg->extents.y1 = hreg->extents.y1;
|
||||
}
|
||||
|
||||
if (hreg->extents.x2 > reg->extents.x2)
|
||||
{
|
||||
reg->extents.x2 = hreg->extents.x2;
|
||||
}
|
||||
|
||||
if (hreg->extents.y2 > reg->extents.y2)
|
||||
{
|
||||
reg->extents.y2 = hreg->extents.y2;
|
||||
}
|
||||
|
||||
FREE_DATA (hreg);
|
||||
}
|
||||
@@ -1793,8 +1924,10 @@ validate (region_type_t * badreg)
|
||||
num_ri -= half;
|
||||
|
||||
if (!ret)
|
||||
{
|
||||
goto bail;
|
||||
}
|
||||
}
|
||||
|
||||
*badreg = ri[0].reg;
|
||||
|
||||
@@ -1809,7 +1942,9 @@ validate (region_type_t * badreg)
|
||||
|
||||
bail:
|
||||
for (i = 0; i < num_ri; i++)
|
||||
{
|
||||
FREE_DATA (&ri[i].reg);
|
||||
}
|
||||
|
||||
if (ri != stack_regions)
|
||||
{
|
||||
@@ -1881,8 +2016,10 @@ pixman_region_subtract_o (region_type_t * region,
|
||||
*/
|
||||
r1++;
|
||||
if (r1 != r1_end)
|
||||
{
|
||||
x1 = r1->x1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
@@ -1909,8 +2046,10 @@ pixman_region_subtract_o (region_type_t * region,
|
||||
*/
|
||||
r1++;
|
||||
if (r1 != r1_end)
|
||||
{
|
||||
x1 = r1->x1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
@@ -1925,14 +2064,18 @@ pixman_region_subtract_o (region_type_t * region,
|
||||
* Minuend used up: add any remaining piece before advancing.
|
||||
*/
|
||||
if (r1->x2 > x1)
|
||||
{
|
||||
NEWRECT (region, next_rect, x1, y1, r1->x2, y2);
|
||||
}
|
||||
|
||||
r1++;
|
||||
|
||||
if (r1 != r1_end)
|
||||
{
|
||||
x1 = r1->x1;
|
||||
}
|
||||
}
|
||||
}
|
||||
while ((r1 != r1_end) && (r2 != r2_end));
|
||||
|
||||
/*
|
||||
@@ -1946,8 +2089,10 @@ pixman_region_subtract_o (region_type_t * region,
|
||||
|
||||
r1++;
|
||||
if (r1 != r1_end)
|
||||
{
|
||||
x1 = r1->x1;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -1979,7 +2124,9 @@ PREFIX (_subtract) (region_type_t *reg_d,
|
||||
!EXTENTCHECK (®_m->extents, ®_s->extents))
|
||||
{
|
||||
if (PIXREGION_NAR (reg_s))
|
||||
{
|
||||
return pixman_break (reg_d);
|
||||
}
|
||||
|
||||
return PREFIX (_copy) (reg_d, reg_m);
|
||||
}
|
||||
@@ -1997,7 +2144,9 @@ PREFIX (_subtract) (region_type_t *reg_d,
|
||||
do yucky subtraction for overlaps, and
|
||||
just throw away rectangles in region 2 that aren't in region 1 */
|
||||
if (!pixman_op (reg_d, reg_m, reg_s, pixman_region_subtract_o, TRUE, FALSE))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Can't alter reg_d's extents before we call pixman_op because
|
||||
@@ -2044,7 +2193,9 @@ PREFIX (_inverse) (region_type_t *new_reg, /* Destination region */
|
||||
if (PIXREGION_NIL (reg1) || !EXTENTCHECK (inv_rect, ®1->extents))
|
||||
{
|
||||
if (PIXREGION_NAR (reg1))
|
||||
{
|
||||
return pixman_break (new_reg);
|
||||
}
|
||||
|
||||
new_reg->extents = *inv_rect;
|
||||
FREE_DATA (new_reg);
|
||||
@@ -2060,7 +2211,9 @@ PREFIX (_inverse) (region_type_t *new_reg, /* Destination region */
|
||||
inv_reg.extents = *inv_rect;
|
||||
inv_reg.data = (region_data_type_t *)NULL;
|
||||
if (!pixman_op (new_reg, &inv_reg, reg1, pixman_region_subtract_o, TRUE, FALSE))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
* Can't alter new_reg's extents before we call pixman_op because
|
||||
@@ -2083,15 +2236,21 @@ find_box_for_y (box_type_t *begin, box_type_t *end, int y)
|
||||
box_type_t *mid;
|
||||
|
||||
if (end == begin)
|
||||
{
|
||||
return end;
|
||||
}
|
||||
|
||||
if (end - begin == 1)
|
||||
{
|
||||
if (begin->y2 > y)
|
||||
{
|
||||
return begin;
|
||||
}
|
||||
else
|
||||
{
|
||||
return end;
|
||||
}
|
||||
}
|
||||
|
||||
mid = begin + (end - begin) / 2;
|
||||
if (mid->y2 > y)
|
||||
@@ -2140,16 +2299,22 @@ PREFIX (_contains_rectangle) (region_type_t * region,
|
||||
|
||||
/* useful optimization */
|
||||
if (!numRects || !EXTENTCHECK (®ion->extents, prect))
|
||||
{
|
||||
return (PIXMAN_REGION_OUT);
|
||||
}
|
||||
|
||||
if (numRects == 1)
|
||||
{
|
||||
/* We know that it must be PIXMAN_REGION_IN or PIXMAN_REGION_PART */
|
||||
if (SUBSUMES (®ion->extents, prect))
|
||||
{
|
||||
return (PIXMAN_REGION_IN);
|
||||
}
|
||||
else
|
||||
{
|
||||
return (PIXMAN_REGION_PART);
|
||||
}
|
||||
}
|
||||
|
||||
part_out = FALSE;
|
||||
part_in = FALSE;
|
||||
@@ -2167,39 +2332,51 @@ PREFIX (_contains_rectangle) (region_type_t * region,
|
||||
if (pbox->y2 <= y)
|
||||
{
|
||||
if ((pbox = find_box_for_y (pbox, pbox_end, y)) == pbox_end)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (pbox->y1 > y)
|
||||
{
|
||||
part_out = TRUE; /* missed part of rectangle above */
|
||||
if (part_in || (pbox->y1 >= prect->y2))
|
||||
{
|
||||
break;
|
||||
}
|
||||
y = pbox->y1; /* x guaranteed to be == prect->x1 */
|
||||
}
|
||||
|
||||
if (pbox->x2 <= x)
|
||||
{
|
||||
continue; /* not far enough over yet */
|
||||
}
|
||||
|
||||
if (pbox->x1 > x)
|
||||
{
|
||||
part_out = TRUE; /* missed part of rectangle to left */
|
||||
if (part_in)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (pbox->x1 < prect->x2)
|
||||
{
|
||||
part_in = TRUE; /* definitely overlap */
|
||||
if (part_out)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (pbox->x2 >= prect->x2)
|
||||
{
|
||||
y = pbox->y2; /* finished with this band */
|
||||
if (y >= prect->y2)
|
||||
{
|
||||
break;
|
||||
}
|
||||
x = prect->x1; /* reset x out to left again */
|
||||
}
|
||||
else
|
||||
@@ -2219,10 +2396,14 @@ PREFIX (_contains_rectangle) (region_type_t * region,
|
||||
if (part_in)
|
||||
{
|
||||
if (y < prect->y2)
|
||||
{
|
||||
return PIXMAN_REGION_PART;
|
||||
}
|
||||
else
|
||||
{
|
||||
return PIXMAN_REGION_IN;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return PIXMAN_REGION_OUT;
|
||||
@@ -2271,14 +2452,22 @@ PREFIX (_translate) (region_type_t *region, int x, int y)
|
||||
}
|
||||
|
||||
if (x1 < PIXMAN_REGION_MIN)
|
||||
{
|
||||
region->extents.x1 = PIXMAN_REGION_MIN;
|
||||
}
|
||||
else if (x2 > PIXMAN_REGION_MAX)
|
||||
{
|
||||
region->extents.x2 = PIXMAN_REGION_MAX;
|
||||
}
|
||||
|
||||
if (y1 < PIXMAN_REGION_MIN)
|
||||
{
|
||||
region->extents.y1 = PIXMAN_REGION_MIN;
|
||||
}
|
||||
else if (y2 > PIXMAN_REGION_MAX)
|
||||
{
|
||||
region->extents.y2 = PIXMAN_REGION_MAX;
|
||||
}
|
||||
|
||||
if (region->data && (nbox = region->data->numRects))
|
||||
{
|
||||
@@ -2299,14 +2488,22 @@ PREFIX (_translate) (region_type_t *region, int x, int y)
|
||||
}
|
||||
|
||||
if (x1 < PIXMAN_REGION_MIN)
|
||||
{
|
||||
pbox_out->x1 = PIXMAN_REGION_MIN;
|
||||
}
|
||||
else if (x2 > PIXMAN_REGION_MAX)
|
||||
{
|
||||
pbox_out->x2 = PIXMAN_REGION_MAX;
|
||||
}
|
||||
|
||||
if (y1 < PIXMAN_REGION_MIN)
|
||||
{
|
||||
pbox_out->y1 = PIXMAN_REGION_MIN;
|
||||
}
|
||||
else if (y2 > PIXMAN_REGION_MAX)
|
||||
{
|
||||
pbox_out->y2 = PIXMAN_REGION_MAX;
|
||||
}
|
||||
|
||||
pbox_out++;
|
||||
}
|
||||
@@ -2366,12 +2563,16 @@ PREFIX (_contains_point) (region_type_t * region,
|
||||
numRects = PIXREGION_NUMRECTS (region);
|
||||
|
||||
if (!numRects || !INBOX (®ion->extents, x, y))
|
||||
{
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
if (numRects == 1)
|
||||
{
|
||||
if (box)
|
||||
{
|
||||
*box = region->extents;
|
||||
}
|
||||
|
||||
return (TRUE);
|
||||
}
|
||||
@@ -2384,13 +2585,19 @@ PREFIX (_contains_point) (region_type_t * region,
|
||||
for (; pbox != pbox_end; pbox++)
|
||||
{
|
||||
if ((y < pbox->y1) || (x < pbox->x1))
|
||||
{
|
||||
break; /* missed it */
|
||||
}
|
||||
|
||||
if (x >= pbox->x2)
|
||||
{
|
||||
continue; /* not there yet */
|
||||
}
|
||||
|
||||
if (box)
|
||||
{
|
||||
*box = *pbox;
|
||||
}
|
||||
|
||||
return (TRUE);
|
||||
}
|
||||
@@ -2462,10 +2669,14 @@ PREFIX (_selfcheck) (region_type_t *reg)
|
||||
}
|
||||
|
||||
if (pbox_n->x1 < box.x1)
|
||||
{
|
||||
box.x1 = pbox_n->x1;
|
||||
}
|
||||
|
||||
if (pbox_n->x2 > box.x2)
|
||||
{
|
||||
box.x2 = pbox_n->x2;
|
||||
}
|
||||
|
||||
if ((pbox_n->y1 < pbox_p->y1) ||
|
||||
((pbox_n->y1 == pbox_p->y1) &&
|
||||
@@ -2510,10 +2721,14 @@ PREFIX (_init_rects) (region_type_t *region,
|
||||
* static pixman_region_empty_data data).
|
||||
*/
|
||||
if (count == 0)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (!pixman_rect_alloc (region, count))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
rects = PIXREGION_RECTS (region);
|
||||
|
||||
@@ -2529,10 +2744,14 @@ PREFIX (_init_rects) (region_type_t *region,
|
||||
box_type_t *box = &rects[i];
|
||||
|
||||
if (box->x1 >= box->x2 || box->y1 >= box->y2)
|
||||
{
|
||||
displacement++;
|
||||
}
|
||||
else if (displacement)
|
||||
{
|
||||
rects[i - displacement] = rects[i];
|
||||
}
|
||||
}
|
||||
|
||||
region->data->numRects -= displacement;
|
||||
|
||||
|
||||
+11
-11
@@ -56,21 +56,21 @@ typedef struct pixman_region16 pixman_region16_t;
|
||||
/* creation/destruction */
|
||||
void pixman_region_init (pixman_region16_t *region);
|
||||
void pixman_region_init_rect (pixman_region16_t *region,
|
||||
int x,
|
||||
int y,
|
||||
unsigned int width,
|
||||
unsigned int height);
|
||||
/**/ int x,
|
||||
/**/ int y,
|
||||
/**/ unsigned int width,
|
||||
/**/ unsigned int height);
|
||||
void pixman_region_fini (pixman_region16_t *region);
|
||||
pixman_bool_t pixman_region_union (pixman_region16_t *new_reg,
|
||||
pixman_region16_t *reg1,
|
||||
pixman_region16_t *reg2);
|
||||
/**/ pixman_region16_t *reg1,
|
||||
/**/ pixman_region16_t *reg2);
|
||||
pixman_bool_t pixman_region_subtract (pixman_region16_t *reg_d,
|
||||
pixman_region16_t *reg_m,
|
||||
pixman_region16_t *reg_s);
|
||||
/**/ pixman_region16_t *reg_m,
|
||||
/**/ pixman_region16_t *reg_s);
|
||||
pixman_bool_t pixman_region_intersect (pixman_region16_t *new_reg,
|
||||
pixman_region16_t *reg1,
|
||||
pixman_region16_t *reg2);
|
||||
/**/ pixman_region16_t *reg1,
|
||||
/**/ pixman_region16_t *reg2);
|
||||
pixman_box16_t *pixman_region_rectangles (pixman_region16_t *region,
|
||||
int *n_rects);
|
||||
/**/ int *n_rects);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -824,7 +824,9 @@ trans_listen_address(struct trans *self, char *port, const char *address)
|
||||
{
|
||||
self->sck = g_tcp_socket();
|
||||
if (self->sck < 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
g_tcp_set_non_blocking(self->sck);
|
||||
|
||||
@@ -846,7 +848,9 @@ trans_listen_address(struct trans *self, char *port, const char *address)
|
||||
|
||||
self->sck = g_tcp_local_socket();
|
||||
if (self->sck < 0)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
g_tcp_set_non_blocking(self->sck);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user