summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2002-01-08 03:22:13 +0000
committerOwen Taylor <otaylor@src.gnome.org>2002-01-08 03:22:13 +0000
commitf1742682c45d259e5644d729a9fcfb0e06158d3a (patch)
tree3802f2d13faa51ceabadc07247ea508923d7f72c /gdk
parentc1808baa01e7db5e304a857132087e496641726a (diff)
downloadgtk+-f1742682c45d259e5644d729a9fcfb0e06158d3a.tar.gz
Fix a problem where were the offset into the image was passed into
Mon Jan 7 22:19:32 2002 Owen Taylor <otaylor@redhat.com> * gdk/x11/gdkdrawable-x11.c (draw_with_pixmaps): Fix a problem where were the offset into the image was passed into convert_to_format() wrong. * gdk/x11/gdkdrawable-x11.c (gdk_x11_draw_pixbuf): Call gdk_x11_drawable_update_picture_clip () before using the picture; allow update_picture_clip() to take a NULL gc to mean no clipping.
Diffstat (limited to 'gdk')
-rw-r--r--gdk/x11/gdkdrawable-x11.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/gdk/x11/gdkdrawable-x11.c b/gdk/x11/gdkdrawable-x11.c
index 221e4e0d30..ad4c97096b 100644
--- a/gdk/x11/gdkdrawable-x11.c
+++ b/gdk/x11/gdkdrawable-x11.c
@@ -265,11 +265,11 @@ static void
gdk_x11_drawable_update_picture_clip (GdkDrawable *drawable,
GdkGC *gc)
{
- GdkGCX11 *gc_private = GDK_GC_X11 (gc);
+ GdkGCX11 *gc_private = gc ? GDK_GC_X11 (gc) : NULL;
GdkDrawableImplX11 *impl = GDK_DRAWABLE_IMPL_X11 (drawable);
Picture picture = gdk_x11_drawable_get_picture (drawable);
- if (gc_private->clip_region)
+ if (gc && gc_private->clip_region)
{
GdkRegionBox *boxes = gc_private->clip_region->rects;
gint n_boxes = gc_private->clip_region->numRects;
@@ -1127,7 +1127,7 @@ draw_with_images (GdkDrawable *drawable,
image = _gdk_image_get_scratch (width1, height1, 32, &xs0, &ys0);
convert_to_format (src_rgb + y0 * src_rowstride + 4 * x0, src_rowstride,
- image->mem + ys0 * image->bpl + 4 * xs0, image->bpl,
+ image->mem + ys0 * image->bpl + xs0 * image->bpp, image->bpl,
format_type, image->byte_order,
width1, height1);
@@ -1238,9 +1238,9 @@ draw_with_pixmaps (GdkDrawable *drawable,
image = _gdk_image_get_scratch (width1, height1, 32, &xs0, &ys0);
if (!get_shm_pixmap_for_image (xdisplay, image, format, mask_format, &pix, &pict, &mask))
return FALSE;
-
+
convert_to_format (src_rgb + y0 * src_rowstride + 4 * x0, src_rowstride,
- image->mem + ys0 * image->bpl + 4 * xs0, image->bpl,
+ image->mem + ys0 * image->bpl + xs0 * image->bpp, image->bpl,
format_type, image->byte_order,
width1, height1);
@@ -1290,9 +1290,11 @@ gdk_x11_draw_pixbuf (GdkDrawable *drawable,
return;
}
+ gdk_x11_drawable_update_picture_clip (drawable, gc);
+
rowstride = gdk_pixbuf_get_rowstride (pixbuf);
-#ifdef USE_SHM
+#ifdef USE_SHM
if (use_pixmaps)
{
if (!draw_with_pixmaps (drawable, gc,