2020-04-15 02:03:56 +02:00
|
|
|
#pragma once
|
2021-01-19 15:30:00 +01:00
|
|
|
#include "Graphics/GraphicsResources.h"
|
2020-04-15 02:03:56 +02:00
|
|
|
#include "View.h"
|
2021-10-23 00:22:35 +02:00
|
|
|
#include "ThreadPool.h"
|
2020-04-15 02:03:56 +02:00
|
|
|
|
|
|
|
|
namespace Seele
|
|
|
|
|
{
|
2021-09-29 22:12:56 +02:00
|
|
|
struct WindowView
|
|
|
|
|
{
|
|
|
|
|
PView view;
|
2021-10-23 00:22:35 +02:00
|
|
|
Event updateFinished;
|
2021-09-29 22:12:56 +02:00
|
|
|
std::mutex workerMutex;
|
2022-03-26 12:55:04 +01:00
|
|
|
WindowView(PView view)
|
|
|
|
|
: view(view)
|
|
|
|
|
, updateFinished(view->getName())
|
|
|
|
|
{}
|
2021-09-29 22:12:56 +02:00
|
|
|
};
|
|
|
|
|
DEFINE_REF(WindowView)
|
2021-11-01 20:25:16 +01:00
|
|
|
DECLARE_REF(WindowManager)
|
2020-04-15 02:03:56 +02:00
|
|
|
// The logical window, with the graphics proxy
|
|
|
|
|
class Window
|
|
|
|
|
{
|
|
|
|
|
public:
|
2021-11-01 20:25:16 +01:00
|
|
|
Window(PWindowManager owner, Gfx::PWindow handle);
|
2020-04-15 02:03:56 +02:00
|
|
|
~Window();
|
|
|
|
|
void addView(PView view);
|
2021-11-01 20:25:16 +01:00
|
|
|
MainJob render();
|
2020-04-15 02:03:56 +02:00
|
|
|
Gfx::PWindow getGfxHandle();
|
2020-10-29 02:22:01 +01:00
|
|
|
void setFocused(PView view);
|
2020-05-05 01:51:13 +02:00
|
|
|
|
2021-09-29 22:12:56 +02:00
|
|
|
protected:
|
2021-11-01 20:25:16 +01:00
|
|
|
PWindowManager owner;
|
2021-09-29 22:12:56 +02:00
|
|
|
Array<WindowView*> views;
|
2020-04-15 02:03:56 +02:00
|
|
|
Gfx::PWindow gfxHandle;
|
2021-09-29 22:12:56 +02:00
|
|
|
|
2021-11-11 20:12:50 +01:00
|
|
|
Job viewWorker(size_t viewIndex);
|
2020-04-15 02:03:56 +02:00
|
|
|
};
|
2021-04-01 16:40:14 +02:00
|
|
|
DEFINE_REF(Window)
|
2020-05-05 01:51:13 +02:00
|
|
|
} // namespace Seele
|