Patch from Martin Kretzschmar <martink@gnome.org>, #3798

prevent sign-extension of masks.*_mask on 64bit architectures.
ditto.
This commit is contained in:
Owen Taylor 2005-07-28 10:02:54 +00:00
parent 02c6aec91d
commit 95beb7be67
3 changed files with 17 additions and 8 deletions

View file

@ -1,3 +1,12 @@
2005-07-16 Owen Taylor <otaylor@redhat.com>
Patch from Martin Kretzschmar <martink@gnome.org>, #3798
* src/cairo-xlib-surface.c (_get_image_surface): prevent
sign-extension of masks.*_mask on 64bit architectures.
* src/cairo-xcb-surface.c (_get_image_surface): ditto.
2005-07-28 Owen Taylor <otaylor@redhat.com>
* src/cairo-image-surface.c (_cairo_image_surface_acquire_source,dest_image)

View file

@ -481,10 +481,10 @@ _get_image_surface (cairo_xcb_surface_t *surface,
masks.blue_mask = surface->visual->blue_mask;
} else if (surface->has_format) {
masks.bpp = bpp;
masks.red_mask = surface->format.direct.red_mask << surface->format.direct.red_shift;
masks.green_mask = surface->format.direct.green_mask << surface->format.direct.green_shift;
masks.blue_mask = surface->format.direct.blue_mask << surface->format.direct.blue_shift;
masks.alpha_mask = surface->format.direct.alpha_mask << surface->format.direct.alpha_shift;
masks.red_mask = (unsigned long)surface->format.direct.red_mask << surface->format.direct.red_shift;
masks.green_mask = (unsigned long)surface->format.direct.green_mask << surface->format.direct.green_shift;
masks.blue_mask = (unsigned long)surface->format.direct.blue_mask << surface->format.direct.blue_shift;
masks.alpha_mask = (unsigned long)surface->format.direct.alpha_mask << surface->format.direct.alpha_shift;
} else {
masks.bpp = bpp;
masks.red_mask = 0;

View file

@ -413,10 +413,10 @@ _get_image_surface (cairo_xlib_surface_t *surface,
masks.blue_mask = surface->visual->blue_mask;
} else if (surface->format) {
masks.bpp = ximage->bits_per_pixel;
masks.red_mask = surface->format->direct.redMask << surface->format->direct.red;
masks.green_mask = surface->format->direct.greenMask << surface->format->direct.green;
masks.blue_mask = surface->format->direct.blueMask << surface->format->direct.blue;
masks.alpha_mask = surface->format->direct.alphaMask << surface->format->direct.alpha;
masks.red_mask = (unsigned long)surface->format->direct.redMask << surface->format->direct.red;
masks.green_mask = (unsigned long)surface->format->direct.greenMask << surface->format->direct.green;
masks.blue_mask = (unsigned long)surface->format->direct.blueMask << surface->format->direct.blue;
masks.alpha_mask = (unsigned long)surface->format->direct.alphaMask << surface->format->direct.alpha;
} else {
masks.bpp = ximage->bits_per_pixel;
masks.red_mask = 0;