diff options
Diffstat (limited to 'src/util/widgetrendertimer.h')
-rw-r--r-- | src/util/widgetrendertimer.h | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/src/util/widgetrendertimer.h b/src/util/widgetrendertimer.h deleted file mode 100644 index d137fb98d7..0000000000 --- a/src/util/widgetrendertimer.h +++ /dev/null @@ -1,55 +0,0 @@ -#pragma once - -#include <QObject> - -#include "util/duration.h" -#include "util/timer.h" - -// A helper class for rendering widgets on a timer when they need updating. -// Prevents calling QWidget::update too quickly. Controlled by two parameters: -// - renderFrequency: The frequency to render the widget at in response -// to updates. -// - inactivityTimeout: The timeout after which the widget's render timer is -// deactivated. -// -// This class was created in response to issue #9437. With Qt 4, we -// would simply call QWidget::update in response to input events that required -// re-rendering widgets, relying on Qt to batch them together and deliver them -// at a reasonable frequency. On macOS, the behavior of QWidget::update in Qt 5 -// seems to have changed such that render events happen much more frequently -// than they used to. To address this, we instead use a downsampling timer -// attached to the VSyncThread's render ticks for the waveform renderers. The -// timer invokes guiTick(), which is responsible for actually calling -// QWidget::update(). When input arrives, we call inputActivity to attach the -// timer. After 1 second of inactivity, we disconnect the timer. -// -// Ironically, using this class somehow causes severe lagginess on mouse input -// with Windows, so use #ifdefs to only call activity() on macOS; just call -// QWidget::update() for other operating systems. -class WidgetRenderTimer : public QObject { - Q_OBJECT - public: - WidgetRenderTimer(mixxx::Duration renderFrequency, - mixxx::Duration inactivityTimeout); - - // Call this method whenever the widget's state has changed such that a - // re-render is necessary. - void activity(); - - signals: - // Emitted when the widget should actually render. Connect this signal to - // QWidget::update or QWidget::repaint. - void update(); - - private slots: - // Called when the internal GuiTickTimer's timeout is elapsed. Decides - // whether the widget should render in response to this timer tick. - void guiTick(); - - private: - const mixxx::Duration m_renderFrequency; - const mixxx::Duration m_inactivityTimeout; - GuiTickTimer m_guiTickTimer; - mixxx::Duration m_lastActivity; - mixxx::Duration m_lastRender; -}; |