static void _evas_swapper_buffer_put(Wl_Swapper *ws, Wl_Buffer *wb, Eina_Rectangle *rects, unsigned int count) { Eina_Rectangle *rect; LOGFN(__FILE__, __LINE__, __FUNCTION__); /* check for valid swapper */ if (!ws) return; /* make sure swapper has a surface */ if (!ws->surface) return; /* check for valid buffer */ if (!wb) return; /* make sure buffer has mapped data */ if ((!wb->data) || (!wb->buffer)) { /* call function to mmap buffer data */ /* if (!_evas_swapper_buffer_new(ws, wb)) */ return; } rect = eina_rectangle_new(0, 0, 0, 0); if ((rects) && (count > 0)) { unsigned int i = 0; for (i = 0; i < count; i++) eina_rectangle_union(rect, &rects[i]); } else { Eina_Rectangle r; r.x = 0; r.y = 0; r.w = wb->w; r.h = wb->h; eina_rectangle_union(rect, &r); } /* surface attach */ if (ws->buffer_sent != wb) { wl_surface_attach(ws->surface, wb->buffer, ws->dx, ws->dy); ws->dx = 0; ws->dy = 0; ws->buffer_sent = wb; } wl_surface_damage(ws->surface, rect->x, rect->y, rect->w, rect->h); /* surface commit */ wl_surface_commit(ws->surface); eina_rectangle_free(rect); }
END_TEST START_TEST(eina_rectangle_union_intersect) { Eina_Rectangle r1, r2, r3, r4, r5, r6, rd; fail_if(!eina_init()); EINA_RECTANGLE_SET(&r1, 10, 10, 50, 50); EINA_RECTANGLE_SET(&r2, 20, 20, 20, 20); EINA_RECTANGLE_SET(&r3, 0, 0, 10, 10); EINA_RECTANGLE_SET(&r4, 30, 30, 50, 50); EINA_RECTANGLE_SET(&r5, 10, 10, 0, 0); EINA_RECTANGLE_SET(&r6, 30, 30, 0, 0); rd = r1; fail_if(eina_rectangle_intersection(&rd, &r3)); fail_if(!eina_rectangle_intersection(&rd, &r2)); fail_if(rd.x != r2.x || rd.y != r2.y || rd.w != r2.w || rd.h != r2.h); rd = r1; fail_if(!eina_rectangle_intersection(&rd, &r4)); fail_if(rd.x != 30 || rd.y != 30 || rd.w != 30 || rd.h != 30); rd = r1; eina_rectangle_union(&rd, &r2); fail_if(rd.x != r1.x || rd.y != r1.y || rd.w != r1.w || rd.h != r1.h); rd = r1; eina_rectangle_union(&rd, &r3); fail_if(rd.x != 0 || rd.y != 0 || rd.w != 60 || rd.h != 60); rd = r3; eina_rectangle_union(&rd, &r4); fail_if(rd.x != 0 || rd.y != 0 || rd.w != 80 || rd.h != 80); rd = r5; eina_rectangle_union(&rd, &r6); fail_if(rd.x != 10 || rd.y != 10 || rd.w != 20 || rd.h != 20); eina_shutdown(); }