Skip to content

Commit

Permalink
Use modernized threading from 3.3
Browse files Browse the repository at this point in the history
  • Loading branch information
piiertho committed Apr 22, 2021
1 parent 24513f0 commit 066ae09
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 34 deletions.
43 changes: 21 additions & 22 deletions src/editor/build/build_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ void background_trigger_build(void* p_userdata) {
BuildManager::get_instance().build_blocking();
}

BuildManager::BuildManager() {
build_mutex = Mutex::create();
BuildManager::BuildManager() : build_mutex(), build_thread(), build_finished(false), last_build_exit_code(0) {

}

bool BuildManager::build_project_blocking() {
Expand All @@ -35,17 +35,17 @@ bool BuildManager::build_project_blocking() {
}

void BuildManager::build_project_non_blocking() {
if (!build_thread) {
if (!build_thread.is_started()) {
clear_log();
GodotKotlinJvmEditor::get_instance()->build_check_timer->start();
build_thread = Thread::create(background_trigger_build, nullptr);
build_thread.start(background_trigger_build, nullptr);
}
}

bool BuildManager::can_build_project() {
build_mutex->lock();
build_mutex.lock();
bool result = build_finished;
build_mutex->unlock();
build_mutex.unlock();
return result;
}

Expand All @@ -55,40 +55,39 @@ bool BuildManager::is_build_finished() {
}

void BuildManager::update_build_state() {
if (!build_thread) {
if (!build_thread.is_started()) {
GodotKotlinJvmEditor::get_instance()->build_check_timer->stop();
return;
}

build_mutex->lock();
build_mutex.lock();
if (build_finished) {
Thread::wait_to_finish(build_thread);
build_thread = nullptr;
build_thread.wait_to_finish();
}
build_mutex->unlock();
build_mutex.unlock();
}

String BuildManager::get_log() {
build_mutex->lock();
build_mutex.lock();
String result = build_log;
build_mutex->unlock();
build_mutex.unlock();
return result;
}

void BuildManager::clear_log() {
build_mutex->lock();
build_mutex.lock();
build_log.clear();
build_mutex->unlock();
build_mutex.unlock();
}

Error BuildManager::build_blocking() {
if (!FileAccess::create(FileAccess::AccessType::ACCESS_RESOURCES)->file_exists("build.gradle.kts")) {
return Error::OK;
}
clear_log();
build_mutex->lock();
build_mutex.lock();
build_finished = false;
build_mutex->unlock();
build_mutex.unlock();

List<String> args{};
args.push_back("build");
Expand Down Expand Up @@ -120,21 +119,21 @@ Error BuildManager::build_blocking() {
&build_log,
&exit_code,
true,
build_mutex
&build_mutex
);

build_mutex->lock();
build_mutex.lock();
last_build_exit_code = exit_code;
build_finished = true;
build_mutex->unlock();
build_mutex.unlock();

return result;
}

bool BuildManager::last_build_successful() const {
build_mutex->lock();
build_mutex.lock();
bool result = last_build_exit_code == 0;
build_mutex->unlock();
build_mutex.unlock();
return result;
}

Expand Down
8 changes: 4 additions & 4 deletions src/editor/build/build_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,10 +38,10 @@ class BuildManager {
BuildManager();

String build_log;
Thread* build_thread = nullptr;
bool build_finished = false;
Mutex* build_mutex;
int last_build_exit_code = 0;
Thread build_thread;
bool build_finished;
Mutex build_mutex;
int last_build_exit_code;
};


Expand Down
14 changes: 7 additions & 7 deletions src/ref_db.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ uint64_t RefDB::get_ref_id(Reference* ref) {
RefIndex index;

{
auto ptr = reinterpret_cast<uint64_t>(ref);
auto lock = MutexLock(mut);
RefIndex* index_ptr = ref_map.getptr(ptr);
auto ptr{reinterpret_cast<uint64_t>(ref)};
MutexLock lock{mut};
RefIndex* index_ptr{ref_map.getptr(ptr)};
if (index_ptr) {
index_ptr->counter++;
return index_ptr->index;
Expand All @@ -35,9 +35,9 @@ uint64_t RefDB::get_ref_id(Reference* ref) {

void RefDB::remove_ref(Reference* ref, uint32_t counter) {
{
auto ptr = reinterpret_cast<uint64_t>(ref);
auto lock = MutexLock(mut);
RefIndex* index_ptr = ref_map.getptr(ptr);
auto ptr{reinterpret_cast<uint64_t>(ref)};
MutexLock lock{mut};
RefIndex* index_ptr{ref_map.getptr(ptr)};
if (!index_ptr) {
return;
}
Expand All @@ -64,6 +64,6 @@ RefDB& RefDB::get_instance() {
return instance;
}

RefDB::RefDB() : ref_map(), freeIds(), mut(Mutex::create(false)) {
RefDB::RefDB() : ref_map(), freeIds(), mut() {

}
2 changes: 1 addition & 1 deletion src/ref_db.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class RefDB {
uint32_t counter = 0;
};

Mutex* mut;
BinaryMutex mut;
HashMap<uint64_t, RefIndex> ref_map;
List<RefIndex> freeIds;

Expand Down

0 comments on commit 066ae09

Please sign in to comment.