Skip to content

Commit 2005d0b

Browse files
authored
Merge pull request #401 from cipri-tom/master
Add F5 and Ctrl+L screen refresh functionality
2 parents 79de353 + 86fe3a7 commit 2005d0b

File tree

2 files changed

+24
-0
lines changed

2 files changed

+24
-0
lines changed

src/interface.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1942,6 +1942,10 @@ void interface_key(int keyId, struct nvtop_interface *interface) {
19421942
case 27:
19431943
interface->process.option_window.state = nvtop_option_state_hidden;
19441944
break;
1945+
case KEY_F(5):
1946+
case 12: // Ctrl+L
1947+
update_window_size_to_terminal_size(interface);
1948+
break;
19451949
default:
19461950
break;
19471951
}

src/nvtop.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040

4141
static volatile sig_atomic_t signal_exit = 0;
4242
static volatile sig_atomic_t signal_resize_win = 0;
43+
static volatile sig_atomic_t signal_cont_received = 0;
4344

4445
static void exit_handler(int signum) {
4546
(void)signum;
@@ -51,6 +52,11 @@ static void resize_handler(int signum) {
5152
signal_resize_win = 1;
5253
}
5354

55+
static void cont_handler(int signum) {
56+
(void)signum;
57+
signal_cont_received = 1;
58+
}
59+
5460
static const char helpstring[] = "Available options:\n"
5561
" -d --delay : Select the refresh rate (1 == 0.1s)\n"
5662
" -v --version : Print the version and exit\n"
@@ -204,6 +210,11 @@ int main(int argc, char **argv) {
204210
perror("Impossible to set signal handler for SIGWINCH: ");
205211
exit(EXIT_FAILURE);
206212
}
213+
siga.sa_handler = cont_handler;
214+
if (sigaction(SIGCONT, &siga, NULL) != 0) {
215+
perror("Impossible to set signal handler for SIGCONT: ");
216+
exit(EXIT_FAILURE);
217+
}
207218

208219
unsigned allDevCount = 0;
209220
LIST_HEAD(monitoredGpus);
@@ -286,6 +297,10 @@ int main(int argc, char **argv) {
286297
signal_resize_win = 0;
287298
update_window_size_to_terminal_size(interface);
288299
}
300+
if (signal_cont_received) {
301+
signal_cont_received = 0;
302+
update_window_size_to_terminal_size(interface);
303+
}
289304
interface_check_monitored_gpu_change(&interface, allDevCount, &numMonitoredGpus, &monitoredGpus, &nonMonitoredGpus);
290305
if (time_slept >= interface_update_interval(interface)) {
291306
gpuinfo_refresh_dynamic_info(&monitoredGpus);
@@ -328,12 +343,17 @@ int main(int argc, char **argv) {
328343
case 'q':
329344
signal_exit = 1;
330345
break;
346+
case KEY_RESIZE:
347+
update_window_size_to_terminal_size(interface);
348+
break;
331349
case KEY_F(2):
350+
case KEY_F(5):
332351
case KEY_F(9):
333352
case KEY_F(6):
334353
case KEY_F(12):
335354
case '+':
336355
case '-':
356+
case 12: // Ctrl+L
337357
interface_key(input_char, interface);
338358
break;
339359
case 'k':

0 commit comments

Comments
 (0)