Fix crash when switching fullscreen stretching modes when fullscreen

This commit is contained in:
Cacodemon345
2021-12-31 13:02:27 +06:00
parent 81055c03e2
commit 9b8650cae5
3 changed files with 7 additions and 1 deletions

View File

@@ -1154,7 +1154,7 @@ static void update_fullscreen_scale_checkboxes(Ui::MainWindow* ui, QAction* sele
if (video_fullscreen > 0) {
auto widget = ui->stackedWidget->currentWidget();
auto rc = dynamic_cast<RendererCommon*>(widget);
auto rc = ui->stackedWidget->rendererWindow;
rc->onResize(widget->width(), widget->height());
}

View File

@@ -183,6 +183,7 @@ void RendererStack::switchRenderer(Renderer renderer) {
case Renderer::Software:
{
auto sw = new SoftwareRenderer(this);
rendererWindow = sw;
connect(this, &RendererStack::blitToRenderer, sw, &SoftwareRenderer::onBlit, Qt::QueuedConnection);
current.reset(this->createWindowContainer(sw, this));
}
@@ -191,6 +192,7 @@ void RendererStack::switchRenderer(Renderer renderer) {
{
this->createWinId();
auto hw = new HardwareRenderer(this);
rendererWindow = hw;
connect(this, &RendererStack::blitToRenderer, hw, &HardwareRenderer::onBlit, Qt::QueuedConnection);
current.reset(this->createWindowContainer(hw, this));
break;
@@ -199,6 +201,7 @@ void RendererStack::switchRenderer(Renderer renderer) {
{
this->createWinId();
auto hw = new HardwareRenderer(this, HardwareRenderer::RenderType::OpenGLES);
rendererWindow = hw;
connect(this, &RendererStack::blitToRenderer, hw, &HardwareRenderer::onBlit, Qt::QueuedConnection);
current.reset(this->createWindowContainer(hw, this));
break;
@@ -207,6 +210,7 @@ void RendererStack::switchRenderer(Renderer renderer) {
{
this->createWinId();
auto hw = new HardwareRenderer(this, HardwareRenderer::RenderType::OpenGL3);
rendererWindow = hw;
connect(this, &RendererStack::blitToRenderer, hw, &HardwareRenderer::onBlit, Qt::QueuedConnection);
current.reset(this->createWindowContainer(hw, this));
break;

View File

@@ -13,6 +13,7 @@ namespace Ui {
class RendererStack;
}
class RendererCommon;
class RendererStack : public QStackedWidget
{
Q_OBJECT
@@ -43,6 +44,7 @@ public:
};
void switchRenderer(Renderer renderer);
RendererCommon* rendererWindow{nullptr};
signals:
void blitToRenderer(const std::unique_ptr<uint8_t>* img, int, int, int, int, std::atomic_flag* in_use);