mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-14 01:27:00 +00:00
Qt: fix batch compilation after a game was already running
Batch compilation wasn't working if g_system_progress_canceled wasn't reset
This commit is contained in:
parent
51417cc8c3
commit
635eac7704
@ -41,6 +41,7 @@ void progress_dialog_server::operator()()
|
||||
{
|
||||
std::shared_ptr<rsx::overlays::progress_dialog> native_dlg;
|
||||
g_system_progress_stopping = false;
|
||||
g_system_progress_canceled = false;
|
||||
|
||||
const auto get_state = []()
|
||||
{
|
||||
|
@ -2277,11 +2277,13 @@ void game_list_frame::RemoveHDD1Cache(const std::string& base_dir, const std::st
|
||||
game_list_log.fatal("Only %d/%d HDD1 cache directories could be removed in %s (%s)", dirs_removed, dirs_total, base_dir, title_id);
|
||||
}
|
||||
|
||||
void game_list_frame::BatchActionBySerials(progress_dialog* pdlg, const std::set<std::string>& serials, QString progressLabel, std::function<bool(const std::string&)> action, std::function<void(u32, u32)> cancel_log, bool refresh_on_finish, bool can_be_concurrent, std::function<bool()> should_wait_cb)
|
||||
void game_list_frame::BatchActionBySerials(progress_dialog* pdlg, const std::set<std::string>& serials, QString progressLabel, std::function<bool(const std::string&)> action, std::function<void(u32, u32)> cancel_log, bool refresh_on_finish, bool can_be_concurrent, std::function<bool()> should_wait_cb)
|
||||
{
|
||||
// Concurrent tasks should not wait (at least not in current implementation)
|
||||
ensure(!should_wait_cb || !can_be_concurrent);
|
||||
|
||||
g_system_progress_canceled = false;
|
||||
|
||||
const std::shared_ptr<std::function<bool(int)>> iterate_over_serial = std::make_shared<std::function<bool(int)>>();
|
||||
|
||||
const std::shared_ptr<atomic_t<int>> index = std::make_shared<atomic_t<int>>(0);
|
||||
@ -2297,12 +2299,16 @@ void game_list_frame::BatchActionBySerials(progress_dialog* pdlg, const std::set
|
||||
|
||||
const std::string& serial = *std::next(serials.begin(), index);
|
||||
|
||||
if (pdlg->wasCanceled() || g_system_progress_canceled)
|
||||
if (pdlg->wasCanceled() || g_system_progress_canceled.exchange(false))
|
||||
{
|
||||
cancel_log(index, serials_size);
|
||||
if (cancel_log)
|
||||
{
|
||||
cancel_log(index, serials_size);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
else if (action(serial))
|
||||
|
||||
if (action(serial))
|
||||
{
|
||||
const int done = index_ptr->load();
|
||||
pdlg->setLabelText(progressLabel.arg(done + 1).arg(serials_size));
|
||||
|
Loading…
x
Reference in New Issue
Block a user