Window contents (and mouse cursors) become randomly blurry (or clear) after moving around

Bug #1510382 reported by Daniel van Vugt on 2015-10-27
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Canonical System Image
High
Michał Sawicz
qtmir (Ubuntu)
High
Daniel d'Andrada
unity8 (Ubuntu)
High
Daniel d'Andrada

Bug Description

Using Unity8 on wily desktop, window contents become slightly blurry after moving/resizing the window.

I first noticed this in Xmir. But now see you can reproduce it just by opening System Settings and moving/resizing the window.

Related branches

Daniel van Vugt (vanvugt) wrote :

It seems we've forgotten to maintain pixel alignment somewhere with our textures.

affects: ubuntu-ux → unity8 (Ubuntu)
Changed in unity8 (Ubuntu):
importance: Undecided → High
Changed in qtmir:
importance: Undecided → High
Changed in qtmir (Ubuntu):
importance: Undecided → High
Daniel van Vugt (vanvugt) wrote :

Hmm, does Unity8 track window position using sub-pixel accuracy? :)

Daniel van Vugt (vanvugt) wrote :

Workaround: Close the window and reopen it, being careful never to move or resize it.

description: updated
tags: added: xmir
summary: Window contents become slightly blurry after moving/resizing the window
+ (incorrect texture coordinates/alignment)
summary: Window contents become slightly blurry after moving/resizing the window
- (incorrect texture coordinates/alignment)
Daniel van Vugt (vanvugt) wrote :

Looks like maybe fixed in xenial's unity8 now?

Changed in qtmir:
status: New → Incomplete
Changed in qtmir (Ubuntu):
status: New → Incomplete
Changed in unity8 (Ubuntu):
status: New → Incomplete
Launchpad Janitor (janitor) wrote :

[Expired for unity8 (Ubuntu) because there has been no activity for 60 days.]

Changed in unity8 (Ubuntu):
status: Incomplete → Expired
Launchpad Janitor (janitor) wrote :

[Expired for qtmir (Ubuntu) because there has been no activity for 60 days.]

Changed in qtmir (Ubuntu):
status: Incomplete → Expired
Launchpad Janitor (janitor) wrote :

[Expired for QtMir because there has been no activity for 60 days.]

Changed in qtmir:
status: Incomplete → Expired

Confirmed again, using: sudo apt-add-repository ppa:ci-train-ppa-service/stable-phone-overlay

With the introduction of Mir 0.22.0 we have high-resolution sub-pixel mouse input. However QtMir/Unity8 lacks the smarts to round/truncate this sub-pixel movement and places windows at non-integer locations. When composited in OpenGL this makes the windows look blurry.

Changed in qtmir:
status: Expired → New
Changed in qtmir (Ubuntu):
status: Expired → New
Changed in unity8 (Ubuntu):
status: Expired → New
summary: - Window contents become slightly blurry after moving/resizing the window
+ Window contents become blurry after moving the window
summary: - Window contents become blurry after moving the window
+ Window contents become randomly blurry (or clear) after moving the
+ window

Workaround:
Maximize your windows. This seemingly forces them to an integer location and the texturing becomes nice and clear.

Predictably the mouse cursor is mostly blurry too. Because that's the thing driving the sub-pixel placement. The cursor gets clearer if you push it up to the top-left corner of the screen.

summary: - Window contents become randomly blurry (or clear) after moving the
- window
+ Window contents (and mouse cursors) become randomly blurry (or clear)
+ after moving the window
summary: Window contents (and mouse cursors) become randomly blurry (or clear)
- after moving the window
+ after moving around
Changed in canonical-devices-system-image:
status: New → Confirmed
assignee: nobody → Stephen M. Webb (bregma)
kevin gunn (kgunn72) wrote :

wait..so is this mir or qmtir?

Changed in canonical-devices-system-image:
assignee: Stephen M. Webb (bregma) → Michał Sawicz (saviq)
Daniel van Vugt (vanvugt) wrote :

It's probably Unity8 if not QtMir.

Mir (demo shells) don't have this bug. Unity8 just needs fixing to ensure the vertices it emits are on integer pixel boundaries, so the textures line up with the pixels of the display without blurring into their neighbours.

Daniel d'Andrada (dandrader) wrote :

Agree with duflu. I think it's Unity8 as well.

