Browse Source

Fixed potential race condition

merge-requests/365/head
eidheim 8 years ago
parent
commit
6d30770c3e
  1. 10
      src/source_diff.cc

10
src/source_diff.cc

@ -178,6 +178,7 @@ void Source::DiffView::configure() {
}); });
parse_thread=std::thread([this]() { parse_thread=std::thread([this]() {
std::string status_branch;
try { try {
diff=get_diff(); diff=get_diff();
status_branch=repository->get_branch(); status_branch=repository->get_branch();
@ -185,7 +186,8 @@ void Source::DiffView::configure() {
catch(const std::exception &) { catch(const std::exception &) {
status_branch=""; status_branch="";
} }
dispatcher.post([this] { dispatcher.post([this, status_branch=std::move(status_branch)] {
this->status_branch=status_branch;
if(update_status_branch) if(update_status_branch)
update_status_branch(this); update_status_branch(this);
}); });
@ -216,8 +218,8 @@ void Source::DiffView::configure() {
if(monitor_changed.compare_exchange_strong(expected_monitor_changed, false)) { if(monitor_changed.compare_exchange_strong(expected_monitor_changed, false)) {
try { try {
diff=get_diff(); diff=get_diff();
status_branch=repository->get_branch(); dispatcher.post([this, status_branch=repository->get_branch()] {
dispatcher.post([this] { this->status_branch=status_branch;
if(update_status_branch) if(update_status_branch)
update_status_branch(this); update_status_branch(this);
}); });
@ -230,7 +232,7 @@ void Source::DiffView::configure() {
get_buffer()->remove_tag(renderer->tag_removed_below, get_buffer()->begin(), get_buffer()->end()); get_buffer()->remove_tag(renderer->tag_removed_below, get_buffer()->begin(), get_buffer()->end());
get_buffer()->remove_tag(renderer->tag_removed_above, get_buffer()->begin(), get_buffer()->end()); get_buffer()->remove_tag(renderer->tag_removed_above, get_buffer()->begin(), get_buffer()->end());
renderer->queue_draw(); renderer->queue_draw();
status_branch=""; this->status_branch="";
if(update_status_branch) if(update_status_branch)
update_status_branch(this); update_status_branch(this);
}); });

Loading…
Cancel
Save