glib/gio/tests/gapplication-example-cmdline2.c
Reuben Thomas e99dbb943b doc: remove unnecessary and confusing code from examples
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
2025-02-26 21:48:30 +00:00

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;
}