app: ref the session info in gimp_dialog_factory_add_session_info()

and unref it in the callers after adding it. That's the proper way of
doing it and fixes another warning when restoring a dock fails.
This commit is contained in:
Michael Natterer
2011-05-12 21:12:59 +02:00
parent 9e60dd547d
commit 6bf7f7e429
3 changed files with 12 additions and 5 deletions

View File

@ -99,10 +99,14 @@ windows_open_recent_cmd_callback (GtkAction *action,
GimpSessionInfo *info = g_object_get_data (G_OBJECT (action), "info");
g_object_ref (info);
gimp_container_remove (global_recent_docks, GIMP_OBJECT (info));
gimp_dialog_factory_add_session_info (gimp_dialog_factory_get_singleton (), info);
gimp_dialog_factory_add_session_info (gimp_dialog_factory_get_singleton (),
info);
gimp_session_info_restore (info, gimp_dialog_factory_get_singleton ());
gimp_session_info_clear_info (info);
g_object_unref (info);
}

View File

@ -205,9 +205,9 @@ session_init (Gimp *gimp)
GIMP_LOG (DIALOG_FACTORY,
"failed to parse session info %p, not adding",
info);
g_object_unref (info);
}
g_object_unref (info);
}
else
{

View File

@ -682,11 +682,13 @@ gimp_dialog_factory_add_session_info (GimpDialogFactory *factory,
GimpSessionInfo *info)
{
g_return_if_fail (GIMP_IS_DIALOG_FACTORY (factory));
g_return_if_fail (GIMP_IS_SESSION_INFO (info));
/* We want to append rather than prepend so that the serialized
* order in sessionrc remains the same
*/
factory->p->session_infos = g_list_append (factory->p->session_infos, info);
factory->p->session_infos = g_list_append (factory->p->session_infos,
g_object_ref (info));
}
/**
@ -911,7 +913,8 @@ gimp_dialog_factory_add_dialog (GimpDialogFactory *factory,
NULL);
}
factory->p->session_infos = g_list_append (factory->p->session_infos, info);
gimp_dialog_factory_add_session_info (factory, info);
g_object_unref (info);
}
}