diff options
author | german77 <juangerman-13@hotmail.com> | 2022-04-11 06:12:13 +0200 |
---|---|---|
committer | german77 <juangerman-13@hotmail.com> | 2022-04-18 08:00:48 +0200 |
commit | 3e77466b8627a55f2c83e9c7223df1d32b30cd3f (patch) | |
tree | a1b521017df901537aace3a747e028fdc3f70aab | |
parent | Merge pull request #8204 from Docteh/translate_gameslist (diff) | |
download | yuzu-3e77466b8627a55f2c83e9c7223df1d32b30cd3f.tar yuzu-3e77466b8627a55f2c83e9c7223df1d32b30cd3f.tar.gz yuzu-3e77466b8627a55f2c83e9c7223df1d32b30cd3f.tar.bz2 yuzu-3e77466b8627a55f2c83e9c7223df1d32b30cd3f.tar.lz yuzu-3e77466b8627a55f2c83e9c7223df1d32b30cd3f.tar.xz yuzu-3e77466b8627a55f2c83e9c7223df1d32b30cd3f.tar.zst yuzu-3e77466b8627a55f2c83e9c7223df1d32b30cd3f.zip |
-rw-r--r-- | src/video_core/renderer_base.cpp | 4 | ||||
-rw-r--r-- | src/video_core/renderer_base.h | 3 | ||||
-rw-r--r-- | src/yuzu/bootmanager.cpp | 6 |
3 files changed, 13 insertions, 0 deletions
diff --git a/src/video_core/renderer_base.cpp b/src/video_core/renderer_base.cpp index c9627cffd..9756a81d6 100644 --- a/src/video_core/renderer_base.cpp +++ b/src/video_core/renderer_base.cpp @@ -26,6 +26,10 @@ void RendererBase::UpdateCurrentFramebufferLayout() { render_window.UpdateCurrentFramebufferLayout(layout.width, layout.height); } +bool RendererBase::IsScreenshotPending() const { + return renderer_settings.screenshot_requested; +} + void RendererBase::RequestScreenshot(void* data, std::function<void(bool)> callback, const Layout::FramebufferLayout& layout) { if (renderer_settings.screenshot_requested) { diff --git a/src/video_core/renderer_base.h b/src/video_core/renderer_base.h index c5f974080..30d19b178 100644 --- a/src/video_core/renderer_base.h +++ b/src/video_core/renderer_base.h @@ -83,6 +83,9 @@ public: /// Refreshes the settings common to all renderers void RefreshBaseSettings(); + /// Returns true if a screenshot is being processed + bool IsScreenshotPending() const; + /// Request a screenshot of the next frame void RequestScreenshot(void* data, std::function<void(bool)> callback, const Layout::FramebufferLayout& layout); diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp index 27b0300d2..a1b819ae0 100644 --- a/src/yuzu/bootmanager.cpp +++ b/src/yuzu/bootmanager.cpp @@ -933,6 +933,12 @@ void GRenderWindow::CaptureScreenshot(const QString& screenshot_path) { auto& renderer = system.Renderer(); const f32 res_scale = Settings::values.resolution_info.up_factor; + if (renderer.IsScreenshotPending()) { + LOG_WARNING(Render, + "A screenshot is already requested or in progress, ignoring the request"); + return; + } + const Layout::FramebufferLayout layout{Layout::FrameLayoutFromResolutionScale(res_scale)}; screenshot_image = QImage(QSize(layout.width, layout.height), QImage::Format_RGB32); renderer.RequestScreenshot( |