← Back to team overview

ubuntu-phone team mailing list archive

Re: Running QML functions in parallel thread

 

I did this:

    Grid

    {

        id: grid

        anchors.centerIn: parent

        rows: 4

        columns: 4

        spacing: __buttonRightMargin

        Repeater

        {

            id: buttons


            GameButton

            {

                row: index % __gameFieldWidth

                column: index / __gameFieldWidth

                width: __buttonWidth

                height: __buttonHeight

            }

        }

    }


    onCreateField:

    {

        grid.rows = fieldHeight;

        grid.columns = fieldWidth;

        buttons.model = fieldWidth * fieldHeight;


        fieldCreated(fieldWidth, fieldHeight);

    }


Now, I don't see buttons from old field if I start new game with
smaller field, but it still so slow.



2013/4/16 Николай Шатохин <n.shatokhin@xxxxxxxxx>

> Nope, but very similar by interface
>
>
> 2013/4/16 Roman Shchekin <mrqtros@xxxxxxxxx>
>
>> MineSweeper?
>>
>>
>> 2013/4/16 Michael Zanetti <michael.zanetti@xxxxxxxxxxxxx>
>>
>>> On Tuesday 16 April 2013 18:54:01 Michael Zanetti wrote:
>>> > As a rule of thumb, you should be able to write more than 90% of your
>>> > application without the need to the work "function" (game logic
>>> excluded).
>>>
>>> That should have been: ... without the need to use the word "function"...
>>>
>>> Regards,
>>> Michael
>>>
>>> > >
>>> > > 2013/4/16 Rick Spencer <rick.spencer@xxxxxxxxxxxxx>
>>> > >
>>> > > > I suppose you would use a loader for the Repeater. After you make
>>> your
>>> > > > repeater work for your first level, you can use QtCreator to wrap
>>> the
>>> > > > Repeater in a loader for you. Then I think for each level you would
>>> > > > destroy the whole Repeater and then use the loader to create a new
>>> one
>>> > > > with the new model for the next level.
>>> > > >
>>> > > > At least that is the approach I would take starting out.
>>> > > >
>>> > > > HTH
>>> > > >
>>> > > > Cheers, Rick
>>> > > >
>>> > > > On Tue, Apr 16, 2013 at 7:31 AM, Николай Шатохин <
>>> n.shatokhin@xxxxxxxxx>
>>> > > >
>>> > > > wrote:
>>> > > > > When I create button I assign destroy signal to each. So, when I
>>> start
>>> > > >
>>> > > > new
>>> > > >
>>> > > > > game, I destroying buttons from old game and see old field in
>>> this
>>> > > >
>>> > > > moment -
>>> > > >
>>> > > > > destroing slow too. Is quickly removing possible? Can I destroy
>>> > > > > repeater?
>>> > > > >
>>> > > > >
>>> > > > > 2013/4/16 Николай Шатохин <n.shatokhin@xxxxxxxxx>
>>> > > > >
>>> > > > >> Oh, I didn't know that. I'll try.
>>> > > > >>
>>> > > > >>
>>> > > > >> 2013/4/16 Rick Spencer <rick.spencer@xxxxxxxxxxxxx>
>>> > > > >>
>>> > > > >>> Hi.
>>> > > > >>>
>>> > > > >>> I'm not sure how your code flows overall, but if you are
>>> creating
>>> > > > >>> all
>>> > > >
>>> > > > the
>>> > > >
>>> > > > >>> buttons at once, you might consider using a Repeater instead of
>>> > > > >>> doing
>>> > > >
>>> > > > it all
>>> > > >
>>> > > > >>> in javascript.
>>> > > > >>>
>>> > > > >>> It looks like you might have some kind of list that fires a
>>> > > >
>>> > > > createButton
>>> > > >
>>> > > > >>> signal. You could potentially use that list as a model for a
>>> > > > >>> Repeater
>>> > > >
>>> > > > and
>>> > > >
>>> > > > >>> build your buttons in the delegate of the Repeater.
>>> > > > >>>
>>> > > > >>> Cheers, Rick
>>> > > > >>>
>>> > > > >>>
>>> > > > >>>
>>> > > > >>> On Tue, Apr 16, 2013 at 5:11 AM, Николай Шатохин <
>>> > > >
>>> > > > n.shatokhin@xxxxxxxxx>
>>> > > >
>>> > > > >>> wrote:
>>> > > > >>>> This is my code that creates buttons field:
>>> > > > >>>>
>>> > > > >>>>
>>> > > > >>>> onCreateField:
>>> > > > >>>> {
>>> > > > >>>>
>>> > > > >>>>     for(var i=0;i<fieldWidth;i++)
>>> > > > >>>>     {
>>> > > > >>>>
>>> > > > >>>>         for(var j=0;j<fieldHeight;j++)
>>> > > > >>>>         {
>>> > > > >>>>
>>> > > > >>>>             createButton(i, j);
>>> > > > >>>>
>>> > > > >>>>         }
>>> > > > >>>>
>>> > > > >>>>     }
>>> > > > >>>>
>>> > > > >>>> }
>>> > > > >>>>
>>> > > > >>>> function createButton(x, y)
>>> > > > >>>> {
>>> > > > >>>>
>>> > > > >>>>     __buttonX = x;
>>> > > > >>>>     __buttonY = y;
>>> > > > >>>>
>>> > > > >>>>     __component = Qt.createComponent("GameButton.qml");
>>> > > > >>>>
>>> > > > >>>>     if(__component != null)
>>> > > > >>>>
>>> > > > >>>>         continueButtonCreation();
>>> > > > >>>>
>>> > > > >>>>     else
>>> > > > >>>>
>>> > > > >>>>         __component.ready.connect(continueButtonCreation);
>>> > > > >>>>
>>> > > > >>>> }
>>> > > > >>>>
>>> > > > >>>> function continueButtonCreation()
>>> > > > >>>> {
>>> > > > >>>>
>>> > > > >>>>     var button = __component.createObject(field, {"row":
>>> __buttonY,
>>> > > > >>>>
>>> > > > >>>> "column": __buttonX});
>>> > > > >>>>
>>> > > > >>>>      if (button == null) {
>>> > > > >>>>
>>> > > > >>>>          // Error Handling
>>> > > > >>>>          console.log("Error creating object");
>>> > > > >>>>
>>> > > > >>>>          return;
>>> > > > >>>>
>>> > > > >>>>      }
>>> > > > >>>>
>>> > > > >>>>      updateValveState.connect(button.stateUpdated);
>>> > > > >>>>      button.buttonClicked.connect(buttonClicked);
>>> > > > >>>>
>>> > > > >>>>      field.clearField.connect(button.release);
>>> > > > >>>>
>>> > > > >>>> }
>>> > > > >>>>
>>> > > > >>>>
>>> > > > >>>> fieldWidth = fieldHeight = 16;
>>> > > > >>>>
>>> > > > >>>>
>>> > > > >>>> 2013/4/16 Alex Tyler <alex.tyler@xxxxxxxxxx>
>>> > > > >>>>
>>> > > > >>>>> Can we see some code? The only time Images hang for me in
>>> QML is
>>> > > > >>>>> when
>>> > > > >>>>> it's trying to load them synchronously. Try setting
>>> asynchronous
>>> > > > >>>>> to
>>> > > >
>>> > > > true.
>>> > > >
>>> > > > >>>>> Cheers,
>>> > > > >>>>> Alex
>>> > > > >>>>>
>>> > > > >>>>> On Tue, Apr 16, 2013 at 10:20 AM, <mrqtros@xxxxxxxxx> wrote:
>>> > > > >>>>>> I thought Nick creates 1024 (16x16) buttons, lol =) And
>>> even did
>>> > > > >>>>>> not
>>> > > > >>>>>> thought - for what :D
>>> > > > >>>>>>
>>> > > > >>>>>> Of course code is extremely bad, if buttons with size 16x16
>>> > > > >>>>>> pixels
>>> > > > >>>>>> creating slowly.
>>> > > > >>>>>>
>>> > > > >>>>>>
>>> > > > >>>>>> 16.04.13 12:09 Michael Zanetti написал(а):
>>> > > > >>>>>>
>>> > > > >>>>>> On Tuesday 16 April 2013 01:01:28 Николай Шатохин wrote:
>>> > > > >>>>>> > Hello.
>>> > > > >>>>>> >
>>> > > > >>>>>> > In my code I'm creating 16x16 buttons in cycle and this
>>> take
>>> > > > >>>>>> > few
>>> > > > >>>>>> > seconds.
>>> > > > >>>>>> > While function that creating buttons runs, app freezes. I
>>> want
>>> > > > >>>>>> > to
>>> > > > >>>>>> > show
>>> > > > >>>>>> > loading animation while this function runs. So, how to
>>> run this
>>> > > > >>>>>> > function in
>>> > > > >>>>>> > parallel thread to avoid freezing?
>>> > > > >>>>>> >
>>> > > > >>>>>> > Best regards,
>>> > > > >>>>>> > Nick
>>> > > > >>>>>>
>>> > > > >>>>>> Creating 16x16 buttons shouldn take a few seconds. Can you
>>> paste
>>> > > > >>>>>> the
>>> > > > >>>>>> code
>>> > > > >>>>>> (also the button itself). To me it seems the issue is
>>> somewhere
>>> > > >
>>> > > > else,
>>> > > >
>>> > > > >>>>>> e.g. in
>>> > > > >>>>>> the way you create the buttons or the buttens themselves
>>> are very
>>> > > > >>>>>> slow.
>>> > > > >>>>>>
>>> > > > >>>>>> Br,
>>> > > > >>>>>> Michael
>>> > > > >>>>>>
>>> > > > >>>>>> --
>>> > > > >>>>>> Mailing list: https://launchpad.net/~ubuntu-phone
>>> > > > >>>>>> Post to : ubuntu-phone@xxxxxxxxxxxxxxxxxxx
>>> > > > >>>>>> Unsubscribe : https://launchpad.net/~ubuntu-phone
>>> > > > >>>>>> More help : https://launchpad.net/~ubuntu-phone
>>> > > > >>>>>>
>>> > > > >>>>>>
>>> > > > >>>>>>
>>> > > > >>>>>> --
>>> > > > >>>>>> Mailing list: https://launchpad.net/~ubuntu-phone
>>> > > > >>>>>> Post to     : ubuntu-phone@xxxxxxxxxxxxxxxxxxx
>>> > > > >>>>>> Unsubscribe : https://launchpad.net/~ubuntu-phone
>>> > > > >>>>>> More help   : https://help.launchpad.net/ListHelp
>>> > > > >>>>
>>> > > > >>>> --
>>> > > > >>>> Mailing list: https://launchpad.net/~ubuntu-phone
>>> > > > >>>> Post to     : ubuntu-phone@xxxxxxxxxxxxxxxxxxx
>>> > > > >>>> Unsubscribe : https://launchpad.net/~ubuntu-phone
>>> > > > >>>> More help   : https://help.launchpad.net/ListHelp
>>> > > > >>>
>>> > > > >>> --
>>> > > > >>> Mailing list: https://launchpad.net/~ubuntu-phone
>>> > > > >>> Post to     : ubuntu-phone@xxxxxxxxxxxxxxxxxxx
>>> > > > >>> Unsubscribe : https://launchpad.net/~ubuntu-phone
>>> > > > >>> More help   : https://help.launchpad.net/ListHelp
>>> > > >
>>> > > > --
>>> > > > Mailing list: https://launchpad.net/~ubuntu-phone
>>> > > > Post to     : ubuntu-phone@xxxxxxxxxxxxxxxxxxx
>>> > > > Unsubscribe : https://launchpad.net/~ubuntu-phone
>>> > > > More help   : https://help.launchpad.net/ListHelp
>>>
>>> --
>>> Mailing list: https://launchpad.net/~ubuntu-phone
>>> Post to     : ubuntu-phone@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~ubuntu-phone
>>> More help   : https://help.launchpad.net/ListHelp
>>>
>>
>>
>> --
>> Mailing list: https://launchpad.net/~ubuntu-phone
>> Post to     : ubuntu-phone@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~ubuntu-phone
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>

Follow ups

References