diff --git a/src/hyprpicker.cpp b/src/hyprpicker.cpp index d5c13f8..6724097 100644 --- a/src/hyprpicker.cpp +++ b/src/hyprpicker.cpp @@ -13,8 +13,7 @@ #include static void sigHandler(int sig) { - g_pHyprpicker->m_vLayerSurfaces.clear(); // Cleans up the /run files - exit(0); + g_pHyprpicker->m_bRunning.store(false); } void CHyprpicker::init() { @@ -123,11 +122,7 @@ void CHyprpicker::init() { while (m_bRunning && wl_display_dispatch(m_pWLDisplay) != -1) { //renderSurface(m_pLastSurface); } - - if (m_pWLDisplay) { - wl_display_disconnect(m_pWLDisplay); - m_pWLDisplay = nullptr; - } + finish(1); } void CHyprpicker::finish(int code) { diff --git a/src/hyprpicker.hpp b/src/hyprpicker.hpp index b3e3bdf..44ac236 100644 --- a/src/hyprpicker.hpp +++ b/src/hyprpicker.hpp @@ -53,7 +53,7 @@ class CHyprpicker { bool m_bDisablePreview = false; bool m_bUseLowerCase = false; - bool m_bRunning = true; + volatile std::atomic m_bRunning = true; float m_fZoomScale = 10.0; int m_iCircleRadius = 100;