diff --git a/src/hyprpicker.cpp b/src/hyprpicker.cpp index 4beab1e..2f03fdc 100644 --- a/src/hyprpicker.cpp +++ b/src/hyprpicker.cpp @@ -13,8 +13,7 @@ #include static void sigHandler(int sig) { - g_pHyprpicker->m_vLayerSurfaces.clear(); - 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 74c4b8d..27018b3 100644 --- a/src/hyprpicker.hpp +++ b/src/hyprpicker.hpp @@ -54,7 +54,7 @@ class CHyprpicker { bool m_bUseLowerCase = false; bool m_bIncludeCursor = false; - bool m_bRunning = true; + volatile std::atomic m_bRunning = true; float m_fZoomScale = 10.0; int m_iCircleRadius = 100;