[nemiver] Fix VarsTreeView memory management
- From: Dodji Seketeli <dodji src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nemiver] Fix VarsTreeView memory management
- Date: Sat, 11 Jun 2011 19:32:46 +0000 (UTC)
commit abe0361ce0b5985182f205e5c1e2cc0919265d11
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 2a12e84..a33c960 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 04f0c50..cc192e3 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 3fe1841..f699432 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);
}
};//end struct Dialog::Priv
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]