diff options
author | florent <florent.pigout@gmail.com> | 2011-05-26 16:42:15 (GMT) |
---|---|---|
committer | florent <florent.pigout@gmail.com> | 2011-05-26 16:42:15 (GMT) |
commit | e8bb4c5e1499f9f13904978fd40a270d27299394 (patch) | |
tree | 23505c17d47851a921539c4dbce763baea5d180f | |
parent | 9ecd3a945f2513388ecaee63f87b81c43d188772 (diff) |
do some refactoring to enhance performance issue
-rw-r--r-- | activity.py | 8 | ||||
-rw-r--r-- | atoidejouer/story/keys.py | 6 | ||||
-rw-r--r-- | atoidejouer/ui/panel.py | 10 | ||||
-rw-r--r-- | atoidejouer/ui/screens.py | 39 | ||||
-rw-r--r-- | atoidejouer/ui/toolbar.py | 2 |
5 files changed, 45 insertions, 20 deletions
diff --git a/activity.py b/activity.py index a446f80..0b1d0fd 100644 --- a/activity.py +++ b/activity.py @@ -47,8 +47,6 @@ class ThreadAnim(threading.Thread): self._time = 0 else: pass - # refresh - self.set_time() def play(self): self._pause = False @@ -65,8 +63,12 @@ class ThreadAnim(threading.Thread): self._pause = self._pause if pause is None else pause # ... _s = self._activity.get_current_screen() + # ??? + if _s is None: + # ERROR + logger.error('[activity] set_time - scene not found!') # do pause on toolbar - if pause is True: + elif pause is True: if hasattr(_s, 'toolbar'): _s.toolbar.pause() else: diff --git a/atoidejouer/story/keys.py b/atoidejouer/story/keys.py index aec1fca..a0277ae 100644 --- a/atoidejouer/story/keys.py +++ b/atoidejouer/story/keys.py @@ -580,8 +580,10 @@ class StoryKeys(object): _f = _first_filename _t = _first_filetype else: - _f = _last_filename - _t = _last_filetype + #_f = _last_filename + #_t = _last_filetype + _f = _first_filename + _t = _first_filename # set transition self.set_current(sequence_name, _i, _f, file_type=_t, key_type='transition') diff --git a/atoidejouer/ui/panel.py b/atoidejouer/ui/panel.py index d939eb3..e255814 100644 --- a/atoidejouer/ui/panel.py +++ b/atoidejouer/ui/panel.py @@ -71,10 +71,8 @@ def _on_graphic_combo_changed(combobox, panel): panel.story_keys.refresh(panel._sequence_name) # refresh timeline panel.screen.timeline.refresh_sequence() - # ... - panel.story_keys.ask_clear() # refresh scene - panel.screen.scene.refresh() + panel.screen.scene.refresh(sequence_name=panel._sequence_name) def _on_position_clicked(widget, panel, move, value): @@ -101,10 +99,8 @@ def _on_position_clicked(widget, panel, move, value): # update panel entries panel.entry_x.set_text(str(_x)) panel.entry_y.set_text(str(-_y)) - # ... - panel.story_keys.ask_clear() # refresh scene - panel.screen.scene.refresh() + panel.screen.scene.refresh(sequence_name=panel._sequence_name) def _on_layout_clicked(widget, panel, move): @@ -136,8 +132,6 @@ def _on_layout_clicked(widget, panel, move): panel.screen.timeline.refresh_sequence() # update entry panel.entry_layout.set_text(str(_layout)) - # ... - panel.story_keys.ask_clear() # refresh scene panel.screen.scene.refresh() # reorder timeline diff --git a/atoidejouer/ui/screens.py b/atoidejouer/ui/screens.py index e193273..cf511b3 100644 --- a/atoidejouer/ui/screens.py +++ b/atoidejouer/ui/screens.py @@ -47,9 +47,9 @@ def _on_drag_finish(image, event, scene, sequence_name, frame, filename, (_a_x, _a_y)) # update transitions _story_keys.refresh(sequence_name) - _story_keys.ask_clear() + # _story_keys.ask_clear() # refresh scene with rounded values - scene.refresh() + scene.refresh(sequence_name=sequence_name) # get current screen _screen = scene.toolbar.activity.get_current_screen() # update timeline @@ -146,7 +146,7 @@ class ScreenStory(graphics.Scene): else: return False - def refresh(self): + def refresh(self, sequence_name=None): # get the current frame _time = 0.0 if self.toolbar.activity._thread is None\ else self.toolbar.activity._thread._time @@ -160,8 +160,14 @@ class ScreenStory(graphics.Scene): _currents = list() # for each images for _n in self._get_keys('graphics').get_names(): - # do move - _currents.append(self.__refresh_image(_n, _time, _rate)) + if sequence_name is None\ + or sequence_name == _n: + # do move + _currents.append(self.__refresh_image(_n, _time, _rate)) + else: + # just get code + _currents.append(self._get_current_code('graphics', _n, + _time)) # draw mask _currents.append(self.__refresh_default('mask')) # hide previous @@ -183,8 +189,14 @@ class ScreenStory(graphics.Scene): elif self.toolbar.activity._thread._pause is False: # for each sound for _n in self._get_keys('sounds').get_names(): - # do move - self.__refresh_sound(_n, _time) + if sequence_name is None\ + or sequence_name == _n: + # do move + self.__refresh_sound(_n, _time) + else: + # just get code + _currents.append(self._get_current_code('sounds', _n, + _time)) else: # stop all for _code, _sound in self.__sounds.items(): @@ -301,6 +313,19 @@ class ScreenStory(graphics.Scene): # .. return _x + (_next_x - _x) * _ratio, _y + (_next_y - _y) * _ratio + def _get_current_code(self, type_, sequence_name, time): + # get sequence filename + _current, _f_type, _k_type = self._get_keys(type_).get_current( + sequence_name, int(time)) + # need current + if _current is None: + return None + else: + pass + # get sequence file codes + return self._get_keys(type_).get_code( + self.toolbar.name, sequence_name, _current) + def __refresh_image(self, sequence_name, time, rate): # get sequence filename _current, _f_type, _k_type = self._get_keys('graphics').get_current( diff --git a/atoidejouer/ui/toolbar.py b/atoidejouer/ui/toolbar.py index 8e487b7..7dc33cb 100644 --- a/atoidejouer/ui/toolbar.py +++ b/atoidejouer/ui/toolbar.py @@ -318,6 +318,8 @@ def _cb_stop(widget, toolbar): pass # update main thread toolbar.activity._thread.pause(stop=True) + # .. + toolbar.activity._thread.set_time() def _cb_view_fullscreen(widget, toolbar): |