From 54749588a3a0ed025a832598a97957d8677f1a12 Mon Sep 17 00:00:00 2001 From: pQu4k3r Date: Thu, 20 Aug 2026 20:44:51 +0000 Subject: [PATCH 1/2] Config screen: don't let one bad entry silently kill the rest of the list vavoo_config.createSetup() has no exception handling anywhere, and the widget only gets self["config"].l.setList(self.list) once, at the very end of the method. If any single getConfigListEntry(...) call raised - these touch Enigma2 core config widgets (ConfigSelectionNumber, ConfigClock) outside this repo, whose behavior can differ by image/ build, same class of issue as this session's wraparound-navigation fix - the whole rebuild silently aborted with no visible error, freezing the screen on whatever it displayed before. Confirmed via user report: "Scheduled List" -> "Schedule type" showed correctly after enabling automatic bouquet updates, but "Update interval (minutes)" right after it never appeared, on one user's image while working fine on another's - consistent with an exception at that specific entry silently cutting off everything from that point on, rather than the option having been removed. Wraps each of the three schedule-related entries (Schedule type, Update interval, Time to start update) in its own try/except, so a failure building one entry no longer prevents the rest of the list - including everything listed after it (Link in Main Menu, stats, debug logging) - from being built and shown. Doesn't fix whatever the underlying per-image config widget issue is (not reproducible in this sandbox - no live Enigma2 environment), but stops it from taking the rest of the screen down with it, and the print() gives a real error to look at next time this happens. --- .../python/Plugins/Extensions/vavoo/plugin.py | 49 +++++++++++++------ 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/usr/lib/enigma2/python/Plugins/Extensions/vavoo/plugin.py b/usr/lib/enigma2/python/Plugins/Extensions/vavoo/plugin.py index bf6dc837..1012dcf7 100644 --- a/usr/lib/enigma2/python/Plugins/Extensions/vavoo/plugin.py +++ b/usr/lib/enigma2/python/Plugins/Extensions/vavoo/plugin.py @@ -845,23 +845,44 @@ def createSetup(self): cfg.autobouquetupdate, _("Active Automatic Bouquet Update"))) if cfg.autobouquetupdate.value is True: - self.list.append( - getConfigListEntry( - indent + _("Schedule type:"), - cfg.timetype, - _("At an interval hours or fixed time"))) - if cfg.timetype.value == "interval": + try: self.list.append( getConfigListEntry( - 2 * indent + _("Update interval (minutes):"), - cfg.updateinterval, - _("Configure interval minutes from now"))) + indent + _("Schedule type:"), + cfg.timetype, + _("At an interval hours or fixed time"))) + except Exception as e: + print("Error building 'Schedule type' config entry:", e) + # Each sub-entry is wrapped independently: getConfigListEntry() + # touches Enigma2 core config widgets (ConfigSelectionNumber/ + # ConfigClock) outside this repo, whose behavior can differ by + # image/build (same class of issue as this session's wraparound- + # navigation fix). createSetup() has no exception handling + # anywhere else, and self["config"].l.setList(self.list) only + # runs once at the very end - previously, a single entry + # raising here silently aborted the ENTIRE rebuild, freezing + # the screen on whatever it showed before with no visible + # error, which is exactly what made "Update interval" (and + # everything listed after it) appear to have vanished for one + # user while working fine for another on a different image. + if cfg.timetype.value == "interval": + try: + self.list.append( + getConfigListEntry( + 2 * indent + _("Update interval (minutes):"), + cfg.updateinterval, + _("Configure interval minutes from now"))) + except Exception as e: + print("Error building 'Update interval' config entry:", e) if cfg.timetype.value == "fixed time": - self.list.append( - getConfigListEntry( - 2 * indent + _("Time to start update:"), - cfg.fixedtime, - _("Configure at a fixed time"))) + try: + self.list.append( + getConfigListEntry( + 2 * indent + _("Time to start update:"), + cfg.fixedtime, + _("Configure at a fixed time"))) + except Exception as e: + print("Error building 'Time to start update' config entry:", e) self.list.append( getConfigListEntry( From b6459ace3aea9ec0797250933a8f41372b99d042 Mon Sep 17 00:00:00 2001 From: pQu4k3r Date: Thu, 20 Aug 2026 20:46:35 +0000 Subject: [PATCH 2/2] Relabel the scheduled update section to mention EPG, not just bouquets AutoStartTimer._update_bouquets() (the scheduled job this section controls) does "Rytec matching, EPG feed downloads, and bouquet file I/O" as one combined cycle per its own comment - but every label here said "Bouquet Update", with no mention of EPG anywhere. This is the only place in the plugin that controls how often EPG gets refreshed in the background, and a user looking for an "EPG update timer" had no way to recognize this section as being it. Relabeled "Scheduled List"/"Update interval (minutes)"/"Time to start update" and their help text to say EPG/Bouquet explicitly. No behavior change - purely making the existing control findable for what it actually does. --- .../python/Plugins/Extensions/vavoo/plugin.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/usr/lib/enigma2/python/Plugins/Extensions/vavoo/plugin.py b/usr/lib/enigma2/python/Plugins/Extensions/vavoo/plugin.py index 1012dcf7..5cdc3777 100644 --- a/usr/lib/enigma2/python/Plugins/Extensions/vavoo/plugin.py +++ b/usr/lib/enigma2/python/Plugins/Extensions/vavoo/plugin.py @@ -841,9 +841,10 @@ def createSetup(self): self.list.append( getConfigListEntry( - _("Scheduled List:"), + _("Scheduled EPG/Bouquet Update:"), cfg.autobouquetupdate, - _("Active Automatic Bouquet Update"))) + _("Periodically re-match EPG and refresh bouquets for your " + "favorited countries in the background."))) if cfg.autobouquetupdate.value is True: try: self.list.append( @@ -869,16 +870,17 @@ def createSetup(self): try: self.list.append( getConfigListEntry( - 2 * indent + _("Update interval (minutes):"), + 2 * indent + _("EPG/Bouquet update interval (minutes):"), cfg.updateinterval, - _("Configure interval minutes from now"))) + _("How often to re-match EPG and refresh " + "bouquets, counting from now."))) except Exception as e: print("Error building 'Update interval' config entry:", e) if cfg.timetype.value == "fixed time": try: self.list.append( getConfigListEntry( - 2 * indent + _("Time to start update:"), + 2 * indent + _("Time to start EPG/bouquet update:"), cfg.fixedtime, _("Configure at a fixed time"))) except Exception as e: