Customized Location Map widget is crashing on new firmware, can something give some support?



  • Hi,

    I have a QML application (UI is QML , and engine part is Qt), and it runs pretty well with the old firmware which was released about 3 weeks ago. The application uses Qt mobility API, especially the Location API for rendering the map data and drawing objects on map. Since I need to do a lot of things with maps dynamically at runtime, the Location QML Map elements are not quite enough, so I created a customized Map widget, and expose this widget to QML, like
    qmlRegisterType<MyGeoMap>("LOMapWidget", 1, 0, "MapWidget");.

    @
    class MyGeoMap : public QGraphicsGeoMap
    {
    Q_OBJECT
    Q_PROPERTY(QString currentDate READ currentDate WRITE setCurrentDate NOTIFY currentDateChanged )
    Q_PROPERTY(bool boolToday READ boolToday WRITE setBoolToday NOTIFY boolTodayChanged )
    Q_PROPERTY(int currentTimeValue READ currentTimeValue WRITE setCurrentTimeValue NOTIFY currentTimeValueChanged )

    ...
    

    public:

    enum MapState {
            DayView,
            MapView,
            DetailView,
            NamingView
        };
    
    MyGeoMap();
    virtual ~MyGeoMap();
    static QGeoMappingManager* creatGeoMappingManager();
    
    QGeoSearchManager* creatGeoSearchManager();
    
    protected:
    void mousePressEvent(QGraphicsSceneMouseEvent* event);
    void mouseReleaseEvent(QGraphicsSceneMouseEvent* event);
    void mouseMoveEvent(QGraphicsSceneMouseEvent* event);
    void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event);
    

    ...

    private:
    void setupMapViewUi();
    void setupDayViewUi();
    void setupDetailViewUi();
    void setupNamingViewUi();
    void testAddObj();
    void testAddObj_b();

    public slots:

    //void insertMapObject();
    

    signals:
    void mapObjectClicked(int index_from_map);
    void currentDateChanged();
    ...

    private:

    QGeoSearchManager* mSearchManager;
    
    bool panActive;
    bool markerPressed;
    QGeoMapObject *mPressed;
    
    MapState mMapState;
    
    ...
    MapDataHandler *mHandler;
    
    
    Q_DISABLE_COPY(MyGeoMap)
    

    };
    @

    This approach worked well on both Symbian 3 and Meego devices. I could load map data and exchange signal to this customized map widget. But last Friday, I got a new firmware, and the application stops working, basically it doesn't start at all. after some debugging, I found out it was this customized map widget failing, the application still workes with the firmware in May, but not the latest.

    From the log and backtraces, the qtmobility part is crashing while doing the paint. And if I replace the customized map widget in QML with some basic element like a rectangle, the application gets started.

    Can someone from the Qt mobility Team give some hint what is going on? Is it still possible to use the customized QML widget written in C++? I could provide the log and traces if needed...

    Thanks!

    Regards, Juan


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.