GApplication: add G_APPLICATION_NON_UNIQUE

Add a flag to essentially short-circuit g_application_register().  The
application makes no attempt to acquire the bus name or check for
existing instances with that name.  The application is never considered
as being 'remote' and all requests are handled locally.

Closes #646985.
This commit is contained in:
Ryan Lortie 2011-04-10 07:51:55 -04:00
parent 53389d963d
commit 9d204338f3
2 changed files with 18 additions and 8 deletions

View File

@ -1006,14 +1006,17 @@ g_application_register (GApplication *application,
if (!application->priv->is_registered)
{
application->priv->impl =
g_application_impl_register (application, application->priv->id,
application->priv->flags,
&application->priv->remote_actions,
cancellable, error);
if (~application->priv->flags & G_APPLICATION_NON_UNIQUE)
{
application->priv->impl =
g_application_impl_register (application, application->priv->id,
application->priv->flags,
&application->priv->remote_actions,
cancellable, error);
if (application->priv->impl == NULL)
return FALSE;
if (application->priv->impl == NULL)
return FALSE;
}
application->priv->is_remote = application->priv->remote_actions != NULL;
application->priv->is_registered = TRUE;

View File

@ -1265,6 +1265,11 @@ typedef enum
* when editing a git commit message. The environment is available
* to the #GApplication::command-line signal handler, via
* g_application_command_line_getenv().
* @G_APPLICATION_NON_UNIQUE: Make no attempts to do any of the typical
* single-instance application negotiation. The application neither
* attempts to become the owner of the application ID nor does it
* check if an existing owner already exists. Everything occurs in
* the local process. Since: 2.30.
*
* Flags used to define the behaviour of a #GApplication.
*
@ -1278,7 +1283,9 @@ typedef enum
G_APPLICATION_HANDLES_OPEN = (1 << 2),
G_APPLICATION_HANDLES_COMMAND_LINE = (1 << 3),
G_APPLICATION_SEND_ENVIRONMENT = (1 << 4)
G_APPLICATION_SEND_ENVIRONMENT = (1 << 4),
G_APPLICATION_NON_UNIQUE = (1 << 5),
} GApplicationFlags;
/**