屏幕 IOSurface 缓冲区/IOSurfaceGetSeed 种子未更新

问题描述

我目前正在尝试修复 "screendump" 调整中的错误。问题是,当通过 VNC 连接时,它通常运行良好。但是,在某些情况下,它不会更新 VNC 中的图像,尽管物理屏幕已更改。这主要发生在键盘显示在下方时。因此,它在物理屏幕上可见,但不会在 VNC 中更新。有时有效,有时无效。

我已检查此 location 处的代码如下:

uint32_t newSeed = IOSurfaceGetSeed(screenSurface);
        
if(oldSeed != newSeed && rfbIsActive(screen)) {
    oldSeed = newSeed;
    [q addOperationWithBlock: ^{
        IOSurfaceAcceleratorTransferSurface(accelerator,screenSurface,static_buffer,NULL,NULL);
        rfbMarkRectAsModified(screen,width,height);
        }];
    }

似乎 screenSurface 的内部缓冲区没有更新,因为从 IOSurfaceGetSeed 检索到的种子值在描述的情况下没有改变。即使删除了种子检查,它也不起作用。

任何想法如何强制更新缓冲区?或者其他方式来阅读屏幕?

系统:iOS 13,jb

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...