mirror of https://github.com/RPCS3/rpcs3.git
Fix memory leak in rsx debugger
This commit is contained in:
parent
f2d6a1ff60
commit
a3289e9d40
|
@ -497,7 +497,7 @@ void rsx_debugger::OnClickDrawCalls()
|
||||||
if (width && height && !draw_call.color_buffer[i].empty())
|
if (width && height && !draw_call.color_buffer[i].empty())
|
||||||
{
|
{
|
||||||
unsigned char* buffer = convert_to_QImage_buffer(draw_call.state.surface_color(), draw_call.color_buffer[i], width, height);
|
unsigned char* buffer = convert_to_QImage_buffer(draw_call.state.surface_color(), draw_call.color_buffer[i], width, height);
|
||||||
buffers[i]->showImage(QImage(buffer, static_cast<int>(width), static_cast<int>(height), QImage::Format_RGB32));
|
buffers[i]->showImage(QImage(buffer, static_cast<int>(width), static_cast<int>(height), QImage::Format_RGB32, [](void* buffer){ std::free(buffer); }, buffer));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -538,7 +538,7 @@ void rsx_debugger::OnClickDrawCalls()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_buffer_depth->showImage(QImage(buffer, static_cast<int>(width), static_cast<int>(height), QImage::Format_RGB32));
|
m_buffer_depth->showImage(QImage(buffer, static_cast<int>(width), static_cast<int>(height), QImage::Format_RGB32, [](void* buffer){ std::free(buffer); }, buffer));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -662,13 +662,14 @@ void rsx_debugger::GetBuffers()
|
||||||
auto buffers = render->display_buffers;
|
auto buffers = render->display_buffers;
|
||||||
u32 RSXbuffer_addr = rsx::constants::local_mem_base + buffers[bufferId].offset;
|
u32 RSXbuffer_addr = rsx::constants::local_mem_base + buffers[bufferId].offset;
|
||||||
|
|
||||||
if(!vm::check_addr(RSXbuffer_addr))
|
const u32 width = buffers[bufferId].width;
|
||||||
|
const u32 height = buffers[bufferId].height;
|
||||||
|
|
||||||
|
if(!vm::check_addr(RSXbuffer_addr, width * height * 4))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
auto RSXbuffer = vm::get_super_ptr<u8>(RSXbuffer_addr);
|
const auto RSXbuffer = vm::get_super_ptr<const u8>(RSXbuffer_addr);
|
||||||
|
|
||||||
u32 width = buffers[bufferId].width;
|
|
||||||
u32 height = buffers[bufferId].height;
|
|
||||||
u8* buffer = static_cast<u8*>(std::malloc(width * height * 4));
|
u8* buffer = static_cast<u8*>(std::malloc(width * height * 4));
|
||||||
|
|
||||||
// ABGR to ARGB and flip vertically
|
// ABGR to ARGB and flip vertically
|
||||||
|
@ -692,7 +693,7 @@ void rsx_debugger::GetBuffers()
|
||||||
case 2: pnl = m_buffer_colorC; break;
|
case 2: pnl = m_buffer_colorC; break;
|
||||||
default: pnl = m_buffer_colorD; break;
|
default: pnl = m_buffer_colorD; break;
|
||||||
}
|
}
|
||||||
pnl->showImage(QImage(buffer, width, height, QImage::Format_RGB32));
|
pnl->showImage(QImage(buffer, width, height, QImage::Format_RGB32, [](void* buffer){ std::free(buffer); }, buffer));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw Texture
|
// Draw Texture
|
||||||
|
|
Loading…
Reference in New Issue