URL:
  <http://gna.org/bugs/?18780>

                 Summary: Huge strokes and stroke-blink: blink never ends;
exception follows on attempt to hide layer
                 Project: MyPaint
            Submitted by: achadwick
            Submitted on: Mon Oct  3 01:17:16 2011
                Severity: 3 - Normal
                Priority: 5 - Normal
                  Status: None
                 Privacy: Public
             Assigned to: None
        Originator Email: 
             Open/Closed: Open
         Discussion Lock: Any
                 Release: git 45265644a3
         Planned Release: None
        Operating System: Ubuntu GNU/Linux 11.04

    _______________________________________________________

Details:

In the latest Git, if you make a _huge_ stroke then attempt to pick it with
Pick Context, the stroke blink state is entered and you see the stroke
highlighted. However sometimes the blink state is never left. Not sure what's
going on here, possibly a race condition: it seems to happen more frequently
for really huge strokes. To reproduce (on my pretty fast desktop replacement
laptop):

1. Pick a nice light colour and background so the blink is more visible.

2. Zoom _all_ the way out. I'm working on master since 6d624040c2a was merged
so this is one level further than 0.9.1, say.

3. Pick a simple, big brush to save time and make processing faster. I used
experimental/pixelblocking. Make it huge too, set the radius to max.

4. Make the window big. Doesn't matter if fullscreened or not.

5. Paint a _huge_ stroke across the canvas, then a smaller one. This can be
done with either the mouse or a stylus, and can be a straight-line stroke
too.

6. Pick the big one with "W", notice how stroke-blink is never left. You can
even add and switch layers and it won't go away.

7. Pick the smaller one with "W", and notice how stroke-blink is left
quickly.

Not fatal so far, but it's possible to provoke an exception in the 6. state
above: while the stroke blink overlay is shown, try to set the current layer
as invisible using the layers list. The following exception is produced:


Traceback (most recent call last):
  File "/home/andrewc/Development/MyPaint/gui/tileddrawwidget.py", line 358,
expose_cb(self=<TiledDrawWidget object at 0x1e50be0 (TiledDrawWidget at
0x20a2800)>, widget=<TiledDrawWidget object at 0x1e50be0 (TiledDrawWidget at
0x20a2800)>, event=<gtk.gdk.Event at 0x31da788: GDK_EXPOSE area=[41, 37, 969,
841]>)
            else:
                self.repaint(event.area)
            return True
  variables: {'self.repaint': ('local', <bound method TiledDrawWidget.repaint
of <TiledDrawWidget object at 0x1e50be0 (TiledDrawWidget at 0x20a2800)>>),
'event.area': ('local', gtk.gdk.Rectangle(41, 37, 969, 841))}
  File "/home/andrewc/Development/MyPaint/gui/tileddrawwidget.py", line 410,
repaint(self=<TiledDrawWidget object at 0x1e50be0 (TiledDrawWidget at
0x20a2800)>, device_bbox=gtk.gdk.Rectangle(41, 37, 969, 841))
            cr, surface, sparse, mipmap_level, gdk_clip_region =
self.render_prepare(device_bbox)
            self.render_execute(cr, surface, sparse, mipmap_level,
gdk_clip_region)
  variables: {'surface': ('local', <lib.pixbufsurface.Surface instance at
0x10a54e60>), 'gdk_clip_region': ('local', <GdkRegion at 0x33df780>),
'mipmap_level': ('local', 4), 'sparse': ('local', False),
'self.render_execute': ('local', <bound method TiledDrawWidget.render_execute
of <TiledDrawWidget object at 0x1e50be0 (TiledDrawWidget at 0x20a2800)>>),
'cr': ('local', <gtk.gdk.CairoContext object at 0x109e890>)}
  File "/home/andrewc/Development/MyPaint/gui/tileddrawwidget.py", line 501,
render_execute(self=<TiledDrawWidget object at 0x1e50be0 (TiledDrawWidget at
0x20a2800)>, cr=<gtk.gdk.CairoContext object>,
surface=<lib.pixbufsurface.Surface instance>, sparse=False, mipmap_level=4,
gdk_clip_region=<GdkRegion>)
            if self.overlay_layer:
                idx = layers.index(self.doc.layer)
                layers.insert(idx+1, self.overlay_layer)
  variables: {'layers': ('local', []), 'self.doc.layer': ('local',
<lib.layer.Layer instance at 0x1e59fc8>), 'idx': (None, [])}
ValueError: <lib.layer.Layer instance at 0x1e59fc8> is not in list


Stroke blink feedback when picking big strokes can be quite hit-or-miss, so
be sure to see the stuck feedback before attempting to reproduce the
exception.




    _______________________________________________________

Reply to this item at:

  <http://gna.org/bugs/?18780>

_______________________________________________
  Message sent via/by Gna!
  http://gna.org/


_______________________________________________
Mypaint-bugs mailing list
[email protected]
https://mail.gna.org/listinfo/mypaint-bugs

Reply via email to