Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
W
weston
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 273
    • Issues 273
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 117
    • Merge Requests 117
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • wayland
  • weston
  • Issues
  • #209

Closed
Open
Opened Mar 20, 2019 by Tomohito Esaki@etomContributor

Weston doesn't resume correct in multi-monitor.

When multi monitors (outputs) are enabled, once weston sleeps, only one monitor (output) wakes up and other ones remain inactive.

I think that the cause is in drm-backend. When output sleeps, drm-backend may turn DPMS off in drm_output_update_complete(). In this case, the output->repaint_status is REPAINT_AWAITING_COMPLETION, so that repaint loop is not scheduled when the output wakes up.

The following patch fixes this issue.

diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
index 41cedecf..8acd690f 100644
--- a/libweston/compositor-drm.c
+++ b/libweston/compositor-drm.c
@@ -1866,7 +1866,6 @@ drm_output_update_complete(struct drm_output *output, uint32_t flags,
                output->dpms_off_pending = 0;
                drm_output_get_disable_state(pending, output);
                drm_pending_state_apply_sync(pending);
-               return;
        } else if (output->state_cur->dpms == WESTON_DPMS_OFF &&
                   output->base.repaint_status != REPAINT_AWAITING_COMPLETION) {
                /* DPMS can happen to us either in the middle of a repaint

However, I don't know if this fix is correct because I think it is enough that repaint_status is changed only.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None
Reference: wayland/weston#209