From b5664282334547e7b54cb3f3289d6dce4fcadca2 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Fri, 3 Jul 2015 10:10:23 -0700 Subject: [PATCH] UI: Allow resize without timers This prevents the weird stretching effect that occurs whenever a windows is in the process of being resized by the user. Originally it was intended as an optimization, but even on half-decent computers it doesn't really have much benefit. --- obs/window-basic-filters.cpp | 16 ++-------------- obs/window-basic-filters.hpp | 2 -- obs/window-basic-interaction.cpp | 27 ++++++--------------------- obs/window-basic-interaction.hpp | 2 -- obs/window-basic-main.cpp | 18 +++--------------- obs/window-basic-main.hpp | 2 -- obs/window-basic-properties.cpp | 27 ++++++--------------------- obs/window-basic-properties.hpp | 2 -- 8 files changed, 17 insertions(+), 79 deletions(-) diff --git a/obs/window-basic-filters.cpp b/obs/window-basic-filters.cpp index aae2b8203..dbf12d463 100644 --- a/obs/window-basic-filters.cpp +++ b/obs/window-basic-filters.cpp @@ -395,9 +395,8 @@ void OBSBasicFilters::AddFilterFromAction() void OBSBasicFilters::OnPreviewResized() { - if (resizeTimer) - killTimer(resizeTimer); - resizeTimer = startTimer(100); + QSize size = GetPixelSize(ui->preview); + obs_display_resize(display, size.width(), size.height()); } void OBSBasicFilters::closeEvent(QCloseEvent *event) @@ -415,17 +414,6 @@ void OBSBasicFilters::closeEvent(QCloseEvent *event) main->SaveProject(); } -void OBSBasicFilters::timerEvent(QTimerEvent *event) -{ - if (event->timerId() == resizeTimer) { - killTimer(resizeTimer); - resizeTimer = 0; - - QSize size = GetPixelSize(ui->preview); - obs_display_resize(display, size.width(), size.height()); - } -} - /* OBS Signals */ void OBSBasicFilters::OBSSourceFilterAdded(void *param, calldata_t *data) diff --git a/obs/window-basic-filters.hpp b/obs/window-basic-filters.hpp index 24a3d8929..f31829dcb 100644 --- a/obs/window-basic-filters.hpp +++ b/obs/window-basic-filters.hpp @@ -36,7 +36,6 @@ private: OBSBasic *main; std::unique_ptr ui; - int resizeTimer = 0; OBSSource source; OBSPropertiesView *view = nullptr; @@ -110,5 +109,4 @@ public: protected: virtual void closeEvent(QCloseEvent *event) override; - virtual void timerEvent(QTimerEvent *event) override; }; diff --git a/obs/window-basic-interaction.cpp b/obs/window-basic-interaction.cpp index 107f84002..50d76125e 100644 --- a/obs/window-basic-interaction.cpp +++ b/obs/window-basic-interaction.cpp @@ -31,7 +31,6 @@ using namespace std; OBSBasicInteraction::OBSBasicInteraction(QWidget *parent, OBSSource source_) : QDialog (parent), main (qobject_cast(parent)), - resizeTimer (0), ui (new Ui::OBSBasicInteraction), source (source_), removedSignal (obs_source_get_signal_handler(source), "remove", @@ -58,9 +57,8 @@ OBSBasicInteraction::OBSBasicInteraction(QWidget *parent, OBSSource source_) obs_data_release(settings); connect(windowHandle(), &QWindow::screenChanged, [this]() { - if (resizeTimer) - killTimer(resizeTimer); - resizeTimer = startTimer(100); + QSize size = GetPixelSize(ui->preview); + obs_display_resize(display, size.width(), size.height()); }); const char *name = obs_source_get_name(source); @@ -159,31 +157,18 @@ void OBSBasicInteraction::DrawPreview(void *data, uint32_t cx, uint32_t cy) void OBSBasicInteraction::OnInteractionResized() { - if (resizeTimer) - killTimer(resizeTimer); - resizeTimer = startTimer(100); + QSize size = GetPixelSize(ui->preview); + obs_display_resize(display, size.width(), size.height()); } void OBSBasicInteraction::resizeEvent(QResizeEvent *event) { if (isVisible()) { - if (resizeTimer) - killTimer(resizeTimer); - resizeTimer = startTimer(100); - } - - UNUSED_PARAMETER(event); -} - -void OBSBasicInteraction::timerEvent(QTimerEvent *event) -{ - if (event->timerId() == resizeTimer) { - killTimer(resizeTimer); - resizeTimer = 0; - QSize size = GetPixelSize(ui->preview); obs_display_resize(display, size.width(), size.height()); } + + QDialog::resizeEvent(event); } void OBSBasicInteraction::closeEvent(QCloseEvent *event) diff --git a/obs/window-basic-interaction.hpp b/obs/window-basic-interaction.hpp index a820dfc70..019de79b7 100644 --- a/obs/window-basic-interaction.hpp +++ b/obs/window-basic-interaction.hpp @@ -36,7 +36,6 @@ class OBSBasicInteraction : public QDialog { private: OBSBasic *main; - int resizeTimer; std::unique_ptr ui; OBSSource source; @@ -70,7 +69,6 @@ public: protected: virtual void resizeEvent(QResizeEvent *event) override; - virtual void timerEvent(QTimerEvent *event) override; virtual void closeEvent(QCloseEvent *event) override; }; diff --git a/obs/window-basic-main.cpp b/obs/window-basic-main.cpp index 80c1923f2..e62d10e8c 100644 --- a/obs/window-basic-main.cpp +++ b/obs/window-basic-main.cpp @@ -1956,9 +1956,8 @@ void OBSBasic::ResizePreview(uint32_t cx, uint32_t cy) previewY += float(PREVIEW_EDGE_SIZE); if (isVisible()) { - if (resizeTimer) - killTimer(resizeTimer); - resizeTimer = startTimer(100); + QSize size = GetPixelSize(ui->preview); + obs_resize(size.width(), size.height()); } } @@ -2057,18 +2056,7 @@ void OBSBasic::resizeEvent(QResizeEvent *event) if (obs_get_video_info(&ovi)) ResizePreview(ovi.base_width, ovi.base_height); - UNUSED_PARAMETER(event); -} - -void OBSBasic::timerEvent(QTimerEvent *event) -{ - if (event->timerId() == resizeTimer) { - killTimer(resizeTimer); - resizeTimer = 0; - - QSize size = GetPixelSize(ui->preview); - obs_resize(size.width(), size.height()); - } + OBSMainWindow::resizeEvent(event); } void OBSBasic::on_actionShow_Recordings_triggered() diff --git a/obs/window-basic-main.hpp b/obs/window-basic-main.hpp index 5f5c2b11e..9587b9c4a 100644 --- a/obs/window-basic-main.hpp +++ b/obs/window-basic-main.hpp @@ -100,7 +100,6 @@ private: int previewX = 0, previewY = 0; int previewCX = 0, previewCY = 0; float previewScale = 0.0f; - int resizeTimer = 0; ConfigFile basicConfig; @@ -275,7 +274,6 @@ protected: virtual void closeEvent(QCloseEvent *event) override; virtual void changeEvent(QEvent *event) override; virtual void resizeEvent(QResizeEvent *event) override; - virtual void timerEvent(QTimerEvent *event) override; private slots: void on_actionShow_Recordings_triggered(); diff --git a/obs/window-basic-properties.cpp b/obs/window-basic-properties.cpp index baabcb175..030ce080f 100644 --- a/obs/window-basic-properties.cpp +++ b/obs/window-basic-properties.cpp @@ -32,7 +32,6 @@ using namespace std; OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_) : QDialog (parent), main (qobject_cast(parent)), - resizeTimer (0), acceptClicked (false), ui (new Ui::OBSBasicProperties), source (source_), @@ -84,9 +83,8 @@ OBSBasicProperties::OBSBasicProperties(QWidget *parent, OBSSource source_) this, SLOT(OnPropertiesResized())); connect(windowHandle(), &QWindow::screenChanged, [this]() { - if (resizeTimer) - killTimer(resizeTimer); - resizeTimer = startTimer(100); + QSize size = GetPixelSize(ui->preview); + obs_display_resize(display, size.width(), size.height()); }); const char *name = obs_source_get_name(source); @@ -188,31 +186,18 @@ void OBSBasicProperties::DrawPreview(void *data, uint32_t cx, uint32_t cy) void OBSBasicProperties::OnPropertiesResized() { - if (resizeTimer) - killTimer(resizeTimer); - resizeTimer = startTimer(100); + QSize size = GetPixelSize(ui->preview); + obs_display_resize(display, size.width(), size.height()); } void OBSBasicProperties::resizeEvent(QResizeEvent *event) { if (isVisible()) { - if (resizeTimer) - killTimer(resizeTimer); - resizeTimer = startTimer(100); - } - - QDialog::resizeEvent(event); -} - -void OBSBasicProperties::timerEvent(QTimerEvent *event) -{ - if (event->timerId() == resizeTimer) { - killTimer(resizeTimer); - resizeTimer = 0; - QSize size = GetPixelSize(ui->preview); obs_display_resize(display, size.width(), size.height()); } + + QDialog::resizeEvent(event); } void OBSBasicProperties::Cleanup() diff --git a/obs/window-basic-properties.hpp b/obs/window-basic-properties.hpp index 7935e9e8f..30426899a 100644 --- a/obs/window-basic-properties.hpp +++ b/obs/window-basic-properties.hpp @@ -32,7 +32,6 @@ class OBSBasicProperties : public QDialog { private: OBSBasic *main; - int resizeTimer; bool acceptClicked; std::unique_ptr ui; @@ -65,7 +64,6 @@ public: protected: virtual void resizeEvent(QResizeEvent *event) override; - virtual void timerEvent(QTimerEvent *event) override; virtual void closeEvent(QCloseEvent *event) override; virtual void reject() override; };