wegen/FrOSCon26/examples/demo-uring.cpp
Ichthyostega b92de63d25 Prototype: establish a top-level structure
leaning heavily on the similar structure used for last year's
FrOSCon talk regarding video output (by Benny Lyons and myself).

However, this time we'll use a process state object (the player)
and, furthermore, there is some cross-wiring of components involved...
2026-07-14 19:27:27 +02:00

73 lines
1.3 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
demo-uring.cpp - async file IO with io_uring
Copyright (C)
2026, Hermann Vosseler <Ichthyostega@web.de>
This program is free software; you can redistribute it and/or modify it
  under the terms of the GNU GPL version 2+ See the LICENSE file for details.
* ************************************************************************/
#include "commons.hpp"
#include "egl-display.hpp"
#include "gtk-uring-app.hpp"
#include <iostream>
#include <memory>
#include <thread>
using std::unique_ptr;
//-----------------hard-coded-config--
//-----------------hard-coded-config--
class UringVideoPlayer
{
Glib::Dispatcher dispatchFrame_;
EglDisplay videoDisplayer_;
std::thread proactorThread_;
public:
UringVideoPlayer (Gtk::Window& appWindow)
: videoDisplayer_{appWindow, dispatchFrame_}
, proactorThread_{[this]{ playVideo(); }}
{ }
private:
void
playVideo()
{
}
};
unique_ptr<UringVideoPlayer>
launchPlayer (Gtk::Window& appWindow)
{
auto player = std::make_unique<UringVideoPlayer> (appWindow);
return player;
}
void
cleanUp (UringVideoPlayer& player)
{
}
int
main (int, const char*[])
{
return GtkUringApp<UringVideoPlayer>{"io-uring-demo"}
.onClick (launchPlayer)
.onClose (cleanUp)
.run();
}