From 9fe43c185a4bb3ec6fdd6621b689b543698b2d02 Mon Sep 17 00:00:00 2001 From: eidheim Date: Sun, 14 Feb 2016 19:59:48 +0100 Subject: [PATCH] Minor cleanup of Terminal --- src/terminal.cc | 51 ++++++++++++++++++++++--------------------------- src/terminal.h | 3 +-- 2 files changed, 24 insertions(+), 30 deletions(-) diff --git a/src/terminal.cc b/src/terminal.cc index f3da34a..0ca760e 100644 --- a/src/terminal.cc +++ b/src/terminal.cc @@ -21,11 +21,8 @@ void Terminal::InProgress::start(const std::string& msg) { wait_thread=std::thread([this](){ size_t c=0; while(!stop) { - if(c%100==0) { - dispatcher.add([this] { - Terminal::get().print(line_nr-1, "."); - }); - } + if(c%100==0) + Terminal::get().async_print(line_nr-1, "."); std::this_thread::sleep_for(std::chrono::milliseconds(10)); c++; } @@ -35,18 +32,14 @@ void Terminal::InProgress::start(const std::string& msg) { void Terminal::InProgress::done(const std::string& msg) { if(!stop) { stop=true; - dispatcher.add([this, msg] { - Terminal::get().print(line_nr-1, msg); - }); + Terminal::get().async_print(line_nr-1, msg); } } void Terminal::InProgress::cancel(const std::string& msg) { if(!stop) { stop=true; - dispatcher.add([this, msg] { - Terminal::get().print(line_nr-1, msg); - }); + Terminal::get().async_print(line_nr-1, msg); } } @@ -213,23 +206,6 @@ size_t Terminal::print(const std::string &message, bool bold){ return static_cast(get_buffer()->end().get_line())+deleted_lines; } -void Terminal::print(size_t line_nr, const std::string &message){ - if(line_nrget_iter_at_line(static_cast(line_nr-deleted_lines)); - while(!end_line_iter.ends_line() && end_line_iter.forward_char()) {} - get_buffer()->insert(end_line_iter, umessage); -} - std::shared_ptr Terminal::print_in_progress(std::string start_msg) { std::shared_ptr in_progress=std::shared_ptr(new Terminal::InProgress(start_msg)); return in_progress; @@ -241,6 +217,25 @@ void Terminal::async_print(const std::string &message, bool bold) { }); } +void Terminal::async_print(size_t line_nr, const std::string &message) { + dispatcher.add([this, line_nr, message] { + if(line_nrget_iter_at_line(static_cast(line_nr-deleted_lines)); + while(!end_line_iter.ends_line() && end_line_iter.forward_char()) {} + get_buffer()->insert(end_line_iter, umessage); + }); +} + bool Terminal::on_key_press_event(GdkEventKey *event) { processes_mutex.lock(); bool debug_is_running=false; diff --git a/src/terminal.h b/src/terminal.h index fca6ec0..dd74ad9 100644 --- a/src/terminal.h +++ b/src/terminal.h @@ -23,7 +23,6 @@ public: void start(const std::string& msg); size_t line_nr; std::atomic stop; - Dispatcher dispatcher; std::thread wait_thread; }; @@ -43,9 +42,9 @@ public: void kill_async_processes(bool force=false); size_t print(const std::string &message, bool bold=false); - void print(size_t line_nr, const std::string &message); std::shared_ptr print_in_progress(std::string start_msg); void async_print(const std::string &message, bool bold=false); + void async_print(size_t line_nr, const std::string &message); protected: bool on_key_press_event(GdkEventKey *event); private: