Closed Eitetsu0 closed 1 year ago
@Eitetsu0 我最近没有改过图片显示的功能,在mac上也没有出现过类似的问题。
最好是多试几个版本,然后找到具体是哪一次提交有问题。
因为你也修改过里面的内容,我不想花很多时间去排查,最后发现是其他的问题导致的。
不太稳定的复现步骤: 在外接显示器(25601440)打开wiliwili 过一段时间,期间有各种操作。 把wiliwili转移到内置显示器(28801800) 这时候从全屏状态退出,或者重新进入播放页,有概率出现。
变白块的按钮如果按下没有变化的,白块不会消失,比如这个全屏按钮。
切换到全屏再切回来,它还是白的。
嗯,我再观察一下。 这边网络不太好,2楼的补充半天没发出去,发到3楼了😂。
另外理论上去掉这个背景色属性,有导致这个问题的可能吗?
我建议可以试一试之前的版本,看看哪个版本100%不会出问题。
按道理应该是不会影响到图标的
@Eitetsu0 这个问题涉及到的代码在:
当svg图片组件加载时,如果当前有纹理绑定会去缓存管理处给这个纹理的引用-1,然后查询有没有同文件地址已经生成的纹理,如果有那么直接使用这个纹理,该纹理的引用+1。如果没有就正常设置加载纹理,并去缓存管理处注册。
在修改分辨率后(对应上面的代码),svg图片会重新加载图片。(按照上面说明,重新加载图片的过程就包含了现有纹理的注销和新分辨率纹理的产生)
如果,一个图片组件绑定的纹理已经被注销了,那么就会出现图中的白色
如果出现问题,那么最应该在任何一次修改分辨率之后稳定出现,不过也不排除高频率修改分辨率的情况下出现问题(不过修改分辨率应该有debounce设计,不会高频率触发)。也可以测试看看,出现问题后拉动窗口大小,会不会导致白框消失。
这一次提交更新过很多库,可以测试看看他之前和之后有没有问题:https://github.com/xfangfang/wiliwili/commit/15850ad91d21d7b7794a8b10ccbc8678675919e4
main.cpp 中将log开到 verbose,可以看到图片缓存命中或者加载的log,同时也可以提供这样的log看看。
另外一个就是设置中的图片缓存大小,这个如果自己在设置中手动调整过(直接改配置文件的那种),也不排除会出现问题。
如果认为之前的版本没问题,那么最简单的方式就是找到哪两次提交的代码存在差异,不然在我没办法验证的情况下是几乎没办法排查的。
我太菜了,对于C++几乎没有实际经验。分析代码对我来讲有点力不从心了😹 。
比较尴尬的是这是个概率出现的问题,而且似乎更新到 9aea67f 后,出现的概率相当低了,今天开了一天也没再出现。上次出现时我发的issue ,貌似是我好几天没关了。 所以详细log可能要过很久才能看到... 不过补充一点:出现一次之后,只要不退出,就可以一直复现。另外,默认的log里什么都没有。
配置文件我手动改过的只有 "player_hwdec_custom": "auto",
这一项,我想应该不会有影响吧。
嘛..等后续出现我再反馈。
终于复现了。
本次复现步骤:
打开一个视频,全屏播放 各种拖动窗口大小 按鼠标右键退出全屏模式
出现这个问题之后,再进播放页,就会一直出现随机的图标白块,如图。
log(出现问题后,退出到首页,从首页点击视频开始,到暂停播放截图画面为止):
@Eitetsu0
出现这个问题之后,再进播放页,就会一直出现随机的图标白块,如图
问题是在退出全屏后立刻出现的吗?
”随机的图标白块“指的是某个位置的图片时而正常显示时而显示白色吗?
补充:
你的配置文件中 texture_cache_num
值是多少? (去配置文件中查看,不要看应用显示的内容)
@Eitetsu0 再补充一条,有没有全部的log可以看呀?
没有 texture_cache_num
这一项
我重启了一下应用,想存个完整log,结果同样步骤又不复现了:joy_cat:
之前的log是我在终端里运行直接复制的,三天时间了超过终端保存的历史记录长度了,然后刚刚丢掉了。。。
退出全屏后即发现部分图标变白块。 此时,退出播放页,重新进入,白块还会出现。
随机出现是说,每次出现的白块图标不是固定的那几个。有时候是这几个白,有时候是那几个变白。
@Eitetsu0 这里 “每次” 指的是,几次出现问题的情况间不同 还是 同一次出现问题时每当进入播放页都会出现随机位置的白块
出现问题后,不退出应用,重新打开播放页,变白块的图标会不同。我暂时没发现有规律。
@Eitetsu0 感谢详细反馈,我暂时也不太清楚这个原因(但是反馈的内容已经足够排除一些问题了),或者下次可以多记录一些log看看。
@Eitetsu0 我添加了一个新的分支 https://github.com/xfangfang/wiliwili/tree/fix_cache ,专门来处理这个问题。
这个分支修复了 在 svg图片组件销毁时会出现的 纹理引用次数可能被多减去一次的问题。
重新加载页面时,某些情况下就会因此而出现图片正在引用中的情况下,引用次数却为0。在这种情况下如果缓存队列不够用了,就会出现把正在使用的纹理清空,也就是图片变白了。
但是感觉可能又不能很好的解释你那边发生的问题,所以我还设置了在播放器上按 F1 显示详情时,会从log中不断输出当前图片缓存的状态,如果还会出现相似的问题,可以按F1显示一下状态,这样看log就更能掌握情况了。
注意子模块 borealis 也有对应的修改,拉代码的时候不要忽视子模块的更新。
出现了一次,这次是看番的时候手动切集时出现的。 这次记录了完整log (把开头的账号信息删掉了)。 版本暂时仍然是 https://github.com/xfangfang/wiliwili/commit/9aea67fb25018f8adb6ccec142618346aca86199 。
log是用script记录的,所以保留了终端的颜色代码什么的,可能比较乱。 不过直接用 less 在终端打开倒是能看到彩色文本。
@Eitetsu0 之后可以再测试看看我新提交的代码了
已切换分支。 从上次回复到现在,问题一直没有出现。 修复了?:thinking:
已切换分支。 从上次回复到现在,问题一直没有出现。 修复了?🤔
感觉很有可能,虽然我也没想明白到底是怎么触发的
哈哈哈:joy::joy: 我在用几天试试看
一直没有出问题,应该是修复了。
(Linux + Wayland)
如图,部分图标变成白块。只在播放页面出现,全屏的时候也没有出现过。 按钮的话,点一下图标会恢复,比如这个播放按钮。 另外我按这里 https://github.com/xfangfang/wiliwili/issues/116#issuecomment-1529599020 删掉了![sc_20230512_19:47:15](https://github.com/xfangfang/wiliwili/assets/6576065/33cc6bcf-ac2f-4c4d-b2f6-a4e7b342f27e)
backgroundColor
属性 ,不知道有没有关系。似乎是最近几次提交后才出现的问题。