From be32382a6d643d98b7eb320e19e9270af7fe4f83 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Tue, 10 Nov 2015 09:11:02 -0500 Subject: [PATCH] Debugger: Adjust initial configuration of VariablesView. - VariablesView is now passed a ValueNodeManager to use at construction time, rather than creating one itself internally. - Adjust TeamWindow accordingly. --- .../gui/team_window/TeamWindow.cpp | 5 +++- .../gui/team_window/VariablesView.cpp | 23 ++++++++----------- .../gui/team_window/VariablesView.h | 6 +++-- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp index 8b6ce8757a..f1c3d36bfa 100644 --- a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp @@ -57,6 +57,7 @@ #include "TypeComponentPath.h" #include "UiUtils.h" #include "UserInterface.h" +#include "ValueNodeManager.h" #include "Value.h" #include "Variable.h" #include "WatchPromptWindow.h" @@ -1049,8 +1050,10 @@ TeamWindow::_Init() // .SetInsets(0.0f) .Add(fBreakpointsView = BreakpointsView::Create(fTeam, this)); + ValueNodeManager* manager = new ValueNodeManager; + // add local variables tab - BView* tab = fVariablesView = VariablesView::Create(this); + BView* tab = fVariablesView = VariablesView::Create(this, manager); fLocalsTabView->AddTab(tab); // add registers tab diff --git a/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp b/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp index a35a01ff83..c81142d4d9 100644 --- a/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/VariablesView.cpp @@ -647,7 +647,7 @@ protected: class VariablesView::VariableTableModel : public TreeTableModel, public TreeTableToolTipProvider { public: - VariableTableModel(); + VariableTableModel(ValueNodeManager* manager); ~VariableTableModel(); status_t Init(); @@ -1106,30 +1106,27 @@ VariablesView::ContainerListener::ModelNodeRestoreViewStateRequested( // #pragma mark - VariableTableModel -VariablesView::VariableTableModel::VariableTableModel() +VariablesView::VariableTableModel::VariableTableModel( + ValueNodeManager* manager) : fThread(NULL), - fNodeManager(NULL), + fNodeManager(manager), fContainerListener(NULL), fNodeTable() { + fNodeManager->AcquireReference(); } VariablesView::VariableTableModel::~VariableTableModel() { - if (fNodeManager != NULL) - fNodeManager->ReleaseReference(); + fNodeManager->ReleaseReference(); } status_t VariablesView::VariableTableModel::Init() { - fNodeManager = new(std::nothrow) ValueNodeManager(); - if (fNodeManager == NULL) - return B_NO_MEMORY; - return fNodeTable.Init(); } @@ -1809,12 +1806,12 @@ VariablesView::~VariablesView() /*static*/ VariablesView* -VariablesView::Create(Listener* listener) +VariablesView::Create(Listener* listener, ValueNodeManager* manager) { VariablesView* self = new VariablesView(listener); try { - self->_Init(); + self->_Init(manager); } catch (...) { delete self; throw; @@ -2489,7 +2486,7 @@ VariablesView::ExpressionEvaluated(ExpressionInfo* info, status_t result, void -VariablesView::_Init() +VariablesView::_Init(ValueNodeManager* manager) { fVariableTable = new TreeTable("variable list", 0, B_FANCY_BORDER); AddChild(fVariableTable->ToView()); @@ -2503,7 +2500,7 @@ VariablesView::_Init() fVariableTable->AddColumn(new StringTableColumn(2, "Type", 80, 40, 1000, B_TRUNCATE_END, B_ALIGN_LEFT)); - fVariableTableModel = new VariableTableModel; + fVariableTableModel = new VariableTableModel(manager); if (fVariableTableModel->Init() != B_OK) throw std::bad_alloc(); fVariableTable->SetTreeTableModel(fVariableTableModel); diff --git a/src/apps/debugger/user_interface/gui/team_window/VariablesView.h b/src/apps/debugger/user_interface/gui/team_window/VariablesView.h index 56b80444e4..91c47b529c 100644 --- a/src/apps/debugger/user_interface/gui/team_window/VariablesView.h +++ b/src/apps/debugger/user_interface/gui/team_window/VariablesView.h @@ -26,6 +26,7 @@ class ValueLocation; class ValueNode; class ValueNodeChild; class ValueNodeContainer; +class ValueNodeManager; class Value; class Variable; class VariableEditWindow; @@ -42,7 +43,8 @@ public: VariablesView(Listener* listener); ~VariablesView(); - static VariablesView* Create(Listener* listener); + static VariablesView* Create(Listener* listener, + ValueNodeManager* manager); // throws void SetStackFrame(Thread* thread, @@ -93,7 +95,7 @@ private: ExpressionInfoTable; private: - void _Init(); + void _Init(ValueNodeManager* manager); void _RequestNodeValue(ModelNode* node); status_t _GetContextActionsForNode(ModelNode* node,