fix some memory issues

This commit is contained in:
vaxerski 2022-05-17 18:37:14 +02:00
parent df2215cef7
commit 473d4591b0
3 changed files with 6 additions and 23 deletions

View file

@ -662,8 +662,8 @@ void CCompositor::cleanupFadingOut() {
g_pHyprOpenGL->m_mLayerFramebuffers[ls].release(); g_pHyprOpenGL->m_mLayerFramebuffers[ls].release();
g_pHyprOpenGL->m_mLayerFramebuffers.erase(ls); g_pHyprOpenGL->m_mLayerFramebuffers.erase(ls);
m_lSurfacesFadingOut.remove(ls);
delete ls; delete ls;
m_lSurfacesFadingOut.remove(ls);
Debug::log(LOG, "Cleanup: destroyed a layersurface"); Debug::log(LOG, "Cleanup: destroyed a layersurface");

View file

@ -59,27 +59,10 @@ void Events::listener_destroyLayerSurface(void* owner, void* data) {
Debug::log(LOG, "LayerSurface %x destroyed", layersurface->layerSurface); Debug::log(LOG, "LayerSurface %x destroyed", layersurface->layerSurface);
if (!layersurface->fadingOut) { if (!layersurface->fadingOut) {
if (layersurface->layerSurface->mapped) {
Debug::log(LOG, "LayerSurface wasn't unmapped, making a snapshot now!");
// make a snapshot and start fade
// layersurfaces aren't required to unmap before destroy
g_pHyprOpenGL->makeLayerSnapshot(layersurface);
layersurface->alpha = 0.f;
layersurface->fadingOut = true;
} else {
Debug::log(LOG, "Removing LayerSurface that wasn't mapped."); Debug::log(LOG, "Removing LayerSurface that wasn't mapped.");
layersurface->alpha.setValueAndWarp(0.f); layersurface->alpha.setValueAndWarp(0.f);
layersurface->fadingOut = true; layersurface->fadingOut = true;
} }
}
if (layersurface->layerSurface->mapped)
layersurface->layerSurface->mapped = false;
if (layersurface->layerSurface->surface == g_pCompositor->m_pLastFocus)
g_pCompositor->m_pLastFocus = nullptr;
layersurface->hyprListener_commitLayerSurface.removeCallback(); layersurface->hyprListener_commitLayerSurface.removeCallback();
layersurface->hyprListener_destroyLayerSurface.removeCallback(); layersurface->hyprListener_destroyLayerSurface.removeCallback();

View file

@ -60,8 +60,8 @@ float CBezierCurve::getYForPoint(float x) {
} }
// in the name of performance i shall make a hack // in the name of performance i shall make a hack
const auto LOWERPOINT = &m_aPointsBaked[(int)((float)BAKEDPOINTS * lowerT)]; const auto LOWERPOINT = &m_aPointsBaked[std::clamp((int)((float)BAKEDPOINTS * lowerT), 0, 199)];
const auto UPPERPOINT = &m_aPointsBaked[(int)((float)BAKEDPOINTS * upperT)]; const auto UPPERPOINT = &m_aPointsBaked[std::clamp((int)((float)BAKEDPOINTS * upperT), 0, 199)];
const auto PERCINDELTA = (x - LOWERPOINT->x) / (UPPERPOINT->x - LOWERPOINT->x); const auto PERCINDELTA = (x - LOWERPOINT->x) / (UPPERPOINT->x - LOWERPOINT->x);