问题原因:很大几率是后端处理导致系统剪切板所有权转变,然后我们剪切板收到多次数据改变信号,相同的数据显示多次。
分析过程:进入/home/tmr/.cache/deepin/dde-clipboardloader
目录,记住当前日志位置,触发截图,查看FROM_DEEPIN_CLIPBOARD_MANAGER
字符串打印次数,正常情况都会打印两次,如果一次截图只打印了一次,说明是后端问题。这个字段是后端处理产生的重复数据加入的,用于前端进行过滤重复数据。
问题现象:图片异常、图标异常、文本丢失、文件缺失
分析过程:在 ClipboardLoader::doWork()
函数中打印所有收到的系统剪切板数据,查看各字段是否异常,是否为空、是否缺失。包含内容随数据类型(文本、文件、图片)不同,有各种不同的字段img、text、timestamp、html等。
具体代码如下:
const QMimeData *mimeData = m_board->mimeData();
for (int i = 0; i < mimeData->formats().size(); ++i) {
qDebug()<<"format:"<<mimeData->formats()[i]<<", data:" <<mimeData->data(mimeData->formats()[i]);
}
断打印数据内容,几乎可以判断所有剪切板数据异常问题。