aboutsummaryrefslogtreecommitdiffstats
path: root/src/event/DeferredMonitor.cxx (follow)
Commit message (Collapse)AuthorAgeFilesLines
* copyright year 2014Max Kellermann2014-01-131-1/+1
|
* event/Loop: remove the GLib implementationMax Kellermann2014-01-041-35/+0
| | | | | Now that the remaining known bugs in poll() implementation are fixed, we can go on without the GLib implementation.
* event/DeferredMonitor: make fully thread-safeMax Kellermann2014-01-041-18/+2
| | | | | | | | | | | | | Instead of creating a new eventfd for each DeferredMonitor instance, reuse EventLoop's eventfd, and add a std::list to EventLoop that manages the list of pending DeferredMonitors. This std::list is protected by the same mutex as the "calls" list. The bottom line is: reduced overhead because the per-instance eventfd was eliminated, slightly added overhead due to Mutex usage (but negligible), and we're thread-safe now. This subsystem is now good enough to replace EventLoop::AddCall().
* Add infrastructure for using multiple event loopsDenis Krjuchkov2013-11-271-6/+10
| | | | | | | | | | | | This change adds two configuration options: --with-eventloop=[glib|internal|auto] --with-pollmethod=[epoll|auto] First allows switching between GLib event loop and internal one. Second chooses backend to use for internal event loop. Conditional compilation symbols are changed accordingly. Additional helper macro MPD_OPTIONAL_FUNC_NODEF is added as well.
* EventLoop: new implementation using epollMax Kellermann2013-08-101-0/+26
| | | | Implement an event loop without GLib.
* event/DeferredMonitor: rename Run() to RunDeferred()Max Kellermann2013-08-071-2/+2
|
* event/DeferredMonitor: use EventLoop::AddIdle()Max Kellermann2013-08-071-1/+1
|
* event/DeferredMonitor: new class wrapping g_idle_add()Max Kellermann2013-08-071-0/+55