Commits at dfc4cec070e86691d767ed699c08ae6c6815df11
dfc4cec0macos: Display loading UI during extension authorization
It has been unclear what it's doing and what a user should do.
Shota FUJI
authored at
Shota FUJI
comitted at
8b8802c2macos: Display now playing texts (title and artist, mostly)
Shota FUJI
authored at
Shota FUJI
comitted at
9e6bf7bfmacos: Fix more than one element in array crashes application
I don't know how I got to that iteration code, but the
`UnsafePointer<T>.successor` is NOT a method to iterate over an array.
<https://codeberg.org/pocka/plac/issues/17>
Shota FUJI
authored at
Shota FUJI
comitted at
065d06d6core: Print debug log on macOS build
Ideally, integrating OSLog is the best. However, it's time-consuming and
a lot of work needs to be done. This is good for now.
Shota FUJI
authored at
Shota FUJI
comitted at
8fdfb08dgtk-adwaita: Remove "develop build" style from window
Even though there is some missing features (search and disconnect menu
option,) it's usable for my day-to-day usage. Now all concurrency and
memory bugs are fixed, this is the best timing to remove WIP label.
Shota FUJI
authored at
Shota FUJI
comitted at
5ed1b013core: Give WS read and event handlers dedicated threads
<https://codeberg.org/pocka/plac/issues/16>
Parsing and handling incoming message in the same thread that reads
WebSocket message from socket sometime drops WebSocket message, due to
the thread being busy. This redesign solves that by separating reading
and parsing/handling using dedicated threads.
Although volume change operation now feels little bit sluggish, no more
dropped response. Every operation is working correctly.
Shota FUJI
authored at
Shota FUJI
comitted at
12dfcdb9core: Fix potential race condition
Extremely rare, though (I saw only once.)
Shota FUJI
authored at
Shota FUJI
comitted at
03235177core: Output request ID on control request send log
"/control" endpoint suffers response loss as well as "/change_volume"
endpoint. Request ID helps debugging this, because it's visible on data
payload in Wireshark.
Shota FUJI
authored at
Shota FUJI
comitted at
05a6f716gtk-adwaita: Volume controls
While "it works," user experience is not great. For some reason,
response for "/change_volume" got lost even though my machine sees a TCP
packet. I also see this at "/control" endpoint too. However, "/seek"
endpoint, which is called more frequently, does not encounter this.
Most likely application problem given my experience on low-level
programming, but it could be packet issue (Roon Server) or transport
layer issue (websocket.zig or Linux?) I don't know, really.
Shota FUJI
authored at
Shota FUJI
comitted at
ba20af71gtk-adwaita: Connect to server directly via IP address and port
UDP multicast/broadcast is unreliable, especially in my environment
where Roon server (or the machine hosting it) randomly stops responding
to discovery query. Direct connection is really instant and I believe
this would improve normal UX too.
Shota FUJI
authored at
Shota FUJI
comitted at
4b536649core: Function to discovery server by IP address
Roon Server or my server machine reject replying to UDP
multicast/broadcast after several attempts. This functionality can be a
good way to avoid UDP multicast and broadcast issues.
Shota FUJI
authored at
Shota FUJI
comitted at
117a5ffagtk-adwaita: Fix "Zone" dropdown button stretched vertically
Shota FUJI
authored at
Shota FUJI
comitted at
e0f94d58gtk-adwaita: Fix duplicated requests sent after reconnection
<https://codeberg.org/pocka/plac/issues/13>
Establishing a new connection registers a new callback to various
signals without disconnecting stale ones, thus 1+(number of
reconnections) requests have been made.
Shota FUJI
authored at
Shota FUJI
comitted at
9de7aad5gtk-adwaita: Make playback toolbar layout tidier
It has been unorgnaized and scattered due to unaligned elements and
chaotic spacings.
Shota FUJI
authored at
Shota FUJI
comitted at
2fa47b61gtk-adwaita: Fix playback toolbar size changes depends on track text
If a track A contains non-Ascii text in title/subtitle and a track B
does not, changing A to B or vice-versa causes height change for
playback toolbar. This is because GTK.Label does not implement correct
line-height handling, as it seems to simply calculate the height using
the first font family and ignoring fallback fonts. Due to the lack of
proper API on GTK (propbably also on Pango,) I opted to hard-code
maximum size on each Gtk.Label.
<https://codeberg.org/pocka/plac/issues/9>
Shota FUJI
authored at
Shota FUJI
comitted at
b6093bebcore: Fix random crash on opening a page having images
This patch fixes random crash caused by race condition (use after free
and unexplainable memory errors such as malloc in glib,) by properly
guarding accesses to image download queue.
Inside `while` loop reading the downloads queue, it read without lock
and that caused reading of freed memory (`d == undefined`), thus
operations like `d.data.arc.ref()` and `allocator.destroy(d)` to be
invalid.
Because the race condition occurs on downloads queue, opening browse
page with massive items (200~) has been crashed the app frequently
compared to small number of items (~50). Also, longer the image takes to
load, more likely the crash to happens. So streaming service's browse
page is more prone to crash than local library.
With this change, I don't see random crash on Qobuz pages anymore.
In addition, for some mysterious reason, images load faster than before.
Definetely previous implementation did something wrong, as adding a lock
does not make things faster but slower...
<https://codeberg.org/pocka/plac/issues/15>
Shota FUJI
authored at
Shota FUJI
comitted at
3e838e95gtk-adwaita: Buttons to seek forward/backwards by 10 seconds
Seekbar is not comfortable to use.
Why 10 seconds, not 5 seconds? Because Adwaita has icons for 10 seconds
but 5 seconds.
Shota FUJI
authored at
Shota FUJI
comitted at
412d59f0gtk-adwaita: Fix cannot drag seekbar
<https://codeberg.org/pocka/plac/issues/14>
This is still not optimal, though. Ideally changes should debounce or
throttle to reduce the number of request. But this works without
crashing.
Shota FUJI
authored at
Shota FUJI
comitted at
9b107f4agtk-adwaita: Workaround for Roon API returns "[[id|text]]" labels
Shota FUJI
authored at
Shota FUJI
comitted at
e54e5874core: Label parsing function
Roon API returns "[[id|text]]" format strings for title and subtitles on
some browse paths. For example, in my environment, "Explore > Qobuz >
New Releases > Qobuz grand selection" returns items with subtitle in
this format, like "[[969850|Wes Montgomery]]". I don't think we'll get a
fix for this--Roon API is abandoned. Each client has to parse and throw
IDs and brackets away.
Shota FUJI
authored at
Shota FUJI
comitted at
63589eaagtk-adwaita: Remove useless function call
Also Vala compiler has been emitting a warning that the variable is
unused.
Shota FUJI
authored at
Shota FUJI
comitted at