diff --git a/src/terminal.cc b/src/terminal.cc index 9dddab0..bb0663c 100644 --- a/src/terminal.cc +++ b/src/terminal.cc @@ -117,14 +117,6 @@ Terminal::Terminal() { }); async_print_dispatcher.connect([this](){ - async_print_on_line_strings_mutex.lock(); - if(async_print_on_line_strings.size()>0) { - for(auto &string: async_print_on_line_strings) - print(string.first, string.second); - async_print_on_line_strings.clear(); - } - async_print_on_line_strings_mutex.unlock(); - async_print_strings_mutex.lock(); if(async_print_strings.size()>0) { for(auto &string_bold: async_print_strings) @@ -133,6 +125,15 @@ Terminal::Terminal() { } async_print_strings_mutex.unlock(); }); + async_print_on_line_dispatcher.connect([this](){ + async_print_on_line_strings_mutex.lock(); + if(async_print_on_line_strings.size()>0) { + for(auto &line_string: async_print_on_line_strings) + print(line_string.first, line_string.second); + async_print_on_line_strings.clear(); + } + async_print_on_line_strings_mutex.unlock(); + }); } int Terminal::execute(const std::string &command, const boost::filesystem::path &path) { @@ -327,7 +328,7 @@ void Terminal::async_print(int line_nr, const std::string &message) { async_print_on_line_strings.emplace_back(line_nr, message); async_print_on_line_strings_mutex.unlock(); if(dispatch) - async_print_dispatcher(); + async_print_on_line_dispatcher(); } bool Terminal::on_key_press_event(GdkEventKey *event) { diff --git a/src/terminal.h b/src/terminal.h index 6d7c86f..5bdbe1a 100644 --- a/src/terminal.h +++ b/src/terminal.h @@ -45,6 +45,7 @@ protected: bool on_key_press_event(GdkEventKey *event); private: Glib::Dispatcher async_print_dispatcher; + Glib::Dispatcher async_print_on_line_dispatcher; std::vector > async_print_strings; std::vector > async_print_on_line_strings; std::mutex async_print_strings_mutex;