Kodi Community Forum

Full Version: OpenELEC Testbuilds for RaspberryPi (Kodi 15.0) Part 1
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
If I correctly understood how CScrollInfo works it would only affect horizontal scrolling (labels, RSS, probably something else), while CGUITextBox manages vertical scrolling itself.

I'm testing on OS X right now and I will edit this post later.

Edit: yep, if GUITextBox.cpp is reverted textboxes (plots) continue scrolling.
(2014-12-22, 18:46)menakite Wrote: [ -> ]If I correctly understood how CScrollInfo works it would only affect horizontal scrolling (labels, RSS, probably something else), while CGUITextBox manages vertical scrolling itself.

I'm testing on OS X right now and I will edit this post later.

Edit: yep, if GUITextBox.cpp is reverted textboxes (plots) continue scrolling.

Okay, will add the textbox patch back in.
This is a nicer version (same logic, but avoids duplicating things around): https://github.com/anaconda/xbmc/compare...on-saver_2
*untested*

(git am -3 --keep-non-patch)
(2014-12-22, 19:12)menakite Wrote: [ -> ]This is a nicer version (same logic, but avoids duplicating things around): https://github.com/anaconda/xbmc/compare...on-saver_2
*untested*

Okay, updated newclock4 to this.

Another case I've wondered about is disabling scrolling when busy dialog is up.
I see this with iPlayer add-on - the program names typically scroll, and that (probably) slows downs opening of the stream.
(2014-12-22, 19:19)popcornmix Wrote: [ -> ]Another case I've wondered about is disabling scrolling when busy dialog is up.
I see this with iPlayer add-on - the program names typically scroll, and that (probably) slows downs opening of the stream.
You can see the same if your library is on NFS (mounted locally) over wifi.
I've tried looking into it about a month ago, but unsuccessfully :|. It seems what I want is g_application.m_pPlayer.IsCaching() (or something like that, can't remember exactly), but it returns true too late (IIRC, only *after* streams have already been opened).
As it somewhat involves the player, you may have a better idea(?).
(2014-12-22, 19:49)menakite Wrote: [ -> ]I've tried looking into it about a month ago, but unsuccessfully :|. It seems what I want is g_application.m_pPlayer.IsCaching() (or something like that, can't remember exactly), but it returns true too late (IIRC, only *after* streams have already been opened).
As it somewhat involves the player, you may have a better idea(?).

I was wondering about:
Code:
g_windowManager.GetTopMostModalDialogID() == WINDOW_DIALOG_BUSY
although I think it wasn't always behaving as I expected.
I've been testing the earlier fix (and now also the latest update from posts #63/#64), and there's a problem somewhere.

I'm in Movies -> Recently Added, with the Fanart view (Confluence skin).

I've selected (ie. highlighted) a movie that has several genres causing a horizontal scroll, and a long plot causing a vertical scroll. As expected, CPU load is very high at 85%-90% (1GHz ARM).

Once the Dim screensaver kicks in the scrolling stops, however the CPU load drops to only 65%-70%, so *something* is still hammering away.

Compare this to when I select the movie along side which has no horizontal/vertical scrolling (text/plot too short), and CPU load is now only 18% (with or without screensaver active).

Move back to the previous movie with long genre and plot and the CPU spikes up to 85%-90% (expected), but again only drops to 65%-70% once the screensaver kicks in.

Any ideas what might be causing the high load when scrolling is inhibited? Looking at the individual threads, the CPU load is all accumulating in the kodi.bin process so my guess is that Application is spinning around.

I have "Vertical blank sync" set to "Always enabled".
(2014-12-22, 19:57)Milhouse Wrote: [ -> ]I've been testing the earlier fix (and now also the latest update from posts #63/#64), and there's a problem somewhere.

Can you enable the dirty rectangle visualisation? I suspect something on the screen is redrawing (even though nothing is changing).
I added the following to advancedsettings.xml:
Code:
<gui><visualizedirtyregions>true</visualizedirtyregions></gui>

