Commit eba974e2 authored by Xavier Claessens's avatar Xavier Claessens

Port EmpathyLogManager to the new singleton policy.

svn path=/trunk/; revision=2115
parent c2a1dec0
......@@ -1526,7 +1526,7 @@ empathy_chat_init (EmpathyChat *chat)
EMPATHY_TYPE_CHAT, EmpathyChatPriv);
chat->priv = priv;
priv->log_manager = empathy_log_manager_new ();
priv->log_manager = empathy_log_manager_dup_singleton ();
priv->contacts_width = -1;
priv->sent_messages = NULL;
priv->sent_messages_index = -1;
......
......@@ -171,7 +171,7 @@ empathy_contact_log_menu_item_new (EmpathyContact *contact)
g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL);
manager = empathy_log_manager_new ();
manager = empathy_log_manager_dup_singleton ();
have_log = empathy_log_manager_exists (manager,
empathy_contact_get_account (contact),
empathy_contact_get_id (contact),
......
......@@ -160,7 +160,7 @@ empathy_log_window_show (McAccount *account,
}
window = g_new0 (EmpathyLogWindow, 1);
window->log_manager = empathy_log_manager_new ();
window->log_manager = empathy_log_manager_dup_singleton ();
filename = empathy_file_lookup ("empathy-log-window.glade",
"libempathy-gtk");
......
......@@ -55,7 +55,6 @@ typedef struct {
gchar *basedir;
} EmpathyLogManagerPriv;
static void log_manager_finalize (GObject *object);
static const gchar * log_manager_get_basedir (EmpathyLogManager *manager);
static GList * log_manager_get_all_files (EmpathyLogManager *manager,
const gchar *dir);
......@@ -83,15 +82,7 @@ static void log_manager_search_hit_free (EmpathyLogSe
G_DEFINE_TYPE (EmpathyLogManager, empathy_log_manager, G_TYPE_OBJECT);
static void
empathy_log_manager_class_init (EmpathyLogManagerClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = log_manager_finalize;
g_type_class_add_private (object_class, sizeof (EmpathyLogManagerPriv));
}
static EmpathyLogManager * manager_singleton = NULL;
static void
empathy_log_manager_init (EmpathyLogManager *manager)
......@@ -112,19 +103,41 @@ log_manager_finalize (GObject *object)
g_free (priv->basedir);
}
EmpathyLogManager *
empathy_log_manager_new (void)
static GObject *
log_manager_constructor (GType type,
guint n_props,
GObjectConstructParam *props)
{
static EmpathyLogManager *manager = NULL;
GObject *retval;
if (!manager) {
manager = g_object_new (EMPATHY_TYPE_LOG_MANAGER, NULL);
g_object_add_weak_pointer (G_OBJECT (manager), (gpointer) &manager);
if (manager_singleton) {
retval = g_object_ref (manager_singleton);
} else {
g_object_ref (manager);
retval = G_OBJECT_CLASS (empathy_log_manager_parent_class)->constructor
(type, n_props, props);
g_object_add_weak_pointer (retval, (gpointer *) &retval);
manager_singleton = EMPATHY_LOG_MANAGER (retval);
}
return manager;
return retval;
}
static void
empathy_log_manager_class_init (EmpathyLogManagerClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
object_class->finalize = log_manager_finalize;
object_class->constructor = log_manager_constructor;
g_type_class_add_private (object_class, sizeof (EmpathyLogManagerPriv));
}
EmpathyLogManager *
empathy_log_manager_dup_singleton (void)
{
return g_object_new (EMPATHY_TYPE_LOG_MANAGER, NULL);
}
void
......
......@@ -61,7 +61,7 @@ struct _EmpathyLogSearchHit {
};
GType empathy_log_manager_get_type (void) G_GNUC_CONST;
EmpathyLogManager *empathy_log_manager_new (void);
EmpathyLogManager *empathy_log_manager_dup_singleton (void);
void empathy_log_manager_add_message (EmpathyLogManager *manager,
const gchar *chat_id,
gboolean chatroom,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment