mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager
synced 2024-09-06 00:55:56 +00:00
glib-aux: add nm_g_idle_add()
g_idle_add() is discouraged, and the checkpatch.pl script warns about it. Sometimes there is a legitimate use of it, when you want to always schedule an idle action (without intent to cancel or track it). That makes more sense for g_idle_add() than it does for g_timeout_add(), because a timeout really should be tracked and cancelled if necessary. Add a wrapper to rename the legitimate uses. This way, we can avoid the checkpatch.pl warnings, and can grep for the remaining illegitimate uses.
This commit is contained in:
parent
9060c14ccf
commit
a99ac7ccd8
|
@ -191,7 +191,7 @@ complain ("This gtk-doc annotation looks wrong") if $line =~ /\*.*\( *(transfer-
|
||||||
complain ("Prefer nm_assert() or g_return*() to g_assert*()") if $line =~ /g_assert/ and (not $filename =~ /\/tests\//) and (not $filename =~ /\/nm-test-/);
|
complain ("Prefer nm_assert() or g_return*() to g_assert*()") if $line =~ /g_assert/ and (not $filename =~ /\/tests\//) and (not $filename =~ /\/nm-test-/);
|
||||||
complain ("Use gs_free_error with GError variables") if $line =~ /\bgs_free\b +GError *\*/;
|
complain ("Use gs_free_error with GError variables") if $line =~ /\bgs_free\b +GError *\*/;
|
||||||
complain ("Don't use strcmp/g_strcmp0 unless you need to sort. Consider nm_streq()/nm_streq0(),NM_IN_STRSET() for testing equality") if $line =~ /\b(strcmp|g_strcmp0)\b/;
|
complain ("Don't use strcmp/g_strcmp0 unless you need to sort. Consider nm_streq()/nm_streq0(),NM_IN_STRSET() for testing equality") if $line =~ /\b(strcmp|g_strcmp0)\b/;
|
||||||
complain ("Don't use API that uses the numeric source id. Instead, use GSource and API like nm_g_idle_add_source(), nm_clear_g_source_inst(), etc.") if $line =~ /\b(g_idle_add|g_idle_add_full|g_timeout_add|g_timeout_add_seconds|g_source_remove|nm_clear_g_source)\b/;
|
complain ("Don't use API that uses the numeric source id. Instead, use GSource and API like nm_g_idle_add(), nm_g_idle_add_source(), nm_clear_g_source_inst(), etc.") if $line =~ /\b(g_idle_add|g_idle_add_full|g_timeout_add|g_timeout_add_seconds|g_source_remove|nm_clear_g_source)\b/;
|
||||||
#complain ("Use spaces instead of tabs") if $line =~ /\t/;
|
#complain ("Use spaces instead of tabs") if $line =~ /\t/;
|
||||||
|
|
||||||
# Further on we process stuff without comments.
|
# Further on we process stuff without comments.
|
||||||
|
|
|
@ -1725,6 +1725,20 @@ nm_g_source_attach(GSource *source, GMainContext *context)
|
||||||
return source;
|
return source;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void
|
||||||
|
nm_g_idle_add(GSourceFunc func, gpointer user_data)
|
||||||
|
{
|
||||||
|
/* g_idle_add() is discouraged because it relies on the guint source ids.
|
||||||
|
*
|
||||||
|
* Usually, you would want to use nm_g_idle_add_source() which returns a GSource*
|
||||||
|
* instance.
|
||||||
|
*
|
||||||
|
* However, if you don't care to ever call g_source_remove() on the source id, then
|
||||||
|
* g_idle_add() is fine. But our checkpatch script would complain about it. nm_g_idle_add(),
|
||||||
|
* is the solution because it intentionally ignores the guint source id. */
|
||||||
|
g_idle_add(func, user_data);
|
||||||
|
}
|
||||||
|
|
||||||
static inline GSource *
|
static inline GSource *
|
||||||
nm_g_idle_add_source(GSourceFunc func, gpointer user_data)
|
nm_g_idle_add_source(GSourceFunc func, gpointer user_data)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue