UOS+KIRIN截屏出错研究

简介: UOS+KIRIN截屏出错研究

泰OFFICE有个BUG,说在UOS+KIRIN系统上,截屏卡死。在KYLIN和其他UOS上,则正常。这么怪异的问题,当然很难解决。只能由吾出场,从JDK角度来看看。


 使用的是Robot进行屏幕。于是吾进行跟踪,出错顺序依次是:


Robot.createScreenCapture()

XRobotPeer.getRGBPixels

XRobotPeer.getRGBPixelsImpl()

awt_Robot.c:getRGBPixelsImpl

 这里已经是C了。在这里进行跟踪,发现是compositeGetOverlayWindow导致的。吾仔细想了半天,莫非是窗口产生了没有释放?那找找有没有对应的释放函数。别说,还真找到了一个释放函数:XCompositeGetOverlayWindow。加上之后,果然不死了。


https://www.linuxhowtos.org/manpages/3/XCompositeGetOverlayWindow.htm


 不死的问题解决了,拿到的是黑屏,也就是没有得到数据。于是又进行了跟踪。


awt_Robot.c:getWindowImage

multiVis.c:ReadAreaToImage

通过对比正确顺序,发现:正确的时候XGetImage()返回结果,错误的时候为NULL。


于是进行了修改:如果有数据设置一个标志;返回时根据标志来决定返回对象还是NULL。


为什么没有数据呢?这个没有进一步分析。


 实际上这个系统也能截屏。不知道是系统版本问题(比如UI不一样)?还是显卡适配问题?

目录
相关文章
|
测试技术 Android开发
autojs横屏截图的正确姿势
牙叔教程 简单易懂
3253 0
|
Rust IDE NoSQL
Clion2022安装破解与激活教程,亲测可用
CLion是JetBrains公司旗下发布的一款跨平台C/C++/Rust IDE开发工具。
13210 1
|
前端开发 Java 数据安全/隐私保护
深入理解 Spring MVC Controller —— 请求参数获取
前言 接上篇《深入理解 Spring MVC Controller —— 请求映射》,上篇主要介绍了处理器方法及请求映射的定义。有了处理器方法 Spring MVC 就可以对请求进行处理,有了请求映射 Spring MVC 就能知道哪些请求应该由哪些处理器方法来处理。
1038 0
深入理解 Spring MVC Controller —— 请求参数获取
PDF-XChange 注册码
PDF-XChange Viewer Pro 注册码: User Name     : Team EAT Organization   : EATiSO Email address : teameat@no_email.com Key code         : PXP50-6TUFA-Z4R48-3H1KG-IXM7Z-6TLLP PDF-XChange简介:百度百科
6929 0
|
机器学习/深度学习 数据可视化 网络架构
增强深度学习模型的可解释性和泛化能力的方法研究
【8月更文第15天】在深度学习领域,模型的准确率和预测能力是衡量模型好坏的重要指标。然而,随着模型复杂度的增加,它们往往变得越来越难以理解,这限制了模型在某些关键领域的应用,例如医疗诊断、金融风险评估等。本文将探讨如何通过几种方法来增强深度学习模型的可解释性,同时保持或提高模型的泛化能力。
1222 2
|
9月前
|
监控 数据可视化 JavaScript
深入调查研究Highcharts
【11月更文挑战第20天】
155 4
|
11月前
鸿蒙ArkUI实现的Slider组件
鸿蒙ArkUI实现的Slider组件
190 0
|
开发工具 图形学 Android开发
从零开始的unity3d入门教程(一)----环境配置
该文章是《从零开始的Unity3D入门教程》系列的第一篇,详细介绍了Unity3D的环境配置过程,包括注册Unity账户、下载安装Unity Hub和Unity编辑器、配置许可证、创建Unity项目、下载安装Visual Studio 2022以及将Unity与Visual Studio相关联等步骤。
从零开始的unity3d入门教程(一)----环境配置
|
中间件 测试技术 Go
Golang中的错误处理最佳实践
【7月更文挑战第10天】在Golang中,错误处理是核心且重要的。最佳实践包括:定义明确的错误类型,使用错误链(如`%w`包装错误),始终检查错误(避免忽略),谨慎使用`panic`和`recover`,利用多值返回处理错误,标准化错误处理逻辑,并确保测试错误处理代码。这些做法有助于构建健壮和可维护的程序。
QGS
|
Java 容器
浅学JAVAFX布局
浅学JAVAFX布局
QGS
195 0