mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-08-19 14:03:47 -07:00
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:
@@ -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) {
|
||||
|
Reference in New Issue
Block a user