diff options
| author | Matthias Melcher <github@matthiasm.com> | 2025-11-28 00:55:48 +0100 |
|---|---|---|
| committer | Matthias Melcher <github@matthiasm.com> | 2025-11-28 00:55:57 +0100 |
| commit | ee43155a4bedc6f9e2eafd2e2af00b85e92ad2be (patch) | |
| tree | 1279a2526cbaf14a4db0e3efcf53dbb53d75d065 /src | |
| parent | 6568f60ab8ccb5df88826a9e9184d48a1c124843 (diff) | |
Add method to list running timeouts (#1306).
\see Fl::timeout_list();
Diffstat (limited to 'src')
| -rw-r--r-- | src/Fl.cxx | 8 | ||||
| -rw-r--r-- | src/Fl_Timeout.cxx | 11 | ||||
| -rw-r--r-- | src/Fl_Timeout.h | 1 |
3 files changed, 20 insertions, 0 deletions
diff --git a/src/Fl.cxx b/src/Fl.cxx index 22ad0353a..c470f95e3 100644 --- a/src/Fl.cxx +++ b/src/Fl.cxx @@ -448,6 +448,14 @@ int Fl::remove_next_timeout(Fl_Timeout_Handler cb, void *data, void **data_retur return Fl_Timeout::remove_next_timeout(cb, data, data_return); } +/** + Return a list of all currently running timeouts. + \return a vector with all relevant timeout data +*/ +std::vector<Fl::TimeoutData> Fl::timeout_list() { + return Fl_Timeout::timeout_list(); +} + //////////////////////////////////////////////////////////////// // Checks are just stored in a list. They are called in the reverse diff --git a/src/Fl_Timeout.cxx b/src/Fl_Timeout.cxx index 9aa89b839..4ba8a0f63 100644 --- a/src/Fl_Timeout.cxx +++ b/src/Fl_Timeout.cxx @@ -344,6 +344,17 @@ int Fl_Timeout::remove_next_timeout(Fl_Timeout_Handler cb, void *data, void **da return ret; } +std::vector<Fl::TimeoutData> Fl_Timeout::timeout_list() { + std::vector<Fl::TimeoutData> v; + const Fl_Timeout *t = first_timeout; + while (t) { + v.push_back( { t->time, t->callback, t->data } ); + t = t->next; + } + return v; +} + + /** Remove the timeout from the active timer queue and push it onto the stack of currently running callbacks. diff --git a/src/Fl_Timeout.h b/src/Fl_Timeout.h index 9d9cc2337..279935a71 100644 --- a/src/Fl_Timeout.h +++ b/src/Fl_Timeout.h @@ -109,6 +109,7 @@ public: static void repeat_timeout(double time, Fl_Timeout_Handler cb, void *data); static void remove_timeout(Fl_Timeout_Handler cb, void *data); static int remove_next_timeout(Fl_Timeout_Handler cb, void *data = NULL, void **data_return = NULL); + static std::vector<Fl::TimeoutData> timeout_list(); // Elapse timeouts, i.e. calculate new delay time of all timers. // This does not call the timer callbacks. |
