summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar german772022-04-10 23:12:13 -0500
committerGravatar german772022-04-18 01:00:48 -0500
commit3e77466b8627a55f2c83e9c7223df1d32b30cd3f (patch)
treea1b521017df901537aace3a747e028fdc3f70aab /src
parentMerge pull request #8204 from Docteh/translate_gameslist (diff)
downloadyuzu-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.cpp4
-rw-r--r--src/video_core/renderer_base.h3
-rw-r--r--src/yuzu/bootmanager.cpp6
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
29bool RendererBase::IsScreenshotPending() const {
30 return renderer_settings.screenshot_requested;
31}
32
29void RendererBase::RequestScreenshot(void* data, std::function<void(bool)> callback, 33void 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(