|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
From 2aa35e4c8a9d9c632e411df83d43ec27f4ddf718 Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
From: Mamoru TASAKA <mtasaka@fedoraproject.org>
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
Date: Sun, 21 Mar 2021 21:52:10 +0900
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
Subject: [PATCH 1/2] load_icon_themes_from_dir: never reuse GKeyFile object
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
As written on:
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
https://developer.gnome.org/glib/stable/glib-Key-value-file-parser.html#g-key-file-load-from-file
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
an empty GKeyFile object must be passed to g_key_file_load_from_file .
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
---
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
src/icon-theme.c | 8 ++++----
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
src/icon-theme.h | 2 +-
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
src/utils.c | 4 +---
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
3 files changed, 6 insertions(+), 8 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
diff --git a/src/icon-theme.c b/src/icon-theme.c
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
index 7fba616..ea1db83 100644
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
--- a/src/icon-theme.c
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
+++ b/src/icon-theme.c
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
@@ -46,7 +46,7 @@ static void icon_theme_free(IconTheme* theme)
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
g_slice_free(IconTheme, theme);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
}
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
-void load_icon_themes_from_dir(const char* base_dir, const char* theme_dir, GKeyFile* kf)
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
+void load_icon_themes_from_dir(const char* base_dir, const char* theme_dir)
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
{
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
/* NOTE:
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
* 1. theoratically, base_dir is identical to theme_dir
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
@@ -75,6 +75,7 @@ void load_icon_themes_from_dir(const char* base_dir, const char* theme_dir, GKey
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
IconTheme* theme = g_slice_new0(IconTheme);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
char* index_theme;
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
char* cursor_subdir;
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
+ GKeyFile* kf = g_key_file_new();
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
theme->name = g_strdup(name);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
index_theme = g_build_filename(theme_dir, name, "index.theme", NULL);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
@@ -97,6 +98,7 @@ void load_icon_themes_from_dir(const char* base_dir, const char* theme_dir, GKey
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
else
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
theme->disp_name = theme->name;
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
g_free(index_theme);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
+ g_key_file_free(kf);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
cursor_subdir = g_build_filename(theme_dir, name, "cursors", NULL);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
/* it contains a cursor theme */
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
@@ -119,13 +121,11 @@ static void load_icon_themes()
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
{
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
int n, i;
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
gtk_icon_theme_get_search_path(gtk_icon_theme_get_default(), &icon_theme_dirs, &n);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
- GKeyFile* kf = g_key_file_new();
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
for(i = 0; i < n; ++i)
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
{
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
- load_icon_themes_from_dir(icon_theme_dirs[i], icon_theme_dirs[i], kf);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
+ load_icon_themes_from_dir(icon_theme_dirs[i], icon_theme_dirs[i]);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
/* g_debug("icon_theme_dirs[%d] = %s", i, icon_theme_dirs[i]); */
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
}
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
- g_key_file_free(kf);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
}
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
diff --git a/src/icon-theme.h b/src/icon-theme.h
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
index 7ba2ac1..45a104d 100644
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
--- a/src/icon-theme.h
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
+++ b/src/icon-theme.h
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
@@ -40,7 +40,7 @@ typedef struct
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
}IconTheme;
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
void icon_theme_init(GtkBuilder* b);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
-void load_icon_themes_from_dir(const char* base_dir, const char* theme_dir, GKeyFile* kf);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
+void load_icon_themes_from_dir(const char* base_dir, const char* theme_dir);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
gint icon_theme_cmp_name(IconTheme* t, const char* name);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
gint icon_theme_cmp_disp_name(IconTheme* t1, IconTheme* t2);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
diff --git a/src/utils.c b/src/utils.c
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
index 09d356d..4f3af10 100644
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
--- a/src/utils.c
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
+++ b/src/utils.c
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
@@ -159,11 +159,9 @@ _failed:
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
{
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
/* move files in tmp_dir to user_icons_dir */
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
GDir* dir;
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
- GKeyFile* kf = g_key_file_new();
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
/* convert the themes in the dir to IconTheme structs and add them to app.icon_themes list */
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
- load_icon_themes_from_dir(user_icons_dir, tmp_dir, kf);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
- g_key_file_free(kf);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
+ load_icon_themes_from_dir(user_icons_dir, tmp_dir);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
/* now really move this themes to $XDG_DATA_HOME/icons dir and also update the GUI */
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
dir = g_dir_open(tmp_dir, 0, NULL);
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
--
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
2.30.2
|
|
![](https://seccdn.libravatar.org/avatar/5c7f8fd6810ac2f480ef0a688f6b506f4e9d92a6c7de14adb8942de524cb17d4?s=16&d=retro) |
e4700be |
|