Opened 2 years ago

Closed 19 months ago

#12339 closed defect (fixed)

Write/Abiword artifacts when rotated

Reported by: godiard Owned by: dsd
Priority: normal Milestone: 13.2.0
Component: x window system Version: not specified
Keywords: Cc:
Blocked By: Blocking:
Deployments affected: Action Needed: add to build
Verified: no

Description

Using the Write activity rotated you can see many artifacts instead of the letters. Rotating a few times the screen fixes the issues.

Tested on xo-1.75

Attachments (2)

abi.py (274 bytes) - added by dsd 20 months ago.
standalone abi widget app
abi2.py (391 bytes) - added by godiard 20 months ago.

Download all attachments as: .zip

Change History (13)

comment:1 Changed 2 years ago by dsd

  • Milestone changed from Not Triaged to 13.1.0

comment:2 Changed 20 months ago by godiard

  • Cc dsd added
  • Milestone changed from 13.1.0 to 13.2.0

Dsd, we talked about this issue in the last friday meeting.

I have tested it with os4, and is working ok on xo-1 and xo-1.5, but fails on xo-1.75 and xo-4.

comment:3 follow-up: Changed 20 months ago by dsd

  • Cc dsd removed
  • Owner changed from jnettlet to dsd

Has it ever worked on XO-1.75?

comment:4 in reply to: ↑ 3 Changed 20 months ago by godiard

Replying to dsd:

Has it ever worked on XO-1.75?

Works ok on xo-1.75 12.1.0 o20 (with vmeta). I tested it again.

For reference, the SL ticket is http://bugs.sugarlabs.org/ticket/4211

comment:5 Changed 20 months ago by dsd

Disabling composite of PictOpOver (op 3) makes the text appear fine upon rotation. So this is likely to be a bug in the X driver.

I am attaching a standalone app which can be used to diagnose/reproduce this. I would appreciate it if the text insertion caret was invisible or at least does not blink, as it is producing graphics driver traffic which distracts from the task at hand. Gonzalo, can you help me here? Does not have to be an elegant solution.


For reference, I did start to investigate the rendering of the text insertion caret as that is rendered badly too upon rotation.

To draw the caret the operation is something like: PictOpSrc from (121,2) of a source picture of dimensions 1200x900, to (0,0) of a destination picture of dimensions 5x60, composite operation width=5 height=60.

To hide the caret the operation is something like: PictOpOver from (0,0) of the same 5x60 source picture, to (121,2) of the 1200x900 destination picture, composite operation width=5 height=60.

Changed 20 months ago by dsd

standalone abi widget app

comment:6 Changed 20 months ago by godiard

Attached example abi2.py use GSettings to avoid blinking the cursor.

I have tried setting the cursor timeout but is ignored.

The relevant code in abiword is in the file src/af/gr/xp/gr_Caret.cpp

Changed 20 months ago by godiard

comment:7 Changed 20 months ago by dsd

Thanks, that is better.

My test script now generates 16 composite operations that are accepted by the driver.

#!/bin/bash
python abi2.py &
sleep 6
xrandr -o left
sleep 10

I have checked each one by dumping the image data of the two pixmaps being composited, and the output composited image, and in each case the driver is doing as it is told. So I no longer suspect a driver bug. For future reference the hacks used for this debugging are saved at http://dev.laptop.org/~dsd/20130510/

comment:8 follow-up: Changed 20 months ago by godiard

Then is a problem in AbiWord code?

Why you think this happen only in xo-1.75/4 and not in older models?

comment:9 in reply to: ↑ 8 Changed 20 months ago by dsd

Replying to godiard:

Then is a problem in AbiWord code?

I don't think so, although I haven't been able to locate the code that actually does the drawing.

Why you think this happen only in xo-1.75/4 and not in older models?

Not sure yet, but it could be because of a very different set of graphics operations that get accelerated.

comment:10 Changed 20 months ago by dsd

  • Action Needed changed from never set to add to build

It was a driver bug after all, although an easy trap to fall into. Initialisation was being done in the wrong order, which meant that damage extension was not accurately monitoring areas of the screen that were being composited.

http://lists.x.org/archives/xorg-devel/2013-May/036230.html

Fixed in xf86-video-dove-0.3.9.

comment:11 Changed 19 months ago by dsd

  • Resolution set to fixed
  • Status changed from new to closed

Tested 13.2.0 build 7 on XO-1.75 and XO-4, Write is usable when the screen is rotated.

Note: See TracTickets for help on using tickets.