Compare commits

...

1 Commits
master ... fix

Author SHA1 Message Date
Ye ShanShan c695367b4f fix: correct bitwise operation in dconfig status tracking
1. Fixed incorrect bitwise AND operation in property status tracking
2. Changed `fetchAndAndOrdered(1 << index)` to `fetchAndAndOrdered(~(1
<< index))`
3. This ensures proper bit clearing when unsetting property flags
4. The change was made in both the generated header and the generator
tool
5. Without this fix, status tracking would incorrectly set bits instead
of clearing them

fix: 修正 dconfig 状态跟踪中的位操作

1. 修复了属性状态跟踪中错误的位与操作
2. 将 `fetchAndAndOrdered(1 << index)` 改为 `fetchAndAndOrdered(~(1
<< index))`
3. 确保在取消设置属性标志时能正确清除位
4. 修改同时应用于生成的头部文件和生成器工具
5. 若不修复此问题,状态跟踪会错误地设置位而非清除它们
2025-05-08 16:57:49 +08:00
2 changed files with 3 additions and 3 deletions

View File

@ -1,7 +1,7 @@
/**
* This file is generated by dconfig2cpp.
* Command line arguments: ./build5/tools/dconfig2cpp/dconfig2cpp /usr/share/dsg/configs/org.deepin.dtk.preference.json
* Generation time: 2025-05-06T19:49:04
* Generation time: 2025-05-08T16:56:17
* JSON file version: 1.0
*
* WARNING: DO NOT MODIFY THIS FILE MANUALLY.
@ -711,7 +711,7 @@ private:
if (on)
m_propertySetStatus0.fetchAndOrOrdered(1 << (index - 0));
else
m_propertySetStatus0.fetchAndAndOrdered(1 << (index - 0));
m_propertySetStatus0.fetchAndAndOrdered(~(1 << (index - 0)));
return;
}
Q_UNREACHABLE();

View File

@ -496,7 +496,7 @@ int main(int argc, char *argv[]) {
<< " if (on)\n"
<< " m_propertySetStatus" << QString::number(i) << ".fetchAndOrOrdered(1 << (index - " << i * 32 << "));\n"
<< " else\n"
<< " m_propertySetStatus" << QString::number(i) << ".fetchAndAndOrdered(1 << (index - " << i * 32 << "));\n"
<< " m_propertySetStatus" << QString::number(i) << ".fetchAndAndOrdered(~(1 << (index - " << i * 32 << ")));\n"
<< " return;\n"
<< " }\n";
}