backends/color-store: Clarify the color profile ownership fixing the key leak
We were leaking the color profile path keys but also it wasn't clear how the ownership was passed to the new hash-table, so let's just remove it from the pending hash table and add it to the new one including the expected reference. This is safe because we were still adding a temporary extra ref to the profile Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3788>
This commit is contained in:
parent
c2cc26b370
commit
430e55a535
1 changed files with 7 additions and 4 deletions
|
@ -99,13 +99,16 @@ on_directory_profile_ready (MetaColorProfile *color_profile,
|
||||||
|
|
||||||
g_object_ref (color_profile);
|
g_object_ref (color_profile);
|
||||||
|
|
||||||
if (!g_hash_table_steal (color_store->pending_local_profiles,
|
if (!g_hash_table_remove (color_store->pending_local_profiles,
|
||||||
meta_color_profile_get_file_path (color_profile)))
|
meta_color_profile_get_file_path (color_profile)))
|
||||||
|
{
|
||||||
|
g_object_unref (color_profile);
|
||||||
g_warn_if_reached ();
|
g_warn_if_reached ();
|
||||||
|
}
|
||||||
|
|
||||||
g_hash_table_insert (color_store->profiles,
|
g_hash_table_insert (color_store->profiles,
|
||||||
g_strdup (meta_color_profile_get_id (color_profile)),
|
g_strdup (meta_color_profile_get_id (color_profile)),
|
||||||
color_profile);
|
g_object_ref (color_profile));
|
||||||
|
|
||||||
meta_topic (META_DEBUG_COLOR, "Created colord profile '%s' from '%s'",
|
meta_topic (META_DEBUG_COLOR, "Created colord profile '%s' from '%s'",
|
||||||
meta_color_profile_get_id (color_profile),
|
meta_color_profile_get_id (color_profile),
|
||||||
|
|
Loading…
Reference in a new issue