Bugzilla – Bug 17959
Screen display can 'freeze' when 'flicking' through an information browser item display
Last modified: 2012-05-11 07:22:58 UTC
Created attachment 7670 [details] Patch - Flick.lua share/jive/jive/ui/Flick.lua code anticipates that its client will implement method 'isWraparoundEnabled'. If that method returns true, the flick action will continue past a 'start/end of list' boundary (a revolving list). Otherwise the flick will simply come to a halt at the list boundary. However, not all clients implement this method. Specifically share/jive/jive/ui/Textarea.lua does not. One consequence is a flurry of warning messages, and a failure of the flick mechanism to come to a halt at the list boundary. I had also noticed that the screen display will then, sometimes, 'freeze', in that further flick actions had no effect. The screen would no longer scroll. The attached patch resolved the problem. Unfortunately I am unable to reproduce that freezing effect today ! Nevertheless I submit this report in the belief that the 'freezes' I was observing were real, and due to this issue. And it remains the case that the flick mechanism does not stop at the list boundary. The effect can be easily seen when browsing and reading items from, for example, the 'Slashdot' information browser item, which uses Textarea.lua. With the UI log level set to 'debug' one also expects to see the message "*******Stopping Flick at boundary". That message is absent. The attached patch just adds an 'isWraparoundEnabled' existence check to Flick.lua Typical warning messages, somewhat edited: 20120509 17:44:50.694 WARN squeezeplay.timer - Timer.lua:193 timer error: /opt/sqp2/share/jive/jive/ui/Flick.lua:332: attempt to call method 'isWraparoundEnabled' (a nil value) 20120509 17:44:50.874 WARN squeezeplay.ui.draw - jiveL_dispatch_event:787 error in event function: /opt/sqp2/share/jive/jive/ui/Flick.lua:332: attempt to call method 'isWraparoundEnabled' (a nil value) stack traceback: /opt/sqp2/share/jive/jive/ui/Flick.lua:332: in function 'flick' /opt/sqp2/share/jive/jive/ui/Textarea.lua:336: in function </media/opt/sqp2/share/jive/jive/ui/Textarea.lua:246> (tail call): ? /opt/sqp2/share/jive/jive/ui/Widget.lua:656: in function '_event' /opt/sqp2/share/jive/jive/ui/Window.lua:1870: i