mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-03 09:01:54 -05:00
pw-top: handle io
This commit is contained in:
parent
ae8f8b25f6
commit
f28fb692a4
1 changed files with 28 additions and 14 deletions
|
|
@ -35,8 +35,6 @@
|
|||
#include <extensions/profiler.h>
|
||||
|
||||
#define MAX_NAME 128
|
||||
#define MAX_NODES 1024
|
||||
#define MAX_FOLLOWERS 1024
|
||||
|
||||
struct driver {
|
||||
int64_t count;
|
||||
|
|
@ -247,11 +245,8 @@ static void print_node(struct data *d, struct driver *i, struct node *n)
|
|||
char buf3[64];
|
||||
char buf4[64];
|
||||
float waiting, busy, period;
|
||||
int row, col;
|
||||
struct spa_fraction frac;
|
||||
|
||||
getmaxyx(d->win,row,col);
|
||||
|
||||
if (n->driver == n)
|
||||
frac = SPA_FRACTION((uint32_t)(i->clock.duration * i->clock.rate.num), i->clock.rate.denom);
|
||||
else
|
||||
|
|
@ -277,17 +272,16 @@ static void print_node(struct data *d, struct driver *i, struct node *n)
|
|||
n->driver == n ? "" : " + ",
|
||||
n->name);
|
||||
|
||||
wprintw(d->win, "%.*s\n", col-1, line);
|
||||
wprintw(d->win, "%.*s\n", COLS, line);
|
||||
}
|
||||
|
||||
static void do_timeout(void *data, uint64_t expirations)
|
||||
static void do_refresh(struct data *d)
|
||||
{
|
||||
struct data *d = data;
|
||||
struct node *n, *t, *f;
|
||||
|
||||
wclear(d->win);
|
||||
wattron(d->win, A_REVERSE);
|
||||
wprintw(d->win, "%-*.*s", COLS-1, COLS-1, "S ID LATENCY WAIT BUSY W/P B/P ERR NAME ");
|
||||
wprintw(d->win, "%-*.*s", COLS, COLS, "S ID PERIOD/RATE WAIT BUSY W/P B/P ERR NAME ");
|
||||
wattroff(d->win, A_REVERSE);
|
||||
wprintw(d->win, "\n");
|
||||
|
||||
|
|
@ -307,6 +301,12 @@ static void do_timeout(void *data, uint64_t expirations)
|
|||
wrefresh(d->win);
|
||||
}
|
||||
|
||||
static void do_timeout(void *data, uint64_t expirations)
|
||||
{
|
||||
struct data *d = data;
|
||||
do_refresh(d);
|
||||
}
|
||||
|
||||
static void profiler_profile(void *data, const struct spa_pod *pod)
|
||||
{
|
||||
struct data *d = data;
|
||||
|
|
@ -447,7 +447,7 @@ static void show_help(const char *name)
|
|||
name);
|
||||
}
|
||||
|
||||
void terminal_start()
|
||||
static void terminal_start()
|
||||
{
|
||||
initscr();
|
||||
cbreak();
|
||||
|
|
@ -455,15 +455,27 @@ void terminal_start()
|
|||
refresh();
|
||||
}
|
||||
|
||||
void terminal_stop()
|
||||
static void terminal_stop()
|
||||
{
|
||||
endwin();
|
||||
}
|
||||
|
||||
void resizehandler(int sig)
|
||||
static void do_handle_io(void *data, int fd, uint32_t mask)
|
||||
{
|
||||
terminal_stop();
|
||||
terminal_start();
|
||||
struct data *d = data;
|
||||
|
||||
if (mask & SPA_IO_IN) {
|
||||
int ch = getch();
|
||||
|
||||
switch(ch) {
|
||||
case 'q':
|
||||
pw_main_loop_quit(d->loop);
|
||||
break;
|
||||
default:
|
||||
do_refresh(d);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
|
|
@ -557,6 +569,8 @@ int main(int argc, char *argv[])
|
|||
interval.tv_nsec = 0;
|
||||
pw_loop_update_timer(l, data.timer, &value, &interval, false);
|
||||
|
||||
pw_loop_add_io(l, fileno(stdin), SPA_IO_IN, false, do_handle_io, &data);
|
||||
|
||||
pw_main_loop_run(data.loop);
|
||||
|
||||
terminal_stop();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue