Commit message (Collapse) | Author | Files | Lines | ||
---|---|---|---|---|---|
2015-01-01 | Copyright year 2015 | Max Kellermann | 1 | -1/+1 | |
2014-12-14 | event/Loop: read the "again" flag while holding mutex | Max Kellermann | 1 | -1/+2 | |
2014-02-05 | event/Loop: remove the dummy constructor argument | Max Kellermann | 1 | -1/+1 | |
2014-01-13 | copyright year 2014 | Max Kellermann | 1 | -1/+1 | |
2014-01-09 | event/Loop: allow AddTimer() after Run() has returned | Max Kellermann | 1 | -1/+3 | |
Kludge for libavahi-client quirk. | |||||
2014-01-09 | event/Loop: allow scheduling events before Run() | Max Kellermann | 1 | -4/+13 | |
Add the debug-only flag "virgin" which gets checked by assert() calls. Fixes assertion failures when using zeroconf/avahi. | |||||
2014-01-06 | event/Loop: cancel the WakeFD monitor in destructor | Max Kellermann | 1 | -0/+4 | |
2014-01-06 | event/SocketMonitor: don't close the socket automatically | Max Kellermann | 1 | -3/+0 | |
Users now have to call Close() explicitly. This simplifies using the class, as most users have automatic socket management already, and Steal() had to be used often. | |||||
2014-01-05 | event/Loop: try to avoid the WakeFD when adding DeferredMonitor | Max Kellermann | 1 | -2/+16 | |
Add a flag that indicates whether the EventLoop is currently "busy". As long as that flag is set, it does not need to be woken up - we can simply add the DeferredMonitor to the list, and it will be caught by EventLoop very soon. This eliminates nearly all of the DeferredMonitor overhead when compared to IdleMonitor, rendering IdleMonitor mostly obsolete. | |||||
2014-01-05 | event/Loop: combine multiple WakeFD::Write() calls | Max Kellermann | 1 | -1/+6 | |
Reduce DeferredMonitor overhead. | |||||
2014-01-05 | event/Loop: add attribute "again" | Max Kellermann | 1 | -2/+4 | |
Improved support for added events. | |||||
2014-01-05 | event/Loop: add thread-safety assertions | Max Kellermann | 1 | -0/+16 | |
2014-01-05 | event/Loop: remove obsolete assertion | Max Kellermann | 1 | -2/+0 | |
2014-01-05 | event/Loop: move code to HandleDeferred() | Max Kellermann | 1 | -8/+12 | |
2014-01-04 | event/Loop: remove the GLib implementation | Max Kellermann | 1 | -48/+0 | |
Now that the remaining known bugs in poll() implementation are fixed, we can go on without the GLib implementation. | |||||
2014-01-04 | event/Loop: remove bogus "!quit" assertion | Max Kellermann | 1 | -5/+3 | |
Commit 1f11959 allowed modifying the "quit" attribute from any thread, and thus the assertion may fail spuriously. This assertion is too strict for the relaxed use of "quit". Let's remove it and move the "quit" check to before the SockedMonitor::Dispatch() call. | |||||
2014-01-04 | event/Loop: remove unused method AddCall() | Max Kellermann | 1 | -19/+0 | |
2014-01-04 | event/Loop: non-recursive Break() implementation | Max Kellermann | 1 | -4/+2 | |
Simply set the "quit" flag and wake up the thread. This works even if we're inside this thread. Setting "quit" to a new value without mutex protection is usually not safe, but good enough here. | |||||
2014-01-04 | event/DeferredMonitor: make fully thread-safe | Max Kellermann | 1 | -0/+51 | |
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-11-28 | event: introduce generic API for internal event loop | Denis Krjuchkov | 1 | -27/+14 | |
2013-11-27 | Add infrastructure for using multiple event loops | Denis Krjuchkov | 1 | -5/+18 | |
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-11-06 | event/SocketMonitor: add method Abandon() | Max Kellermann | 1 | -2/+7 | |
2013-10-28 | *: use nullptr instead of NULL | Max Kellermann | 1 | -1/+1 | |
2013-10-15 | system/clock: convert to C++ | Max Kellermann | 1 | -4/+4 | |
2013-08-10 | EventLoop: initialise the thread id explicitly | Max Kellermann | 1 | -1/+2 | |
2013-08-10 | EventLoop: new implementation using epoll | Max Kellermann | 1 | -0/+196 | |
Implement an event loop without GLib. | |||||
2013-08-10 | thread/Id: new class replacing GThread pointers | Max Kellermann | 1 | -3/+3 | |
Remove a GLib dependencies from class EventLoop and DatabaseLock. | |||||
2013-08-08 | EventLoop: add methodd IsInside() | Max Kellermann | 1 | -0/+5 | |
Track which thread runs the EventLoop and provide a check whether we're currently inside. | |||||
2013-08-08 | EventLoop: un-inline Run() and others | Max Kellermann | 1 | -21/+23 | |
Prepare for adding more code. | |||||
2013-08-07 | event/DeferredMonitor: rename Run() to RunDeferred() | Max Kellermann | 1 | -2/+2 | |
2013-08-07 | event/DeferredMonitor: use EventLoop::AddIdle() | Max Kellermann | 1 | -1/+1 | |
2013-08-07 | event/DeferredMonitor: new class wrapping g_idle_add() | Max Kellermann | 1 | -22/+16 | |
2013-04-08 | event/TimeoutMonitor: eliminate support for periodic events | Max Kellermann | 1 | -9/+5 | |
No caller needs this. Fixes use-after-free after returning from Client::OnTimeout(). | |||||
2013-01-14 | event/TimeoutMonitor: wrapper for g_timeout_source_new() | Max Kellermann | 1 | -23/+31 | |
2013-01-03 | Client: rename the struct client to class Client | Max Kellermann | 1 | -3/+3 | |
2013-01-03 | client: convert to C++ | Max Kellermann | 1 | -3/+3 | |
2012-02-14 | command: move functions to protocol/result.c | Max Kellermann | 1 | -14/+30 | |
2012-02-12 | update_remove: add header update_remove.h | Max Kellermann | 1 | -9/+13 | |
2012-02-12 | playlist/embcue: new plugin for reading embedded cue sheets | Max Kellermann | 1 | -11/+8 | |
Parses CUE data from the "CUESHEET" tag. Needs further integration in the update thread. | |||||
2012-02-11 | decoder_plugin: scan tags with callback table | Max Kellermann | 1 | -0/+5 | |
Pass a callback table to scan_file() and scan_stream(), instead of returning a tag object. | |||||
2012-02-11 | decoder/vorbis: move code to vorbis_comment.c | Max Kellermann | 1 | -4/+7 | |
2011-01-29 | copyright year 2011 | Max Kellermann | 1 | -1/+1 | |
2010-11-18 | replay_gain_ape: parse replay gain from APE tags | Max Kellermann | 1 | -7/+5 | |
Based on the APE reader. | |||||
2009-12-31 | Update copyright notices. | Avuton Olrich | 1 | -1/+1 | |
2009-09-24 | listen: handle fatal errors with GError | Max Kellermann | 1 | -1/+6 | |
Don't call g_error(), which will abort the process and dump core. | |||||
2009-03-13 | all: Update copyright header. | Avuton Olrich | 1 | -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-02-24 | listen: no CamelCase | Max Kellermann | 1 | -3/+3 | |
Renamed functions. | |||||
2008-12-30 | main: use the GLib main loop | Max Kellermann | 1 | -7/+0 | |
This is a rather huge patch, which unfortunately cannot be splitted. Instead of using our custom ioops.h library, convert everything to use the GLib main loop. | |||||
2008-12-30 | listen: eliminated freeAllListenSockets() | Max Kellermann | 1 | -1/+0 | |
Merged freeAllListenSockets() into closeAllListenSockets(), because this is its only caller. | |||||
2008-10-31 | added prefix to header macros | Max Kellermann | 1 | -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. |