Add utility functions for portal paths

The paths that we create for requests and sessions
need some icky code to create. Keep it in one place.
This commit is contained in:
Matthias Clasen
2018-08-30 13:05:55 -04:00
parent 3471349013
commit 6829719d6d
2 changed files with 40 additions and 0 deletions

View File

@ -291,3 +291,39 @@ gtk_should_use_portal (void)
return use_portal[0] == '1';
}
static char *
get_portal_path (GDBusConnection *connection,
const char *kind,
char **token)
{
char *sender;
int i;
char *path;
*token = g_strdup_printf ("gtk%d", g_random_int_range (0, G_MAXINT));
sender = g_strdup (g_dbus_connection_get_unique_name (connection) + 1);
for (i = 0; sender[i]; i++)
if (sender[i] == '.')
sender[i] = '_';
path = g_strconcat ("/org/freedesktop/portal/desktop", "/", kind, "/", sender, "/", token, NULL);
g_free (sender);
return path;
}
char *
gtk_get_portal_request_path (GDBusConnection *connection,
char **token)
{
return get_portal_path (connection, "request", token);
}
char *
gtk_get_portal_session_path (GDBusConnection *connection,
char **token)
{
return get_portal_path (connection, "session", token);
}

View File

@ -96,6 +96,10 @@ gdouble _gtk_get_slowdown ();
void _gtk_set_slowdown (gdouble slowdown_factor);
gboolean gtk_should_use_portal (void);
char *gtk_get_portal_request_path (GDBusConnection *connection,
char **token);
char *gtk_get_portal_session_path (GDBusConnection *connection,
char **token);
#ifdef G_OS_WIN32
void _gtk_load_dll_with_libgtk3_manifest (const char *dllname);