gmg137 / netease-cloud-music-gtk

Linux 平台下基于 Rust + GTK 开发的网易云音乐播放器
GNU General Public License v3.0
1.57k stars 95 forks source link

Fix avatar and add singer page #216

Closed catsout closed 1 year ago

catsout commented 1 year ago

need https://github.com/gmg137/netease-cloud-music-api/pull/10

gmg137 commented 1 year ago

我对图片加载做了简单封装,对 git 玩的不是太明白,最后手动强制合并了分支😅

catsout commented 1 year ago

你这还不如不封装,只是把代码挪了下位置,而且挪得相当难看和麻烦。 我有些看不下去。

catsout commented 1 year ago

建议回退,哪怕不用 paintable ,就原来那样好了。

gmg137 commented 1 year ago

我不想用 paintable 主要是因为觉得为了加载个图片而另外多出两个文件不值得。而且整个加载逻辑过于复杂,可能我比较水看了好久也没明白 paintable 里边的下载触发逻辑。我做的封装其实只是想模仿你的用法,移动下代码,我也觉得没啥意义😂

catsout commented 1 year ago

多出两个文件不值得

就 gtk,这个应用用的ui库,https://gitlab.gnome.org/GNOME/gtk/-/tree/main/gtk
这文件多的可能会把浏览器卡死。

整个加载逻辑过于复杂

先不说是不是真复杂,github 不是有 review 功能吗,哪里有问题,对着代码加 review 就行了。

好久也没明白 paintable 里边的下载触发逻辑

维护了一个对应 id 的 gobject (NcmTexture)的 hashmap,对应 id 的 NcmPaintable 通过 connect 信号拿到加载完的 gdktexture.
NcmTexture 只保留 gdktexture 的 weakref,监听 gdktexture 的 dispose 来清理 hashmap.
这已经是简单的写法了,还可以让 NcmTexture 拥有 gdktexture,来写一些复杂的缓存机制.