internal: some minor fd/socket cleanups and make logging thread safe (#7123)

* bezier: dont loop on float values

Using a floating-point loop variable with a fixed increment can cause precision
errors over time due to the nature of floating-point arithmetic.
and cause undesired effects.

ex
iteration 1 = 0.10000000149011611938
iteration 2 = 0.20000000298023223877

eventually..

iteration 8 = 0.80000001192092895508
iteration 9 = 0.89999997615814208984

* hyprctl: close sockets on destruction

store socketpath and close the fd and unlink the socket path on exit.

* eventloopmgr: close the timerfd

close the timerfd on exit.

* debug: make logging thread safe

instead of opening and closing the logfile on each write open it on init
and close it on compositor exit. also add a mutex so accidently using
logging from a thread like the watchdog or similiar doesnt cause issues.

* xwl: clean up fd logic

check if the fd is actually opened before closing, and close the
pipesource FD on exit.
This commit is contained in:
Tom Englund
2024-07-31 21:00:14 +02:00
committed by GitHub
parent e989a0bcff
commit 5489682799
9 changed files with 38 additions and 13 deletions

View File

@@ -262,13 +262,16 @@ void CXWaylandServer::die() {
if (pipeSource)
wl_event_source_remove(pipeSource);
if (waylandFDs[0])
if (pipeFd >= 0)
close(pipeFd);
if (waylandFDs[0] >= 0)
close(waylandFDs[0]);
if (waylandFDs[1])
if (waylandFDs[1] >= 0)
close(waylandFDs[1]);
if (xwmFDs[0])
if (xwmFDs[0] >= 0)
close(xwmFDs[0]);
if (xwmFDs[1])
if (xwmFDs[1] >= 0)
close(xwmFDs[1]);
// possible crash. Better to leak a bit.
@@ -364,6 +367,7 @@ bool CXWaylandServer::start() {
}
pipeSource = wl_event_loop_add_fd(g_pCompositor->m_sWLEventLoop, notify[0], WL_EVENT_READABLE, ::xwaylandReady, nullptr);
pipeFd = notify[0];
serverPID = fork();
if (serverPID < 0) {