fix(lyric/bt): ①桌面歌词页封面不显示修复(根因:歌词页从不画封面+scrim逐秒叠涂压黑→新增np_draw_lyric_coverbg封面背景+1s整页重绘;播放页封面宿实证非批5破坏) ②alsa.conf pcm.bluealsa DEV自动识别(bt_dev.c:audiod BT打开时bluealsa-cli检测a2dpsrc设备幂等改写DEV=保留codec/ldac_eqmid等);test_bt_dev 14/14,0warning

This commit is contained in:
AskaEth committed 2026-09-03 22:36:17 +08:00
1 parent ef6eca86b1
commit 8c165bb8e6
6 files changed
+359 -13

No files matched your search

+25 -9
View File
@@ -291,6 +291,19 @@ static void np_lyric_refresh(const meow_media_session_t *s)
g_np_lyric_last_valid = valid;
}
/* 歌词页封面作整页背景:等比 cover 到 max(W, H-SB_BAR_H) 方块、居中铺满内容区(裁剪溢出
* 部分),衬在 lyric_view 半透明 scrim 之下形成压暗封面;无封面不画(回退渐变/主题面)。
* 批6:批5 只铺渐变、从不画封面 → 歌词页无封面;此处补上封面背景,取色只做附加。 */
static void np_draw_lyric_coverbg(int W, int H)
{
if (!g_np_cover) return;
int size = W > (H - SB_BAR_H) ? W : (H - SB_BAR_H);
int x = (W - size) / 2;
int y = SB_BAR_H + (H - SB_BAR_H - size) / 2;
if (y < SB_BAR_H) y = SB_BAR_H;
meow_ui_img_cover(x, y, size, g_np_cover);
}
/* 歌词页整页绘制:铺封面取色渐变(或 theme surface)底 → lyric_view(自绘 scrim + 歌词/空态)。 */
static void np_draw_lyric_page(int redraw_sb)
{
@@ -298,13 +311,17 @@ static void np_draw_lyric_page(int redraw_sb)
int W = fb_xres, H = fb_yres;
if (!g_np_init) np_widgets_create();
if (redraw_sb) fill_rect(0, 0, W, SB_BAR_H, th->surface);
/* 批5:封面取色背景(主→次渐变)或主题面;并注入歌词页 set_colors。 */
/* 批5:封面取色背景(主→次渐变)或主题面;并注入歌词页 set_colors。
* 批6:有封面时以封面作整页背景(衬在 lyric_view 半透明 scrim 之下),取色只做附加;
* 无封面回退渐变/主题面。 */
np_cover_theme_update();
if (g_np_cc_valid)
np_apply_lyric_colors();
if (g_np_cover)
np_draw_lyric_coverbg(W, H);
else if (g_np_cc_valid)
np_fill_gradient(0, SB_BAR_H, W, H - SB_BAR_H, g_np_cc.bg_top, g_np_cc.bg_bottom);
else
fill_rect(0, SB_BAR_H, W, H - SB_BAR_H, th->surface);
np_apply_lyric_colors();
np_lyric_refresh(meow_media_current());
if (g_np_lyric)
meow_widget_draw(meow_lyric_view_widget(g_np_lyric));
@@ -607,12 +624,11 @@ void run_now_playing(struct app *apps, int napps)
/* 进度推进(按页分流):播放页=进度带+按钮;歌词页=歌词实时滚动重绘(当前行随 pos)。 */
last_prog = now;
if (g_np_page == NP_PAGE_LYRIC) {
np_lyric_refresh(s);
if (g_np_lyric) {
meow_widget_draw(meow_lyric_view_widget(g_np_lyric));
meow_dirty_add(0, SB_BAR_H, fb_xres, fb_yres - SB_BAR_H);
meow_ui_flush();
}
/* 批6:整页重绘(封面背景+scrim+歌词),避免 lyric_view 半透明 scrim 每 1s
* 叠涂把封面/背景逐秒压黑(批4 既有「只重绘控件不重铺背景」结构修正)。 */
np_draw_lyric_page(0);
meow_dirty_add(0, SB_BAR_H, fb_xres, fb_yres - SB_BAR_H);
meow_ui_flush();
} else {
np_repaint_progress();
}