All other dirty region settings were left at defaults, ie. 3 etc.

This is before the screensaver kicked in:

Image

And this is after:

Image

The horizontal text is no longer scrolling, but it's still updating in the GUI.

The build is using this commit:

https://github.com/popcornmix/xbmc/commi...3f6cf436c6
It seems moving the check to CGUITextLayout::RenderScrolling fixes it, but I suspect that'll only work for labels... I need to investigate.

Edit: okay, this also works for RSS etc. Updated patch: https://github.com/anaconda/xbmc/commit/...7946b4e1cf
Previous patch was only stopping the scroll position from being updated, but apparently that's not enough (it's still redrawing it, nice). Additional change to GUITextLayout.cpp prevents actual rendering.

Side note - while testing this I've noticed the following:
* everything is fine when "Skin" on the left is selected http://i.imgur.com/YgMmwTG.png
* moving on the right causes "Skin" on the left to be continuously marked dirty (???) http://i.imgur.com/jmHukdn.png
Not sure I'll be able to get a build out tonight as the FTP server is still down. Sad

(2014-12-22, 20:43)menakite Wrote: [ -> ]It seems moving the check to CGUITextLayout::RenderScrolling fixes it, but I suspect that'll only work for labels... I need to investigate.

Edit: okay, this also works for RSS etc. Updated patch: https://github.com/anaconda/xbmc/commit/...7946b4e1cf
Previous patch was only stopping the scroll position from being updated, but apparently that's not enough (it's still redrawing it, nice). Additional change to GUITextLayout.cpp prevents actual rendering.

I'll give that a test.

(2014-12-22, 20:43)menakite Wrote: [ -> ]Side note - while testing this I've noticed the following:
* everything is fine when "Skin" on the left is selected http://i.imgur.com/YgMmwTG.png
* moving on the right causes "Skin" on the left to be continuously marked dirty (Huh) http://i.imgur.com/jmHukdn.png

Have a look here, it's been discussed before but no solution: http://forum.kodi.tv/showthread.php?tid=171784
(2014-12-22, 20:43)menakite Wrote: [ -> ]Edit: okay, this also works for RSS etc. Updated patch: https://github.com/anaconda/xbmc/commit/...7946b4e1cf

Is the latest patch only addressing the extra case of the RSS ticker, as I'm not seeing any difference in terms of what I saw in post #69, ie. I'm still seeing the following along with 65%-70% CPU load:

Image

Edit #1: This is the RSS ticker while the screensaver is active - there is no dirty rendering visible, the scrolling has stopped, yet the CPU load is still 65%-70%... Huh

Image

Edit #2: Reducing dimming level in Dim screensaver for clarity

Edit #3: Just testing the previous build (with https://github.com/popcornmix/xbmc/commi...3f6cf436c6) and the RSS ticker stops rendering when the screensaver kicks in although the CPU load is higher (85%-90%), so https://github.com/anaconda/xbmc/commit/...7946b4e1cf has made a small improvement.
Testing https://github.com/anaconda/xbmc/commit/...7946b4e1cf again, and RSS is working as expected. I think having <visualizedirtyregions> enabled contributed to high CPU load (even though there is no rendering, perhaps it's still having to compute that nothing has changed) and once disabled the RSS fix worked as described (ie. no scrolling/rendering => low 18% CPU load).

However the horizontal text in Fanart view is still a problem as this continues to render without scrolling.
Hm yeah, I can reproduce in Confluence, only in Fanart view. Amber works as expected (i.e. title label is not marked dirty)...
One difference with https://github.com/anaconda/xbmc/commit/...7946b4e1cf is that when the screensaver kicks in, the horizontal text doesn't only stop scrolling (but continues to render), it actually disappears. Previously, the text would remain visible while not scrolling.

Image

(I've added the red rectangle to highlight the missing text - visualizedirtyregions is disabled in the above screenshot)