Age | Commit message (Collapse) | Author |
|
This reworks the sort algorithm used in smart shuffle so that episodes
are spread out evenly, which avoids episodes bunching up at the bottom
of the queue when one feed has more episodes than others, and avoids
running through feeds with few episodes very quickly.
Signed-off-by: Stephen Kitt <steve@sk2.org>
|
|
|
|
Fixed some integration tests
|
|
The Android internal media player blocks its `start()` call until the
seek listener completes. The seek listener is called on the main thread
even though `start()` is called on the executor. This makes the main
thread wait for the lock and the executor (which has the lock) wait for the
main thread to finish the call to the listener.
|
|
The cover fragment would hide both podcast and episode names in small
screen devices or multi-window mode.
This replaces the deprecated PercentRelativeLayout in favor of a regular
LinearLayout with weights to make sure that each section of the fragment
(podcast title, image, episode name) will have the necessary space in
the screen.
Since PercentRelativeLayout was only being used here, it also removes
the dependencies from the gradle files.
Closes: #3169
|
|
|
|
|
|
|
|
|
|
Fixed threading bugs in Sonic
|
|
|
|
Callbacks are called on the thread that created the MediaPlayer.
For Sonic, this is the executor. For ExoPlayer, this is the main thread.
When calling executor.submit, every thread waiting for the runnable to
complete gets blocked.
Because the callback is called in the thread that created the player,
we can simply remove the call to executor.submit and still be sure
that a background thread is used.
|
|
|
|
|
|
|
|
|
|
|
|
Fix padding when count is zero and error happened
|
|
This is especially helpful for episodes that have a large number of
chapters.
Closes: #2853
|
|
Apple says this [1] about the `<itunes:duration>` tag:
If you specify a single number as a value (without colons), Apple
Podcasts displays the value as seconds.
This commit makes it also handle this single-number format.
Closes: #3024
[1]: https://help.apple.com/itc/podcasts_connect/#/itcb54353390
|
|
This makes it easier to test the logic of parsing duration strings.
References: #3024
|
|
When we're not able to get the episode count for a podcast and updating
the feed fails, the error icon shown in the navbar is too close to the
right/end border of the nav drawer.
This fixes this padding.
Closes: #2982
|
|
References: #3024
|
|
Simplify empty view handling on recycler views
|
|
Fixed NPE when selected item is null
|
|
Added names for threads
|
|
So it is easier to identify problems in bug reports
|
|
The method is called again with a valid listAdapter automatically
Closes #3154
|
|
|
|
|
|
Closes #3145
|
|
Fixed empty list not receiving updates
|
|
|
|
Fix thrown exceptions when adding/removing podcasts
|
|
RxJava 2.x no longer accepts `null` values and will yield a
`NullPointerException` immediately or as a signal to downstream [1].
This returns an Optional<Feed> instead to avoid errors.
[1]: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#nulls
|
|
This is useful when media is paused
|
|
|
|
convert time depending on current playback speed and preferences
|
|
|
|
When adding certain podcasts [1], a `LeakedClosableViolation` is thrown
due to the fact that we're reusing the OkHttpClient to make multiple
requests (one to get the iTunes toplist for the user's language, and
another one defaulting to US).
This makes sure that all requests are closed to prevent this exception,
according to OkHttp docs [2].
[1]: https://podcasts.apple.com/us/podcast/stupid-genius-with-emma-chamberlain/id1458568923
[2]: https://github.com/square/okhttp/blob/18f2b5e/okhttp/src/main/java/okhttp3/Call.kt#L32-L40
|
|
|
|
|
|
|
|
|
|
Closes #3138
|
|
|
|
|
|
Prepare 1.7.2 release
|
|
Cleanup compiler warnings
|
|
Pre-Launch-Report
|