mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-02 17:26:17 +01:00
gapplication: Stop handle-local-options emission on errors
A signal accumulator can return TRUE to continue signal emission, and FALSE to stop signal emission. handle-local-options callbacks can return « return a non-negative option if you have handled your options and want to exit the process ». Currently, g_application_handle_local_options_accumulator (the accumulator for the handle-local-options signal) returns TRUE on non-negative return value (ie continue signal emission), and returns FALSE on negative return values (ie when the default option processing should continue). This return value seems backward as on >= 0 values, subsequent handle-local-options callbacks could overwrite the 'exit request' from the handler, while on < 0 values, the handle-local-options processing could end up early if several callbacks are listening for this signal. In particular, the default handler for this signal (g_application_real_handle_local_options) always returns -1 and will overwrite >= 0 return values from other handlers. This commit inverts the check so that signal emission stops early when one of the handle-local-options callbacks indicates it wants processing to stop and the process to exit. https://bugzilla.gnome.org/show_bug.cgi?id=751598
This commit is contained in:
parent
2551685cf6
commit
243d740c04
@ -1279,7 +1279,7 @@ g_application_handle_local_options_accumulator (GSignalInvocationHint *ihint,
|
||||
value = g_value_get_int (handler_return);
|
||||
g_value_set_int (return_accu, value);
|
||||
|
||||
return value >= 0;
|
||||
return value < 0;
|
||||
}
|
||||
|
||||
static void
|
||||
|
Loading…
Reference in New Issue
Block a user