Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 306475 Details for
Bug 339716
Cursor disappears in x11-terms/rxvt-unicode-9.07-r1 on x11-drivers/xf86-video-intel-2.12.0 with compositing enabled / xorg-server-1.9
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch for bug #339716
xf86-video-intel-2.18-remove-composite-rectangles-hook.patch (text/plain), 6.05 KB, created by
Paweł Rumian
on 2012-03-24 00:00:18 UTC
(
hide
)
Description:
Patch for bug #339716
Filename:
MIME Type:
Creator:
Paweł Rumian
Created:
2012-03-24 00:00:18 UTC
Size:
6.05 KB
patch
obsolete
>diff -Naur a/uxa/uxa.c b/uxa/uxa.c >--- a/uxa/uxa.c 2012-01-03 19:40:41.000000000 +0100 >+++ b/uxa/uxa.c 2012-03-24 00:28:31.000000000 +0100 >@@ -407,7 +407,6 @@ > #ifdef RENDER > if (ps) { > ps->Composite = uxa_screen->SavedComposite; >- ps->CompositeRects = uxa_screen->SavedCompositeRects; > ps->Glyphs = uxa_screen->SavedGlyphs; > ps->Trapezoids = uxa_screen->SavedTrapezoids; > ps->AddTraps = uxa_screen->SavedAddTraps; >@@ -536,9 +535,6 @@ > uxa_screen->SavedComposite = ps->Composite; > ps->Composite = uxa_composite; > >- uxa_screen->SavedCompositeRects = ps->CompositeRects; >- ps->CompositeRects = uxa_solid_rects; >- > uxa_screen->SavedGlyphs = ps->Glyphs; > ps->Glyphs = uxa_glyphs; > >diff -Naur a/uxa/uxa-priv.h b/uxa/uxa-priv.h >--- a/uxa/uxa-priv.h 2011-12-31 10:17:40.000000000 +0100 >+++ b/uxa/uxa-priv.h 2012-03-24 00:24:45.000000000 +0100 >@@ -123,7 +123,6 @@ > BitmapToRegionProcPtr SavedBitmapToRegion; > #ifdef RENDER > CompositeProcPtr SavedComposite; >- CompositeRectsProcPtr SavedCompositeRects; > TrianglesProcPtr SavedTriangles; > GlyphsProcPtr SavedGlyphs; > TrapezoidsProcPtr SavedTrapezoids; >diff -Naur a/uxa/uxa-render.c b/uxa/uxa-render.c >--- a/uxa/uxa-render.c 2011-12-31 10:17:40.000000000 +0100 >+++ b/uxa/uxa-render.c 2012-03-24 00:26:46.000000000 +0100 >@@ -947,195 +947,6 @@ > out_x, out_y); > } > >-static Bool >-_pixman_region_init_rectangles(pixman_region16_t *region, >- int num_rects, >- xRectangle *rects, >- int tx, int ty) >-{ >- pixman_box16_t stack_boxes[64], *boxes = stack_boxes; >- pixman_bool_t ret; >- int i; >- >- if (num_rects > sizeof(stack_boxes) / sizeof(stack_boxes[0])) { >- boxes = malloc(sizeof(pixman_box16_t) * num_rects); >- if (boxes == NULL) >- return FALSE; >- } >- >- for (i = 0; i < num_rects; i++) { >- boxes[i].x1 = rects[i].x + tx; >- boxes[i].y1 = rects[i].y + ty; >- boxes[i].x2 = rects[i].x + tx + rects[i].width; >- boxes[i].y2 = rects[i].y + ty + rects[i].height; >- } >- >- ret = pixman_region_init_rects(region, boxes, num_rects); >- >- if (boxes != stack_boxes) >- free(boxes); >- >- return ret; >-} >- >-void >-uxa_solid_rects (CARD8 op, >- PicturePtr dst, >- xRenderColor *color, >- int num_rects, >- xRectangle *rects) >-{ >- ScreenPtr screen = dst->pDrawable->pScreen; >- uxa_screen_t *uxa_screen = uxa_get_screen(screen); >- PixmapPtr dst_pixmap, src_pixmap = NULL; >- pixman_region16_t region; >- pixman_box16_t *boxes, *extents; >- PicturePtr src; >- int dst_x, dst_y; >- int num_boxes; >- >- if (!pixman_region_not_empty(dst->pCompositeClip)) >- return; >- >- if (uxa_screen->info->flags & UXA_USE_GLAMOR) { >- int ok; >- >- uxa_picture_prepare_access(dst, UXA_GLAMOR_ACCESS_RW); >- ok = glamor_composite_rects_nf(op, dst, color, >- num_rects, rects); >- uxa_picture_finish_access(dst, UXA_GLAMOR_ACCESS_RW); >- >- if (!ok) >- goto fallback; >- >- return; >- } >- >- if (dst->alphaMap) >- goto fallback; >- >- dst_pixmap = uxa_get_offscreen_pixmap(dst->pDrawable, &dst_x, &dst_y); >- if (!dst_pixmap) >- goto fallback; >- >- if (!_pixman_region_init_rectangles(®ion, >- num_rects, rects, >- dst->pDrawable->x, dst->pDrawable->y)) >- goto fallback; >- >- if (!pixman_region_intersect(®ion, ®ion, dst->pCompositeClip)) { >- pixman_region_fini(®ion); >- return; >- } >- >- pixman_region_translate(®ion, dst_x, dst_y); >- boxes = pixman_region_rectangles(®ion, &num_boxes); >- extents = pixman_region_extents (®ion); >- >- if (op == PictOpClear) >- color->red = color->green = color->blue = color->alpha = 0; >- if (color->alpha >= 0xff00 && op == PictOpOver) { >- color->alpha = 0xffff; >- op = PictOpSrc; >- } >- >- /* Using GEM, the relocation costs outweigh the advantages of the blitter */ >- if (num_boxes == 1 && (op == PictOpSrc || op == PictOpClear)) { >- CARD32 pixel; >- >-try_solid: >- if (uxa_screen->info->check_solid && >- !uxa_screen->info->check_solid(&dst_pixmap->drawable, GXcopy, FB_ALLONES)) >- goto err_region; >- >- if (!uxa_get_pixel_from_rgba(&pixel, >- color->red, >- color->green, >- color->blue, >- color->alpha, >- dst->format)) >- goto err_region; >- >- if (!uxa_screen->info->prepare_solid(dst_pixmap, GXcopy, FB_ALLONES, pixel)) >- goto err_region; >- >- while (num_boxes--) { >- uxa_screen->info->solid(dst_pixmap, >- boxes->x1, boxes->y1, >- boxes->x2, boxes->y2); >- boxes++; >- } >- >- uxa_screen->info->done_solid(dst_pixmap); >- } else { >- int error; >- >- src = CreateSolidPicture(0, color, &error); >- if (!src) >- goto err_region; >- >- if (!uxa_screen->info->check_composite(op, src, NULL, dst, >- extents->x2 - extents->x1, >- extents->y2 - extents->y1)) { >- if (op == PictOpSrc || op == PictOpClear) { >- FreePicture(src, 0); >- goto try_solid; >- } >- >- goto err_src; >- } >- >- if (!uxa_screen->info->check_composite_texture || >- !uxa_screen->info->check_composite_texture(screen, src)) { >- PicturePtr solid; >- int src_off_x, src_off_y; >- >- solid = uxa_acquire_solid(screen, src->pSourcePict); >- if (!solid) >- goto err_src; >- FreePicture(src, 0); >- >- src = solid; >- src_pixmap = uxa_get_offscreen_pixmap(src->pDrawable, >- &src_off_x, &src_off_y); >- if (!src_pixmap) >- goto err_src; >- } >- >- if (!uxa_screen->info->prepare_composite(op, src, NULL, dst, src_pixmap, NULL, dst_pixmap)) >- goto err_src; >- >- while (num_boxes--) { >- uxa_screen->info->composite(dst_pixmap, >- 0, 0, 0, 0, >- boxes->x1, >- boxes->y1, >- boxes->x2 - boxes->x1, >- boxes->y2 - boxes->y1); >- boxes++; >- } >- >- uxa_screen->info->done_composite(dst_pixmap); >- FreePicture(src, 0); >- } >- >- /* XXX xserver-1.8: CompositeRects is not tracked by Damage, so we must >- * manually append the damaged regions ourselves. >- */ >- pixman_region_translate(®ion, -dst_x, -dst_y); >- DamageRegionAppend(dst->pDrawable, ®ion); >- >- pixman_region_fini(®ion); >- return; >- >-err_src: >- FreePicture(src, 0); >-err_region: >- pixman_region_fini(®ion); >-fallback: >- uxa_screen->SavedCompositeRects(op, dst, color, num_rects, rects); >-} >- > static int > uxa_try_driver_composite(CARD8 op, > PicturePtr pSrc,
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 339716
:
266061
| 306475