CommandQueueMT: Fix command cleanup (revive destructor call + plus handle buffer realloc)

This commit is contained in:
Pedro J. Estébanez 2024-04-23 12:01:12 +02:00
parent b834037841
commit 6f0760beb3
1 changed files with 5 additions and 1 deletions

View File

@ -302,7 +302,7 @@ class CommandQueueMT {
struct CommandBase {
bool sync = false;
virtual void call() = 0;
virtual ~CommandBase() = default; // Won't be called.
virtual ~CommandBase() = default;
};
struct SyncCommand : public CommandBase {
@ -368,6 +368,10 @@ class CommandQueueMT {
sync_cond_var.notify_all();
}
// If the command involved reallocating the buffer, the address may have changed.
cmd = reinterpret_cast<CommandBase *>(&command_mem[flush_read_ptr]);
cmd->~CommandBase();
flush_read_ptr += size;
}
WorkerThreadPool::thread_exit_command_queue_mt_flush();