Complete
over 4 years ago

WERETECH-10611

Connect IQ SDK 4.0 Preview 1 - BufferedBitmaps -> Error: Symbol Not Found Error

Hi, is there any breaking change in the interface of BufferedBitmaps?

...simply compiled my watch face app and started the simulator and sadly get this exception:

Error: Symbol Not Found Error
Details: Failed invoking <symbol>
Stack:
- createBufferedBitmaps() at ...

The code simply creates a bufferedBitmap using the default interface:

dummy = new Gfx.BufferedBitmap({:width=>10, :height=>10, :palette=>[color0, color1, color2, color3]});

  • Just confirming that buffered bitmaps must be created with createBufferedBitmap() in 4.0 products.

  • @Travis.ConnectIQ,

    thanks for hint.

    This is a runtime crash in the simulator.

    The eclipse run configuration is set to SDK v3.1 and started for a device class of  the F6X with the SDK 4.0 P1.

    The build is done without any issues but then the simulator crashes with the failure above.

  • Sorry, yes... Graphics.createBufferedBitmap() is only available on devices with 4.x.x SDK support:

    var bufferedBitmap = null;
    if (Graphics has :createBufferedBitmap) {
        bufferedBitmap = Graphics.createBufferedBitmap(params);
    } else {
        bufferedBitmap = new Graphics.BufferedBitmap(params);
    }
    
    

    I'm not sure if we have made devices with 4.x support available. Until then you're kinda stuck.

    It sounds like you've run into a pretty big problem. It looks like a bug report has been filed already. Hopefully we'll be able to look at it soon.

  • calling Toybox.Graphics.createBufferedBitmap({:width=>10,:height=>10}) gives

    Error: Symbol Not Found Error
    Details: Could not find symbol 'createBufferedBitmap'

    calling new Toybox.Graphics.BufferedBitmap({:width=>10,:height=>10}) gives

    Error: Symbol Not Found Error
    Details: Failed invoking <symbol>

    These errors are at runtime so I'm guessing its because there are no devices which have CIQ 4.0.0 yet but I would have expected 'new BuffereredBitmap' to work on a device with 3.2 even when using the 4.0.0 SDK or we're not going to be able to use the 4.0.0 SDK to develop for 3.2 devices

    Is there a way to change a device in the emulator as being a 4.0.0 device so we can try out the new createBufferedBitmap stuff?

  • Yes. The new resource pool functionality requires you to use Graphics.createBufferedBitmap() now. You will probably need to look through the Graphics module documentation that is included with the SDK for more details.