From 14dcd153ae5df7a3d606841417d9a80556cb3e42 Mon Sep 17 00:00:00 2001 From: FlightlessMango Date: Thu, 28 Jul 2022 02:48:35 +0200 Subject: [PATCH] control: send msg when log stops --- control/src/control/__init__.py | 12 ++++++++++++ src/control.cpp | 8 ++++++-- src/logging.cpp | 5 +++++ src/overlay.h | 2 ++ 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/control/src/control/__init__.py b/control/src/control/__init__.py index baf8d8ea..db1bae38 100644 --- a/control/src/control/__init__.py +++ b/control/src/control/__init__.py @@ -184,8 +184,20 @@ def control(args): conn.send(bytearray(':logging;', 'utf-8')) elif args.cmd == 'start-logging': conn.send(bytearray(':logging=1;', 'utf-8')) + elif args.cmd == 'stop-logging': conn.send(bytearray(':logging=0;', 'utf-8')) + now = time.monotonic() + while True: + msg = str(conn.recv(3)) + if "LoggingFinished" in msg: + print("Logging has stopped") + exit(0) + elapsed = time.monotonic() - now + if elapsed > 3: + print("Stop logging timed out") + exit(1) + elif args.cmd == 'toggle-hud': conn.send(bytearray(':hud;', 'utf-8')) elif args.cmd == 'toggle-fcat': diff --git a/src/control.cpp b/src/control.cpp index 1068133a..d5928aed 100644 --- a/src/control.cpp +++ b/src/control.cpp @@ -9,6 +9,8 @@ #include "app/mangoapp.h" #endif +int global_control_client; + using namespace std; static void parse_command(overlay_params ¶ms, const char *cmd, unsigned cmdlen, @@ -112,7 +114,7 @@ static void process_char(const int control_client, overlay_params ¶ms, char } } -static void control_send(int control_client, +void control_send(int control_client, const char *cmd, unsigned cmdlen, const char *param, unsigned paramlen) { @@ -160,8 +162,10 @@ static void control_send_connection_string(int control_client, const std::string void control_client_check(int control, int& control_client, const std::string& deviceName) { /* Already connected, just return. */ - if (control_client >= 0) + if (control_client >= 0){ + global_control_client = control_client; return; + } int socket = os_socket_accept(control); if (socket == -1) { diff --git a/src/logging.cpp b/src/logging.cpp index 96bc517c..61f15f26 100644 --- a/src/logging.cpp +++ b/src/logging.cpp @@ -104,6 +104,7 @@ void writeSummary(string filename){ } else { SPDLOG_ERROR("Failed to write log file"); } + out.close(); } void writeFile(string filename){ @@ -143,6 +144,7 @@ void writeFile(string filename){ } else { SPDLOG_ERROR("Failed to write log file"); } + out.close(); } string get_log_suffix(){ @@ -199,6 +201,9 @@ void Logger::stop_logging() { #endif } clear_log_data(); + control_client_check(m_params->control, global_control_client, gpu.c_str()); + const char * cmd = "LoggingFinished"; + control_send(global_control_client, cmd, strlen(cmd), 0, 0); } void Logger::logging(){ diff --git a/src/overlay.h b/src/overlay.h index d1f2f2d9..96e29152 100644 --- a/src/overlay.h +++ b/src/overlay.h @@ -115,6 +115,8 @@ float get_time_stat(void *_data, int _idx); void stop_hw_updater(); extern void control_client_check(int control, int& control_client, const std::string& deviceName); extern void process_control_socket(int& control_client, overlay_params ¶ms); +extern void control_send(int control_client, const char *cmd, unsigned cmdlen, const char *param, unsigned paramlen); +extern int global_control_client; #ifdef HAVE_DBUS void render_mpris_metadata(const overlay_params& params, mutexed_metadata& meta, uint64_t frame_timing); #endif