Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | | Directory: make some code generic, move to VarSize.hxx | Max Kellermann | 2014-01-07 | 4 | -10/+94 | |
| | | ||||||
* | | Directory: use g_malloc() instead of g_malloc0() | Max Kellermann | 2014-01-07 | 1 | -3/+4 | |
| | | | | | | | | Explicit attribute initialization. | |||||
* | | playlist/soundcloud: parse URI without copying it | Max Kellermann | 2014-01-07 | 1 | -19/+11 | |
| | | ||||||
* | | playlist/soundcloud: change scheme check to assertion | Max Kellermann | 2014-01-07 | 1 | -18/+2 | |
| | | | | | | | | The MPD core takes care for checking the scheme. | |||||
* | | playlist/soundcloud: eliminate nullptr checks before g_free() | Max Kellermann | 2014-01-07 | 1 | -8/+4 | |
| | | ||||||
* | | pcm/Utils: remove unused function pcm_end_pointer() | Max Kellermann | 2014-01-07 | 1 | -12/+0 | |
| | | ||||||
* | | pcm/Volume: use number of samples instead of end pointer | Max Kellermann | 2014-01-07 | 1 | -25/+19 | |
| | | ||||||
* | | pcm/Format: change parameters/return values to ConstBuffer | Max Kellermann | 2014-01-06 | 5 | -294/+191 | |
| | | ||||||
* | | pcm/Format: use number of samples instead of end pointer | Max Kellermann | 2014-01-06 | 1 | -44/+34 | |
| | | ||||||
* | | DecoderBuffer: _read() returns ConstBuffer object | Max Kellermann | 2014-01-06 | 3 | -68/+55 | |
| | | ||||||
* | | DecoderBuffer: add "pure" attributes | Max Kellermann | 2014-01-06 | 1 | -0/+4 | |
| | | ||||||
* | | DecoderBuffer: add method _clear() | Max Kellermann | 2014-01-06 | 3 | -8/+12 | |
| | | ||||||
* | | decoder/faad: make variables more local | Max Kellermann | 2014-01-06 | 1 | -47/+31 | |
| | | ||||||
* | | decoder/faad: eliminate local variable "ret" | Max Kellermann | 2014-01-06 | 1 | -5/+2 | |
| | | ||||||
* | | event/Loop: cancel the WakeFD monitor in destructor | Max Kellermann | 2014-01-06 | 1 | -0/+4 | |
| | | ||||||
* | | input/AlsaInputPlugin.cxx: use I/O thread to poll for available data | Steven O'Brien | 2014-01-06 | 1 | -55/+289 | |
| | | | | | | | | [mk: modified to use MultiSocketMonitor instead of SocketMonitor] | |||||
* | | event/MultiSocketMonitor: add method ClearSocketList() | Max Kellermann | 2014-01-06 | 3 | -1/+17 | |
| | | ||||||
* | | event/SocketMonitor: don't close the socket automatically | Max Kellermann | 2014-01-06 | 12 | -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. | |||||
* | | util/Cast: new utility library | Max Kellermann | 2014-01-06 | 4 | -2/+63 | |
| | | ||||||
* | | event/IdleMonitor: cancel in destructor only if active | Max Kellermann | 2014-01-06 | 1 | -1/+6 | |
| | | | | | | | | Debug-mode workaround for bogus assertion failure. | |||||
* | | event/MultiSocketMonitor: API documentation | Max Kellermann | 2014-01-06 | 1 | -0/+10 | |
| | | ||||||
* | | event/Loop: try to avoid the WakeFD when adding DeferredMonitor | Max Kellermann | 2014-01-05 | 2 | -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. | |||||
* | | event/Loop: combine multiple WakeFD::Write() calls | Max Kellermann | 2014-01-05 | 1 | -1/+6 | |
| | | | | | | | | Reduce DeferredMonitor overhead. | |||||
* | | event/Loop: add attribute "again" | Max Kellermann | 2014-01-05 | 2 | -2/+10 | |
| | | | | | | | | Improved support for added events. | |||||
* | | event/Loop: add thread-safety assertions | Max Kellermann | 2014-01-05 | 3 | -1/+30 | |
| | | ||||||
* | | output/httpd: move the clients.clear() call to the IOThread | Max Kellermann | 2014-01-05 | 1 | -1/+3 | |
| | | | | | | | | This call is not thread-safe. | |||||
* | | output/httpd: import GetEventLoop() | Max Kellermann | 2014-01-05 | 2 | -3/+5 | |
| | | ||||||
* | | ClientList: use "delete" instead of Client::Close() | Max Kellermann | 2014-01-05 | 1 | -2/+8 | |
| | | | | | | | | | | Client::Close() installs a TimeoutMonitor, which is not something we should do during shutdown. | |||||
* | | event/Loop: remove obsolete assertion | Max Kellermann | 2014-01-05 | 1 | -2/+0 | |
| | | ||||||
* | | event/Loop: move code to HandleDeferred() | Max Kellermann | 2014-01-05 | 2 | -8/+19 | |
| | | ||||||
* | | event/MultiSocketMonitor: add missing <algorithm> include | Max Kellermann | 2014-01-05 | 1 | -0/+2 | |
| | | | | | | | | For std::find_if(). | |||||
* | | event/MultiSocketMonitor: add method ReplaceSocketList() | Max Kellermann | 2014-01-05 | 3 | -18/+43 | |
| | | | | | | Move code from AlsaMixerPlugin. | |||||
* | | event/MultiSocketMonitor: include cleanup | Max Kellermann | 2014-01-05 | 2 | -8/+1 | |
| | | ||||||
* | | event/Loop: remove the GLib implementation | Max Kellermann | 2014-01-04 | 13 | -722/+22 | |
| | | | | | | | | | | Now that the remaining known bugs in poll() implementation are fixed, we can go on without the GLib implementation. | |||||
* | | output/httpd: move Bind()/Unbind() to the IOThread | Max Kellermann | 2014-01-04 | 1 | -4/+8 | |
| | | | | | | | | Fixes more thread-safety bugs. | |||||
* | | event/poll: eliminate one vector::size() call | Max Kellermann | 2014-01-04 | 1 | -2/+3 | |
| | | ||||||
* | | output/httpd: move all broadcast operations to the IOThread | Max Kellermann | 2014-01-04 | 2 | -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. | |||||
* | | output/httpd: use the IOThread | Max Kellermann | 2014-01-04 | 1 | -2/+2 | |
| | | | | | | | | | | Do all I/O in the IOThread and not in the main thread. This solves an upcoming deadlock problem. | |||||
* | | output/httpd: move queue size check to HttpdClient::PushPage() | Max Kellermann | 2014-01-04 | 3 | -18/+6 | |
| | | | | | | | | Don't let the server care for client problems. | |||||
* | | output/httpd: wrap the std::list in std::queue | Max Kellermann | 2014-01-04 | 2 | -6/+16 | |
| | | ||||||
* | | output/httpd: merge duplicate code to ClearQueue() | Max Kellermann | 2014-01-04 | 2 | -5/+15 | |
| | | ||||||
* | | output/httpd: keep track of queue size | Max Kellermann | 2014-01-04 | 2 | -13/+14 | |
| | | | | | | | | Don't iterate the std::list each time. | |||||
* | | event/Loop: remove bogus "!quit" assertion | Max Kellermann | 2014-01-04 | 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. | |||||
* | | event/Loop: remove unused method AddCall() | Max Kellermann | 2014-01-04 | 2 | -28/+0 | |
| | | ||||||
* | | event/Loop: non-recursive Break() implementation | Max Kellermann | 2014-01-04 | 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. | |||||
* | | mixer/alsa: use DeferredMonitor to update file descriptors | Max Kellermann | 2014-01-04 | 1 | -14/+7 | |
| | | | | | | | | | | EventLoop::AddCall() and EventLoop::AddIdle() are unsafe, because we can't cancel those calls. | |||||
* | | event/BlockingCall: always use DeferredMonitor internally | Max Kellermann | 2014-01-04 | 1 | -24/+0 | |
| | | | | | | | | | | There is no advantage of using EventLoop::AddCall(), now that DeferredMonitor is thread-safe. | |||||
* | | event/DeferredMonitor: make fully thread-safe | Max Kellermann | 2014-01-04 | 4 | -54/+77 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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(). | |||||
* | | Added application key for soundcloud plugin | James McGlashan (DarkFox) | 2014-01-04 | 1 | -1/+2 | |
| | | ||||||
* | | Added soundcloud documentation | James McGlashan (DarkFox) | 2014-01-04 | 1 | -0/+41 | |
| | |