Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 662350 Details for
Bug 864982
Alpha transparency doesn't work well with spice-server 0.12 in some circumstances
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
fix for the windows guest issue
0001-red_parse_qxl-fix-throwing-away-drawables-that-have-.patch (text/plain), 7.50 KB, created by
Yonit Halperin
on 2012-12-12 13:29:41 UTC
(
hide
)
Description:
fix for the windows guest issue
Filename:
MIME Type:
Creator:
Yonit Halperin
Created:
2012-12-12 13:29:41 UTC
Size:
7.50 KB
patch
obsolete
>From 4aa7b83457e1c08bf92153a2a72a98d83ae2241a Mon Sep 17 00:00:00 2001 >From: Yonit Halperin <yhalperi@redhat.com> >Date: Tue, 11 Dec 2012 13:45:10 -0500 >Subject: [PATCH] red_parse_qxl: fix throwing away drawables that have masks > >Non rgb bitmaps are allowed to not have a palette in case they >are masks (which are 1BIT bitmaps). > >Related: rhbz#864982 >--- > server/red_parse_qxl.c | 27 +++++++++++++-------------- > server/red_worker.c | 8 +++----- > 2 files changed, 16 insertions(+), 19 deletions(-) > >diff --git a/server/red_parse_qxl.c b/server/red_parse_qxl.c >index 82463e1..4b39029 100644 >--- a/server/red_parse_qxl.c >+++ b/server/red_parse_qxl.c >@@ -367,7 +367,7 @@ static int bitmap_consistent(SpiceBitmap *bitmap) > static const int BITMAP_FMT_IS_RGB[] = {0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1}; > > static SpiceImage *red_get_image(RedMemSlotInfo *slots, int group_id, >- QXLPHYSICAL addr, uint32_t flags) >+ QXLPHYSICAL addr, uint32_t flags, int is_mask) > { > RedDataChunk chunks; > QXLImage *qxl; >@@ -401,7 +401,7 @@ static SpiceImage *red_get_image(RedMemSlotInfo *slots, int group_id, > switch (red->descriptor.type) { > case SPICE_IMAGE_TYPE_BITMAP: > red->u.bitmap.format = qxl->bitmap.format; >- if (!bitmap_fmt_is_rgb(qxl->bitmap.format) && !qxl->bitmap.palette) { >+ if (!bitmap_fmt_is_rgb(qxl->bitmap.format) && !qxl->bitmap.palette && !is_mask) { > spice_warning("guest error: missing palette on bitmap format=%d\n", > red->u.bitmap.format); > goto error; >@@ -529,8 +529,7 @@ static void red_get_brush_ptr(RedMemSlotInfo *slots, int group_id, > } > break; > case SPICE_BRUSH_TYPE_PATTERN: >- red->u.pattern.pat = red_get_image(slots, group_id, qxl->u.pattern.pat, flags); >- red_get_point_ptr(&red->u.pattern.pos, &qxl->u.pattern.pos); >+ red->u.pattern.pat = red_get_image(slots, group_id, qxl->u.pattern.pat, flags, FALSE); > break; > } > } >@@ -549,7 +548,7 @@ static void red_get_qmask_ptr(RedMemSlotInfo *slots, int group_id, > { > red->flags = qxl->flags; > red_get_point_ptr(&red->pos, &qxl->pos); >- red->bitmap = red_get_image(slots, group_id, qxl->bitmap, flags); >+ red->bitmap = red_get_image(slots, group_id, qxl->bitmap, flags, TRUE); > } > > static void red_put_qmask(SpiceQMask *red) >@@ -574,7 +573,7 @@ static void red_put_fill(SpiceFill *red) > static void red_get_opaque_ptr(RedMemSlotInfo *slots, int group_id, > SpiceOpaque *red, QXLOpaque *qxl, uint32_t flags) > { >- red->src_bitmap = red_get_image(slots, group_id, qxl->src_bitmap, flags); >+ red->src_bitmap = red_get_image(slots, group_id, qxl->src_bitmap, flags, FALSE); > red_get_rect_ptr(&red->src_area, &qxl->src_area); > red_get_brush_ptr(slots, group_id, &red->brush, &qxl->brush, flags); > red->rop_descriptor = qxl->rop_descriptor; >@@ -592,7 +591,7 @@ static void red_put_opaque(SpiceOpaque *red) > static int red_get_copy_ptr(RedMemSlotInfo *slots, int group_id, > SpiceCopy *red, QXLCopy *qxl, uint32_t flags) > { >- red->src_bitmap = red_get_image(slots, group_id, qxl->src_bitmap, flags); >+ red->src_bitmap = red_get_image(slots, group_id, qxl->src_bitmap, flags, FALSE); > if (!red->src_bitmap) { > return 1; > } >@@ -612,7 +611,7 @@ static void red_put_copy(SpiceCopy *red) > static void red_get_blend_ptr(RedMemSlotInfo *slots, int group_id, > SpiceBlend *red, QXLBlend *qxl, uint32_t flags) > { >- red->src_bitmap = red_get_image(slots, group_id, qxl->src_bitmap, flags); >+ red->src_bitmap = red_get_image(slots, group_id, qxl->src_bitmap, flags, FALSE); > red_get_rect_ptr(&red->src_area, &qxl->src_area); > red->rop_descriptor = qxl->rop_descriptor; > red->scale_mode = qxl->scale_mode; >@@ -629,7 +628,7 @@ static void red_get_transparent_ptr(RedMemSlotInfo *slots, int group_id, > SpiceTransparent *red, QXLTransparent *qxl, > uint32_t flags) > { >- red->src_bitmap = red_get_image(slots, group_id, qxl->src_bitmap, flags); >+ red->src_bitmap = red_get_image(slots, group_id, qxl->src_bitmap, flags, FALSE); > red_get_rect_ptr(&red->src_area, &qxl->src_area); > red->src_color = qxl->src_color; > red->true_color = qxl->true_color; >@@ -646,7 +645,7 @@ static void red_get_alpha_blend_ptr(RedMemSlotInfo *slots, int group_id, > { > red->alpha_flags = qxl->alpha_flags; > red->alpha = qxl->alpha; >- red->src_bitmap = red_get_image(slots, group_id, qxl->src_bitmap, flags); >+ red->src_bitmap = red_get_image(slots, group_id, qxl->src_bitmap, flags, FALSE); > red_get_rect_ptr(&red->src_area, &qxl->src_area); > } > >@@ -655,7 +654,7 @@ static void red_get_alpha_blend_ptr_compat(RedMemSlotInfo *slots, int group_id, > uint32_t flags) > { > red->alpha = qxl->alpha; >- red->src_bitmap = red_get_image(slots, group_id, qxl->src_bitmap, flags); >+ red->src_bitmap = red_get_image(slots, group_id, qxl->src_bitmap, flags, FALSE); > red_get_rect_ptr(&red->src_area, &qxl->src_area); > } > >@@ -690,12 +689,12 @@ static void red_get_composite_ptr(RedMemSlotInfo *slots, int group_id, > { > red->flags = qxl->flags; > >- red->src_bitmap = red_get_image(slots, group_id, qxl->src, flags); >+ red->src_bitmap = red_get_image(slots, group_id, qxl->src, flags, FALSE); > if (get_transform(slots, group_id, qxl->src_transform, &red->src_transform)) > red->flags |= SPICE_COMPOSITE_HAS_SRC_TRANSFORM; > > if (qxl->mask) { >- red->mask_bitmap = red_get_image(slots, group_id, qxl->mask, flags); >+ red->mask_bitmap = red_get_image(slots, group_id, qxl->mask, flags, FALSE); > red->flags |= SPICE_COMPOSITE_HAS_MASK; > if (get_transform(slots, group_id, qxl->mask_transform, &red->mask_transform)) > red->flags |= SPICE_COMPOSITE_HAS_MASK_TRANSFORM; >@@ -718,7 +717,7 @@ static void red_put_composite(SpiceComposite *red) > static void red_get_rop3_ptr(RedMemSlotInfo *slots, int group_id, > SpiceRop3 *red, QXLRop3 *qxl, uint32_t flags) > { >- red->src_bitmap = red_get_image(slots, group_id, qxl->src_bitmap, flags); >+ red->src_bitmap = red_get_image(slots, group_id, qxl->src_bitmap, flags, FALSE); > red_get_rect_ptr(&red->src_area, &qxl->src_area); > red_get_brush_ptr(slots, group_id, &red->brush, &qxl->brush, flags); > red->rop3 = qxl->rop3; >diff --git a/server/red_worker.c b/server/red_worker.c >index 530562b..e5e3d05 100644 >--- a/server/red_worker.c >+++ b/server/red_worker.c >@@ -6091,16 +6091,14 @@ static inline int red_lz_compress_image(DisplayChannelClient *dcc, > o_comp_data->comp_buf = lz_data->data.bufs_head; > o_comp_data->comp_buf_size = size; > } else { >- if (!src->palette) { >- spice_warning("bad guest: missing palette\n"); >- return FALSE; >- } >+ /* masks are 1BIT bitmaps without palettes, but they are not compressed >+ * (see fill_mask) */ >+ spice_assert(src->palette); > dest->descriptor.type = SPICE_IMAGE_TYPE_LZ_PLT; > dest->u.lz_plt.data_size = size; > dest->u.lz_plt.flags = src->flags & SPICE_BITMAP_FLAGS_TOP_DOWN; > dest->u.lz_plt.palette = src->palette; > dest->u.lz_plt.palette_id = src->palette->unique; >- > o_comp_data->comp_buf = lz_data->data.bufs_head; > o_comp_data->comp_buf_size = size; > >-- >1.7.7.6 >
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 864982
:
624941
|
624942
|
624943
| 662350