From 2d99fa5961fac6b37a34c49e51a189898332c914 Mon Sep 17 00:00:00 2001
From: demiralp <demiralp@vr.rwth-aachen.de>
Date: Wed, 18 Apr 2018 16:00:55 +0200
Subject: [PATCH] New display system complete.

---
 library/phx/display_system.cpp | 13 +++++++++++--
 library/phx/display_system.hpp | 22 ++++++----------------
 2 files changed, 17 insertions(+), 18 deletions(-)

diff --git a/library/phx/display_system.cpp b/library/phx/display_system.cpp
index 675f9642..cd49d6be 100644
--- a/library/phx/display_system.cpp
+++ b/library/phx/display_system.cpp
@@ -22,8 +22,17 @@
 
 #include "display_system.hpp"
 
+#include <vector>
+
 namespace phx {
-DisplaySystem::DisplaySystem(Engine* engine) : System(engine) {}
-DisplaySystem::~DisplaySystem() {}
+void DisplaySystem::Update(const FrameTimer::TimeInfo&) { tick(); }
 
+std::vector<di::opengl_window*> DisplaySystem::OpenGLWindows() const {
+  std::vector<di::opengl_window*> opengl_windows;
+  for (auto window : windows()) {
+    auto opengl_window = dynamic_cast<di::opengl_window*>(window);
+    if (opengl_window) opengl_windows.push_back(opengl_window);
+  }
+  return opengl_windows;
+}
 }  // namespace phx
diff --git a/library/phx/display_system.hpp b/library/phx/display_system.hpp
index 08e2d363..9a22be33 100644
--- a/library/phx/display_system.hpp
+++ b/library/phx/display_system.hpp
@@ -23,32 +23,22 @@
 #ifndef LIBRARY_PHX_DISPLAY_SYSTEM_HPP_
 #define LIBRARY_PHX_DISPLAY_SYSTEM_HPP_
 
-#include <memory>
+#include <di/systems/display/display_system.hpp>
+#include <di/systems/display/opengl_window.hpp>
+
 #include <vector>
 
 #include "phx/engine.hpp"
 #include "phx/export.hpp"
-#include "phx/render_target.hpp"
 #include "phx/system.hpp"
 
 namespace phx {
-
-class PHOENIX_EXPORT DisplaySystem : public System {
+class PHOENIX_EXPORT DisplaySystem : public System, public di::display_system {
  public:
-  DisplaySystem(const DisplaySystem&) = delete;
-  DisplaySystem(DisplaySystem&&) = default;
-  ~DisplaySystem();
-
-  DisplaySystem& operator=(const DisplaySystem&) = delete;
-  DisplaySystem& operator=(DisplaySystem&&) = default;
+  void Update(const FrameTimer::TimeInfo&) override;
 
-  void Update(const FrameTimer::TimeInfo&) override = 0;
-
- protected:
-  explicit DisplaySystem(Engine* engine);
-  friend DisplaySystem* Engine::CreateSystem<DisplaySystem>();
+  std::vector<di::opengl_window*> OpenGLWindows() const;
 };
-
 }  // namespace phx
 
 #endif  // LIBRARY_PHX_DISPLAY_SYSTEM_HPP_
-- 
GitLab