diff --git a/obs/window-basic-interaction.cpp b/obs/window-basic-interaction.cpp index 9cf5499d224da8120c0707f6ae5bf601da656626..d5528926b9241524a51c3d65e79611e3bcfc30be 100644 --- a/obs/window-basic-interaction.cpp +++ b/obs/window-basic-interaction.cpp @@ -34,7 +34,8 @@ OBSBasicInteraction::OBSBasicInteraction(QWidget *parent, OBSSource source_) ui (new Ui::OBSBasicInteraction), source (source_), removedSignal (obs_source_get_signal_handler(source), "remove", - OBSBasicInteraction::SourceRemoved, this) + OBSBasicInteraction::SourceRemoved, this), + eventFilter (BuildEventFilter()) { int cx = (int)config_get_int(App()->GlobalConfig(), "InteractionWindow", "cx"); @@ -45,8 +46,7 @@ OBSBasicInteraction::OBSBasicInteraction(QWidget *parent, OBSSource source_) ui->preview->setMouseTracking(true); ui->preview->setFocusPolicy(Qt::StrongFocus); - eventFilter = BuildEventFilter(); - ui->preview->installEventFilter(eventFilter); + ui->preview->installEventFilter(eventFilter.get()); if (cx > 400 && cy > 400) resize(cx, cy); @@ -68,8 +68,7 @@ OBSBasicInteraction::~OBSBasicInteraction() { // since QT fakes a mouse movement while destructing a widget // remove our event filter - ui->preview->removeEventFilter(eventFilter); - delete eventFilter; + ui->preview->removeEventFilter(eventFilter.get()); } OBSEventFilter *OBSBasicInteraction::BuildEventFilter() diff --git a/obs/window-basic-interaction.hpp b/obs/window-basic-interaction.hpp index 7f358e64b59c6fb2305d1677be0ca8d75f141be6..4c8e3c208c45d0d57cfd7fb167421a287cc766ad 100644 --- a/obs/window-basic-interaction.hpp +++ b/obs/window-basic-interaction.hpp @@ -42,7 +42,7 @@ private: OBSSource source; OBSDisplay display; OBSSignal removedSignal; - OBSEventFilter *eventFilter; + std::unique_ptr<OBSEventFilter> eventFilter; static void SourceRemoved(void *data, calldata_t params); static void DrawPreview(void *data, uint32_t cx, uint32_t cy);