aboutsummaryrefslogtreecommitdiffstats
path: root/src (unfollow)
Commit message (Collapse)AuthorFilesLines
2014-01-07util/Alloc: new library replacing GLib's g_malloc()Max Kellermann19-57/+208
2014-01-07DecoderBuffer: use NewVarSize()Max Kellermann1-13/+10
2014-01-07tag/TagPool: use NewVarSize() to allocate TagPoolSlotMax Kellermann1-21/+27
2014-01-07tag/TagPool: rename struct slot to TagPoolSlotMax Kellermann1-14/+13
2014-01-07tag/TagPool: use gcc_packed instead of mpd_packedMax Kellermann1-1/+1
By accident, this declared a global variable instead of adding the "packed" attribute.
2014-01-07Directory: make some code generic, move to VarSize.hxxMax Kellermann3-10/+93
2014-01-07Directory: use g_malloc() instead of g_malloc0()Max Kellermann1-3/+4
Explicit attribute initialization.
2014-01-07playlist/soundcloud: parse URI without copying itMax Kellermann1-19/+11
2014-01-07playlist/soundcloud: change scheme check to assertionMax Kellermann1-18/+2
The MPD core takes care for checking the scheme.
2014-01-07playlist/soundcloud: eliminate nullptr checks before g_free()Max Kellermann1-8/+4
2014-01-07pcm/Utils: remove unused function pcm_end_pointer()Max Kellermann1-12/+0
2014-01-07pcm/Volume: use number of samples instead of end pointerMax Kellermann1-25/+19
2014-01-06pcm/Format: change parameters/return values to ConstBufferMax Kellermann3-259/+160
2014-01-06pcm/Format: use number of samples instead of end pointerMax Kellermann1-44/+34
2014-01-06DecoderBuffer: _read() returns ConstBuffer objectMax Kellermann3-68/+55
2014-01-06DecoderBuffer: add "pure" attributesMax Kellermann1-0/+4
2014-01-06DecoderBuffer: add method _clear()Max Kellermann3-8/+12
2014-01-06decoder/faad: make variables more localMax Kellermann1-47/+31
2014-01-06decoder/faad: eliminate local variable "ret"Max Kellermann1-5/+2
2014-01-06event/Loop: cancel the WakeFD monitor in destructorMax Kellermann1-0/+4
2014-01-06input/AlsaInputPlugin.cxx: use I/O thread to poll for available dataSteven O'Brien1-55/+289
[mk: modified to use MultiSocketMonitor instead of SocketMonitor]
2014-01-06event/MultiSocketMonitor: add method ClearSocketList()Max Kellermann3-1/+17
2014-01-06event/SocketMonitor: don't close the socket automaticallyMax Kellermann12-21/+20
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-06util/Cast: new utility libraryMax Kellermann3-2/+62
2014-01-06event/IdleMonitor: cancel in destructor only if activeMax Kellermann1-1/+6
Debug-mode workaround for bogus assertion failure.
2014-01-06event/MultiSocketMonitor: API documentationMax Kellermann1-0/+10
2014-01-05event/Loop: try to avoid the WakeFD when adding DeferredMonitorMax Kellermann2-2/+24
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-05event/Loop: combine multiple WakeFD::Write() callsMax Kellermann1-1/+6
Reduce DeferredMonitor overhead.
2014-01-05event/Loop: add attribute "again"Max Kellermann2-2/+10
Improved support for added events.
2014-01-05event/Loop: add thread-safety assertionsMax Kellermann3-1/+30
2014-01-05output/httpd: move the clients.clear() call to the IOThreadMax Kellermann1-1/+3
This call is not thread-safe.
2014-01-05output/httpd: import GetEventLoop()Max Kellermann2-3/+5
2014-01-05ClientList: use "delete" instead of Client::Close()Max Kellermann1-2/+8
Client::Close() installs a TimeoutMonitor, which is not something we should do during shutdown.
2014-01-05event/Loop: remove obsolete assertionMax Kellermann1-2/+0
2014-01-05event/Loop: move code to HandleDeferred()Max Kellermann2-8/+19
2014-01-05event/MultiSocketMonitor: add missing <algorithm> includeMax Kellermann1-0/+2
For std::find_if().
2014-01-05event/MultiSocketMonitor: add method ReplaceSocketList()Max Kellermann3-18/+43
Move code from AlsaMixerPlugin.
2014-01-05event/MultiSocketMonitor: include cleanupMax Kellermann2-8/+1
2014-01-04event/Loop: remove the GLib implementationMax Kellermann12-664/+3
Now that the remaining known bugs in poll() implementation are fixed, we can go on without the GLib implementation.
2014-01-04output/httpd: move Bind()/Unbind() to the IOThreadMax Kellermann1-4/+8
Fixes more thread-safety bugs.
2014-01-04event/poll: eliminate one vector::size() callMax Kellermann1-2/+3
2014-01-04output/httpd: move all broadcast operations to the IOThreadMax Kellermann2-11/+76
Add a Page queue to class HttpdOutput, and use DeferredMonitor to flush this queue inside the IOThread. This fixes a thread-safety issue: much of EventLoop is not thread-safe, and the httpd plugin ignored that problem.
2014-01-04output/httpd: use the IOThreadMax Kellermann1-2/+2
Do all I/O in the IOThread and not in the main thread. This solves an upcoming deadlock problem.
2014-01-04output/httpd: move queue size check to HttpdClient::PushPage()Max Kellermann3-18/+6
Don't let the server care for client problems.
2014-01-04output/httpd: wrap the std::list in std::queueMax Kellermann2-6/+16
2014-01-04output/httpd: merge duplicate code to ClearQueue()Max Kellermann2-5/+15
2014-01-04output/httpd: keep track of queue sizeMax Kellermann2-13/+14
Don't iterate the std::list each time.
2014-01-04event/Loop: remove bogus "!quit" assertionMax Kellermann1-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-04event/Loop: remove unused method AddCall()Max Kellermann2-28/+0
2014-01-04event/Loop: non-recursive Break() implementationMax Kellermann1-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.