SurfaceEventFilter.hpp 770 B

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