prl wrote: ↑Tue Apr 14, 2020 15:42The non-overlap rule in the EPG means that if the broadcaster data has overlaps (which it shouldn't, since they can't broadcast two different programs at the same time), then the EPG loaded into the Beyonwiz will have gaps.
I'd be disinclined to put any sort of "bodge" into the EPG code. It's complicated enough already. Of course, anyone who thinks that doing it is a good idea is welcome to code it and submit it for acceptance into the code repository. That part of the code doesn't require much knowledge of the rest of the workings on enigma2.
Does this mean there are currently no plans to rework the EPG cache to trim overlaps and prevent this issue?
If so, then I'm interested in taking a look at it myself. The relevant source code file appears to be epgcache.cpp. Unfortunately I've never written anything in cpp, so it will take a very long time for me to get up to speed. Also I'm not sure how to even compile cpp files for Enigma or how to deploy them (does the whole image need to be rebuilt?).
In the meantime I've put some debug lines in EpgList.py and EpgSelection.py to see what it's actually pulling out of the EPG cache when event data is missing. In this case I observe the EPG cache query in EpgList.fillSingleEPG() is not returning any event data when the issue occurs, and then correctly populates the missing event with a None entry in self.list. So the problem seems to be an issue with eEPGCache randomly not providing event data. As I'm unable to add debug lines to epgcache.cpp I've no way of telling if it's due to mishandling of overlaps inside epgcache.cpp or just simply no data being broadcast at the time the cache is updated.
One idea I had was to keep a second cache inside EpgList.py, and then if an event is missing at the next EpgList.fillSingleEPG(), then retrieve it from the second cache.