From a34d7b19654c5f00f847eaa3d64efbab4b7331a3 Mon Sep 17 00:00:00 2001 From: baldurk Date: Tue, 24 Nov 2020 16:29:36 +0000 Subject: [PATCH] Don't bind Qt signals multiple times for custom paint widgets --- qrenderdoc/Windows/BufferViewer.cpp | 16 ++++++++-------- qrenderdoc/Windows/TextureViewer.cpp | 27 +++++++++++---------------- qrenderdoc/Windows/TextureViewer.h | 2 -- 3 files changed, 19 insertions(+), 26 deletions(-) diff --git a/qrenderdoc/Windows/BufferViewer.cpp b/qrenderdoc/Windows/BufferViewer.cpp index 4fdba97ad..c21529733 100644 --- a/qrenderdoc/Windows/BufferViewer.cpp +++ b/qrenderdoc/Windows/BufferViewer.cpp @@ -2083,6 +2083,14 @@ BufferViewer::BufferViewer(ICaptureContext &ctx, bool meshview, QWidget *parent) }); } + QObject::connect(ui->render, &CustomPaintWidget::mouseMove, this, &BufferViewer::render_mouseMove); + QObject::connect(ui->render, &CustomPaintWidget::clicked, this, &BufferViewer::render_clicked); + QObject::connect(ui->render, &CustomPaintWidget::keyPress, this, &BufferViewer::render_keyPress); + QObject::connect(ui->render, &CustomPaintWidget::keyRelease, this, + &BufferViewer::render_keyRelease); + QObject::connect(ui->render, &CustomPaintWidget::mouseWheel, this, + &BufferViewer::render_mouseWheel); + Reset(); m_Ctx.AddCaptureViewer(this); @@ -3616,14 +3624,6 @@ void BufferViewer::Reset() ui->gsoutData->setColumnWidths({40, 40}); m_BBoxes.clear(); - - QObject::connect(ui->render, &CustomPaintWidget::mouseMove, this, &BufferViewer::render_mouseMove); - QObject::connect(ui->render, &CustomPaintWidget::clicked, this, &BufferViewer::render_clicked); - QObject::connect(ui->render, &CustomPaintWidget::keyPress, this, &BufferViewer::render_keyPress); - QObject::connect(ui->render, &CustomPaintWidget::keyRelease, this, - &BufferViewer::render_keyRelease); - QObject::connect(ui->render, &CustomPaintWidget::mouseWheel, this, - &BufferViewer::render_mouseWheel); } void BufferViewer::ClearModels() diff --git a/qrenderdoc/Windows/TextureViewer.cpp b/qrenderdoc/Windows/TextureViewer.cpp index ded4a3230..1cd67841e 100644 --- a/qrenderdoc/Windows/TextureViewer.cpp +++ b/qrenderdoc/Windows/TextureViewer.cpp @@ -656,6 +656,16 @@ TextureViewer::TextureViewer(ICaptureContext &ctx, QWidget *parent) m_Ctx.AddCaptureViewer(this); SetupTextureTabs(); + + QObject::connect(ui->render, &CustomPaintWidget::clicked, this, &TextureViewer::render_mouseClick); + QObject::connect(ui->render, &CustomPaintWidget::mouseMove, this, &TextureViewer::render_mouseMove); + QObject::connect(ui->render, &CustomPaintWidget::mouseWheel, this, + &TextureViewer::render_mouseWheel); + QObject::connect(ui->render, &CustomPaintWidget::resize, this, &TextureViewer::render_resize); + QObject::connect(ui->render, &CustomPaintWidget::keyPress, this, &TextureViewer::render_keyPress); + + QObject::connect(ui->pixelContext, &CustomPaintWidget::keyPress, this, + &TextureViewer::render_keyPress); } TextureViewer::~TextureViewer() @@ -2879,21 +2889,6 @@ void TextureViewer::on_renderVScroll_valueChanged(int position) ScrollUpdateScrollbars = true; } -void TextureViewer::UI_RecreatePanels() -{ - updateBackgroundColors(); - - QObject::connect(ui->render, &CustomPaintWidget::clicked, this, &TextureViewer::render_mouseClick); - QObject::connect(ui->render, &CustomPaintWidget::mouseMove, this, &TextureViewer::render_mouseMove); - QObject::connect(ui->render, &CustomPaintWidget::mouseWheel, this, - &TextureViewer::render_mouseWheel); - QObject::connect(ui->render, &CustomPaintWidget::resize, this, &TextureViewer::render_resize); - QObject::connect(ui->render, &CustomPaintWidget::keyPress, this, &TextureViewer::render_keyPress); - - QObject::connect(ui->pixelContext, &CustomPaintWidget::keyPress, this, - &TextureViewer::render_keyPress); -} - void TextureViewer::updateBackgroundColors() { ui->render->SetBackCol(backCol); @@ -3000,7 +2995,7 @@ void TextureViewer::Reset() ui->customShader->clear(); - UI_RecreatePanels(); + updateBackgroundColors(); ui->inputThumbs->clearThumbs(); ui->outputThumbs->clearThumbs(); diff --git a/qrenderdoc/Windows/TextureViewer.h b/qrenderdoc/Windows/TextureViewer.h index 4f6f3e2f7..394947457 100644 --- a/qrenderdoc/Windows/TextureViewer.h +++ b/qrenderdoc/Windows/TextureViewer.h @@ -246,8 +246,6 @@ private: void RT_UpdateAndDisplay(IReplayController *); void RT_UpdateVisualRange(IReplayController *); - void UI_RecreatePanels(); - void UI_UpdateStatusText(); void UI_UpdateTextureDetails(); void UI_OnTextureSelectionChanged(bool newdraw);