Debugger: Fix team restart request.
UserInterface: - Add Clone() function to set of required virtuals. This asks the subclass to create a new instance of its respective type. {CommandLine,Graphical,Report}UserInterface: - Implement the above function. TeamDebugger: - Add accessor for the currently active UI. TargetHostInterface: - Set correct request type when setting up the options for a team restart. - Ask the TeamDebugger for its user interface and clone it in order to fill in that aspect of the debug options. This fixes a regression introduced in commit 880a64, which inadvertently resulted in team restarts no longer working.
This commit is contained in:
parent
4221d035d8
commit
05fc1277c4
@ -66,6 +66,8 @@ public:
|
||||
{ return fCommandLineArgv; }
|
||||
SettingsManager* GetSettingsManager() const
|
||||
{ return fSettingsManager; }
|
||||
UserInterface* GetUserInterface() const
|
||||
{ return fUserInterface; }
|
||||
|
||||
virtual void MessageReceived(BMessage* message);
|
||||
|
||||
|
@ -56,6 +56,13 @@ public:
|
||||
// shut down the UI *now* -- no more user
|
||||
// feedback
|
||||
|
||||
virtual UserInterface* Clone() const = 0;
|
||||
// returns a new instance of the
|
||||
// appropriate user interface subclass.
|
||||
// primarily needed in order to
|
||||
// reconstruct the necessary information
|
||||
// for initiating a team restart.
|
||||
|
||||
virtual bool IsInteractive() const = 0;
|
||||
|
||||
virtual status_t LoadSettings(const TeamUiSettings* settings)
|
||||
|
@ -166,6 +166,13 @@ CommandLineUserInterface::Terminate()
|
||||
}
|
||||
|
||||
|
||||
UserInterface*
|
||||
CommandLineUserInterface::Clone() const
|
||||
{
|
||||
return new(std::nothrow) CommandLineUserInterface;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
CommandLineUserInterface::IsInteractive() const
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2011-2015, Rene Gollent, rene@gollent.com.
|
||||
* Copyright 2011-2016, Rene Gollent, rene@gollent.com.
|
||||
* Copyright 2012, Ingo Weinhold, ingo_weinhold@gmx.de.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
@ -31,6 +31,8 @@ public:
|
||||
// shut down the UI *now* -- no more user
|
||||
// feedback
|
||||
|
||||
virtual UserInterface* Clone() const;
|
||||
|
||||
virtual bool IsInteractive() const;
|
||||
|
||||
virtual status_t LoadSettings(const TeamUiSettings* settings);
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
|
||||
* Copyright 2011-2014, Rene Gollent, rene@gollent.com.
|
||||
* Copyright 2011-2016, Rene Gollent, rene@gollent.com.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
|
||||
@ -194,6 +194,13 @@ GraphicalUserInterface::Terminate()
|
||||
}
|
||||
|
||||
|
||||
UserInterface*
|
||||
GraphicalUserInterface::Clone() const
|
||||
{
|
||||
return new(std::nothrow) GraphicalUserInterface;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
GraphicalUserInterface::IsInteractive() const
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
|
||||
* Copyright 2014-2015, Rene Gollent, rene@gollent.com.
|
||||
* Copyright 2014-2016, Rene Gollent, rene@gollent.com.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef GRAPHICAL_USER_INTERFACE_H
|
||||
@ -30,6 +30,8 @@ public:
|
||||
// shut down the UI *now* -- no more user
|
||||
// feedback
|
||||
|
||||
virtual UserInterface* Clone() const;
|
||||
|
||||
virtual bool IsInteractive() const;
|
||||
|
||||
virtual status_t LoadSettings(const TeamUiSettings* settings);
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2015, Rene Gollent, rene@gollent.com.
|
||||
* Copyright 2015-2016, Rene Gollent, rene@gollent.com.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
|
||||
@ -84,6 +84,15 @@ ReportUserInterface::Terminate()
|
||||
}
|
||||
|
||||
|
||||
UserInterface*
|
||||
ReportUserInterface::Clone() const
|
||||
{
|
||||
// the report interface does not support cloning, since
|
||||
// it won't ever be asked to interactively restart.
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
ReportUserInterface::IsInteractive() const
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2015, Rene Gollent, rene@gollent.com.
|
||||
* Copyright 2015-2016, Rene Gollent, rene@gollent.com.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef REPORT_USER_INTERFACE_H
|
||||
@ -27,6 +27,8 @@ public:
|
||||
virtual void Show();
|
||||
virtual void Terminate();
|
||||
|
||||
virtual UserInterface* Clone() const;
|
||||
|
||||
virtual bool IsInteractive() const;
|
||||
|
||||
virtual status_t LoadSettings(const TeamUiSettings* settings);
|
||||
|
@ -184,13 +184,23 @@ TargetHostInterface::MessageReceived(BMessage* message)
|
||||
|
||||
TeamDebugger* debugger = FindTeamDebugger(teamID);
|
||||
|
||||
UserInterface* userInterface = debugger->GetUserInterface()->Clone();
|
||||
if (userInterface == NULL)
|
||||
break;
|
||||
|
||||
BReference<UserInterface> userInterfaceReference(userInterface, true);
|
||||
|
||||
TeamDebuggerOptions options;
|
||||
options.requestType = TEAM_DEBUGGER_REQUEST_CREATE;
|
||||
options.commandLineArgc = debugger->ArgumentCount();
|
||||
options.commandLineArgv = debugger->Arguments();
|
||||
options.settingsManager = debugger->GetSettingsManager();
|
||||
options.userInterface = userInterface;
|
||||
status_t result = StartTeamDebugger(options);
|
||||
if (result == B_OK)
|
||||
if (result == B_OK) {
|
||||
userInterfaceReference.Detach();
|
||||
debugger->PostMessage(B_QUIT_REQUESTED);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user