diff options
author | Petri Hintukainen <phintuka@users.sourceforge.net> | 2014-04-22 15:28:42 +0300 |
---|---|---|
committer | Petri Hintukainen <phintuka@users.sourceforge.net> | 2014-04-22 15:28:42 +0300 |
commit | 59a458e756ee8dd7b99f6180047de1d4cf13341a (patch) | |
tree | 55e1b60392de0d24a654f75303735630bc17051d /src | |
parent | e3ee41ccae05d06258d37a9643c091720e14f600 (diff) | |
download | xine-lib-59a458e756ee8dd7b99f6180047de1d4cf13341a.tar.gz xine-lib-59a458e756ee8dd7b99f6180047de1d4cf13341a.tar.bz2 |
fix aliasing in x11osd.c
Diffstat (limited to 'src')
-rw-r--r-- | src/video_out/x11osd.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/video_out/x11osd.c b/src/video_out/x11osd.c index 95fb0d347..4a362c9c0 100644 --- a/src/video_out/x11osd.c +++ b/src/video_out/x11osd.c @@ -480,26 +480,30 @@ void x11osd_blend(x11osd *osd, vo_overlay_t *overlay) if (overlay->rle[i].color > max_palette_colour[use_clip_palette]) { int j; - clut_t *src_clut; + uint32_t *src_color; uint8_t *src_trans; if (use_clip_palette) { - src_clut = (clut_t *)&overlay->hili_color; + src_color = overlay->hili_color; src_trans = (uint8_t *)&overlay->hili_trans; } else { - src_clut = (clut_t *)&overlay->color; + src_color = overlay->color; src_trans = (uint8_t *)&overlay->trans; } for (j=max_palette_colour[use_clip_palette]+1; j<=overlay->rle[i].color; j++) { if (src_trans[j]) { + union { + uint32_t u32; + clut_t c; + } tmp = { src_color[j] }; + if (1) { XColor xcolor; int y, u, v, r, g, b; - - y = saturate(src_clut[j].y, 16, 235); - u = saturate(src_clut[j].cb, 16, 240); - v = saturate(src_clut[j].cr, 16, 240); + y = saturate(tmp.c.y, 16, 235); + u = saturate(tmp.c.cb, 16, 240); + v = saturate(tmp.c.cr, 16, 240); y = (9 * y) / 8; r = y + (25 * v) / 16 - 218; xcolor.red = (65536 * saturate(r, 0, 255)) / 256; @@ -515,7 +519,7 @@ void x11osd_blend(x11osd *osd, vo_overlay_t *overlay) palette[use_clip_palette][j] = xcolor.pixel; } else { - if (src_clut[j].y > 127) { + if (tmp.c.y > 127) { palette[use_clip_palette][j] = WhitePixel(osd->display, osd->screen); } else { |