bootmanager: Fix screenshot resolution factor usage
Fixes screenshots at non integer scaling
This commit is contained in:
parent
fcf2b2c78a
commit
80f8d4989e
7 changed files with 13 additions and 20 deletions
|
@ -44,16 +44,13 @@ FramebufferLayout DefaultFrameLayout(u32 width, u32 height) {
|
|||
return res;
|
||||
}
|
||||
|
||||
FramebufferLayout FrameLayoutFromResolutionScale(u32 res_scale) {
|
||||
u32 width, height;
|
||||
FramebufferLayout FrameLayoutFromResolutionScale(f32 res_scale) {
|
||||
const bool is_docked = Settings::values.use_docked_mode.GetValue();
|
||||
const u32 screen_width = is_docked ? ScreenDocked::Width : ScreenUndocked::Width;
|
||||
const u32 screen_height = is_docked ? ScreenDocked::Height : ScreenUndocked::Height;
|
||||
|
||||
if (Settings::values.use_docked_mode.GetValue()) {
|
||||
width = ScreenDocked::Width * res_scale;
|
||||
height = ScreenDocked::Height * res_scale;
|
||||
} else {
|
||||
width = ScreenUndocked::Width * res_scale;
|
||||
height = ScreenUndocked::Height * res_scale;
|
||||
}
|
||||
const u32 width = static_cast<u32>(static_cast<f32>(screen_width) * res_scale);
|
||||
const u32 height = static_cast<u32>(static_cast<f32>(screen_height) * res_scale);
|
||||
|
||||
return DefaultFrameLayout(width, height);
|
||||
}
|
||||
|
|
|
@ -60,7 +60,7 @@ FramebufferLayout DefaultFrameLayout(u32 width, u32 height);
|
|||
* Convenience method to get frame layout by resolution scale
|
||||
* @param res_scale resolution scale factor
|
||||
*/
|
||||
FramebufferLayout FrameLayoutFromResolutionScale(u32 res_scale);
|
||||
FramebufferLayout FrameLayoutFromResolutionScale(f32 res_scale);
|
||||
|
||||
/**
|
||||
* Convenience method to determine emulation aspect ratio
|
||||
|
|
|
@ -628,11 +628,9 @@ void GRenderWindow::ReleaseRenderTarget() {
|
|||
main_context.reset();
|
||||
}
|
||||
|
||||
void GRenderWindow::CaptureScreenshot(u32 res_scale, const QString& screenshot_path) {
|
||||
VideoCore::RendererBase& renderer = system.Renderer();
|
||||
if (res_scale == 0) {
|
||||
res_scale = VideoCore::GetResolutionScaleFactor(renderer);
|
||||
}
|
||||
void GRenderWindow::CaptureScreenshot(const QString& screenshot_path) {
|
||||
auto& renderer = system.Renderer();
|
||||
const f32 res_scale = VideoCore::GetResolutionScaleFactor(renderer);
|
||||
|
||||
const Layout::FramebufferLayout layout{Layout::FrameLayoutFromResolutionScale(res_scale)};
|
||||
screenshot_image = QImage(QSize(layout.width, layout.height), QImage::Format_RGB32);
|
||||
|
|
|
@ -178,7 +178,7 @@ public:
|
|||
|
||||
bool IsLoadingComplete() const;
|
||||
|
||||
void CaptureScreenshot(u32 res_scale, const QString& screenshot_path);
|
||||
void CaptureScreenshot(const QString& screenshot_path);
|
||||
|
||||
std::pair<u32, u32> ScaleTouch(const QPointF& pos) const;
|
||||
|
||||
|
|
|
@ -163,7 +163,7 @@ void MicroProfileWidget::mouseReleaseEvent(QMouseEvent* ev) {
|
|||
}
|
||||
|
||||
void MicroProfileWidget::wheelEvent(QWheelEvent* ev) {
|
||||
const auto wheel_position = ev->position().toPoint();
|
||||
const auto wheel_position = ev->pos();
|
||||
MicroProfileMousePosition(wheel_position.x() / x_scale, wheel_position.y() / y_scale,
|
||||
ev->angleDelta().y() / 120);
|
||||
ev->accept();
|
||||
|
|
|
@ -2892,8 +2892,7 @@ void GMainWindow::OnCaptureScreenshot() {
|
|||
}
|
||||
}
|
||||
#endif
|
||||
render_window->CaptureScreenshot(UISettings::values.screenshot_resolution_factor.GetValue(),
|
||||
filename);
|
||||
render_window->CaptureScreenshot(filename);
|
||||
}
|
||||
|
||||
// TODO: Written 2020-10-01: Remove per-game config migration code when it is irrelevant
|
||||
|
|
|
@ -68,7 +68,6 @@ struct Values {
|
|||
Settings::BasicSetting<bool> enable_discord_presence{true, "enable_discord_presence"};
|
||||
|
||||
Settings::BasicSetting<bool> enable_screenshot_save_as{true, "enable_screenshot_save_as"};
|
||||
Settings::BasicSetting<u16> screenshot_resolution_factor{0, "screenshot_resolution_factor"};
|
||||
|
||||
QString roms_path;
|
||||
QString symbols_path;
|
||||
|
|
Loading…
Reference in a new issue