From 98dde80ed3c01f6ac08bcd14d34d6643da9f8418 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Wed, 17 Feb 2010 21:33:23 +0100 Subject: Replace custom region implementation with pixman_region32_t pixman_region32_t is an efficient well tested region implementation (its the one used in X) that we already depend on via pixman and use in some places. No need to have a custom region implementation. --- client/application.cpp | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'client/application.cpp') diff --git a/client/application.cpp b/client/application.cpp index cca7d434..0fa25b4f 100644 --- a/client/application.cpp +++ b/client/application.cpp @@ -171,13 +171,23 @@ InfoLayer::InfoLayer() void InfoLayer::draw_info(const QRegion& dest_region, RedDrawable& dest) { - for (int i = 0; i < (int)dest_region.num_rects; i++) { - SpiceRect* r = &dest_region.rects[i]; + pixman_box32_t *rects; + int num_rects; + + rects = pixman_region32_rectangles((pixman_region32_t *)&dest_region, &num_rects); + for (int i = 0; i < num_rects; i++) { + SpiceRect r; + + r.left = rects[i].x1; + r.top = rects[i].y1; + r.right = rects[i].x2; + r.bottom = rects[i].y2; + /* is rect inside sticky region or info region? */ - if (_sticky_on && rect_intersects(*r, _sticky_rect)) { - dest.blend_pixels(_sticky_pixmap, r->left - _sticky_pos.x, r->top - _sticky_pos.y, *r); + if (_sticky_on && rect_intersects(r, _sticky_rect)) { + dest.blend_pixels(_sticky_pixmap, r.left - _sticky_pos.x, r.top - _sticky_pos.y, r); } else { - dest.blend_pixels(_info_pixmap, r->left - _info_pos.x, r->top - _info_pos.y, *r); + dest.blend_pixels(_info_pixmap, r.left - _info_pos.x, r.top - _info_pos.y, r); } } } -- cgit