Merge branch 'backport-2654-task-alloc-performance-glib-2-72' into 'glib-2-72'

Backport !2654 “gtask: use g_strconcat() in g_task_return() only if needed” to glib-2-72

See merge request GNOME/glib!2662
This commit is contained in:
Philip Withnall
2022-05-18 14:09:00 +00:00

View File

@@ -1257,7 +1257,6 @@ g_task_return (GTask *task,
GTaskReturnType type)
{
GSource *source;
gchar *source_name = NULL;
if (type != G_TASK_RETURN_FROM_THREAD)
task->ever_returned = TRUE;
@@ -1306,10 +1305,22 @@ g_task_return (GTask *task,
/* Otherwise, complete in the next iteration */
source = g_idle_source_new ();
source_name = g_strdup_printf ("[gio] %s complete_in_idle_cb",
(task->name != NULL) ? task->name : "(unnamed)");
g_source_set_name (source, source_name);
g_free (source_name);
/* Note: in case the task name is NULL we set it as a const string instead
* of going through the concat path which is more expensive and may show in the
* profiler if g_task_return is called very often
*/
if (task->name == NULL)
g_source_set_static_name (source, "[gio] (unnamed) complete_in_idle_cb");
else
{
gchar *source_name;
source_name = g_strconcat ("[gio] ", task->name, " complete_in_idle_cb", NULL);
g_source_set_name (source, source_name);
g_free (source_name);
}
g_task_attach_source (task, source, complete_in_idle_cb);
g_source_unref (source);
}