mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-04-01 13:23:07 +02:00
Three of the four GApplicationCommandLine examples contained this line: g_application_set_inactivity_timeout (app, 10000); It is not explained (which could be confusing for readers trying to understand the examplese), or necessary. Worse, it causes two of the examples to pause for ten seconds if they are invoked with no command-line arguments, which makes them seem broken (and would presumably be reported as a bug in any real application). So, remove these calls. Fixes #3615
106 lines
2.3 KiB
C
106 lines
2.3 KiB
C
#include <gio/gio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
static int
|
|
command_line (GApplication *application,
|
|
GApplicationCommandLine *cmdline)
|
|
{
|
|
gchar **argv;
|
|
gint argc;
|
|
gint i;
|
|
|
|
argv = g_application_command_line_get_arguments (cmdline, &argc);
|
|
|
|
for (i = 0; i < argc; i++)
|
|
g_print ("handling argument %s remotely\n", argv[i]);
|
|
|
|
g_strfreev (argv);
|
|
|
|
return 0;
|
|
}
|
|
|
|
static gboolean
|
|
test_local_cmdline (GApplication *application,
|
|
gchar ***arguments,
|
|
gint *exit_status)
|
|
{
|
|
gint i, j;
|
|
gchar **argv;
|
|
|
|
argv = *arguments;
|
|
|
|
i = 1;
|
|
while (argv[i])
|
|
{
|
|
if (g_str_has_prefix (argv[i], "--local-"))
|
|
{
|
|
g_print ("handling argument %s locally\n", argv[i]);
|
|
g_free (argv[i]);
|
|
for (j = i; argv[j]; j++)
|
|
argv[j] = argv[j + 1];
|
|
}
|
|
else
|
|
{
|
|
g_print ("not handling argument %s locally\n", argv[i]);
|
|
i++;
|
|
}
|
|
}
|
|
|
|
*exit_status = 0;
|
|
|
|
return FALSE;
|
|
}
|
|
|
|
typedef GApplication TestApplication;
|
|
typedef GApplicationClass TestApplicationClass;
|
|
|
|
static GType test_application_get_type (void);
|
|
G_DEFINE_TYPE (TestApplication, test_application, G_TYPE_APPLICATION)
|
|
|
|
static void
|
|
test_application_finalize (GObject *object)
|
|
{
|
|
G_OBJECT_CLASS (test_application_parent_class)->finalize (object);
|
|
}
|
|
|
|
static void
|
|
test_application_init (TestApplication *app)
|
|
{
|
|
}
|
|
|
|
static void
|
|
test_application_class_init (TestApplicationClass *class)
|
|
{
|
|
G_OBJECT_CLASS (class)->finalize = test_application_finalize;
|
|
G_APPLICATION_CLASS (class)->local_command_line = test_local_cmdline;
|
|
}
|
|
|
|
static GApplication *
|
|
test_application_new (const gchar *application_id,
|
|
GApplicationFlags flags)
|
|
{
|
|
g_return_val_if_fail (g_application_id_is_valid (application_id), NULL);
|
|
|
|
return g_object_new (test_application_get_type (),
|
|
"application-id", application_id,
|
|
"flags", flags,
|
|
NULL);
|
|
}
|
|
|
|
int
|
|
main (int argc, char **argv)
|
|
{
|
|
GApplication *app;
|
|
int status;
|
|
|
|
app = test_application_new ("org.gtk.TestApplication", 0);
|
|
g_signal_connect (app, "command-line", G_CALLBACK (command_line), NULL);
|
|
|
|
status = g_application_run (app, argc, argv);
|
|
|
|
g_object_unref (app);
|
|
|
|
return status;
|
|
}
|