From 9b3d4c1ad78c14ccdb711d9b7e89eb00f9272438 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Mon, 23 Sep 2024 22:25:51 -0500 Subject: [PATCH] Free the old CRTC connectors array --- app/masterhook.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/masterhook.c b/app/masterhook.c index 3b3387dd..aea028f3 100644 --- a/app/masterhook.c +++ b/app/masterhook.c @@ -69,8 +69,15 @@ int drmModeSetCrtc(int fd, uint32_t crtcId, uint32_t bufferId, // Call into the real thing int err = ((typeof(drmModeSetCrtc)*)dlsym(RTLD_NEXT, __FUNCTION__))(fd, crtcId, bufferId, x, y, connectors, count, mode); if (err == 0 && fd == g_QtDrmMasterFd) { + // Free old CRTC state (if any) + if (g_QtCrtcState) { + drmModeFreeCrtc(g_QtCrtcState); + } + if (g_QtCrtcConnectors) { + free(g_QtCrtcConnectors); + } + // Store the CRTC configuration so we can restore it later - drmModeFreeCrtc(g_QtCrtcState); g_QtCrtcState = drmModeGetCrtc(fd, crtcId); g_QtCrtcConnectors = calloc(count, sizeof(*g_QtCrtcConnectors)); memcpy(g_QtCrtcConnectors, connectors, count * sizeof(*connectors));