Skip to content

Conversation

@calsys456
Copy link
Contributor

@calsys456 calsys456 commented Jan 15, 2026

treeland_ddm is renamed to treeland_ddm_v1, adapt this change.

Summary by Sourcery

Bug Fixes:

  • Align TreelandConnector types and listener registrations with the treeland_ddm_v1 protocol to match the updated compositor API.

treeland_ddm is renamed to treeland_ddm_v1, adapt this change.
@deepin-ci-robot
Copy link

Hi @calsys456. Thanks for your PR.

I'm waiting for a linuxdeepin member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@sourcery-ai
Copy link

sourcery-ai bot commented Jan 15, 2026

Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Updates TreelandConnector to use the renamed Wayland protocol interface treeland_ddm_v1 instead of treeland_ddm, including all related types, listener structs, and function calls, to match the new treeland-protocol API.

Updated class diagram for TreelandConnector using treeland_ddm_v1

classDiagram
    class TreelandConnector {
        +TreelandConnector()
        +~TreelandConnector()
        +bool isConnected()
        +void setPrivateObject(treeland_ddm_v1* ddm)
        +void setSignalHandler()
        +void connect(QString socketPath)
        +void switchToGreeter()
        +void switchToUser(QString username)
        +void activateSession()
        +void deactivateSession()
        +void enableRender()
        +wl_callback* disableRender()
        -wl_display* m_display
        -QSocketNotifier* m_notifier
        -treeland_ddm_v1* m_ddm
    }

    class treeland_ddm_v1 {
        +void switch_to_greeter()
        +void switch_to_user(const char* username)
        +void activate_session()
        +void deactivate_session()
        +void enable_render()
        +wl_callback* disable_render()
    }

    class treeland_ddm_v1_listener {
        +void switch_to_vt(void* data, treeland_ddm_v1* ddm, int32_t vtnr)
        +void acquire_vt(void* data, treeland_ddm_v1* ddm, int32_t vtnr)
    }

    TreelandConnector --> treeland_ddm_v1 : uses
    treeland_ddm_v1_listener --> treeland_ddm_v1 : listens_to
Loading

File-Level Changes

Change Details Files
Update TreelandConnector to bind and store the new treeland_ddm_v1 interface and listener.
  • Change TreelandConnector private member and related method signatures from treeland_ddm to treeland_ddm_v1
  • Update Wayland registry binding to use treeland_ddm_v1_interface and cast to treeland_ddm_v1
  • Switch listener type from treeland_ddm_listener to treeland_ddm_v1_listener and use treeland_ddm_v1_add_listener
src/daemon/TreelandConnector.cpp
src/daemon/TreelandConnector.h
Update all protocol method calls to the treeland_ddm_v1 namespace.
  • Replace treeland_ddm_switch_to_greeter/user with treeland_ddm_v1_switch_to_greeter/user
  • Replace treeland_ddm_activate_session/deactivate_session with treeland_ddm_v1_activate_session/deactivate_session
  • Replace treeland_ddm_enable_render/disable_render with treeland_ddm_v1_enable_render/disable_render
  • Adjust event callback signatures to accept treeland_ddm_v1 instead of treeland_ddm
src/daemon/TreelandConnector.cpp

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

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Hey - I've found 1 issue, and left some high level feedback:

  • In registerGlobal, you still compare interface against the literal "treeland_ddm" even though you're now binding treeland_ddm_v1; confirm whether the advertised interface name also changed and update the string if needed to avoid missing the global.
  • The debug message "Connected to treeland_ddm global object" is now out of sync with the protocol name; consider updating it to reflect treeland_ddm_v1 for clarity when debugging.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- In `registerGlobal`, you still compare `interface` against the literal "treeland_ddm" even though you're now binding `treeland_ddm_v1`; confirm whether the advertised interface name also changed and update the string if needed to avoid missing the global.
- The debug message "Connected to treeland_ddm global object" is now out of sync with the protocol name; consider updating it to reflect `treeland_ddm_v1` for clarity when debugging.

## Individual Comments

### Comment 1
<location> `src/daemon/TreelandConnector.cpp:156` </location>
<code_context>

-static void switchToVt([[maybe_unused]] void *data, [[maybe_unused]] struct treeland_ddm *ddm, int32_t vtnr) {
+static void switchToVt([[maybe_unused]] void *data, [[maybe_unused]] struct treeland_ddm_v1 *ddm, int32_t vtnr) {
     int fd = open(qPrintable(VirtualTerminal::path(vtnr)), O_RDWR | O_NOCTTY);
     if (ioctl(fd, VT_ACTIVATE, vtnr) < 0)
         qWarning("Failed to switch to VT %d: %s", vtnr, strerror(errno));
</code_context>

<issue_to_address>
**issue (bug_risk):** Handle `open` failures before using the file descriptor in the VT helpers.

`open` may fail in both `switchToVt` and `acquireVt`, but its return value is used without checking for `< 0`. This means `ioctl`, `VirtualTerminal::handleVtSwitches`, and `close` can be called with an invalid FD. Please add a check for `fd < 0` and return or log appropriately before using the descriptor.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.


static void switchToVt([[maybe_unused]] void *data, [[maybe_unused]] struct treeland_ddm *ddm, int32_t vtnr) {
static void switchToVt([[maybe_unused]] void *data, [[maybe_unused]] struct treeland_ddm_v1 *ddm, int32_t vtnr) {
int fd = open(qPrintable(VirtualTerminal::path(vtnr)), O_RDWR | O_NOCTTY);
Copy link

Choose a reason for hiding this comment

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

issue (bug_risk): Handle open failures before using the file descriptor in the VT helpers.

open may fail in both switchToVt and acquireVt, but its return value is used without checking for < 0. This means ioctl, VirtualTerminal::handleVtSwitches, and close can be called with an invalid FD. Please add a check for fd < 0 and return or log appropriately before using the descriptor.

@deepin-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: calsys456, zccrs

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

@zccrs
Copy link
Member

zccrs commented Jan 15, 2026

obs构建失败是因为treeland协议在obs的构建环境中未更新,这个失败无法避免。

@zccrs zccrs merged commit a8ade50 into linuxdeepin:master Jan 15, 2026
7 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants