-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[pull] master from MusicPlayerDaemon:master #23
Conversation
This eliminates the ScopeExchangeInputStreamHandler kludge.
First step towards fixing #2186
If we only receive very little data from the InputStream, try a second Read() call to get more data. This works around tiny reads at input buffer boundaries with the io_uring input plugin. These tiny reads are inefficient, and we can afford to wait one more low-level I/O iteration to finish (but not more). Closes #2186
…atorType&) to DereferenceIterator and TerminatedArray::iterator It is required by std::distance and some std algos.
To only allow construction as part of TagPoolItem with its special var size allocator in TagPoolItem::Create.
Some streams send the same tags frequently, causing unnecessary player queue update events.
…am tag not changed. Some streams send the same tags frequently, causeing unnecessary update events.
For FFmpeg's DTS-WAV support, see code comment. Closes #2158
These commands cannot possibly work with command lists because command lists are supposed to be atomic, but suspended command execution conflicts with that. Closes #2167
release v0.23.17
Time was only in minutes before. Seconds is more useful in analyzing the log for example with issues of timeouts, and reponse times.
Regression by commit ab011ad
We don't want to get any completion events for "close". It's fire-and-forget.
Reviewer's Guide by SourceryThis pull request introduces several enhancements and bug fixes, primarily focusing on improving I/O handling with io_uring, adding new features, and refactoring existing code for better performance and maintainability. It includes changes to the event loop, input streams, and tag handling, along with updates to the build process and documentation. Sequence diagram for improved buffer handling in AsyncInputStreamsequenceDiagram
participant Client
participant AsyncInputStream
participant Buffer
Client->>AsyncInputStream: Read()
AsyncInputStream->>Buffer: Read()
alt buffer not empty
Buffer-->>AsyncInputStream: data
AsyncInputStream-->>Client: data
else buffer empty
Buffer-->>AsyncInputStream: empty
AsyncInputStream->>Buffer: Clear()
Note right of Buffer: Reset head and tail
AsyncInputStream->>AsyncInputStream: Wait for more data
end
Class diagram for Ring and Queue classesclassDiagram
class Ring {
-io_uring ring
+Ring(entries: unsigned, flags: unsigned)
+Ring(entries: unsigned, params: io_uring_params&)
+~Ring()
+SetMaxWorkers(values[2]: unsigned)
+SetMaxWorkers(bounded: unsigned, unbounded: unsigned)
+Submit()
+SubmitAndGetEvents()
+WaitCompletion()
+PeekCompletion()
}
class Queue {
-Ring ring
+Queue(entries: unsigned, flags: unsigned)
+Queue(entries: unsigned, params: io_uring_params&)
+SetMaxWorkers(values[2]: unsigned)
+SetMaxWorkers(bounded: unsigned, unbounded: unsigned)
+SubmitAndGetEvents()
+DispatchOneCompletion()
+DispatchCompletions()
}
Queue --> Ring
Class diagram for Tag and TagItem classesclassDiagram
class TagItem {
+TagType type
+char value[1]
+bool operator==(const TagItem&)
-TagItem()
}
class Tag {
+double duration
+bool has_playlist
+unsigned num_items
+bool operator==(const Tag&)
+Clear()
}
Tag --> TagItem : contains
State diagram for EventLoop with Next eventsstateDiagram-v2
[*] --> Running
Running --> ProcessingTimers: Handle Timers
ProcessingTimers --> ProcessingEvents: Process Events
ProcessingEvents --> ProcessingDeferred: Process Deferred
ProcessingDeferred --> ProcessingIdle: Process Idle
ProcessingIdle --> ProcessingNext: Process Next
ProcessingNext --> WaitingForEvents: Wait
WaitingForEvents --> Running: New Event
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
Hard-Coded Secrets (2)
More info on how to fix Hard-Coded Secrets in General. 👉 Go to the dashboard for detailed results. 📥 Happy? Share your feedback with us. |
See Commits and Changes for more details.
Created by pull[bot] (v2.0.0-alpha.1)
Can you help keep this open source service alive? 💖 Please sponsor : )
Summary by Sourcery
New Features: