mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-02 07:23:41 +02:00
gtask: Add g_task_set_static_name()
Similar to g_source_set_static_name, this avoids strdup overhead for debug-only information in possibly hot code paths. We also add a macro wrapper for g_task_set_name that uses __builtin_constant_p to decide whether to use g_task_set_name or g_task_set_static_name.
This commit is contained in:
committed by
Philip Withnall
parent
794ee60306
commit
99c7d60869
17
gio/gtask.h
17
gio/gtask.h
@@ -79,6 +79,9 @@ void g_task_set_source_tag (GTask *task,
|
||||
GIO_AVAILABLE_IN_2_60
|
||||
void g_task_set_name (GTask *task,
|
||||
const gchar *name);
|
||||
GIO_AVAILABLE_IN_2_76
|
||||
void g_task_set_static_name (GTask *task,
|
||||
const gchar *name);
|
||||
|
||||
/* Macro wrapper to set the task name when setting the source tag. */
|
||||
#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_60
|
||||
@@ -86,10 +89,22 @@ void g_task_set_name (GTask *task,
|
||||
GTask *_task = (task); \
|
||||
(g_task_set_source_tag) (_task, tag); \
|
||||
if (g_task_get_name (_task) == NULL) \
|
||||
g_task_set_name (_task, G_STRINGIFY (tag)); \
|
||||
g_task_set_static_name (_task, G_STRINGIFY (tag)); \
|
||||
} G_STMT_END
|
||||
#endif
|
||||
|
||||
#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_76
|
||||
#if defined (__GNUC__) && (__GNUC__ >= 2)
|
||||
#define g_task_set_name(task, name) G_STMT_START { \
|
||||
GTask *_task = (task); \
|
||||
if (__builtin_constant_p (name)) \
|
||||
g_task_set_static_name (_task, name); \
|
||||
else \
|
||||
g_task_set_name (_task, name); \
|
||||
} G_STMT_END
|
||||
#endif
|
||||
#endif
|
||||
|
||||
GIO_AVAILABLE_IN_2_36
|
||||
gpointer g_task_get_source_object (GTask *task);
|
||||
GIO_AVAILABLE_IN_2_36
|
||||
|
Reference in New Issue
Block a user