mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-03-29 19:10:03 +01:00
gtask: use g_strconcat() in g_task_return() only if needed
If the task name is NULL there is no need to allocate the string since this can be expensive if called very often
This commit is contained in:
parent
82766ae446
commit
f38d74b233
21
gio/gtask.c
21
gio/gtask.c
@ -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);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user