如何解决屏幕 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 举报,一经查实,本站将立刻删除。