make sure render-widget gets deleted when switching

This commit is contained in:
Joakim L. Gilje
2021-12-15 20:02:35 +01:00
parent d2115bc5e4
commit 1cc09b9033
2 changed files with 8 additions and 7 deletions

View File

@@ -164,8 +164,8 @@ void RendererStack::leaveEvent(QEvent* event)
void RendererStack::switchRenderer(Renderer renderer) {
startblit();
if (current != nullptr) {
removeWidget(current);
if (current) {
removeWidget(current.get());
}
switch (renderer) {
@@ -173,7 +173,7 @@ void RendererStack::switchRenderer(Renderer renderer) {
{
auto sw = new SoftwareRenderer(this);
connect(this, &RendererStack::blitToRenderer, sw, &SoftwareRenderer::onBlit);
current = sw;
current.reset(sw);
}
break;
case Renderer::OpenGL:
@@ -181,7 +181,7 @@ void RendererStack::switchRenderer(Renderer renderer) {
auto hw = new HardwareRenderer(this);
connect(this, &RendererStack::blitToRenderer, hw, &HardwareRenderer::onBlit);
hw->setRenderType(HardwareRenderer::RenderType::OpenGL);
current = hw;
current.reset(hw);
break;
}
case Renderer::OpenGLES:
@@ -189,12 +189,12 @@ void RendererStack::switchRenderer(Renderer renderer) {
auto hw = new HardwareRenderer(this);
connect(this, &RendererStack::blitToRenderer, hw, &HardwareRenderer::onBlit);
hw->setRenderType(HardwareRenderer::RenderType::OpenGLES);
current = hw;
current.reset(hw);
break;
}
}
current->setFocusPolicy(Qt::NoFocus);
addWidget(current);
addWidget(current.get());
endblit();
}

View File

@@ -4,6 +4,7 @@
#include <QStackedWidget>
#include <QKeyEvent>
#include <QEvent>
#include <memory>
namespace Ui {
class RendererStack;
@@ -62,7 +63,7 @@ private:
int currentBuf = 0;
QVector<QImage> imagebufs;
QWidget* current = nullptr;
std::unique_ptr<QWidget> current;
};
#endif // QT_RENDERERCONTAINER_HPP