make sure render-widget gets deleted when switching
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user