1
0
Fork 0
mirror of https://gitlab.gnome.org/GNOME/calls.git synced 2024-10-05 18:25:26 +00:00

application: Propagate verbosity to main instance

If another instance of calls was already running, invoking calls with
`-v` flag would set the verbosity for the newly created process and then
exit if it was not the primary instance.
This commit is contained in:
Evangelos Ribeiro Tzaras 2022-10-13 15:18:03 +02:00
parent 68c1a3f21e
commit e21155a35c
3 changed files with 36 additions and 0 deletions

View file

@ -398,12 +398,21 @@ static int
calls_application_handle_local_options (GApplication *application, calls_application_handle_local_options (GApplication *application,
GVariantDict *options) GVariantDict *options)
{ {
guint verbosity = calls_log_get_verbosity ();
if (g_variant_dict_contains (options, "version")) { if (g_variant_dict_contains (options, "version")) {
g_print ("%s %s\n", APP_DATA_NAME, *VCS_TAG ? VCS_TAG : PACKAGE_VERSION); g_print ("%s %s\n", APP_DATA_NAME, *VCS_TAG ? VCS_TAG : PACKAGE_VERSION);
return 0; return 0;
} }
/* Propagate verbosity changes to the main instance */
if (verbosity > 0) {
g_variant_dict_insert_value (options, "verbosity", g_variant_new_uint32 (verbosity));
g_print ("Increasing verbosity to %u\n", verbosity);
}
return -1; return -1;
} }
@ -466,6 +475,7 @@ calls_application_command_line (GApplication *application,
g_autoptr (GVariant) providers = NULL; g_autoptr (GVariant) providers = NULL;
g_auto (GStrv) arguments = NULL; g_auto (GStrv) arguments = NULL;
gint argc; gint argc;
guint verbosity;
options = g_application_command_line_get_options_dict (command_line); options = g_application_command_line_get_options_dict (command_line);
@ -488,6 +498,17 @@ calls_application_command_line (GApplication *application,
g_action_group_activate_action (G_ACTION_GROUP (application), g_action_group_activate_action (G_ACTION_GROUP (application),
"dial", g_variant_new_string (arg)); "dial", g_variant_new_string (arg));
/* TODO make this a comma separated string of "CATEGORY:level" pairs */
if (g_variant_dict_lookup (options, "verbosity", "u", &verbosity)) {
gint delta = calls_log_set_verbosity (verbosity);
guint level = calls_log_get_verbosity ();
if (delta != 0)
g_print ("%s verbosity by %d to %u\n",
delta > 0 ? "Increased" : "Decreased",
delta,
level);
}
arguments = g_application_command_line_get_arguments (command_line, &argc); arguments = g_application_command_line_get_arguments (command_line, &argc);
/* Keep only the first URI, if there are many */ /* Keep only the first URI, if there are many */

View file

@ -278,3 +278,17 @@ calls_log_get_verbosity (void)
{ {
return verbosity; return verbosity;
} }
int
calls_log_set_verbosity (guint new_verbosity)
{
int diff = verbosity - new_verbosity;
if (new_verbosity == verbosity)
return 0;
verbosity = new_verbosity;
return diff;
}

View file

@ -39,3 +39,4 @@
void calls_log_init (void); void calls_log_init (void);
void calls_log_increase_verbosity (void); void calls_log_increase_verbosity (void);
guint calls_log_get_verbosity (void); guint calls_log_get_verbosity (void);
int calls_log_set_verbosity (guint new_verbosity);