mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 23:17:45 +00:00
Port Terminal to LibGUI.
To facilitate listening for action on arbitrary file descriptors, I've added a GNotifier class. It's quite simple but very useful: GNotifier notifier(fd, GNotifier::Read); notifier.on_ready_to_read = [this] (GNotifier& fd) { // read from fd or whatever else you like :^) }; The callback will get invoked by GEventLoop when select() says we have something to read on the fd.
This commit is contained in:
parent
ae4811fbae
commit
53d34a0885
15 changed files with 268 additions and 151 deletions
|
@ -1,11 +1,13 @@
|
|||
#pragma once
|
||||
|
||||
#include "GEvent.h"
|
||||
#include <AK/Badge.h>
|
||||
#include <AK/HashMap.h>
|
||||
#include <AK/OwnPtr.h>
|
||||
#include <AK/Vector.h>
|
||||
|
||||
class GObject;
|
||||
class GNotifier;
|
||||
class GWindow;
|
||||
struct GUI_Event;
|
||||
|
||||
|
@ -27,6 +29,9 @@ public:
|
|||
int register_timer(GObject&, int milliseconds, bool should_reload);
|
||||
bool unregister_timer(int timer_id);
|
||||
|
||||
void register_notifier(Badge<GNotifier>, GNotifier&);
|
||||
void unregister_notifier(Badge<GNotifier>, GNotifier&);
|
||||
|
||||
void exit(int);
|
||||
|
||||
private:
|
||||
|
@ -64,4 +69,5 @@ private:
|
|||
};
|
||||
|
||||
HashMap<int, OwnPtr<EventLoopTimer>> m_timers;
|
||||
HashTable<GNotifier*> m_notifiers;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue