[SailfishDevel] Fwd: Re:sqlite "out of memory" error

christopher.lamb at thurweb.ch christopher.lamb at thurweb.ch
Mon Aug 5 08:23:22 UTC 2013


Sali Erlend

Sorry, pressed send too soon on my last ...

How exactly are you trying to access Sqlite? via QtQuick LocalStorage  
API, or by some other means?

The error message you quote sounds as though the Emulator is having  
problems opening a 1.7 GB Database due to memory problems. I think the  
memory allocated to the Emulator VM is fairly low, so you might try  
increasing it.

In the meantime I have just managed to migrate LocalStorage DB to Qt5.  
I had to make a few changes to do so, and tore quite a bit of hair out  
until I hit the correct solution. I can provide examples if it helps  
(and will update my blog during the day)

Chris

p.s Hoi sounds Swiss (or Swiss aware ..)


----- Weitergeleitete Nachricht von christopher.lamb at thurweb.ch -----
      Datum: Mon, 05 Aug 2013 10:16:04 +0200
        Von: christopher.lamb at thurweb.ch
    Betreff: Re:sqlite "out of memory" error
         An: "Erlend Boe" <erlendboe at yahoo.com>
         Cc: devel at lists.sailfishos.org

Zitat von "Erlend Boe" <erlendboe at yahoo.com>:

