#pragma once #include #include #include class SurfaceEventFilter : public QObject { Q_OBJECT OBSQTDisplay *display; public: SurfaceEventFilter(OBSQTDisplay *src) : QObject(src), display(src) {} protected: bool eventFilter(QObject *obj, QEvent *event) override { bool result = QObject::eventFilter(obj, event); QPlatformSurfaceEvent *surfaceEvent; switch (event->type()) { case QEvent::PlatformSurface: surfaceEvent = static_cast(event); switch (surfaceEvent->surfaceEventType()) { case QPlatformSurfaceEvent::SurfaceAboutToBeDestroyed: display->DestroyDisplay(); break; default: break; } break; default: break; } return result; } };