message: Fix VulkanQuadOverdrawCallback still being active on restore replay
diff: @@ -47,7 +47,18 @@ struct VulkanQuadOverdrawCallback : public VulkanDrawcallCallback
  {
  m_pDriver->SetDrawcallCB(this);
  }
  - ~VulkanQuadOverdrawCallback() { m_pDriver->SetDrawcallCB(NULL); }
  + ~VulkanQuadOverdrawCallback()
  + {
  + m_pDriver->SetDrawcallCB(NULL);
  +
  + VkDevice dev = m_pDriver->GetDev();
  +
  + for(auto it = m_PipelineCache.begin(); it != m_PipelineCache.end(); ++it)
  + {
  + m_pDriver->vkDestroyPipeline(dev, it->second.pipe, NULL);
  + m_pDriver->vkDestroyPipelineLayout(dev, it->second.pipeLayout, NULL);
  + }
  + }
  void PreDraw(uint32_t eid, VkCommandBuffer cmd)
  {
  if(!m_Events.contains(eid))
  @@ -2148,6 +2159,7 @@ ResourceId VulkanReplay::RenderOverlay(ResourceId texid, FloatVector clearCol, D
  m_pDriver->ReplayLog(0, events[0], eReplay_WithoutDraw);
  + {
  // declare callback struct here
  VulkanQuadOverdrawCallback cb(m_pDriver, m_Overlay.m_QuadDescSetLayout,
  m_Overlay.m_QuadDescSet, events);
  @@ -2205,11 +2217,6 @@ ResourceId VulkanReplay::RenderOverlay(ResourceId texid, FloatVector clearCol, D
  m_pDriver->vkDestroyImageView(m_Device, quadImgView, NULL);
  m_pDriver->vkDestroyImage(m_Device, quadImg, NULL);
  m_pDriver->vkFreeMemory(m_Device, quadImgMem, NULL);
  -
  - for(auto it = cb.m_PipelineCache.begin(); it != cb.m_PipelineCache.end(); ++it)
  - {
  - m_pDriver->vkDestroyPipeline(m_Device, it->second.pipe, NULL);
  - m_pDriver->vkDestroyPipelineLayout(m_Device, it->second.pipeLayout, NULL);
  }
  // restore back to normal
  