Browse Source

Made use of thread pool in Directories instead of spawning threads, and replaced initialize_thread with thread_pool in language client"

pipelines/235045657
eidheim 6 years ago
parent
commit
14b51ed173
  1. 5
      src/directories.cpp
  2. 2
      src/directories.hpp
  3. 2
      src/project.hpp
  4. 5
      src/source_language_protocol.cpp
  5. 1
      src/source_language_protocol.hpp

5
src/directories.cpp

@ -489,7 +489,7 @@ Directories::Directories() : Gtk::ListViewText(1) {
}
Directories::~Directories() {
dispatcher.disconnect();
thread_pool.shutdown(true);
}
void Directories::open(const boost::filesystem::path &dir_path) {
@ -795,7 +795,7 @@ void Directories::colorize_path(boost::filesystem::path dir_path_, bool include_
if(it != directories.end() && it->second.repository) {
auto repository = it->second.repository;
std::thread git_status_thread([this, dir_path, repository, include_parent_paths] {
thread_pool.push([this, dir_path, repository, include_parent_paths] {
Git::Repository::Status status;
try {
status = repository->get_status();
@ -868,6 +868,5 @@ void Directories::colorize_path(boost::filesystem::path dir_path_, bool include_
} while(it != directories.end());
});
});
git_status_thread.detach();
}
}

2
src/directories.hpp

@ -5,7 +5,6 @@
#include <atomic>
#include <gtkmm.h>
#include <string>
#include <thread>
#include <unordered_map>
#include <unordered_set>
#include <vector>
@ -79,6 +78,7 @@ private:
std::unordered_map<std::string, DirectoryData> directories;
Glib::ThreadPool thread_pool;
Dispatcher dispatcher;
Gtk::Menu menu;

2
src/project.hpp

@ -82,8 +82,6 @@ namespace Project {
class LLDB : public virtual Base {
public:
~LLDB() override { dispatcher.disconnect(); }
#ifdef JUCI_ENABLE_DEBUG
std::pair<std::string, std::string> debug_get_run_arguments() override;
Project::DebugOptions *debug_get_options() override;

5
src/source_language_protocol.cpp

@ -384,7 +384,7 @@ void Source::LanguageProtocolView::initialize() {
update_status_state(this);
set_editable(false);
initialize_thread = std::thread([this] {
thread_pool.push([this] {
auto capabilities = client->initialize(this);
dispatcher.post([this, capabilities] {
@ -419,9 +419,6 @@ void Source::LanguageProtocolView::close() {
autocomplete_delayed_show_arguments_connection.disconnect();
update_type_coverage_connection.disconnect();
if(initialize_thread.joinable())
initialize_thread.join();
if(autocomplete) {
autocomplete->state = Autocomplete::State::idle;
if(autocomplete->thread.joinable())

1
src/source_language_protocol.hpp

@ -182,7 +182,6 @@ namespace Source {
size_t document_version = 1;
std::thread initialize_thread;
Dispatcher dispatcher;
Glib::ThreadPool thread_pool;

Loading…
Cancel
Save