When going from a theme-blanked item to item which doesn't support theme-blanking, switch to black-blank.

This commit is contained in:
Tomas Groth 2015-04-30 14:37:13 +02:00
parent 335d8d2d17
commit 54fbaf3a4f
1 changed files with 17 additions and 5 deletions

View File

@ -826,8 +826,10 @@ class SlideController(DisplayController, RegistryProperties):
old_item = self.service_item
# take a copy not a link to the servicemanager copy.
self.service_item = copy.copy(service_item)
if old_item and self.is_live and old_item.is_capable(ItemCapabilities.ProvidesOwnDisplay):
self._reset_blank()
# Reset blanking if needed
if old_item and self.is_live and (old_item.is_capable(ItemCapabilities.ProvidesOwnDisplay) or \
self.service_item.is_capable(ItemCapabilities.ProvidesOwnDisplay)):
self._reset_blank(self.service_item.is_capable(ItemCapabilities.ProvidesOwnDisplay))
if service_item.is_command():
Registry().execute(
'%s_start' % service_item.name.lower(), [self.service_item, self.is_live, self.hide_mode(), slide_no])
@ -1347,7 +1349,11 @@ class SlideController(DisplayController, RegistryProperties):
:param item: The service item to be processed
"""
self.media_controller.video(self.controller_type, item, self.hide_mode())
if self.is_live and self.hide_mode() == HideMode.Theme:
self.media_controller.video(self.controller_type, item, HideMode.Blank)
self.on_blank_display(True)
else:
self.media_controller.video(self.controller_type, item, self.hide_mode())
if not self.is_live:
self.preview_display.show()
self.slide_preview.hide()
@ -1360,16 +1366,22 @@ class SlideController(DisplayController, RegistryProperties):
self.preview_display.hide()
self.slide_preview.show()
def _reset_blank(self):
def _reset_blank(self, no_theme):
"""
Used by command items which provide their own displays to reset the
screen hide attributes
:param no_theme: Does the new item support theme-blanking.
"""
hide_mode = self.hide_mode()
if hide_mode == HideMode.Blank:
self.on_blank_display(True)
elif hide_mode == HideMode.Theme:
self.on_theme_display(True)
# The new item-type doesn't support theme-blanking, so 'switch' to normal blanking.
if no_theme:
self.on_blank_display(True)
else:
self.on_theme_display(True)
elif hide_mode == HideMode.Screen:
self.on_hide_display(True)
else: