| 767 | } |
| 768 | |
| 769 | GraphicsRing::CmdBatch GraphicsRing::GetCmdBatch() |
| 770 | { |
| 771 | Core::LockGuard lock(m_mutex); |
| 772 | |
| 773 | while (m_cmd_batches.Size() == 0) |
| 774 | { |
| 775 | m_idle = true; |
| 776 | m_idle_cond_var.Signal(); |
| 777 | |
| 778 | m_cond_var.Wait(&m_mutex); |
| 779 | } |
| 780 | |
| 781 | m_idle = false; |
| 782 | |
| 783 | auto first = m_cmd_batches.First(); |
| 784 | |
| 785 | CmdBatch buf = m_cmd_batches.At(first); |
| 786 | |
| 787 | m_cmd_batches.Remove(first); |
| 788 | |
| 789 | return buf; |
| 790 | } |
| 791 | |
| 792 | void GraphicsRing::ThreadBatchRun(void* data) |
| 793 | { |