void clCommandProcessor::OnProcessTerminated(wxCommandEvent& event) { ProcessEventData* ped = (ProcessEventData*)event.GetClientData(); wxDELETE(ped); if(m_obj && m_postExecCallback) { // Call the user callback, if the user returns false // stop the processor if(!(m_obj->*m_postExecCallback)(this)) { clCommandEvent eventEnd(wxEVT_COMMAND_PROCESSOR_ENDED); GetFirst()->ProcessEvent(eventEnd); DeleteChain(); return; } } if(m_next) { wxDELETE(m_process); // more commands, don't report an 'END' event m_next->ExecuteCommand(); } else { // no more commands to execute, delete the entire chain clCommandEvent eventEnd(wxEVT_COMMAND_PROCESSOR_ENDED); GetFirst()->ProcessEvent(eventEnd); DeleteChain(); } }
void XDebugManager::DoStopDebugger() { ClearDebuggerMarker(); m_connected = false; // Clear all handlers from the queue m_handlers.clear(); // Save the breakpoints // Reset the connection CL_DEBUG("CodeLite >>> closing debug session"); wxDELETE(m_readerThread); // Notify about debug session ended XDebugEvent eventEnd(wxEVT_XDEBUG_SESSION_ENDED); EventNotifier::Get()->AddPendingEvent( eventEnd ); }
void clCommandProcessor::ExecuteCommand() { wxString message; message << _("Executing: ") << m_command << " [ wd: " << m_workingDirectory << " ]"; clCommandEvent eventStart(wxEVT_COMMAND_PROCESSOR_OUTPUT); eventStart.SetString(message); GetFirst()->ProcessEvent(eventStart); m_output.Clear(); m_process = ::CreateAsyncProcess(this, m_command, m_processFlags, m_workingDirectory); if(!m_process) { clCommandEvent eventEnd(wxEVT_COMMAND_PROCESSOR_ENDED); eventEnd.SetString(wxString::Format(_("Failed to execute command: %s"), m_command)); GetFirst()->ProcessEvent(eventEnd); DeleteChain(); } m_process->SetHardKill(true); }