[nemiver/gtk2-branch] Fix VarsTreeView memory management



commit 17bed80d05ac66794cceb52e6690eb70143a3e60
Author: Dodji Seketeli <dodji gnome org>
Date:   Sat Jun 11 20:48:15 2011 +0200

    Fix VarsTreeView memory management
    
    	* src/persp/dbgperspective/nmv-vars-treeview.h
    	(VarsTreeView::create): Change return type from a SafePtr to a
    	bare VarsTreeView* pointer.
    	* src/persp/dbgperspective/nmv-vars-treeview.cc
    	(VarsTreeView::create): Likewise.  Return a VarsTreeView* now.
    	The caller has either to call Gtk::manage on the result of
    	VarsTreeView::create or delete it by hand.
    	* src/persp/dbgperspective/nmv-local-vars-inspector.cc
    	(LocalVarsInspector::Priv::tree_view): Change the type of this
    	member from a SafePtr to a bare VarsTreeView* pointer.
    	(LocalVarsInspector::Priv::Priv): Initialize
    	LocalVarsInspector::Priv::tree_view with the result of
    	VarsTreeView passed to Gtk::manage.  Avoid doing the (wrong)
    	tree_view.reference() dance I was doing before.
    	* src/persp/dbgperspective/nmv-global-vars-inspector-dialog.cc
    	(GlobalVarsInspectorDialog::Priv::tree_view): Change the type of
    	this member from a SafePtr to a bare VarsTreeView* pointer.
    	* src/uicommon/nmv-dialog.cc (Dialog::Priv::Priv): Fix indentation.

 .../nmv-global-vars-inspector-dialog.cc            |    5 +++--
 .../dbgperspective/nmv-local-vars-inspector.cc     |    8 ++------
 src/persp/dbgperspective/nmv-var-inspector.cc      |    5 +++--
 src/persp/dbgperspective/nmv-vars-treeview.cc      |    4 ++--
 src/persp/dbgperspective/nmv-vars-treeview.h       |    2 +-
 src/uicommon/nmv-dialog.cc                         |    2 +-
 6 files changed, 12 insertions(+), 14 deletions(-)
---
diff --git a/src/persp/dbgperspective/nmv-global-vars-inspector-dialog.cc b/src/persp/dbgperspective/nmv-global-vars-inspector-dialog.cc
index 4556bf7..03a944c 100644
--- a/src/persp/dbgperspective/nmv-global-vars-inspector-dialog.cc
+++ b/src/persp/dbgperspective/nmv-global-vars-inspector-dialog.cc
@@ -50,7 +50,7 @@ public:
     IVarListWalkerSafePtr global_variables_walker_list;
 
     IWorkbench &workbench;
-    VarsTreeViewSafePtr tree_view;
+    VarsTreeView* tree_view;
     Glib::RefPtr<Gtk::TreeStore> tree_store;
     Gtk::TreeModel::iterator cur_selected_row;
     SafePtr<Gtk::Menu> contextual_menu;
@@ -62,7 +62,8 @@ public:
           IWorkbench &a_workbench) :
         dialog (a_dialog),
         gtkbuilder (a_gtkbuilder),
-        workbench (a_workbench)
+        workbench (a_workbench),
+        tree_view (0)
     {
         LOG_FUNCTION_SCOPE_NORMAL_DD;
 
diff --git a/src/persp/dbgperspective/nmv-local-vars-inspector.cc b/src/persp/dbgperspective/nmv-local-vars-inspector.cc
index 593d752..8eb5e32 100644
--- a/src/persp/dbgperspective/nmv-local-vars-inspector.cc
+++ b/src/persp/dbgperspective/nmv-local-vars-inspector.cc
@@ -52,7 +52,7 @@ public:
     IDebuggerSafePtr debugger;
     IWorkbench &workbench;
     IPerspective &perspective;
-    VarsTreeViewSafePtr tree_view;
+    VarsTreeView *tree_view;
     Glib::RefPtr<Gtk::TreeStore> tree_store;
     Gtk::TreeModel::iterator cur_selected_row;
     SafePtr<Gtk::TreeRowReference> local_variables_row_ref;
@@ -83,7 +83,7 @@ public:
           IPerspective& a_perspective) :
         workbench (a_workbench),
         perspective (a_perspective),
-        tree_view (VarsTreeView::create ()),
+        tree_view (Gtk::manage (VarsTreeView::create ())),
         is_new_frame (false),
         is_up2date (true),
         saved_reason (IDebugger::UNDEFINED_REASON),
