mirror of
https://github.com/cyberboy666/r_e_c_u_r.git
synced 2025-12-05 16:00:06 +01:00
ignoring some settings and fixing video mode switch
This commit is contained in:
41
actions.py
41
actions.py
@@ -422,6 +422,7 @@ class Actions(object):
|
||||
subprocess.call(['pivideo', '-s', setting_value])
|
||||
|
||||
def change_output_mode(self, setting_value):
|
||||
### this seems no longer supported in the firmware...
|
||||
if setting_value == 'hdmi':
|
||||
self.change_hdmi_settings(setting_value)
|
||||
elif setting_value == 'composite':
|
||||
@@ -434,7 +435,7 @@ class Actions(object):
|
||||
subprocess.call(['tvservice --preferred'], shell=True)
|
||||
elif self.data.settings['video']['HDMI_MODE']['value'] == 'CEA 4 HDMI':
|
||||
subprocess.call(['tvservice -e=\"CEA 4 HDMI\"'], shell=True)
|
||||
self._refresh_frame_buffer()
|
||||
self.refresh_frame_buffer_and_restart_openframeworks()
|
||||
|
||||
def check_and_set_output_mode_on_boot(self):
|
||||
#### checking if pi display mode is composite
|
||||
@@ -444,12 +445,13 @@ class Actions(object):
|
||||
self.data.update_setting_value('video', 'OUTPUT', 'composite')
|
||||
else:
|
||||
self.data.update_setting_value('video', 'OUTPUT', 'hdmi')
|
||||
self.data.update_setting_value('video', 'HDMI_MODE', 'preferred')
|
||||
#### this is to work around a bug where 1080 videos on hdmi drop out ...
|
||||
#subprocess.call(['tvservice --sdtvon="PAL 4:3"'],shell=True)
|
||||
#self._refresh_frame_buffer()
|
||||
#subprocess.call(['tvservice', '-p'])
|
||||
#self._refresh_frame_buffer()
|
||||
|
||||
if not self.data.settings['video']['HDMI_MODE']['value'] == "CEA 4 HDMI":
|
||||
self.data.update_setting_value('video', 'HDMI_MODE', 'CEA 4 HDMI')
|
||||
|
||||
self.change_hdmi_settings('CEA 4 HDMI')
|
||||
|
||||
|
||||
|
||||
def check_dev_mode(self):
|
||||
#### check if in dev mode:(ie not using the lcd screen)
|
||||
@@ -487,18 +489,21 @@ class Actions(object):
|
||||
self.video_driver.reset_all_players()
|
||||
|
||||
def change_composite_setting(self, setting_value):
|
||||
output = self.data.settings['video']['OUTPUT']['value']
|
||||
mode = self.data.settings['video']['COMPOSITE_TYPE']['value']
|
||||
aspect = self.data.settings['video']['COMPOSITE_RATIO']['value']
|
||||
progressive = ''
|
||||
if self.data.settings['video']['COMPOSITE_PROGRESSIVE']['value'] == 'on':
|
||||
progressive = 'p'
|
||||
if setting_value == 'composite':
|
||||
|
||||
if output == 'composite':
|
||||
subprocess.call(['tvservice --sdtvon="{} {} {}"'.format(mode, aspect, progressive)],shell=True)
|
||||
self._refresh_frame_buffer()
|
||||
self.refresh_frame_buffer_and_restart_openframeworks()
|
||||
self.persist_composite_setting(mode, progressive, aspect)
|
||||
|
||||
@staticmethod
|
||||
def _refresh_frame_buffer():
|
||||
|
||||
def _refresh_frame_buffer(self):
|
||||
self.data.open_omxplayer_for_reset()
|
||||
subprocess.run(["fbset -depth 16; fbset -depth 32; xrefresh -display :0" ], shell=True)
|
||||
|
||||
def persist_composite_setting(self, mode, progressive, aspect):
|
||||
@@ -689,9 +694,21 @@ class Actions(object):
|
||||
self.serial_port_process = None
|
||||
|
||||
def restart_openframeworks(self):
|
||||
self.reset_players()
|
||||
self.exit_openframeworks()
|
||||
self.stop_openframeworks_process()
|
||||
self.check_if_should_start_openframeworks()
|
||||
self.check_if_should_start_openframeworks()
|
||||
|
||||
def refresh_frame_buffer_and_restart_openframeworks(self):
|
||||
if self.data.settings['video']['VIDEOPLAYER_BACKEND']['value'] != 'omxplayer':
|
||||
self.exit_openframeworks()
|
||||
self.reset_players()
|
||||
self.stop_openframeworks_process()
|
||||
self._refresh_frame_buffer()
|
||||
self.check_if_should_start_openframeworks()
|
||||
#self.tk.after(1000, self.check_if_should_start_openframeworks)
|
||||
else:
|
||||
self._refresh_frame_buffer()
|
||||
|
||||
def stop_openframeworks_process(self):
|
||||
if self.openframeworks_process is not None:
|
||||
|
||||
@@ -254,7 +254,10 @@ class Data(object):
|
||||
self.bank_data[self.bank_number][slot_number]['rate'] = rate
|
||||
self._update_json(self.BANK_DATA_JSON, self.bank_data)
|
||||
|
||||
def _get_length_for_file(self, path):
|
||||
def open_omxplayer_for_reset(self):
|
||||
self._get_length_for_file('/ss',no_message=True )
|
||||
|
||||
def _get_length_for_file(self, path, no_message=False):
|
||||
try:
|
||||
temp_player = OMXPlayer(path, args=['--alpha', '0'], dbus_name='t.t')
|
||||
duration = temp_player.duration()
|
||||
@@ -262,7 +265,8 @@ class Data(object):
|
||||
return duration
|
||||
except Exception as e:
|
||||
print (e)
|
||||
self.message_handler.set_message('INFO', 'cannot load video')
|
||||
if not no_message:
|
||||
self.message_handler.set_message('INFO', 'cannot load video')
|
||||
return None
|
||||
|
||||
|
||||
|
||||
@@ -116,20 +116,24 @@ class BrowserMenu(Menu):
|
||||
class SettingsMenu(Menu):
|
||||
|
||||
FOLDER_ORDER = ['video', 'sampler', 'user_input', 'capture', 'shader', 'detour', 'system' ]
|
||||
SAMPLER_ORDER = ['LOAD_NEXT', 'RAND_START_MODE', 'FIXED_LENGTH_MODE', 'FIXED_LENGTH' ]
|
||||
VIDEO_ORDER = ['OUTPUT', 'SCREEN_MODE']
|
||||
SAMPLER_ORDER = ['LOOP_TYPE', 'LOAD_NEXT', 'RAND_START_MODE', 'RESET_PLAYERS', 'FIXED_LENGTH_MODE', 'FIXED_LENGTH', 'FIXED_LENGTH_MULTIPLY' ]
|
||||
VIDEO_ORDER = ['VIDEOPLAYER_BACKEND']
|
||||
USER_INPUT_ORDER = ['MIDI_INPUT', 'MIDI_STATUS', 'CYCLE_MIDI_PORT']
|
||||
CAPTURE_ORDER = ['DEVICE']
|
||||
SHADER_ORDER = []
|
||||
DETOUR_ORDER = []
|
||||
CAPTURE_ORDER = ['DEVICE', 'TYPE']
|
||||
SHADER_ORDER = ['USER_SHADER']
|
||||
DETOUR_ORDER = ['TRY_DEMO']
|
||||
SYSTEM_ORDER = []
|
||||
|
||||
SETTINGS_TO_HIDE = ['OUTPUT' ]
|
||||
|
||||
def __init__(self, data, message_handler, menu_height):
|
||||
|
||||
Menu.__init__(self, data, message_handler, menu_height)
|
||||
self.generate_settings_list()
|
||||
|
||||
def generate_settings_list(self):
|
||||
self.check_for_settings_to_hide()
|
||||
|
||||
self.menu_list = []
|
||||
ordered_folders = self.order_keys_from_list(self.data.settings, self.FOLDER_ORDER)
|
||||
for (setting_folder_key, setting_folder_item) in ordered_folders:
|
||||
@@ -137,8 +141,9 @@ class SettingsMenu(Menu):
|
||||
self.menu_list.append(dict(name='{}/'.format(setting_folder_key), value=''))
|
||||
order_list_name = '{}_ORDER'.format(setting_folder_key.upper())
|
||||
ordered_value = self.order_keys_from_list(setting_folder_item, getattr(self,order_list_name))
|
||||
for (setting_details_key, setting_details_item) in ordered_value:
|
||||
self.menu_list.append(dict(name=' {}'.format(setting_details_key), value=self.data.make_empty_if_none(setting_details_item['value'])))
|
||||
for (setting_details_key, setting_details_item) in ordered_value:
|
||||
if not setting_details_key in self.SETTINGS_TO_HIDE:
|
||||
self.menu_list.append(dict(name=' {}'.format(setting_details_key), value=self.data.make_empty_if_none(setting_details_item['value'])))
|
||||
else:
|
||||
self.menu_list.append(dict(name='{}|'.format(setting_folder_key), value=''))
|
||||
|
||||
@@ -157,7 +162,11 @@ class SettingsMenu(Menu):
|
||||
self.update_open_folders(name)
|
||||
self.generate_settings_list()
|
||||
return False, ''
|
||||
|
||||
|
||||
def check_for_settings_to_hide(self):
|
||||
if self.data.settings['video']['VIDEOPLAYER_BACKEND']['value'] != 'omxplayer':
|
||||
self.SETTINGS_TO_HIDE = self.SETTINGS_TO_HIDE + ['SCREEN_MODE', 'BACKGROUND_COLOUR', 'FRAMERATE', 'IMAGE_EFFECT', 'RESOLUTION', 'SHUTTER']
|
||||
|
||||
@staticmethod
|
||||
def order_keys_from_list(dictionary, order_list):
|
||||
ordered_tuple_list = []
|
||||
|
||||
Reference in New Issue
Block a user