api: Remember error on deferred image data loads

Now it can be fetched with imlib_get_error().
This commit is contained in:
Kim Woelders 2023-01-13 19:16:11 +01:00
parent a856571312
commit 930243411e
4 changed files with 118 additions and 59 deletions

View File

@ -762,7 +762,8 @@ imlib_image_get_data(void)
CHECK_PARAM_POINTER_RETURN("image", ctx->image, NULL);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return NULL;
__imlib_DirtyImage(im);
return im->data;
@ -775,7 +776,8 @@ imlib_image_get_data_for_reading_only(void)
CHECK_PARAM_POINTER_RETURN("image", ctx->image, NULL);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return NULL;
return im->data;
}
@ -910,9 +912,11 @@ imlib_blend_image_onto_image(Imlib_Image src_image, char merge_alpha,
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im_src, src_image);
CAST_IMAGE(im_dst, ctx->image);
if (__imlib_LoadImageData(im_src))
ctx->error = __imlib_LoadImageData(im_src);
if (ctx->error)
return;
if (__imlib_LoadImageData(im_dst))
ctx->error = __imlib_LoadImageData(im_dst);
if (ctx->error)
return;
__imlib_DirtyImage(im_dst);
/* FIXME: hack to get around infinite loops for scaling down too far */
@ -995,7 +999,8 @@ imlib_clone_image(void)
CHECK_PARAM_POINTER_RETURN("image", ctx->image, NULL);
CAST_IMAGE(im_old, ctx->image);
if (__imlib_LoadImageData(im_old))
ctx->error = __imlib_LoadImageData(im_old);
if (ctx->error)
return NULL;
im = __imlib_CreateImage(im_old->w, im_old->h, NULL, 0);
@ -1024,7 +1029,8 @@ imlib_create_cropped_image(int x, int y, int width, int height)
CHECK_PARAM_POINTER_RETURN("image", ctx->image, NULL);
CAST_IMAGE(im_old, ctx->image);
if (__imlib_LoadImageData(im_old))
ctx->error = __imlib_LoadImageData(im_old);
if (ctx->error)
return NULL;
im = __imlib_CreateImage(abs(width), abs(height), NULL, 0);
@ -1051,7 +1057,8 @@ imlib_create_cropped_scaled_image(int src_x, int src_y,
CHECK_PARAM_POINTER_RETURN("image", ctx->image, NULL);
CAST_IMAGE(im_old, ctx->image);
if (__imlib_LoadImageData(im_old))
ctx->error = __imlib_LoadImageData(im_old);
if (ctx->error)
return NULL;
im = __imlib_CreateImage(abs(dst_width), abs(dst_height), NULL, 0);
@ -1193,7 +1200,8 @@ imlib_image_flip_horizontal(void)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_FlipImageHoriz(im);
@ -1206,7 +1214,8 @@ imlib_image_flip_vertical(void)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_FlipImageVert(im);
@ -1219,7 +1228,8 @@ imlib_image_flip_diagonal(void)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_FlipImageDiagonal(im, 0);
@ -1232,7 +1242,8 @@ imlib_image_orientate(int orientation)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
switch (orientation)
@ -1271,7 +1282,8 @@ imlib_image_blur(int radius)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_BlurImage(im, radius);
@ -1284,7 +1296,8 @@ imlib_image_sharpen(int radius)
CAST_IMAGE(im, ctx->image);
CHECK_PARAM_POINTER("image", ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_SharpenImage(im, radius);
@ -1297,7 +1310,8 @@ imlib_image_tile_horizontal(void)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_TileImageHoriz(im);
@ -1310,7 +1324,8 @@ imlib_image_tile_vertical(void)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_TileImageVert(im);
@ -1323,7 +1338,8 @@ imlib_image_tile(void)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_TileImageHoriz(im);
@ -1401,7 +1417,8 @@ imlib_apply_color_modifier(void)
CHECK_PARAM_POINTER("image", ctx->image);
CHECK_PARAM_POINTER("color_modifier", ctx->color_modifier);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_DataCmodApply(im->data, im->w, im->h, 0, im->has_alpha,
@ -1438,7 +1455,8 @@ imlib_apply_color_modifier_to_rectangle(int x, int y, int width, int height)
height = (im->h - y);
if (height <= 0)
return;
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_DataCmodApply(im->data + (y * im->w) + x, width, height,
@ -1453,7 +1471,8 @@ imlib_image_draw_pixel(int x, int y, char make_updates)
CHECK_PARAM_POINTER_RETURN("image", ctx->image, NULL);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return NULL;
__imlib_DirtyImage(im);
return __imlib_Point_DrawToImage(x, y, ctx->pixel, im,
@ -1471,7 +1490,8 @@ imlib_image_draw_line(int x1, int y1, int x2, int y2, char make_updates)
CHECK_PARAM_POINTER_RETURN("image", ctx->image, NULL);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return NULL;
__imlib_DirtyImage(im);
return __imlib_Line_DrawToImage(x1, y1, x2, y2, ctx->pixel,
@ -1490,7 +1510,8 @@ imlib_image_draw_rectangle(int x, int y, int width, int height)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_Rectangle_DrawToImage(x, y, width, height, ctx->pixel,
@ -1506,7 +1527,8 @@ imlib_image_fill_rectangle(int x, int y, int width, int height)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_Rectangle_FillToImage(x, y, width, height, ctx->pixel,
@ -1524,9 +1546,11 @@ imlib_image_copy_alpha_to_image(Imlib_Image image_source, int x, int y)
CHECK_PARAM_POINTER("image_destination", ctx->image);
CAST_IMAGE(im, image_source);
CAST_IMAGE(im2, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
if (__imlib_LoadImageData(im2))
ctx->error = __imlib_LoadImageData(im2);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_copy_alpha_data(im, im2, 0, 0, im->w, im->h, x, y);
@ -1544,9 +1568,11 @@ imlib_image_copy_alpha_rectangle_to_image(Imlib_Image image_source,
CHECK_PARAM_POINTER("image_destination", ctx->image);
CAST_IMAGE(im, image_source);
CAST_IMAGE(im2, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
if (__imlib_LoadImageData(im2))
ctx->error = __imlib_LoadImageData(im2);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_copy_alpha_data(im, im2, src_x, src_y, src_width, src_height,
@ -1562,7 +1588,8 @@ imlib_image_scroll_rect(int x, int y, int width, int height, int delta_x,
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
if (delta_x > 0)
{
@ -1599,7 +1626,8 @@ imlib_image_copy_rect(int x, int y, int width, int height, int new_x, int new_y)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_copy_image_data(im, x, y, width, height, new_x, new_y);
@ -1637,7 +1665,8 @@ imlib_image_fill_color_range_rectangle(int x, int y, int width, int height,
CHECK_PARAM_POINTER("image", ctx->image);
CHECK_PARAM_POINTER("color_range", ctx->color_range);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_DrawGradient(im, x, y, width, height,
@ -1656,7 +1685,8 @@ imlib_image_fill_hsva_color_range_rectangle(int x, int y, int width, int height,
CHECK_PARAM_POINTER("image", ctx->image);
CHECK_PARAM_POINTER("color_range", ctx->color_range);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_DrawHsvaGradient(im, x, y, width, height,
@ -1675,7 +1705,8 @@ imlib_image_query_pixel(int x, int y, Imlib_Color * color_return)
CHECK_PARAM_POINTER("image", ctx->image);
CHECK_PARAM_POINTER("color_return", color_return);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
if ((x < 0) || (x >= im->w) || (y < 0) || (y >= im->h))
{
@ -1702,7 +1733,8 @@ imlib_image_query_pixel_hsva(int x, int y, float *hue, float *saturation,
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
if ((x < 0) || (x >= im->w) || (y < 0) || (y >= im->h))
{
@ -1731,7 +1763,8 @@ imlib_image_query_pixel_hlsa(int x, int y, float *hue, float *lightness,
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
if ((x < 0) || (x >= im->w) || (y < 0) || (y >= im->h))
{
@ -1759,7 +1792,8 @@ imlib_image_query_pixel_cmya(int x, int y, int *cyan, int *magenta, int *yellow,
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
if ((x < 0) || (x >= im->w) || (y < 0) || (y >= im->h))
{
@ -1856,7 +1890,8 @@ _imlib_save_image(const char *file, int *err)
ctx->error = 0;
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_SaveImage(im, file, &ila);
@ -1904,7 +1939,8 @@ imlib_create_rotated_image(double angle)
CHECK_PARAM_POINTER_RETURN("image", ctx->image, NULL);
CAST_IMAGE(im_old, ctx->image);
if (__imlib_LoadImageData(im_old))
ctx->error = __imlib_LoadImageData(im_old);
if (ctx->error)
return NULL;
d = hypot((double)(im_old->w + 4), (double)(im_old->h + 4)) / sqrt(2.0);
@ -1952,7 +1988,8 @@ imlib_rotate_image_from_buffer(double angle, Imlib_Image src_image)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im_old))
ctx->error = __imlib_LoadImageData(im_old);
if (ctx->error)
return;
d = hypot((double)(im_old->w + 4), (double)(im_old->h + 4)) / sqrt(2.0);
@ -1999,9 +2036,11 @@ imlib_blend_image_onto_image_at_angle(Imlib_Image src_image, char merge_alpha,
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im_src, src_image);
CAST_IMAGE(im_dst, ctx->image);
if (__imlib_LoadImageData(im_src))
ctx->error = __imlib_LoadImageData(im_src);
if (ctx->error)
return;
if (__imlib_LoadImageData(im_dst))
ctx->error = __imlib_LoadImageData(im_dst);
if (ctx->error)
return;
__imlib_DirtyImage(im_dst);
__imlib_BlendImageToImageSkewed(im_src, im_dst, ctx->anti_alias,
@ -2027,9 +2066,11 @@ imlib_blend_image_onto_image_skewed(Imlib_Image src_image, char merge_alpha,
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im_src, src_image);
CAST_IMAGE(im_dst, ctx->image);
if (__imlib_LoadImageData(im_src))
ctx->error = __imlib_LoadImageData(im_src);
if (ctx->error)
return;
if (__imlib_LoadImageData(im_dst))
ctx->error = __imlib_LoadImageData(im_dst);
if (ctx->error)
return;
__imlib_DirtyImage(im_dst);
__imlib_BlendImageToImageSkewed(im_src, im_dst, ctx->anti_alias,
@ -2069,7 +2110,8 @@ imlib_image_draw_polygon(ImlibPolygon poly, unsigned char closed)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_Polygon_DrawToImage((ImlibPoly *) poly, closed, ctx->pixel,
@ -2085,7 +2127,8 @@ imlib_image_fill_polygon(ImlibPolygon poly)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_Polygon_FillToImage((ImlibPoly *) poly, ctx->pixel,
@ -2109,7 +2152,8 @@ imlib_image_draw_ellipse(int xc, int yc, int a, int b)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_Ellipse_DrawToImage(xc, yc, a, b, ctx->pixel,
@ -2125,7 +2169,8 @@ imlib_image_fill_ellipse(int xc, int yc, int a, int b)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_Ellipse_FillToImage(xc, yc, a, b, ctx->pixel,
@ -2148,7 +2193,8 @@ imlib_image_clear(void)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
memset(im->data, 0, im->w * im->h * sizeof(uint32_t));
@ -2163,7 +2209,8 @@ imlib_image_clear_color(int r, int g, int b, int a)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
max = im->w * im->h;

View File

@ -18,7 +18,8 @@ imlib_image_filter(void)
CHECK_PARAM_POINTER("image", ctx->image);
CHECK_PARAM_POINTER("filter", ctx->filter);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
__imlib_FilterImage(im, (ImlibFilter *) ctx->filter);
@ -125,7 +126,8 @@ imlib_apply_filter(const char *script, ...)
__imlib_dynamic_filters_init();
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_DirtyImage(im);
va_start(param_list, script);

View File

@ -108,7 +108,8 @@ imlib_text_draw_with_return_metrics(int x, int y, const char *text,
CHECK_PARAM_POINTER("image", ctx->image);
CHECK_PARAM_POINTER("text", text);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
fn = (ImlibFont *) ctx->font;
__imlib_DirtyImage(im);

View File

@ -186,7 +186,8 @@ imlib_render_pixmaps_for_whole_image(Pixmap * pixmap_return,
CHECK_PARAM_POINTER("image", ctx->image);
CHECK_PARAM_POINTER("pixmap_return", pixmap_return);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_CreatePixmapsForImage(ctx->display, ctx->drawable, ctx->visual,
ctx->depth, ctx->colormap, im, pixmap_return,
@ -206,7 +207,8 @@ imlib_render_pixmaps_for_whole_image_at_size(Pixmap * pixmap_return,
CHECK_PARAM_POINTER("image", ctx->image);
CHECK_PARAM_POINTER("pixmap_return", pixmap_return);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_CreatePixmapsForImage(ctx->display, ctx->drawable, ctx->visual,
ctx->depth, ctx->colormap, im, pixmap_return,
@ -229,7 +231,8 @@ imlib_render_image_on_drawable(int x, int y)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_RenderImage(ctx->display, im, ctx->drawable, ctx->mask,
ctx->visual, ctx->colormap, ctx->depth, 0, 0, im->w,
@ -245,7 +248,8 @@ imlib_render_image_on_drawable_at_size(int x, int y, int width, int height)
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_RenderImage(ctx->display, im, ctx->drawable, ctx->mask,
ctx->visual, ctx->colormap, ctx->depth,
@ -265,7 +269,8 @@ imlib_render_image_part_on_drawable_at_size(int src_x, int src_y,
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_RenderImage(ctx->display, im, ctx->drawable, 0,
ctx->visual, ctx->colormap, ctx->depth,
@ -385,7 +390,8 @@ imlib_copy_drawable_to_image(Pixmap mask, int src_x, int src_y, int src_width,
}
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return 0;
pre_adj = 0;
@ -446,7 +452,8 @@ imlib_render_image_updates_on_drawable(Imlib_Updates updates, int x, int y)
u = (ImlibUpdate *) updates;
if (!updates)
return;
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
ximcs = __imlib_GetXImageCacheCountMax(ctx->display); /* Save */
if (ximcs == 0) /* Only if we don't set this up elsewhere */
@ -473,7 +480,8 @@ imlib_render_image_on_drawable_skewed(int src_x, int src_y,
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_RenderImageSkewed(ctx->display, im, ctx->drawable, ctx->mask,
ctx->visual, ctx->colormap, ctx->depth, src_x,
@ -495,7 +503,8 @@ imlib_render_image_on_drawable_at_angle(int src_x, int src_y,
CHECK_PARAM_POINTER("image", ctx->image);
CAST_IMAGE(im, ctx->image);
if (__imlib_LoadImageData(im))
ctx->error = __imlib_LoadImageData(im);
if (ctx->error)
return;
__imlib_RenderImageSkewed(ctx->display, im, ctx->drawable, ctx->mask,
ctx->visual, ctx->colormap, ctx->depth, src_x,