讨论广场 问答详情
ohos 5.0.2 双HDMI屏幕,副屏因Skia中副屏参数ClipRect求交集失败,副屏异显失败
zhou55253366 2025-05-06 17:15:24
135 评论 分享

传入下去rect通过SkMatrixPriv::MapRect转成b.fLeft 1920, b.fTop 0, b.fRight 3840, b.fBottom 1080

fClipBounds本身为a.fLeft 0, a.fTop 0, a.fRight 1920, a.fBottom 1080, 

导致fClipBounds.intersect得到的tmpRect为tmp.fLeft 1920, tmp.fTop 0, tmp.fRight 1920, tmp.fBottom 1080,width为0,跟踪上面传下来的canves中只有宽高,fClipBounds的左上默认0,0,这个该如何修改

135 评论 分享
写回答
全部评论(10)
4 楼

rk3568在5.1.0版本上确认扩展屏可以显示,可以使用这个应用测试下。你对比下社区代码和你的代码有什么更改的。

multiscreendisplaydemo.7z
下载
2025-05-08 10:00:09
2025-05-23 18:19:10
大佬你好,我在我的ohos5.0.2上使用你给的应用测试,不同应用多屏异显这个选项中,不管我选择的那个显示设备,显示的应用都在我的主屏上打开,我的副屏还是卡在开机logo,这个有解决方法吗
2025-05-23 18:19:10

调整fClipBounds的左上默认0,0没有任何意义,因为b.fLeft值为1920,所以两者的最大值一定最小也是1920

2025-05-07 11:44:16

您好,fClipBounds的左上默认0,0,在求交集时左和上都是取最大值,所以如果你想求出的结果width不为0,应该调整传入下去rect转换的b.fLeft值小于1920吧

2025-05-07 11:40:35
2025-05-07 16:43:18
引用:“比如现在想知道5.0的代码是否支持双HDMI屏幕异显(双HDMI同显没问题),网上的例子都是mipi屏幕加HDMI,如果支持,是不是这里MapRect转换还是应该当成单个屏幕处理而不是偏移后的”
要不您当成单个屏幕处理试一下?
2025-05-07 16:43:18
2025-05-07 14:59:07
引用:“您好,能提供一下您在最上层调用的函数是什么吗?我看了下MapRect函数,skia的SKMatrixPriv::MapRect转换后就成了1920,0,3840,1080好像是因为这个函数接收的SKM44类型的参数为[1, 0, 0, 1920] [0, 1, 0, 0] [0, 0, 1, 0] [0, 0, 0, 1]导致整体在计算后整体向右位移了1920,因此fLeft和fRight的值都增”
比如现在想知道5.0的代码是否支持双HDMI屏幕异显(双HDMI同显没问题),网上的例子都是mipi屏幕加HDMI,如果支持,是不是这里MapRect转换还是应该当成单个屏幕处理而不是偏移后的
2025-05-07 14:59:07
2025-05-07 14:55:35
引用:“您好,能提供一下您在最上层调用的函数是什么吗?我看了下MapRect函数,skia的SKMatrixPriv::MapRect转换后就成了1920,0,3840,1080好像是因为这个函数接收的SKM44类型的参数为[1, 0, 0, 1920] [0, 1, 0, 0] [0, 0, 1, 0] [0, 0, 0, 1]导致整体在计算后整体向右位移了1920,因此fLeft和fRight的值都增”
因为是两个屏幕,主屏0,0,1920,1080,副屏1920,0,1920,1080,现在就是想解决副屏没送显的问题,调用应该是这里
2025-05-07 14:55:35
2025-05-07 14:29:48
引用:“b.fLeft在foundation框架下传下去的是0,0,1920,1080,经过skia的SKMatrixPriv::MapRect转换后就成了1920,0,3840,1080,尝试过屏蔽这个函数,往下走也会报错,现在就是没啥头绪,不知道是哪里不对”
您好,能提供一下您在最上层调用的函数是什么吗?我看了下MapRect函数,skia的SKMatrixPriv::MapRect转换后就成了1920,0,3840,1080好像是因为这个函数接收的SKM44类型的参数为[1, 0, 0, 1920] [0, 1, 0, 0] [0, 0, 1, 0] [0, 0, 0, 1]导致整体在计算后整体向右位移了1920,因此fLeft和fRight的值都增加了1920
2025-05-07 14:29:48
2025-05-07 13:44:57
b.fLeft在foundation框架下传下去的是0,0,1920,1080,经过skia的SKMatrixPriv::MapRect转换后就成了1920,0,3840,1080,尝试过屏蔽这个函数,往下走也会报错,现在就是没啥头绪,不知道是哪里不对
2025-05-07 13:44:57

明天让负责display的同事帮你看一下

2025-05-06 17:28:39