diff options
author | Tom Englund <[email protected]> | 2024-07-31 21:00:14 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2024-07-31 21:00:14 +0200 |
commit | 548968279926a73d7ff19a9a185c977c50d56756 (patch) | |
tree | 67136e6e5144512d3fbfcf5b7c5e38f35c0750c3 /src/debug/Log.cpp | |
parent | e989a0bcffac81092ed2a7e371f5225c113f689d (diff) | |
download | Hyprland-548968279926a73d7ff19a9a185c977c50d56756.tar.gz Hyprland-548968279926a73d7ff19a9a185c977c50d56756.zip |
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.
Diffstat (limited to 'src/debug/Log.cpp')
-rw-r--r-- | src/debug/Log.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/debug/Log.cpp b/src/debug/Log.cpp index c2939831..0def77c0 100644 --- a/src/debug/Log.cpp +++ b/src/debug/Log.cpp @@ -8,6 +8,11 @@ void Debug::init(const std::string& IS) { logFile = IS + (ISDEBUG ? "/hyprlandd.log" : "/hyprland.log"); + logOfs.open(logFile, std::ios::out | std::ios::app); +} + +void Debug::close() { + logOfs.close(); } void Debug::log(LogLevel level, std::string str) { @@ -55,11 +60,8 @@ void Debug::log(LogLevel level, std::string str) { if (!disableLogs || !**disableLogs) { // log to a file - std::ofstream ofs; - ofs.open(logFile, std::ios::out | std::ios::app); - ofs << str << "\n"; - - ofs.close(); + logOfs << str << "\n"; + logOfs.flush(); } // log it to the stdout too. |