Changed in unity8 (Ubuntu):
assignee: nobody → Daniel d'Andrada (dandrader)
Changed in qtmir (Ubuntu):
assignee: nobody → Daniel d'Andrada (dandrader)
Changed in qtmir:
assignee: nobody → Daniel d'Andrada (dandrader)
Changed in unity8 (Ubuntu):
status: New → In Progress
Changed in qtmir:
status: New → Invalid
Changed in qtmir (Ubuntu):
status: New → Invalid
tags: added: visual-quality
Michał Sawicz (saviq) on 2016-06-17
Changed in canonical-devices-system-image:
milestone: none → 12
status: Confirmed → In Progress
importance: Undecided → High
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package unity8 - 8.12+16.10.20160617-0ubuntu1

---------------
unity8 (8.12+16.10.20160617-0ubuntu1) yakkety; urgency=medium

  [ Michael Terry ]
  * Do not create Label/Icon if we don't need it
  * Fix Z-ordering of prompt surfaces (LP: #1586219)
  * Drop bottom edge tutorials completely and small fixes for other
    edges. (LP: #1565103)
  * Redo visuals for greeter prompt box. (LP: #1435923)
  * Make tutorial qmltests more robust. (LP: #1590810)
  * Stop showing an extra lockscreen in desktop unity8 sessions. (LP:
    #1582987)

  [ Albert Astals Cid ]
  * Improve dash plugin mock
  * Stabilize PreviewExpandableTest::test_all_widgets_height
  * Workaround QTBUG-53460
  * Split artShape code for cardTool card and regular card
  * Simplify the code since fixedArtSize code is mandatory for regular
    cards
  * Desktop stage: Support rotatesWindowContents (LP: #1547481)
  * Turn if if else into if elseif else
  * Fix leaks in QInputDeviceManagerPrivate::addDevice
  * Do not call |= on uninitialized sigterm.sa_flags
  * initialize udevMonitor
  * Make notifier and notifierFd function local variables
  * Fix crash if a component that is not an Item is given to
    sectionDelegate
  * Tests: Do not use dynamic_cast if we're not going to test it anyway
  * Minor coverity fixes
  * Fix warning about anchors.fill in ProportionalShape (LP: #1590963)
  * Make wait in cleanup() wait for snapTo animation to have finished

  [ Alexandros Frantzis ]
  * Improve the way notifications interact with power management (LP:
    #1570922)

  [ Andrea Cimitan ]
  * Correctly refresh cardcreator cache on artshapestyle changes (LP:
    #1588335)
  * Same tweaks we have for click scope now for libertine
  * add a timer to pull to refresh to work on small windows (LP:
    #1589060)

  [ Daniel d'Andrada ]
  * Clean up debug leftovers
  * Ensure mouse and window movement are pixel-aligned (LP: #1510382)
  * Fix SpreadDelegate rotation animations
  * No point in version-controlling files that are automatically
    generated
  * Center cursor on screen when it's first shown
  * Custom cursor name just have to start with "custom"
  * Work around AnimatedSprite infinite loop bug (LP: #1588929)

  [ Josh Arenson ]
  * Disable showDash when it is already shown. (LP: #1506708)
  * Add a timestamp to the dash log (LP: #1580074)
  * Add timestamp to unity8 log (LP: #1498169)

  [ Lukáš Tinkl ]
  * Implement keyboard shortcuts info panel
  * Implement window controls overlay activatable with 3 fingers tap
    (LP: #1489020)
  * Select correct Chinese input method for OSK in the wizard (LP:
    #1588633)

  [ Michael Zanetti ]
  * Add support for the launcher surface pips displaying the correct
    number of surfaces
  * Add support for the persistent alert state. (LP: #1575147, #1584348,
    #1586621)
  * send a Alt-release event on alt+tab instead of delaying it
    completely and invoking it later (LP: #1565236)

  [ Stephen M. Webb ]
  * added a new upstart $SESSION for unity8-desktop-session (LP:
    #1376715)

 -- Michael Terry <email address hidden> Fri, 17 Jun 2016 01:22:57 +0000

Changed in unity8 (Ubuntu):
status: In Progress → Fix Released
Michał Sawicz (saviq) on 2016-06-18
Changed in canonical-devices-system-image:
status: In Progress → Fix Committed
Changed in canonical-devices-system-image:
status: Fix Committed → Fix Released
Michał Sawicz (saviq) on 2017-03-13
no longer affects: qtmir
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers