[glide] Start working on some leaks with inspector



commit 02339f11f1d7720813e58e2e9092c8886e5a2c6c
Author: Robert Carr <racarr Valentine localdomain>
Date:   Thu May 6 03:57:00 2010 -0400

    Start working on some leaks with inspector

 libglide/glide-inspector-notebook.c |   21 ++++++++++++---------
 libglide/glide-inspector-slide.c    |   14 ++++++++------
 libglide/glide-window.c             |    4 ++++
 3 files changed, 24 insertions(+), 15 deletions(-)
---
diff --git a/libglide/glide-inspector-notebook.c b/libglide/glide-inspector-notebook.c
index 5298ac8..874d468 100644
--- a/libglide/glide-inspector-notebook.c
+++ b/libglide/glide-inspector-notebook.c
@@ -195,21 +195,24 @@ glide_inspector_notebook_set_stage_manager (GlideInspectorNotebook *inspector,
   int i = 0;
   GtkNotebook *notebook = GTK_NOTEBOOK (inspector);
 
-  if (inspector->priv->manager)
-    g_object_unref (G_OBJECT (inspector->priv->manager));
-  inspector->priv->manager = (GlideStageManager *)g_object_ref (G_OBJECT (manager));
-  inspector->priv->selection_changed_id = g_signal_connect (inspector->priv->manager,
-							    "selection-changed",
-							    G_CALLBACK (glide_inspector_notebook_selection_changed),
-							    inspector);
-
   for (i = 0; i < gtk_notebook_get_n_pages (notebook); i++)
     {
       GtkWidget *page = gtk_notebook_get_nth_page (notebook, i);
       g_object_set (page, "actor", NULL, NULL);
     }
 
-  
+  if (manager)
+    {
+      inspector->priv->manager = manager;
+      inspector->priv->selection_changed_id = g_signal_connect (inspector->priv->manager,
+								"selection-changed",
+								G_CALLBACK (glide_inspector_notebook_selection_changed),
+								inspector);
+    }
+  else
+    {
+      inspector->priv->manager = NULL;
+    }
   
   g_object_notify (G_OBJECT (inspector), "stage-manager");
 }
diff --git a/libglide/glide-inspector-slide.c b/libglide/glide-inspector-slide.c
index 6adca0b..c4c2e53 100644
--- a/libglide/glide-inspector-slide.c
+++ b/libglide/glide-inspector-slide.c
@@ -124,8 +124,8 @@ glide_inspector_slide_file_set (GtkFileChooserButton *file_button,
 static void
 glide_inspector_slide_finalize (GObject *object)
 {
-  GlideInspectorSlide *inspector = (GlideInspectorSlide *)object;
-  g_object_unref (G_OBJECT (inspector->priv->actor));
+  //  GlideInspectorSlide *inspector = (GlideInspectorSlide *)object;
+
 }
 
 static void
@@ -284,12 +284,14 @@ glide_inspector_slide_set_actor (GlideInspectorSlide *inspector,
       inspector->priv->color_notify_id = 0;
       
     }
-  if (inspector->priv->actor)
-    g_object_unref (G_OBJECT (inspector->priv->actor));
+
   if (!actor)
-    return;
+    {
+      inspector->priv->actor = NULL;
+      return;
+    }
 
-  inspector->priv->actor = (GlideActor *)g_object_ref (G_OBJECT (actor));
+  inspector->priv->actor = actor;
   
   if (!GLIDE_IS_SLIDE (actor))
     {
diff --git a/libglide/glide-window.c b/libglide/glide-window.c
index 5850fc0..466d665 100644
--- a/libglide/glide-window.c
+++ b/libglide/glide-window.c
@@ -356,6 +356,10 @@ glide_window_set_document (GlideWindow *w, GlideDocument *d)
 static void
 glide_window_close_document (GlideWindow *w)
 {
+  
+  if (w->priv->inspector_notebook)
+    glide_inspector_notebook_set_stage_manager (GLIDE_INSPECTOR_NOTEBOOK (w->priv->inspector_notebook),
+						NULL);
   if (w->priv->document)
     g_object_unref (w->priv->document);
   if (w->priv->manager)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]