diff options
| author | 2022-04-10 23:12:13 -0500 | |
|---|---|---|
| committer | 2022-04-18 01:00:48 -0500 | |
| commit | 3e77466b8627a55f2c83e9c7223df1d32b30cd3f (patch) | |
| tree | a1b521017df901537aace3a747e028fdc3f70aab /src | |
| parent | Merge pull request #8204 from Docteh/translate_gameslist (diff) | |
| download | yuzu-3e77466b8627a55f2c83e9c7223df1d32b30cd3f.tar.gz yuzu-3e77466b8627a55f2c83e9c7223df1d32b30cd3f.tar.xz yuzu-3e77466b8627a55f2c83e9c7223df1d32b30cd3f.zip | |
bootmanager: Don't create another screenshot request if previous one is not done yet
Diffstat (limited to 'src')
| -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() { | |||
| 26 | render_window.UpdateCurrentFramebufferLayout(layout.width, layout.height); | 26 | render_window.UpdateCurrentFramebufferLayout(layout.width, layout.height); |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | bool RendererBase::IsScreenshotPending() const { | ||
| 30 | return renderer_settings.screenshot_requested; | ||
| 31 | } | ||
| 32 | |||
| 29 | void RendererBase::RequestScreenshot(void* data, std::function<void(bool)> callback, | 33 | void RendererBase::RequestScreenshot(void* data, std::function<void(bool)> callback, |
| 30 | const Layout::FramebufferLayout& layout) { | 34 | const Layout::FramebufferLayout& layout) { |
| 31 | if (renderer_settings.screenshot_requested) { | 35 | 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: | |||
| 83 | /// Refreshes the settings common to all renderers | 83 | /// Refreshes the settings common to all renderers |
| 84 | void RefreshBaseSettings(); | 84 | void RefreshBaseSettings(); |
| 85 | 85 | ||
| 86 | /// Returns true if a screenshot is being processed | ||
| 87 | bool IsScreenshotPending() const; | ||
| 88 | |||
| 86 | /// Request a screenshot of the next frame | 89 | /// Request a screenshot of the next frame |
| 87 | void RequestScreenshot(void* data, std::function<void(bool)> callback, | 90 | void RequestScreenshot(void* data, std::function<void(bool)> callback, |
| 88 | const Layout::FramebufferLayout& layout); | 91 | 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) { | |||
| 933 | auto& renderer = system.Renderer(); | 933 | auto& renderer = system.Renderer(); |
| 934 | const f32 res_scale = Settings::values.resolution_info.up_factor; | 934 | const f32 res_scale = Settings::values.resolution_info.up_factor; |
| 935 | 935 | ||
| 936 | if (renderer.IsScreenshotPending()) { | ||
| 937 | LOG_WARNING(Render, | ||
| 938 | "A screenshot is already requested or in progress, ignoring the request"); | ||
| 939 | return; | ||
| 940 | } | ||
| 941 | |||
| 936 | const Layout::FramebufferLayout layout{Layout::FrameLayoutFromResolutionScale(res_scale)}; | 942 | const Layout::FramebufferLayout layout{Layout::FrameLayoutFromResolutionScale(res_scale)}; |
| 937 | screenshot_image = QImage(QSize(layout.width, layout.height), QImage::Format_RGB32); | 943 | screenshot_image = QImage(QSize(layout.width, layout.height), QImage::Format_RGB32); |
| 938 | renderer.RequestScreenshot( | 944 | renderer.RequestScreenshot( |