Complete
over 4 years ago

WERETECH-11147

Fixed

The burn-in protection on Venu2(s) devices with CIQ4 falsely triggers and turns off the display

I have ported several watch faces with Venu1 AOD support to the Venu2 and Venu2s devices.

My AOD modes are straight forward. I'm using a dense pattern clearing every 2nd pixel row or column on the screen alternating each minute starting with the first row/column or the second row/column.

This ensures that less than 10% of the pixels are on and no particular pixel is on for more than 1 minute.

On the Venu2 the simulator detects a screen burn-in. On the Screen Burn-In Simulation window it looks like the overlay pattern is ignored.

Also some drawing artifacts are missing on the burn-in screen for example the minute and hour hands.

I'm in contact with 2 other developers who have similar problems with at least some of their watch faces.

I already uploaded my watch faces with Venu2 support to the Connect IQ store and received feedback from a user who also owns a Venu1 that

the AOD is not working on his new Venu2. - It turns off the screen.

So this is potentially not only a problem of the simulator but also of the actual device.

Here is a screen recording of the problem in action highlighting the differences between Venu1 and Venu2:

https://drive.google.com/file/d/123bDerdGzCovWEcJlxonKbRBSo96lqrq/view?usp=drivesdk

  • And... 

    Also to complete the picture...

    IF instead of using dc.clear(), I fill the screen entirely with a solid black text drawn with dc.drawText(), then I can use absolutely any drawing method I want and still have perfect lowPowerMode behaviour.

  • Just to complete the picture a little...

    //////////////////////////////

                // Set to black
                dc.setColor(Graphics.COLOR_BLACK,Graphics.COLOR_BLACK);
                
                // THIS CAUSES CRASH WITH VENU 2 IN LOW POWER
                // dc.fillRectangle(-3, -3, dc.getWidth()+6, dc.getHeight()+6);

                // AND THIS CAUSES CRASH WITH VENU 2 IN LOW POWER
                // dc.clear();
                
                // BUT THIS IS FINE WITH ALL VENU... stripeFont is a 64x64 tile of stripes and stripeStr is enough characters to fill the screen
                // The -3 magic number is due to what I think is a bug with VenuSq that sometimes includes pixels that are not on the screen rectangle 
                var h = dc.getHeight();
                var pos = -3// Seems to be a pixel or two prior to the screen...
                do {
                    dc.drawText(-3, pos, stripeFont, stripeStr, Graphics.TEXT_JUSTIFY_LEFT);
                    pos += 64;
                } while(pos<h);
    //////////////////////////////////////
  • I have a number of WF's that use custom fonts that work fine in low power mode for the venu2 in the sim.  I generally don't draw much - like just the time and maybe a couple other things (temperature, HR, etc).

    The graphic pool in 4.0 may also be involved.  

  • It doesn't need to be custom fonts.

    This is what happens when I clear the screen and then draw a time using dc.drawText with medium font... bug.png (902×557) (gdcsoft.com)

    As you can see, the screen has been utterly wiped, and just the basic text drawn... but it still gives me a burn-in from the immediately preceding screen.

    The only difference I can see between that and a full screen wipe using dc.drawText with a grid font is that I am only drawing text over a small portion of the screen for this.

  • Former Member
    Former Member over 4 years ago in reply to jim_m_58

    That's what I thought too, originally.

    What's actually happening is that anything drawn using custom fonts to the dc seem to be counted as "active" pixels even if there is other crap drawn on top of them (ie. black lines, etc). 

    If you have a watchface with no custom fonts (so you're just using system fonts and/or graphics), those can have black lines drawn on top and the pixels which were drawn on top of will be ignored and NOT counted as "active" pixels (which is expected behaviour).

    I'm going to record a demo video with two sample projects in a couple of hours that will make it clearer what's going on here. 

    But long story short: any custom fonts (and maybe bitmaps?) drawn to the dc will not work in AOD on venu2 and venu2s.