← Back to team overview

kicad-developers team mailing list archive

eeschema WX_OVERLAY/OSX rework to fix redraw artifacts

 

Hi all,

eeschema still has some not so bad but nevertheless annoying redraw bugs on OS X (using WX_OVERLAY), e.g., doing a rotate during a move.

In the branch
  lp:~stegmaier/kicad/kicad-eeredraw
  https://code.launchpad.net/~stegmaier/kicad/kicad-eeredraw
I reworked current WX_OVERLAY handling to fix this (this branch does not contain any other changes).

The general idea of the rework is that the drawing code wants to draw some item if the drawing mode is DEFAULT. If the drawing code wants to remove an item it uses XOR mode. This is nothing new, it is done that way at many places but not consistently in all spots.
For WX_OVERLAY if some item is to be removed a complete redraw is triggered (this might not be the most smart approach, but the easiest one and I did not see any real big performance impact).

Rework consists of 3 parts:
(1) Remove different WX_OVERLAY specific fixes/workaround being not consistently used (rev. 5202).
(2) Only when WX_OVERLAY is being used: push down the remove/repaint check to all draw methods (rev. 5201).
(3) Change drawing mode consistently to use DEFAULT for drawing and XOR for removing an item (rev. 5203).

I have tested the changes quite some while on OS X and did not notice any redraw artifacts any longer.

Since part (3) also affects other platforms, changes have to be tested not only on OS X. 
However, there should be no change in behavior on platform not using WX_OVERLAY (in theory).

It would be great if this could get merged to main branch.


Regards,
Bernhard




Follow ups