SurfaceEventFilter.hpp 781 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #pragma once
  2. #include <widgets/OBSQTDisplay.hpp>
  3. #include <QObject>
  4. #include <QPlatformSurfaceEvent>
  5. class SurfaceEventFilter : public QObject {
  6. Q_OBJECT
  7. OBSQTDisplay *display;
  8. public:
  9. SurfaceEventFilter(OBSQTDisplay *src) : QObject(src), display(src) {}
  10. protected:
  11. bool eventFilter(QObject *obj, QEvent *event) override
  12. {
  13. bool result = QObject::eventFilter(obj, event);
  14. QPlatformSurfaceEvent *surfaceEvent;
  15. switch (event->type()) {
  16. case QEvent::PlatformSurface:
  17. surfaceEvent = static_cast<QPlatformSurfaceEvent *>(event);
  18. switch (surfaceEvent->surfaceEventType()) {
  19. case QPlatformSurfaceEvent::SurfaceAboutToBeDestroyed:
  20. display->DestroyDisplay();
  21. break;
  22. default:
  23. break;
  24. }
  25. break;
  26. default:
  27. break;
  28. }
  29. return result;
  30. }
  31. };