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

Parents
  • 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);
    //////////////////////////////////////
Comment
  • 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);
    //////////////////////////////////////
Children
No Data