Skip to content

fix: preserve X11 cursor scaling when switching cursor shapes - #239

Open
zorowk wants to merge 1 commit into
linuxdeepin:masterfrom
zorowk:fix_cursor
Open

zorowk wants to merge 1 commit into
linuxdeepin:masterfrom
zorowk:fix_cursor

Conversation

@zorowk

@zorowk zorowk commented Oct 22, 2026 •

Copy link
Copy Markdown

登录检查器和忙碌光标切换共用光标重映射函数,但旧 GSettings 中的缩放值可能与当前 X11 会话不一致。

  • 从当前 X Display 获取光标主题和尺寸,移除旧 GSettings 缩放计算。
  • 移除检查器不再使用的 GLib/GIO 直接依赖。

避免普通箭头和忙碌光标切换时重新加载未缩放的光标。

Log: preserve X11 cursor scaling when switching cursor shapes
PMS: BUG-309701

Summary by Sourcery

Use the current X11 display settings for cursor remapping to prevent cursor scaling from being lost during shape changes.

Bug Fixes:

  • Preserve the active X11 cursor theme and scaling when switching between standard and busy cursor shapes.

Enhancements:

  • Remove obsolete GLib/GIO dependencies from the X11 settings checker build.

登录检查器和忙碌光标切换共用光标重映射函数,但旧 GSettings 中的缩放值可能与当前 X11 会话不一致。

- 从当前 X Display 获取光标主题和尺寸,移除旧 GSettings 缩放计算。
- 移除检查器不再使用的 GLib/GIO 直接依赖。

避免普通箭头和忙碌光标切换时重新加载未缩放的光标。

Log: preserve X11 cursor scaling when switching cursor shapes
PMS: BUG-309701
@deepin-ci-robot

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: zorowk

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@sourcery-ai

sourcery-ai Bot commented Oct 22, 2026

Copy link
Copy Markdown
Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Cursor remapping now queries the active X11 session for its cursor theme and default size, avoiding stale GSettings scaling and preventing unscaled reloads when switching between the standard and busy cursors; unused GLib/GIO dependencies are also removed from the checker build.

Sequence diagram for X11-scaled cursor remapping

sequenceDiagram
    participant Caller
    participant Remapper as xc_left_ptr_to_watch
    participant X11 as X11 Display
    participant Xcursor

    Caller->>Remapper: xc_left_ptr_to_watch(enabled)
    Remapper->>X11: XOpenDisplay(NULL)
    X11-->>Remapper: Display
    Remapper->>Xcursor: XcursorGetTheme(Display)
    Xcursor-->>Remapper: active theme
    Remapper->>Xcursor: XcursorGetDefaultSize(Display)
    Xcursor-->>Remapper: scaled cursor size
    Remapper->>Xcursor: XcursorLibraryLoadImages(theme, destination, size)
    Xcursor-->>Remapper: scaled cursor images
    Remapper->>X11: apply destination cursor
    Remapper->>X11: XCloseDisplay(Display)
Loading

File-Level Changes

Change Details Files
Derive cursor theme and size from the active X11 display during every cursor-shape remap.
  • Open the current X display and query its Xcursor theme and default size.
  • Remove GSettings-based theme, size, and scale-factor lookup and the associated GLib/GIO, string, and math dependencies.
  • Simplify remap APIs to accept only source and destination cursor names while preserving scaled loading for both arrow and busy-cursor transitions.
  • Handle a null Xcursor theme when logging and loading the cursor images.
src/dde-session/impl/iowait/xcursor_remap.c
Remove unused GLib and GIO build dependencies from the X11 settings checker.
  • Drop GLib2 and GIO2 package discovery.
  • Remove GLib and GIO targets from the executable link libraries.
tools/dde-xsettings-checker/CMakeLists.txt

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've reviewed your changes and they look great!


Sourcery is free for open source - if you like our reviews please consider sharing them ✨

@deepin-ci-robot

Copy link
Copy Markdown

deepin pr auto review

🤖 AI 代码审查报告

总体评分: 98 分 (通过阈值: 70分)

Pass


📊 总体评价

项目 结果
审查结论 代码审查通过
评分详情 本次提交重构了光标重映射逻辑,移除了 GSettings 依赖和硬编码的主题/尺寸配置,改为使用 Xcursor API 获取系统默认主题和尺寸,正确保留了 X11 光标缩放设置。代码逻辑正确、结构清晰、无安全漏洞,仅存在一处残留调试输出。

🔍 详细分析

1. 语法逻辑 ✅

评价: 语法正确,逻辑清晰 ✅ 通过

潜在问题:
✅ 未发现明显问题

建议: []


2. 代码质量 ✅

评价: 代码结构清晰,注释完整 ✅ 通过

潜在问题:
✅ 未发现明显问题

建议: ['建议移除 xc_load_images 中的 printf 调试输出,或使用项目统一的日志接口替代']


3. 代码性能 ✅

评价: 性能良好,资源使用合理 ✅ 通过

潜在问题:
✅ 未发现明显问题

建议: []


4. 代码安全 🔒

评价: 存在0个安全漏洞 ✅ 通过

🔐 发现 0 个安全漏洞

安全漏洞详情:
✅ 未发现安全漏洞

建议: []


💡 改进建议代码示例

// 建议移除 xc_load_images 中的调试 printf,或替换为项目日志接口:
static XcursorImages*
xc_load_images(const char *theme, const char *name, int size)
{
    return XcursorLibraryLoadImages(name, theme, size);
}

本报告由 AI 代码审查工具自动生成

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants