Revert "Be less dumb."
Revert "Actually, filename really does need to be a parameter because of some random debug thing." Revert "fix non-HAVE_WX case" Revert "Handle screenshot saving in RenderBase. Removes dependency on D3DX11 for screenshots (texture dumping is still broken)." This reverts commits00fe5057f1,74b5fb3ab4,cd46138d29and5f72542e06because taking screenshots in D3D still crashed for me so there was no point in the code changes (which I found ugly anyway).
This commit is contained in:
1 parent
3de2ee5d46
commit
0b02880b76
7 files changed
+148
-111
No files matched your search
@@ -30,12 +30,6 @@
|
||||
#include "XFMemory.h"
|
||||
#include "FifoPlayer/FifoRecorder.h"
|
||||
#include "AVIDump.h"
|
||||
#include "OnScreenDisplay.h"
|
||||
#if defined(HAVE_WX) && HAVE_WX
|
||||
#include "WxUtils.h"
|
||||
#include <wx/image.h>
|
||||
#endif
|
||||
#include "ImageWrite.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <string>
|
||||
@@ -73,8 +67,6 @@ unsigned int Renderer::efb_scale_numeratorY = 1;
|
||||
unsigned int Renderer::efb_scale_denominatorX = 1;
|
||||
unsigned int Renderer::efb_scale_denominatorY = 1;
|
||||
|
||||
// TODO: remove
|
||||
extern bool g_aspect_wide;
|
||||
|
||||
Renderer::Renderer()
|
||||
: frame_data()
|
||||
@@ -250,72 +242,6 @@ void Renderer::SetScreenshot(const char *filename)
|
||||
s_bScreenshot = true;
|
||||
}
|
||||
|
||||
#if defined(HAVE_WX) && HAVE_WX
|
||||
void Renderer::SaveScreenshotOnThread(u8* data, size_t width, size_t height, std::string filename)
|
||||
{
|
||||
wxImage *img = new wxImage(width, height, data);
|
||||
|
||||
// These will contain the final image size
|
||||
float FloatW = (float)width;
|
||||
float FloatH = (float)height;
|
||||
|
||||
// Handle aspect ratio for the final ScrStrct to look exactly like what's on screen.
|
||||
if (g_ActiveConfig.iAspectRatio != ASPECT_STRETCH)
|
||||
{
|
||||
bool use16_9 = g_aspect_wide;
|
||||
|
||||
// Check for force-settings and override.
|
||||
if (g_ActiveConfig.iAspectRatio == ASPECT_FORCE_16_9)
|
||||
use16_9 = true;
|
||||
else if (g_ActiveConfig.iAspectRatio == ASPECT_FORCE_4_3)
|
||||
use16_9 = false;
|
||||
|
||||
float Ratio = (FloatW / FloatH) / (!use16_9 ? (4.0f / 3.0f) : (16.0f / 9.0f));
|
||||
|
||||
// If ratio > 1 the picture is too wide and we have to limit the width.
|
||||
if (Ratio > 1)
|
||||
FloatW /= Ratio;
|
||||
// ratio == 1 or the image is too high, we have to limit the height.
|
||||
else
|
||||
FloatH *= Ratio;
|
||||
|
||||
// This is a bit expensive on high resolutions
|
||||
img->Rescale((int)FloatW, (int)FloatH, wxIMAGE_QUALITY_HIGH);
|
||||
}
|
||||
|
||||
// Save the screenshot and finally kill the wxImage object
|
||||
// This is really expensive when saving to PNG, but not at all when using BMP
|
||||
img->SaveFile(StrToWxStr(filename), wxBITMAP_TYPE_PNG);
|
||||
img->Destroy();
|
||||
|
||||
// Show success messages
|
||||
OSD::AddMessage(StringFromFormat("Saved %i x %i %s", (int)FloatW, (int)FloatH,
|
||||
filename.c_str()), 2000);
|
||||
}
|
||||
#endif
|
||||
|
||||
void Renderer::SaveScreenshot(u8* ptr, size_t width, size_t height, std::string filename)
|
||||
{
|
||||
std::lock_guard<std::mutex> lk(s_criticalScreenshot);
|
||||
#if defined(HAVE_WX) && HAVE_WX
|
||||
// Create wxImage
|
||||
|
||||
std::thread thread(SaveScreenshotOnThread, ptr, width, height, filename);
|
||||
#ifdef _WIN32
|
||||
SetThreadPriority(thread.native_handle(), THREAD_PRIORITY_BELOW_NORMAL);
|
||||
#endif
|
||||
thread.detach();
|
||||
|
||||
OSD::AddMessage("Saving Screenshot... ", 2000);
|
||||
|
||||
#else
|
||||
SaveTGA(filename.c_str(), width, height, ptr);
|
||||
free(ptr);
|
||||
#endif
|
||||
|
||||
s_bScreenshot = false;
|
||||
}
|
||||
|
||||
// Create On-Screen-Messages
|
||||
void Renderer::DrawDebugText()
|
||||
{
|
||||
@@ -421,6 +347,9 @@ void Renderer::DrawDebugText()
|
||||
g_renderer->RenderText(final_yellow.c_str(), 20, 20, 0xFFFFFF00);
|
||||
}
|
||||
|
||||
// TODO: remove
|
||||
extern bool g_aspect_wide;
|
||||
|
||||
void Renderer::UpdateDrawRectangle(int backbuffer_width, int backbuffer_height)
|
||||
{
|
||||
float FloatGLWidth = (float)backbuffer_width;
|
||||
|
||||
@@ -110,6 +110,8 @@ public:
|
||||
|
||||
virtual void UpdateViewport() = 0;
|
||||
|
||||
virtual bool SaveScreenshot(const std::string &filename, const TargetRectangle &rc) = 0;
|
||||
|
||||
static unsigned int GetPrevPixelFormat() { return prev_efb_format; }
|
||||
static void StorePixelFormat(unsigned int new_format) { prev_efb_format = new_format; }
|
||||
|
||||
@@ -121,11 +123,6 @@ protected:
|
||||
static void CheckFifoRecording();
|
||||
static void RecordVideoMemory();
|
||||
|
||||
#if defined(HAVE_WX) && HAVE_WX
|
||||
static void SaveScreenshotOnThread(u8* data, size_t width, size_t height, std::string filename);
|
||||
#endif
|
||||
static void SaveScreenshot(u8* ptr, size_t width, size_t height, std::string filename);
|
||||
|
||||
static volatile bool s_bScreenshot;
|
||||
static std::mutex s_criticalScreenshot;
|
||||
static std::string s_sScreenshotName;
|
||||
|
||||
Reference in new issue
Block a user