Browse Source

Now destroys running applications when juci exits.

merge-requests/365/head
eidheim 10 years ago
parent
commit
f0a0577526
  1. 7
      src/terminal.cc
  2. 1
      src/terminal.h
  3. 9
      src/window.cc

7
src/terminal.cc

@ -203,6 +203,13 @@ void Terminal::async_execute(const std::string &command, const std::string &path
async_execute_thread.detach();
}
void Terminal::kill_executing() {
async_pid_mutex.lock();
for(auto &pid: async_pid_descriptors)
kill(pid.first, SIGTERM);
async_pid_mutex.unlock();
}
int Terminal::print(const std::string &message){
INFO("Terminal: PrintMessage");
text_view.get_buffer()->insert(text_view.get_buffer()->end(), message);

1
src/terminal.h

@ -31,6 +31,7 @@ public:
std::unordered_map<pid_t, std::pair<int, int> > async_pid_descriptors;
std::unordered_map<pid_t, int> async_pid_status;
std::mutex async_pid_mutex;
void kill_executing();
int print(const std::string &message);
void print(int line_nr, const std::string &message);

9
src/window.cc

@ -258,12 +258,8 @@ void Window::create_menu() {
bool Window::on_key_press_event(GdkEventKey *event) {
if(event->keyval==GDK_KEY_Escape) {
if(entry_box.entries.size()==0) {
Singleton::terminal()->async_pid_mutex.lock();
for(auto &pid: Singleton::terminal()->async_pid_descriptors)
kill(pid.first, SIGTERM);
Singleton::terminal()->async_pid_mutex.unlock();
}
if(entry_box.entries.size()==0)
Singleton::terminal()->kill_executing();
entry_box.hide();
}
#ifdef __APPLE__ //For Apple's Command-left, right, up, down keys
@ -307,6 +303,7 @@ void Window::hide() {
if(!notebook.close_current_page())
return;
}
Singleton::terminal()->kill_executing();
Gtk::Window::hide();
}

Loading…
Cancel
Save