From: Michel Dänzer <michel.daen...@amd.com>

We were leaking it.

Also, don't bother allocating new memory if it's already the expected
size.

Signed-off-by: Michel Dänzer <michel.daen...@amd.com>
---
 src/drmmode_display.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 1aefd199b..e947ca979 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -3629,13 +3629,18 @@ Bool drmmode_setup_colormap(ScreenPtr pScreen, 
ScrnInfoPtr pScrn)
 
                        for (i = 0; i < xf86_config->num_crtc; i++) {
                                xf86CrtcPtr crtc = xf86_config->crtc[i];
-                               void *gamma = malloc(1024 * 3 * sizeof(CARD16));
+                               void *gamma;
 
+                               if (crtc->gamma_size == 1024)
+                                       continue;
+
+                               gamma = malloc(1024 * 3 * sizeof(CARD16));
                                if (!gamma) {
                                        ErrorF("Failed to allocate gamma LUT 
memory\n");
                                        return FALSE;
                                }
 
+                               free(crtc->gamma_red);
                                crtc->gamma_size = 1024;
                                crtc->gamma_red = gamma;
                                crtc->gamma_green = crtc->gamma_red + 
crtc->gamma_size;
-- 
2.18.0

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to