Commit Graph

1322 Commits

Author SHA1 Message Date
Max Kellermann d0f6131ba4 output/Interface: allow Pause() to throw exception
Coverity discovered that the Pulse plugin could throw exceptions from
Pause(), but that method was marked "noexcept" because its caller was
not designed to catch exceptions.  So instead of avoiding exceptions
(by catching and logging them in each and every implementation), let's
allow them, and do the catch/log game in the MPD core.
2017-09-08 14:45:53 +02:00
Max Kellermann 91438b6540 output/Interface: the default Pause() implementation fails
Fixes regression from commit 31bad5f7af:
if Pause() returns true, the output thread is running a busy loop,
causing 100% CPU usage, instead of just closing the output.

Closes #105
2017-08-31 15:02:15 +02:00
Matthew Leon aa9c6062b0 Merge branch 'v0.20.x' into master
contains OSX mixer
2017-08-22 10:36:37 +01:00
Matthew Leon 5fb39658f1 OSX mixer 2017-08-21 20:05:50 +01:00
Max Kellermann 9d0a71f245 output/Jack: add "noexcept" 2017-08-11 12:41:11 +02:00
Max Kellermann ff1b435232 output/Jack: reorder methods 2017-08-11 12:39:42 +02:00
Max Kellermann 33b4114534 system/fd_util: remove unused library 2017-08-11 09:20:15 +02:00
Max Kellermann 3c7c0515d8 output/oss: use class FileDescriptor 2017-08-10 19:42:23 +02:00
Max Kellermann df5cc3f0f6 fs/FileSystem: OpenFile() returns UniqueFileDescriptor 2017-08-10 19:34:52 +02:00
Max Kellermann 9a5bcc6db0 net/ServerSocket: pass UniqueSocketDescriptor&& to OnAccept() 2017-08-10 19:20:14 +02:00
Max Kellermann 492b20a89d event/SocketMonitor: use class SocketDescriptor 2017-08-10 19:19:58 +02:00
Max Kellermann fcfc8bacc0 output/httpd: remove obsolete accept() error check 2017-08-10 19:19:53 +02:00
Max Kellermann 54de8b8e77 net/*, ...: use AF_LOCAL instead of AF_UNIX 2017-08-10 13:12:13 +02:00
Max Kellermann a257504ba4 mixer/Plugin: pass AudioOutput to init()
Fix breakage from commit bea5681fd8
2017-08-10 13:07:36 +02:00
Max Kellermann 31bad5f7af output/Interface: convert to abstract class
Yet another C-style vtable replaced with C++.
2017-08-10 09:01:41 +02:00
Max Kellermann 1cf7f3d87c output/Solaris: use class FileDescriptor 2017-08-10 08:56:56 +02:00
Max Kellermann 9c9a9ccd5c output/Interface: convert to class, make attributes private 2017-08-09 17:03:07 +02:00
Max Kellermann 7381236de6 output/Interface: remove unused attribute "parent" 2017-08-09 17:03:00 +02:00
Max Kellermann bea5681fd8 output/Interface: define a new struct AudioOutput
Hide struct FilteredAudioOutput from the plugins, preparing for hiding
MPD's core internals.
2017-08-08 18:58:40 +02:00
Max Kellermann e11229494e output/Filtered: add method NeedFullyDefinedAudioFormat()
Avoid accessing FilteredAudioFormat attributes directly.
2017-08-08 18:57:59 +02:00
Max Kellermann ccc0fcb5b7 output/Shout: move ConfigureShoutAudioInfo() call to Open()
Configure the AudioFormat after opening the encoder, because only now
we know the final format.
2017-08-08 18:56:14 +02:00
Max Kellermann 6e24381962 output/Shout: move code to ShoutSetAudioInfo() 2017-08-08 18:56:12 +02:00
Max Kellermann 3ab905644d output/Shout: open the encoder first, then open connection
This order will be necessary for proper AudioFormat initialization,
because the encoder may change the format.
2017-08-08 18:53:04 +02:00
Max Kellermann f46d545307 output/Shout: pass shout_t* to shout_connect() 2017-08-08 18:52:03 +02:00
Max Kellermann 8134b0073b output/Shout: move write_page() into the struct 2017-08-08 18:47:37 +02:00
Max Kellermann 6ab19c7ef2 output/Shout: pass shout_t* to handle_shout_error() 2017-08-08 18:47:30 +02:00
Max Kellermann d22361f7c7 output/Shout: remove unnecessary nullptr check 2017-08-08 18:47:02 +02:00
Max Kellermann 06c7e55188 output/Filtered: add methods SupportsEnableDisable(), SupportsPause() 2017-08-08 15:54:49 +02:00
Max Kellermann b3eb8489f3 output/Filtered: add a few OutputPlugin method wrappers 2017-08-08 14:27:19 +02:00
Max Kellermann 5431fca99b output/Filtered: add attribute "log_name" 2017-08-08 14:02:58 +02:00
Max Kellermann 47c9d6ac64 output/Internal: rename source to Filtered.cxx 2017-08-07 21:50:13 +02:00
Max Kellermann d0157af13e filter/Internal: rename struct AudioOutput to FilteredAudioOutput
Prepare to add an abstract class AudioOutput, to be implemented by
plugins, to get rid of the C-style vtable.
2017-08-07 18:47:39 +02:00
Max Kellermann fc04620519 output/Internal: move code to ConfigureConvertFilter() 2017-08-07 18:42:10 +02:00
Max Kellermann d4ee165253 output/Thread: move OpenSoftwareMixer() to the end
This call cannot fail, but needs cleanup if others fail.  By moving it
to the end, we eliminate some cleanup.
2017-08-07 18:42:09 +02:00
Max Kellermann 4f7f577a57 output/Internal: add OpenSoftwareMixer()
Moved code from AudioOutputControl::InternalOpen2().
2017-08-07 18:33:07 +02:00
Max Kellermann 612def5c11 output/Internal: rename CloseFilter() to CloseSoftwareMixer() 2017-08-07 18:32:43 +02:00
Max Kellermann b8be7ec90e filter/Normalize: add normalize_filter_prepare() 2017-08-07 18:28:52 +02:00
Max Kellermann a3d71f4b91 filter/Convert: add convert_filter_prepare() 2017-08-07 18:27:00 +02:00
Max Kellermann 9250819b75 filter/Volume: add volume_filter_prepare()
Circumvent filter_new() with a fake ConfigBlock.
2017-08-07 18:23:13 +02:00
Max Kellermann 04738636ca output/Finish: fold internal function into FinishDestroy() 2017-08-07 18:15:15 +02:00
Max Kellermann 07d1b3780d output/Control: move two AudioOutput methods to Finish.cxx 2017-08-07 18:13:57 +02:00
Max Kellermann 27d68d8fdd output/Internal: move the Mutex to struct AudioOutputControl
struct AudioOutput should not know or care about multi-threading.
2017-08-07 17:44:46 +02:00
Max Kellermann 546b773b21 output/Internal: remove mutex code from Close() 2017-08-07 17:43:58 +02:00
Max Kellermann 15dcaeda0f output/Internal: remove mutex code from BeginPause(), IteratePause() 2017-08-07 17:40:40 +02:00
Max Kellermann 8f42ba13ef output/Internal: simplify "return" statements in IteratePause() 2017-08-07 17:40:13 +02:00
Max Kellermann 5990017d51 output/Internal: remove mutex code from Enable() and Disable() 2017-08-07 17:39:20 +02:00
Max Kellermann 3197c0fd7d output/Thread: move code to InternalCloseOutput() 2017-08-07 17:35:43 +02:00
Max Kellermann 4580c685f1 output/Thread: unlock the mutex for several AudioOutput calls 2017-08-07 17:08:49 +02:00
Max Kellermann 67232453d4 output/Control: more locking information in API docs 2017-08-07 16:56:41 +02:00
Max Kellermann b4cce80727 output/Thread: move code to InternalClose() 2017-08-07 16:34:29 +02:00