Add g_source_set_static_name_by_id

After adding g_source_set_static_name, I realized that the
majority of GSources in the GTK sources still rely on
g_source_set_name_by_id, and open-coding this in a million
places is no fun.
This commit is contained in:
Matthias Clasen
2021-07-26 16:47:20 -04:00
parent 808cde540a
commit 3fac01437e
3 changed files with 40 additions and 9 deletions

View File

@@ -918,6 +918,7 @@ g_source_get_name
g_source_set_name g_source_set_name
g_source_set_static_name g_source_set_static_name
g_source_set_name_by_id g_source_set_name_by_id
g_source_set_static_name_by_id
g_source_get_context g_source_get_context
g_source_set_callback g_source_set_callback
GSourceFunc GSourceFunc

View File

@@ -2097,6 +2097,22 @@ g_source_set_name_full (GSource *source,
UNLOCK_CONTEXT (context); UNLOCK_CONTEXT (context);
} }
static void
g_source_set_name_by_id_full (guint tag,
const char *name,
gboolean is_static)
{
GSource *source;
g_return_if_fail (tag > 0);
source = g_main_context_find_source_by_id (NULL, tag);
if (source == NULL)
return;
g_source_set_name_full (source, name, is_static);
}
/** /**
* g_source_set_name: * g_source_set_name:
* @source: a #GSource * @source: a #GSource
@@ -2190,23 +2206,34 @@ g_source_get_name (GSource *source)
* been reissued, leading to the operation being performed against the * been reissued, leading to the operation being performed against the
* wrong source. * wrong source.
* *
* Also see g_source_set_static_name_by_id().
*
* Since: 2.26 * Since: 2.26
**/ **/
void void
g_source_set_name_by_id (guint tag, g_source_set_name_by_id (guint tag,
const char *name) const char *name)
{ {
GSource *source; g_source_set_name_by_id_full (tag, name, FALSE);
g_return_if_fail (tag > 0);
source = g_main_context_find_source_by_id (NULL, tag);
if (source == NULL)
return;
g_source_set_name (source, name);
} }
/**
* g_source_set_static_name_by_id:
* @tag: a #GSource ID
* @name: debug name for the source
*
* A variant of g_source_set_name_by_id() that does not
* duplicate the @name, and can only be used with
* string literals.
*
* Since: 2.70
*/
void
g_source_set_static_name_by_id (guint tag,
const char *name)
{
g_source_set_name_by_id_full (tag, name, TRUE);
}
/** /**
* g_source_ref: * g_source_ref:

View File

@@ -613,6 +613,9 @@ const char * g_source_get_name (GSource *source);
GLIB_AVAILABLE_IN_ALL GLIB_AVAILABLE_IN_ALL
void g_source_set_name_by_id (guint tag, void g_source_set_name_by_id (guint tag,
const char *name); const char *name);
GLIB_AVAILABLE_IN_2_70
void g_source_set_static_name_by_id (guint tag,
const char *name);
GLIB_AVAILABLE_IN_2_36 GLIB_AVAILABLE_IN_2_36
void g_source_set_ready_time (GSource *source, void g_source_set_ready_time (GSource *source,