From 71b53f1590936029d016bea49cf5428d507f8e56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erkki=20Sepp=C3=A4l=C3=A4?= Date: Fri, 2 Apr 2021 11:41:02 +0300 Subject: [PATCH] pw-dot: added -L/--lr for outputting the graph using 'rankdir = "LR"' Graphs laid out this way may be look nicer sometimes. --- man/pw-dot.1.xml.in | 5 +++++ src/tools/pw-dot.c | 16 ++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/man/pw-dot.1.xml.in b/man/pw-dot.1.xml.in index cf93cfd95..14b819291 100644 --- a/man/pw-dot.1.xml.in +++ b/man/pw-dot.1.xml.in @@ -58,6 +58,11 @@ This file is part of PipeWire.

Output file name (Default pw.dot). Use - for stdout.

+ +
diff --git a/src/tools/pw-dot.c b/src/tools/pw-dot.c index 52f919fd3..8954062cb 100644 --- a/src/tools/pw-dot.c +++ b/src/tools/pw-dot.c @@ -53,6 +53,7 @@ struct data { struct spa_list globals; char *dot_str; + const char *dot_rankdir; bool show_all; bool show_smart; @@ -458,6 +459,11 @@ static int draw_graph(struct data *d, const char *path) /* draw the header */ dot_str_add(&d->dot_str, "digraph pipewire {\n"); + if (d->dot_rankdir) { + /* set rank direction, if provided */ + dot_str_add(&d->dot_str, "rankdir = \"%s\";\n", d->dot_rankdir); + } + /* iterate the globals */ spa_list_for_each(g, &d->globals, link) { /* skip null and non-info globals */ @@ -757,7 +763,8 @@ static void show_help(const char *name) " -s, --smart Show linked objects only\n" " -d, --detail Show all object properties\n" " -r, --remote Remote daemon name\n" - " -o, --output Output file (Default %s)\n", + " -o, --output Output file (Default %s)\n" + " -L, --lr Use left-right rank direction\n", name, DEFAULT_DOT_PATH); } @@ -776,13 +783,14 @@ int main(int argc, char *argv[]) { "detail", no_argument, NULL, 'd' }, { "remote", required_argument, NULL, 'r' }, { "output", required_argument, NULL, 'o' }, + { "lr", no_argument, NULL, 'L' }, { NULL, 0, NULL, 0} }; int c; pw_init(&argc, &argv); - while ((c = getopt_long(argc, argv, "hVasdr:o:", long_options, NULL)) != -1) { + while ((c = getopt_long(argc, argv, "hVasdr:o:L", long_options, NULL)) != -1) { switch (c) { case 'h' : show_help(argv[0]); @@ -815,6 +823,10 @@ int main(int argc, char *argv[]) dot_path = optarg; fprintf(stderr, "set output file %s\n", dot_path); break; + case 'L' : + data.dot_rankdir = "LR"; + fprintf(stderr, "set rank direction to LR\n"); + break; default: show_help(argv[0]); return -1;