aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/debug/Log.cpp
diff options
context:
space:
mode:
authorTom Englund <[email protected]>2024-07-31 21:00:14 +0200
committerGitHub <[email protected]>2024-07-31 21:00:14 +0200
commit548968279926a73d7ff19a9a185c977c50d56756 (patch)
tree67136e6e5144512d3fbfcf5b7c5e38f35c0750c3 /src/debug/Log.cpp
parente989a0bcffac81092ed2a7e371f5225c113f689d (diff)
downloadHyprland-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.cpp12
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.