Skip to content

Commit

Permalink
xdg-theme: Add functions to preload themes
Browse files Browse the repository at this point in the history
By preloading themes, the getter functions should be thread-safe.

Signed-off-by: Quentin Glidic <sardemff7+git@sardemff7.net>
  • Loading branch information
sardemff7 committed Jun 25, 2017
1 parent 858554b commit 3467c6a
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/nkutils-xdg-theme.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ typedef struct _NkXdgThemeContext NkXdgThemeContext;
NkXdgThemeContext *nk_xdg_theme_context_new(const gchar * const *icon_fallback_themes, const gchar * const *sound_fallback_themes);
void nk_xdg_theme_context_free(NkXdgThemeContext *context);

void nk_xdg_theme_preload_themes_icon(NkXdgThemeContext *context, const gchar * const *theme_names);
void nk_xdg_theme_preload_themes_sound(NkXdgThemeContext *context, const gchar * const *theme_names);

gchar *nk_xdg_theme_get_icon(NkXdgThemeContext *context, const gchar * const *themes, const gchar *context_name, const gchar *name, gint size, gint scale, gboolean svg);
gchar *nk_xdg_theme_get_sound(NkXdgThemeContext *context, const gchar * const *themes, const gchar *name, const gchar *profile, const gchar *locale);

Expand Down
26 changes: 26 additions & 0 deletions src/xdg-theme.c
Original file line number Diff line number Diff line change
Expand Up @@ -907,6 +907,22 @@ _nk_xdg_theme_search_file(NkXdgThemeTypeContext *self, const gchar **names, cons
return NULL;
}

static gboolean
_nk_xdg_theme_foreach_noop(G_GNUC_UNUSED NkXdgThemeTheme *theme, G_GNUC_UNUSED gconstpointer user_data, G_GNUC_UNUSED gpointer *ret)
{
return FALSE;
}

void
nk_xdg_theme_preload_themes_icon(NkXdgThemeContext *context, const gchar * const *theme_names)
{
g_return_if_fail(context != NULL);

NkXdgThemeTypeContext *self = &context->types[TYPE_ICON];

_nk_xdg_theme_foreach_theme(self, theme_names, NK_XDG_THEME_ICON_FALLBACK_THEME, _nk_xdg_theme_foreach_noop, NULL, NULL);
}

static gint
_nk_xdg_theme_icon_subdir_compute_distance(NkXdgThemeIconDir *self, gint size)
{
Expand Down Expand Up @@ -1051,6 +1067,16 @@ _nk_xdg_theme_sound_find_file(NkXdgThemeTheme *self, const gchar * const *names,
return _nk_xdg_theme_sound_find_file(self, names, "stereo", ret);
}

void
nk_xdg_theme_preload_themes_sound(NkXdgThemeContext *context, const gchar * const *theme_names)
{
g_return_if_fail(context != NULL);

NkXdgThemeTypeContext *self = &context->types[TYPE_SOUND];

_nk_xdg_theme_foreach_theme(self, theme_names, NK_XDG_THEME_SOUND_FALLBACK_THEME, _nk_xdg_theme_foreach_noop, NULL, NULL);
}

gchar *
nk_xdg_theme_get_sound(NkXdgThemeContext *context, const gchar * const *theme_names, const gchar *name, const gchar *profile, const gchar *locale)
{
Expand Down

0 comments on commit 3467c6a

Please sign in to comment.