@@ -93,10 +93,6 @@ public:
         module_manager (0)
     {
         LOG_FUNCTION_SCOPE_NORMAL_DD;
-        // We are going to unref the tree_view when an instance of
-        // this type is going to be distroyed.  So we need to hold a
-        // reference on tree_view.
-        tree_view.reference ();
         THROW_IF_FAIL (a_debugger);
         debugger = a_debugger;
         THROW_IF_FAIL (tree_view);
diff --git a/src/persp/dbgperspective/nmv-var-inspector.cc b/src/persp/dbgperspective/nmv-var-inspector.cc
index f7684ce..e37f2f6 100644
--- a/src/persp/dbgperspective/nmv-var-inspector.cc
+++ b/src/persp/dbgperspective/nmv-var-inspector.cc
@@ -58,7 +58,7 @@ class VarInspector::Priv : public sigc::trackable {
     // at a given point in time
     IDebugger::VariableSafePtr variable;
     IPerspective &perspective;
-    VarsTreeViewSafePtr tree_view;
+    VarsTreeView *tree_view;
     Glib::RefPtr<Gtk::TreeStore> tree_store;
     Gtk::TreeModel::iterator var_row_it;
     Gtk::TreeModel::iterator cur_selected_row;
@@ -72,7 +72,7 @@ class VarInspector::Priv : public sigc::trackable {
     build_widget ()
     {
         LOG_FUNCTION_SCOPE_NORMAL_DD;
-        tree_view = VarsTreeView::create ();
+        tree_view = Gtk::manage (VarsTreeView::create ());
         THROW_IF_FAIL (tree_view);
         tree_store = tree_view->get_tree_store ();
         THROW_IF_FAIL (tree_store);
@@ -583,6 +583,7 @@ public:
           enable_contextual_menu (false),
           debugger (a_debugger),
           perspective (a_perspective),
+          tree_view (0),
           var_inspector_menu (0),
           module_manager (0)
     {
diff --git a/src/persp/dbgperspective/nmv-vars-treeview.cc b/src/persp/dbgperspective/nmv-vars-treeview.cc
index 3d0b133..e9a4367 100644
--- a/src/persp/dbgperspective/nmv-vars-treeview.cc
+++ b/src/persp/dbgperspective/nmv-vars-treeview.cc
@@ -31,13 +31,13 @@ namespace vutil = nemiver::variables_utils2;
 
 NEMIVER_BEGIN_NAMESPACE (nemiver)
 
-VarsTreeViewSafePtr
+VarsTreeView*
 VarsTreeView::create ()
 {
     Glib::RefPtr<Gtk::TreeStore> model =
         Gtk::TreeStore::create (vutil::get_variable_columns ());
     THROW_IF_FAIL (model);
-    return VarsTreeViewSafePtr(new VarsTreeView (model));
+    return new VarsTreeView (model);
 }
 
 VarsTreeView::VarsTreeView (Glib::RefPtr<Gtk::TreeStore>& model) :
diff --git a/src/persp/dbgperspective/nmv-vars-treeview.h b/src/persp/dbgperspective/nmv-vars-treeview.h
index 3be799d..d9c0324 100644
--- a/src/persp/dbgperspective/nmv-vars-treeview.h
+++ b/src/persp/dbgperspective/nmv-vars-treeview.h
@@ -47,7 +47,7 @@ class NEMIVER_API VarsTreeView : public Gtk::TreeView
             VARIABLE_VALUE_COLUMN_INDEX,
             VARIABLE_TYPE_COLUMN_INDEX
         };
-        static VarsTreeViewSafePtr create ();
+        static VarsTreeView* create ();
         Glib::RefPtr<Gtk::TreeStore>& get_tree_store ();
 
     protected:
diff --git a/src/uicommon/nmv-dialog.cc b/src/uicommon/nmv-dialog.cc
index 8c29f26..52ce9c7 100644
--- a/src/uicommon/nmv-dialog.cc
+++ b/src/uicommon/nmv-dialog.cc
@@ -70,7 +70,7 @@ public:
         THROW_IF_FAIL (gtkbuilder);
         dialog.reset
             (ui_utils::get_widget_from_gtkbuilder<Gtk::Dialog> (gtkbuilder,
-                                                           a_widget_name));
+                                                                a_widget_name));
         THROW_IF_FAIL (dialog);
         dialog->hide ();
     }



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