summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-07-18 10:45:43 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-07-18 10:45:43 +0200
commit2b2fd56ca5512542edecccf6bcefb9cfd12ceb09 (patch)
treede477751c3010430fc110443c1834f569c9294eb
parent287521c2c2f564f6ea130166e7df601a47a28cd1 (diff)
parent3636d9dafc4c4a9b80a94382a235172c80a083e8 (diff)
downloadredot-engine-2b2fd56ca5512542edecccf6bcefb9cfd12ceb09.tar.gz
Merge pull request #94473 from nvlled/fix-screen-image-memory-leak
Linux/X11: Fix memory leak from created screen images
-rw-r--r--platform/linuxbsd/x11/display_server_x11.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/platform/linuxbsd/x11/display_server_x11.cpp b/platform/linuxbsd/x11/display_server_x11.cpp
index edf3a40ccb..d6eb101a68 100644
--- a/platform/linuxbsd/x11/display_server_x11.cpp
+++ b/platform/linuxbsd/x11/display_server_x11.cpp
@@ -1519,7 +1519,7 @@ Color DisplayServerX11::screen_get_pixel(const Point2i &p_position) const {
if (image) {
XColor c;
c.pixel = XGetPixel(image, 0, 0);
- XFree(image);
+ XDestroyImage(image);
XQueryColor(x11_display, XDefaultColormap(x11_display, i), &c);
color = Color(float(c.red) / 65535.0, float(c.green) / 65535.0, float(c.blue) / 65535.0, 1.0);
break;
@@ -1637,11 +1637,12 @@ Ref<Image> DisplayServerX11::screen_get_image(int p_screen) const {
}
}
} else {
- XFree(image);
- ERR_FAIL_V_MSG(Ref<Image>(), vformat("XImage with RGB mask %x %x %x and depth %d is not supported.", (uint64_t)image->red_mask, (uint64_t)image->green_mask, (uint64_t)image->blue_mask, (int64_t)image->bits_per_pixel));
+ String msg = vformat("XImage with RGB mask %x %x %x and depth %d is not supported.", (uint64_t)image->red_mask, (uint64_t)image->green_mask, (uint64_t)image->blue_mask, (int64_t)image->bits_per_pixel);
+ XDestroyImage(image);
+ ERR_FAIL_V_MSG(Ref<Image>(), msg);
}
img = Image::create_from_data(width, height, false, Image::FORMAT_RGBA8, img_data);
- XFree(image);
+ XDestroyImage(image);
}
return img;