| Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
Kludge for libavahi-client quirk.
|
|
Add the debug-only flag "virgin" which gets checked by assert()
calls. Fixes assertion failures when using zeroconf/avahi.
|
|
|
|
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.
|
|
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.
|
|
Reduce DeferredMonitor overhead.
|
|
Improved support for added events.
|
|
|
|
|
|
|
|
Now that the remaining known bugs in poll() implementation are fixed,
we can go on without the GLib implementation.
|
|
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.
|
|
|
|
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.
|
|
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().
|
|
|
|
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.
|
|
|
|
|
|
|
|
|
|
Implement an event loop without GLib.
|
|
Remove a GLib dependencies from class EventLoop and DatabaseLock.
|
|
Track which thread runs the EventLoop and provide a check whether
we're currently inside.
|
|
Prepare for adding more code.
|
|
|
|
|
|
|
|
No caller needs this. Fixes use-after-free after returning from
Client::OnTimeout().
|
|
|
|
|
|
|
|
|
|
|
|
Parses CUE data from the "CUESHEET" tag. Needs further integration in
the update thread.
|
|
Pass a callback table to scan_file() and scan_stream(), instead of
returning a tag object.
|
|
|
|
|
|
Based on the APE reader.
|
|
|
|
Don't call g_error(), which will abort the process and dump core.
|
|
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.
|
|
Renamed functions.
|
|
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.
|
|
Merged freeAllListenSockets() into closeAllListenSockets(), because
this is its only caller.
|
|
"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.
|
|
When there are standardized headers, use these instead of the bloated
os_compat.h.
|
|
Try to only include headers which are really needed. We should
particularly check all "headers including other headers". The
long-term goal is to have a manageable, small API for plugins
(decoders, output) without so many mpd internals cluttering the
namespace.
git-svn-id: https://svn.musicpd.org/mpd/trunk@7319 09075e82-0dd4-0310-85a5-a0d7c8717e4f
|