aboutsummaryrefslogtreecommitdiffstats
path: root/src/event/DeferredMonitor.hxx (unfollow)
Commit message (Collapse)AuthorFilesLines
2015-01-01Copyright year 2015Max Kellermann1-1/+1
2014-11-25event/DeferredMonitor: include cleanupMax Kellermann1-3/+0
2014-04-26DeferredMonitor: fix race condition when using GLib event loopMax Kellermann1-1/+4
Turns out the lock-free code using atomics was not thread-safe. The given callback could be invoked by GLib before the source_id attribute was assigned. This commit changes the DeferredMonitor class to use a Mutex to block the event loop until source_id is assigned. This bug does not exist in the 0.19 branch because it does not use the GLib main loop anymore.
2014-01-13copyright year 2014Max Kellermann1-1/+1
2014-01-04event/Loop: remove the GLib implementationMax Kellermann1-23/+0
Now that the remaining known bugs in poll() implementation are fixed, we can go on without the GLib implementation.
2014-01-04event/DeferredMonitor: make fully thread-safeMax Kellermann1-36/+7
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().
2013-12-31event/*Monitor: document as not being thread-safeMax Kellermann1-0/+3
2013-11-27Add infrastructure for using multiple event loopsDenis Krjuchkov1-14/+25
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.
2013-10-15gcc.h: rename to Compiler.hMax Kellermann1-1/+1
2013-08-10EventLoop: new implementation using epollMax Kellermann1-1/+37
Implement an event loop without GLib.
2013-08-08event/*Monitor: add method GetEventLoop()Max Kellermann1-0/+4
2013-08-07event/DeferredMonitor: rename Run() to RunDeferred()Max Kellermann1-2/+2
2013-08-07event/DeferredMonitor: use EventLoop::AddIdle()Max Kellermann1-2/+6
2013-08-07event/DeferredMonitor: new class wrapping g_idle_add()Max Kellermann1-17/+14
2013-04-08event/TimeoutMonitor: eliminate support for periodic eventsMax Kellermann1-5/+2
No caller needs this. Fixes use-after-free after returning from Client::OnTimeout().
2013-01-14event/TimeoutMonitor: wrapper for g_timeout_source_new()Max Kellermann1-11/+29
2013-01-14InotifyQueue: convert to a classMax Kellermann1-6/+16
2013-01-03InotifyQueue: use std::deque instead of GSListMax Kellermann1-1/+1
2013-01-02update: convert to C++Max Kellermann1-3/+3
2011-01-29copyright year 2011Max Kellermann1-1/+1
2009-12-31Update copyright notices.Avuton Olrich1-1/+1
2009-09-25automatically update the database with Linux inotifyMax Kellermann1-6/+7
This patch implements a light-weight inotify library, and watches all directories below the music directory. It updates all directories where files changed after a delay of 5 seconds.
2009-03-13all: Update copyright header.Avuton Olrich1-6/+7
This updates the copyright header to all be the same, which is pretty much an update of where to mail request for a copy of the GPL and the years of the MPD project. This also puts all committers under 'The Music Player Project' umbrella. These entries should go individually in the AUTHORS file, for consistancy.
2009-01-18state_file: added state_file_init() and state_file_finish()Max Kellermann1-1/+6
The constructor/destructor interface should hide the functions read_state_file() and write_state_file().
2009-01-18state_file: include cleanupMax Kellermann1-2/+0
2009-01-03state_file: errors are non-fatal in read_state_file()Max Kellermann1-1/+0
If the state file cannot be read, for whatever reason, don't abort MPD. The state file isn't _that_ important.
2008-12-02replaced mpd_noreturn by G_GNUC_NORETURNThomas Jansen1-2/+2
We want to remove gcc.h eventually. This takes care of all the G_GNUC_NORETURN macros.
2008-10-31added prefix to header macrosMax Kellermann1-2/+2
"LOG_H" is a macro which is also used by ffmpeg/log.h. This is ffmpeg's fault, because short macros should be reserved for applications, but since it's always a good idea to choose prefixed macro names, even for applications, we are going to do that in MPD.
2008-01-03Cleanup #includes of standard system headers and put them in one placeEric Wong1-2/+0
This will make refactoring features easier, especially now that pthreads support and larger refactorings are on the horizon. Hopefully, this will make porting to other platforms (even non-UNIX-like ones for masochists) easier, too. os_compat.h will house all the #includes for system headers considered to be the "core" of MPD. Headers for optional features will be left to individual source files. git-svn-id: https://svn.musicpd.org/mpd/trunk@7130 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2007-04-05The massive copyright updateAvuton Olrich1-1/+1
git-svn-id: https://svn.musicpd.org/mpd/trunk@5834 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-30Standardize state_file handling routines.Eric Wong1-6/+8
This way it's easier to manage and extend. git-svn-id: https://svn.musicpd.org/mpd/trunk@4494 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-20Add mpd-indent.shAvuton Olrich1-2/+2
Indent the entire tree, hopefully we can keep it indented. git-svn-id: https://svn.musicpd.org/mpd/trunk@4410 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-14Change shank's email addressJ. Alexander Treuman1-1/+1
git-svn-id: https://svn.musicpd.org/mpd/trunk@4333 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-14[CLEANUP] Remove closeCharSetConversion from theAvuton Olrich1-2/+0
header, there's no need to export it. Static it. git-svn-id: https://svn.musicpd.org/mpd/trunk@4330 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2006-07-13Huge header update, update the copyright and addAvuton Olrich1-1/+1
the GPL header where necessary git-svn-id: https://svn.musicpd.org/mpd/trunk@4317 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-11-03remove vim &*(@Warren Dukes1-1/+0
git-svn-id: https://svn.musicpd.org/mpd/trunk@2500 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-17actually, scratch the last changeWarren Dukes1-1/+1
git-svn-id: https://svn.musicpd.org/mpd/trunk@1524 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-06-17check in configure script if iconv() needs CONSTWarren Dukes1-1/+1
git-svn-id: https://svn.musicpd.org/mpd/trunk@1523 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-04-14add vim shiznit to end of all source filesWarren Dukes1-0/+1
git-svn-id: https://svn.musicpd.org/mpd/trunk@750 09075e82-0dd4-0310-85a5-a0d7c8717e4f
2004-03-18bunch of autotool cleanupsWarren Dukes1-0/+2
git-svn-id: https://svn.musicpd.org/mpd/trunk@271 09075e82-0dd4-0310-85a5-a0d7c8717e4f