forked from AuroraMiddleware/gtk
gdk: Get rid of gdk_draw_pixbuf() call
Use Cairo code instead.
This commit is contained in:
parent
610e29892e
commit
7b213d5604
@ -208,13 +208,11 @@ gdk_pixbuf_render_pixmap_and_mask_for_colormap (GdkPixbuf *pixbuf,
|
|||||||
|
|
||||||
if (pixmap_return)
|
if (pixmap_return)
|
||||||
{
|
{
|
||||||
GdkGC *gc;
|
|
||||||
*pixmap_return = gdk_pixmap_new (gdk_screen_get_root_window (screen),
|
*pixmap_return = gdk_pixmap_new (gdk_screen_get_root_window (screen),
|
||||||
gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf),
|
gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf),
|
||||||
gdk_colormap_get_visual (colormap)->depth);
|
gdk_colormap_get_visual (colormap)->depth);
|
||||||
|
|
||||||
gdk_drawable_set_colormap (GDK_DRAWABLE (*pixmap_return), colormap);
|
gdk_drawable_set_colormap (GDK_DRAWABLE (*pixmap_return), colormap);
|
||||||
gc = _gdk_drawable_get_scratch_gc (*pixmap_return, FALSE);
|
|
||||||
|
|
||||||
/* If the pixbuf has an alpha channel, using gdk_pixbuf_draw would give
|
/* If the pixbuf has an alpha channel, using gdk_pixbuf_draw would give
|
||||||
* random pixel values in the area that are within the mask, but semi-
|
* random pixel values in the area that are within the mask, but semi-
|
||||||
@ -222,17 +220,21 @@ gdk_pixbuf_render_pixmap_and_mask_for_colormap (GdkPixbuf *pixbuf,
|
|||||||
* see bug #487865.
|
* see bug #487865.
|
||||||
*/
|
*/
|
||||||
if (gdk_pixbuf_get_has_alpha (pixbuf))
|
if (gdk_pixbuf_get_has_alpha (pixbuf))
|
||||||
|
{
|
||||||
|
GdkGC *gc = _gdk_drawable_get_scratch_gc (*pixmap_return, FALSE);
|
||||||
gdk_draw_rgb_32_image (*pixmap_return, gc,
|
gdk_draw_rgb_32_image (*pixmap_return, gc,
|
||||||
0, 0,
|
0, 0,
|
||||||
gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf),
|
gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf),
|
||||||
GDK_RGB_DITHER_NORMAL,
|
GDK_RGB_DITHER_NORMAL,
|
||||||
gdk_pixbuf_get_pixels (pixbuf), gdk_pixbuf_get_rowstride (pixbuf));
|
gdk_pixbuf_get_pixels (pixbuf), gdk_pixbuf_get_rowstride (pixbuf));
|
||||||
|
}
|
||||||
else
|
else
|
||||||
gdk_draw_pixbuf (*pixmap_return, gc, pixbuf,
|
{
|
||||||
0, 0, 0, 0,
|
cairo_t *cr = gdk_cairo_create (*pixmap_return);
|
||||||
gdk_pixbuf_get_width (pixbuf), gdk_pixbuf_get_height (pixbuf),
|
gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
|
||||||
GDK_RGB_DITHER_NORMAL,
|
cairo_paint (cr);
|
||||||
0, 0);
|
cairo_destroy (cr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mask_return)
|
if (mask_return)
|
||||||
|
Loading…
Reference in New Issue
Block a user