> Hoi Chris
>
> after using the patch, it is also working for me.
>
> However, I have some other problems:
> * opening my sqlite DB (1.7 GB) fails with  QSqlError(-1, "Error  
> opening database", "out of memory")
> * debugging fails with "connection to remote server failed:  
> tcp:localhost:10000: Bad file descriptor. (although the application  
> Output shows  "Listening on port 10000")
>
> opening the db worked fine in the previous release.
> Does anybody know what would cause this problem, or how I can debug it?
>
>
> I'm using a mac with osx 10.8.4, and virtualbox 4.2.16.
> I can log on to the simulator with: ssh -i  
> ~/SailfishOS/vmshare/ssh/private_keys/1/root root at localhost -p 2223
>
> Regards
> Erlend
>
>
>
> On 04.08.2013, at 18:56, christopher.lamb at thurweb.ch wrote:
>
>> Hi All
>>
>> Just a quick note to say that
>>
>> Q_DECL_EXPORT int main(int argc, char *argv[])
>> {
>>   QScopedPointer<QGuiApplication>  
>> app(Sailfish::createApplication(argc, argv));
>>   QScopedPointer<QQuickView> view(Sailfish::createView());
>>   view->rootContext()->setContextProperty("cppproperty",  "Hello world");
>>   Sailfish::setView(view.data(), "main.qml");
>>   Sailfish::showView(view.data());
>>   return app->exec();
>> }
>>
>> works (so far) without error if Lucien's patch to  
>> sailfishapplication.cpp is applied. This can be found here:  
>> https://lists.sailfishos.org/pipermail/devel/attachments/20130802/2367c686/attachment.cpp
>>
>> Chris
>>
>> ----- Weitergeleitete Nachricht von christopher.lamb at thurweb.ch -----
>>    Datum: Sun, 04 Aug 2013 18:36:06 +0200
>>      Von: christopher.lamb at thurweb.ch
>>  Betreff: Re: [SailfishDevel] Alpha 2: passing simple  
>> properties	from	main.cpp to qml: A bug?
>>       An: "Lucien XU" <sfietkonstantin at free.fr>
>>       Cc: devel at lists.sailfishos.org
>>
>> Salut Lucien
>>
>> Maybe it is clearer with Code examples
>>
>> I was doing this, which gives me an error, but seems to work!
>>
>> Q_DECL_EXPORT int main(int argc, char *argv[])
>> {
>>   QScopedPointer<QGuiApplication>  
>> app(Sailfish::createApplication(argc, argv));
>>   QScopedPointer<QQuickView> view(Sailfish::createView("main.qml"));
>>   view->rootContext()->setContextProperty("cppproperty",  "Hello world");
>>   Sailfish::showView(view.data());
>>   return app->exec();
>> }
>>
>> You suggest I could this:
>>
>> Q_DECL_EXPORT int main(int argc, char *argv[])
>> {
>>   QScopedPointer<QGuiApplication>  
>> app(Sailfish::createApplication(argc, argv));
>>   QScopedPointer<QQuickView> view(Sailfish::createView());
>>   view->rootContext()->setContextProperty("cppproperty",  "Hello world");
>>   Sailfish::setView(view.data(), "main.qml");
>>   Sailfish::showView(view.data());
>>   return app->exec();
>> }
>>
>> ..but will then run into your template error:
>> file:///usr/share/setContextPropertyDemo/main.qml: File not found
>>
>> Maybe the qmlRegister**Type is the best approach after all. The  
>> downside is (unless I have missed something) that I will then have  
>> to create a class for my property, whereas with the  
>> setContextProperty I can use a string literal or a primitive type  
>> like int.
>>
>> Merci
>>
>> Chris
>>
>>
>> Zitat von "Lucien XU" <sfietkonstantin at free.fr>:
>>
>>> Hello guys !
>>>
>>> It might be useful to use qmlRegister**Type (uncreatable,  
>>> singleton etc.) to
>>> expose C++ components to QML. But if you really want to use rootContext()-
>>>> setContextProperty, you have to be cautious.
>>>
>>> Actually, if you pass the qml file to the view before registering C++
>>> components, the QML components won't be able to see the C++ ones,  
>>> so you have
>>> to call setContextProperty before calling setSource (or calling the
>>> createView("main.qml") method).
>>>
>>> You have to call the parameter-less method createView(), and then, call
>>> setView(QQuickView *, QString) to pass the source QML file.
>>>
>>> But beware, there is a bug in the template. See
>>> https://lists.sailfishos.org/pipermail/devel/2013-August/000529.html.
>>>
>>> Hopes it helps (because I'm not very clear in this mail)
>>> Cheers,
>>> Lucien
>>>
>>> Le dimanche 4 août 2013 17:05:01 christopher.lamb at thurweb.ch a écrit :
>>>> Hi Martin
>>>>
>>>> Curiouser and Curiouser!
>>>>
>>>> Just to be sure, I went back and tested your suggestion in a demo
>>>> project based on the default "Hello Sailors" new project template.
>>>>
>>>> Here I pass the c++ property cppproperty with the value "Hello World".
>>>> In the QML FirstPage this is concatenated to the "Hello Sailors" label
>>>> text.
>>>>
>>>> I still get this error:
>>>> file:///opt/sdk/setContextPropertyDemo/usr/share/setContextPropertyDemo/page
>>>> s/FirstPage.qml:34: ReferenceError: cppproperty is not defined
>>>>
>>>> Yet the app displays "Hello Sailors: Hello world".
>>>>
>>>> So a property can be passed as you suggested, it can be used. The
>>>> error must be wrong!
>>>>
>>>> Chris
>>>>
>>>> P.s you test the same by creating a default new Sailfish project, and
>>>> replacing the main.cpp and FirstPage.qml with the code below.
>>>>
>>>>
>>>> //start main.cpp
>>>> #include <QGuiApplication>
>>>> #include <QQuickView>
>>>> #include <QQmlContext>
>>>>
>>>> #include "sailfishapplication.h"
>>>>
>>>> Q_DECL_EXPORT int main(int argc, char *argv[])
>>>> {
>>>>   QScopedPointer<QGuiApplication>
>>>> app(Sailfish::createApplication(argc, argv));
>>>>   QScopedPointer<QQuickView> view(Sailfish::createView("main.qml"));
>>>>   view->rootContext()->setContextProperty("cppproperty",  "Hello world");
>>>> Sailfish::showView(view.data());
>>>>
>>>>   return app->exec();
>>>> }
>>>> //end main.cpp
>>>>
>>>>
>>>> //start FirstPage.qml
>>>> import QtQuick 2.0
>>>> import Sailfish.Silica 1.0
>>>> import Sailfish.Silica.theme 1.0
>>>>
>>>>
>>>> Page {
>>>>   id: page
>>>>
>>>>   // To enable PullDownMenu, place our content in a SilicaFlickable
>>>>   SilicaFlickable {
>>>>       anchors.fill: parent
>>>>
>>>>       // PullDownMenu and PushUpMenu must be declared in
>>>> SilicaFlickable, SilicaListView or SilicaGridView
>>>>       PullDownMenu {
>>>>           MenuItem {
>>>>               text: "Show Page 2"
>>>>               onClicked: pageStack.push(Qt.resolvedUrl("SecondPage.qml"))
>>>> }
>>>>       }
>>>>
>>>>       // Tell SilicaFlickable the height of its content.
>>>>       contentHeight: childrenRect.height
>>>>
>>>>       // Place our content in a Column.  The PageHeader is always
>>>> placed at the top
>>>>       // of the page, followed by our content.
>>>>       Column {
>>>>           width: page.width
>>>>           spacing: Theme.paddingLarge
>>>>           PageHeader {
>>>>               title: "UI Template"
>>>>           }
>>>>           Label {
>>>>               x: Theme.paddingLarge
>>>>               text: "Hello Sailors: " + cppproperty
>>>>               color: Theme.secondaryHighlightColor
>>>>               font.pixelSize: Theme.fontSizeLarge
>>>>           }
>>>>       }
>>>>   }
>>>> }
>>>> //end FirstPage.qml
>>>>
>>>> Zitat von "Martin Grimme" <martin.grimme at gmail.com>:
>>>>> Hi,
>>>>>
>>>>> you don't want to set the context property on the
>>>>> QmlApplicationViewer, which was dead Nokia code to target Symbian and
>>>>> Harmattan, anyway.
>>>>> QmlApplicationViewer was derived from QmlView, where it got the
>>>>> rootContext() method from.
>>>>>
>>>>> With Qt5, QmlView was renamed to QQuickView. And when using the
>>>>>
>>>>> functions from sailfishapplication.h, you get a QQuickView*, e.g.:
>>>>>       QScopedPointer<QQuickView> view(Sailfish::createView("main.qml"));
>>>>>       view->rootContext()->setContextProperty("platform", platformId);
>>>>>
>>>>> Martin
>>>>>
>>>>> 2013/8/4, christopher.lamb at thurweb.ch <christopher.lamb at thurweb.ch>:
>>>>>> Hi all
>>>>>>
>>>>>> What is the recommended way to pass simple c++ properties from the
>>>>>> main.cpp to the QML part of a project using the Qt 5 Alpha?
>>>>>>
>>>>>> In the good old days of the first Alpha, I used to do this Harmattan
>>>>>> style using
>>>>>>
>>>>>>    QmlApplicationViewer viewer;
>>>>>>    viewer.rootContext()->setContextProperty("platform",  platformId);
>>>>>>
>>>>>> This would make the c++ property platformId available to my qml code
>>>>>> as the property platform.
>>>>>>
>>>>>> Now with Qt5 / Alpha 2 the QmlApplicationViewer is no longer created.
>>>>>>
>>>>>> The tutorial linked below suggests that the QmlApplicationViewer files
>>>>>> could be ported to Qt5, so I guess I could grab these files from an
>>>>>> old Harmattan project and do that.
>>>>>>
>>>>>> https://qt-project.org/doc/qt-5.0/qtdoc/portingqmlapp.html
>>>>>>
>>>>>> But somehow that feels like carting old baggage around.
>>>>>>
>>>>>> Is their a Sailfish native way of doing the same?
>>>>>>
>>>>>> Thanks
>>>>>>
>>>>>> Chris
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> SailfishOS.org Devel mailing list
>>>>
>>>> _______________________________________________
>>>> SailfishOS.org Devel mailing list
>>> _______________________________________________
>>> SailfishOS.org Devel mailing list
>>>
>>
>>
>> _______________________________________________
>> SailfishOS.org Devel mailing list
>>
>>
>> ----- Ende der weitergeleiteten Nachricht -----
>>
>> _______________________________________________
>> SailfishOS.org Devel mailing list
>
>




----- Ende der weitergeleiteten Nachricht -----




More information about the Devel mailing list