Recent Adwaita icon theme changed "power-profile" icons which were
used for speed status. Since new ones do not fit our usage, bundle
icons that do, so they will be always loaded.
Fixes#570
Ensure that drop list target is always cleared when drop finishes
or no longer needed. Handle cases where there is no drop target
such as dragging into empty queue (just append items then).
Fixes#435
In cases where audio file is played, there may not be separate global tags due to
only single stream. In this cases we should also use stream tags as if they were
global ones, but at the same time prioritize global tags if any are available.
Change veriable name which controls whether tags can be overwritten
to "allow_overwrite" instead of using "from_user".
This prepares code for the forthcoming changes where stream scope
tags can be allowed in some cases.
Suggesting "possible" type does not always work as intended, since lots
of text might be determined as "text/plain" due to higher probability.
We should give at least a "likely" typefind result instead of "possible",
but in order for that lets also check some more lines of playlist just to
be safe when announcing likeness.
Have a separate compile option to disable them like GLib does.
This way we can define it across libs and apps to have them all be quiet.
This is done to avoid messages about legacy features that are left
for compatibility or fallback purposes.
Sometimes property might return a subclass type when object is subclassed.
This especially happens with custom GdkPaintable implementations.
For this reason instead of comparing object type, check if it inherits what we want.
When seeking to a marker position, logic always used NORMAL seek method since
FAST would be too inaccurate. This is fine, but when user sets preferred seek
method to ACCURATE we should use it always (including seeks to marker positions).
Sometimes data is similar and can be determined to be a playlist
by NOT including some specific syntax (e.g. HLS). For this reason
add ability to define an exclusion requirement for playlist parsers.
Similar to queue alternation functions present in reactable, also
add ones for timeline alternations as these are a must for non-newly
created items.
For consistency, remove auto thread switching logic from insert/remove
functions in ClapperTimeline object. Such behavior is unexpected and
I feel it could lead to potential issues such as deadlocks.
It was ported to Clapper Enhancers repo as a plugin called "Control Hub"
for better clarity what it does. Applications using old one should slowy
move towards using new implementation instead.
Slight cleanup related to media item construction.
Also fixes an issue where item ID was not being set when
created with g_object_new (what bindings usually use).
In cases where there are multiple objects resolving a playlist at once
(e.g. player starts playing playlist item that Media Scanner also works on),
just ignore parsing results from the other parser. We keep/use parsing
results from whichever parser parsed the playlist first.
Instead of doing this inside player, logic was reworked and moved into playlist demuxer
itself. It uses GstQueries to communicate with upstream elements. This way we can post
an error from running pipeline which helps keep this logic in single place and have it
shared with other pipelines (like the one used in Media Scanner Enhancer).
As part of the rework, nested playlist limit was added and set to 10 redirects.
Seems like a safe/optimal number and this simplifies stuff a lot. Instead of
keeping a list of strings with previous redirected URIs, we can just store the
one most recent in media item.
Fixes a problem where error message from unplayable URI content
(e.g. non-existing file) arrives on pipeline bus before resolved
playlist which contains that URI.
With this change, a playlist can be resolved into individual items
which are put into queue even if first item of it is unplayable.