diff options
| author | Vaxry <43317083+vaxerski@users.noreply.github.com> | 2025-09-18 22:10:30 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-18 22:10:30 +0200 |
| commit | 4fc95d646dbbe71744fb4e02ca0e995b652bffe5 (patch) | |
| tree | d2cfad68788de39712289d3e5aab54ebb20ef22e /src/helpers/MainLoopExecutor.hpp | |
| parent | 91f592a87509436dc6f6ea7b3d6705ed7c5af046 (diff) | |
renderer: asynchronously load background tex (#11749)
Bumps required hyprgraphics to 0.1.6
---------
Co-authored-by: Mihai Fufezan <mihai@fufexan.net>
Diffstat (limited to 'src/helpers/MainLoopExecutor.hpp')
| -rw-r--r-- | src/helpers/MainLoopExecutor.hpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/helpers/MainLoopExecutor.hpp b/src/helpers/MainLoopExecutor.hpp new file mode 100644 index 00000000..b33148f0 --- /dev/null +++ b/src/helpers/MainLoopExecutor.hpp @@ -0,0 +1,31 @@ +#pragma once + +#include <functional> +#include <hyprutils/os/FileDescriptor.hpp> +#include <wayland-server-core.h> + +class CMainLoopExecutor { + public: + /* + MainLoopExecutor + + Executes a function on the main thread once the writeFd() has some data written to it, + then destroys itself. + + Needs to be kept owned, otherwise will die and kill the fds. + */ + + CMainLoopExecutor(std::function<void()>&& callback); + ~CMainLoopExecutor(); + + // Call from your worker thread: signals to the main thread. Destroy afterwards. + void signal(); + + // do not call + void onFired(); + + private: + Hyprutils::OS::CFileDescriptor m_readFd, m_writeFd; + wl_event_source* m_event = nullptr; + std::function<void()> m_fn; +}; |
