summaryrefslogtreecommitdiff
path: root/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx')
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx
index c7a811262..2dc9a76aa 100644
--- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx
+++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_image.cxx
@@ -658,13 +658,15 @@ static void alpha_blend(Fl_RGB_Image *img, int X, int Y, int W, int H, int cx, i
int ld = img->ld();
if (ld == 0) ld = img->data_w() * img->d();
uchar *srcptr = (uchar*)img->array + cy * ld + cx * img->d();
- int srcskip = ld - img->d() * W;
- uchar *dst = new uchar[W * H * 3];
+ uchar *dst = fl_read_image(NULL, X, Y, W, H, 0);
+ if (!dst) {
+ fl_draw_image(srcptr, X, Y, W, H, img->d(), ld);
+ return;
+ }
+ int srcskip = ld - img->d() * W;
uchar *dstptr = dst;
- fl_read_image(dst, X, Y, W, H, 0);
-
uchar srcr, srcg, srcb, srca;
uchar dstr, dstg, dstb, dsta;