mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-29 22:20:48 +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;
|
std::shared_ptr<rsx::overlays::progress_dialog> native_dlg;
|
||||||
g_system_progress_stopping = false;
|
g_system_progress_stopping = false;
|
||||||
|
g_system_progress_canceled = false;
|
||||||
|
|
||||||
const auto get_state = []()
|
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);
|
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)
|
// Concurrent tasks should not wait (at least not in current implementation)
|
||||||
ensure(!should_wait_cb || !can_be_concurrent);
|
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<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);
|
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);
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
else if (action(serial))
|
|
||||||
|
if (action(serial))
|
||||||
{
|
{
|
||||||
const int done = index_ptr->load();
|
const int done = index_ptr->load();
|
||||||
pdlg->setLabelText(progressLabel.arg(done + 1).arg(serials_size));
|
pdlg->setLabelText(progressLabel.arg(done + 1).arg(serials_size));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user