ohos 5.0.2 双HDMI屏幕,副屏因Skia中副屏参数ClipRect求交集失败,副屏异显失败

传入下去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,这个该如何修改
您需要先 登录 才能评论/回答

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

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

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

2025-05-07 11:40:35
引用:“比如现在想知道5.0的代码是否支持双HDMI屏幕异显(双HDMI同显没问题),网上的例子都是mipi屏幕加HDMI,如果支持,是不是这里MapRect转换还是应该当成单个屏幕处理而不是偏移后的”
要不您当成单个屏幕处理试一下?

引用:“您好,能提供一下您在最上层调用的函数是什么吗?我看了下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转换还是应该当成单个屏幕处理而不是偏移后的

引用:“您好,能提供一下您在最上层调用的函数是什么吗?我看了下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,现在就是想解决副屏没送显的问题,调用应该是这里


引用:“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

b.fLeft在foundation框架下传下去的是0,0,1920,1080,经过skia的SKMatrixPriv::MapRect转换后就成了1920,0,3840,1080,尝试过屏蔽这个函数,往下走也会报错,现在就是没啥头绪,不知道是哪里不对
