Hi,

thanks for the hint. A workaround like this works. Although I had to
take care of contextMenu height too. 

But at least this is a nicer workaround than taking the model away.

Greetings 

Am Montag, den 16.12.2013, 01:07 +0000 schrieb Chris Adams:
> Hi,
> 
> It seems like the ListItem delegate relies on implicit height for its 
> geometry.  When the empty page is pushed, the delegates get their height set 
> to zero, which causes the listview to create more delegates to fit into the 
> visible area.  Since any finite height divided by zero is infinity, it 
> attempts to create an infinite amount of delegates (or until it runs out of 
> model data).
> 
> The workaround is to do something like this:
> 
> delegate: Component {
>     ListItem {
>         height: row.height > 5 ? row.height : 5 // don't rely on implicit 
> height for sizing if it goes too small
>         Row {
>             id: row
>             Label {
>                 text: index
>             }
>             Label {
>                 text: value
>             }
>         }
>         Component.onCompleted: {
>            console.debug("Created delegate: " + index)
>         }
>     }
> }
> 
> We should definitely fix this issue in Silica to ensure that the minimal 
> delegate height is clamped to 1 perhaps (well, this is probably not the right 
> solution either, we'll have to think about how to do it properly).
> In the meantime, please try using the workaround.
> 
> Cheers,
> Chris.
> 
> ________________________________________
> From: devel-boun...@lists.sailfishos.org [devel-boun...@lists.sailfishos.org] 
> on behalf of Hendrik Borghorst [hendrikborgho...@gmail.com]
> Sent: Monday, December 16, 2013 6:49 AM
> To: devel@lists.sailfishos.org
> Subject: Re: [SailfishDevel] Delegate creation on demand
> 
> Sure,
> 
> This example I've just created and it does exactly what I want to show.
> 
> greetings and thanks for your support
> 
> There are 2 buttons, one populates the model with 25000 simple items.
> 
> The second one pushes a page above the page with listview. After the
> push you can see the ListView creating lots of delegates in console.log
> 
> PS.: I've not tested it with qmlscene but as an application
> (modeltext.tar.xz) on real device.
> 
> 
> Am Sonntag, den 15.12.2013, 20:25 +0000 schrieb Robin Burchell:
> > Can you please provide a minimal test case (i.e. ideally a single QML file, 
> > usable with qmlscene) demonstrating your problem?
> >
> > Please see http://sscce.org/
> >
> > On 15 Dec 2013, at 21:03, Hendrik Borghorst <hendrikborgho...@gmail.com> 
> > wrote:
> >
> > > Hello,
> > >
> > > the problem isn't my delegate. It is quite minimal.
> > >
> > > The problem is I think a bug in QML Listview. It goes absolutly crazy if
> > > it is invisible and starts making delegate for around 50% of all items.
> > > This causes the memory to run full.
> > >
> > > A workaround I added is
> > >
> > > model: visible ? modelVar : null
> > >
> > > which works quite nicely. I think this bug could be an upstream qt bug?
> >
> > >
> > > greetings
> > >
> > > Am Sonntag, den 15.12.2013, 10:01 +0100 schrieb
> > > christopher.l...@thurweb.ch:
> > >> Hi Hendrik
> > >>
> > >> Have you seen this? http://qt-project.org/wiki/Performance_tip_Lists
> > >>
> > >> The general advice is to keep the delegates is lightweight as
> > >> possible, and to use Loaders for anything needed later (e.g. onClick)
> > >>
> > >> Chris
> > >>
> > >> Zitat von "Hendrik Borghorst" <hendrikborgho...@gmail.com>:
> > >>
> > >>> Hello folks,
> > >>>
> > >>> I've got a problem with long lists (~25000 elements). All delegates are
> > >>> created at once which causes the memory usage to explode beyond the
> > >>> devices capability.
> > >>>
> > >>> I already tried setting "cacheBuffer: 0" in SiliciaListView but  it
> > >>> doesn't change it.
> > >>>
> > >>> Is the something I'm doing wrong.
> > >>>
> > >>> You can see the actual page code here:
> > >>>
> > >>> https://github.com/djselbeck/smpc/blob/master/pages/CurrentPlaylistPage.qml
> > >>>
> > >>> Shouldn't the delegates be constructed on demand? It is weird because my
> > >>> old n8 wasn't struggling with qml lists with this size.
> > >>>
> > >>> greetings and congrats on getting the devices to your customers (I'm
> > >>> very pleased)
> > >>>
> > >>
> > >>
> > >>
> > >>
> > >
> > > _______________________________________________
> > > SailfishOS.org Devel mailing list
> >
> > _______________________________________________
> > SailfishOS.org Devel mailing list
> 
> _______________________________________________
> SailfishOS.org Devel mailing list

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
SailfishOS.org Devel mailing list

Reply via email to