Ejemplo n.º 1
0
    def run(self):
        print("RUNNING")
        # Marks segments with changed contents dirty.
        _timeline_renderer.update_segments()

        self.dirty_segments = _timeline_renderer.get_dirty_segments()

        if len(self.dirty_segments) == 0:
            print("no dirty segments")
            return

        try:
            # Blocks untils renders are stopped and cleaned
            tlinerenderserver.abort_current_renders()
        except:
            # Dbus default timeout of 25s was exceeded, something is very wrong, no use to attempt further work.
            print(
                "INFO: tlinerendersrver.abort_current_renders() exceeded DBus timeout of 25s."
            )
            return

        # Write out MLT XML for render
        self.save_path = _get_session_dir() + "/" + self.update_id + ".xml"

        _xml_render_player = renderconsumer.XMLRenderPlayer(
            self.save_path, self.xml_render_done, None,
            PROJECT().c_seq, PROJECT(), PLAYER())
        _xml_render_player.start()
Ejemplo n.º 2
0
    def mouse_double_clicked(self, frame):
        hit_seg = self.get_hit_segment(frame)
        if hit_seg == None:
            return

        self.clear_selection()
        hit_seg.selected = True

        # On TLINE_RENDERING_AUTO this only selects, segment as render launching is auto
        if get_tline_rendering_mode() == appconsts.TLINE_RENDERING_AUTO:
            return

        global _update_thread
        # if not rendering, launch render.
        if _update_thread == None:
            hit_seg.segment_state = SEGMENT_DIRTY
            self.launch_update_thread()
        else:
            # if rendering, cancel render
            tlinerenderserver.abort_current_renders()  # blocks
            if _status_polling_thread != None:
                _status_polling_thread.abort = True

                # Delete file fragment
                clip_path = hit_seg.get_clip_path()
                if os.path.isfile(clip_path) == True:
                    os.remove(clip_path)

                # Reset to be renderable on request.
                hit_seg.segment_state = SEGMENT_UNRENDERED
                hit_seg.content_hash = "-1"

                # Update gui
                self.set_all_partially_rendered_segments_not_rendered()
                gui.tline_render_strip.widget.queue_draw()
Ejemplo n.º 3
0
    def delete_segment(self, segment):
        global _update_thread, _status_polling_thread

        if _update_thread != None:
            tlinerenderserver.abort_current_renders()  # blocks
        if _status_polling_thread != None:
            _status_polling_thread.abort = True
        else:
            _update_thread = None

        self.segments.remove(segment)
        self.delete_segment_files([segment])

        self.delete_all_partially_rendered_segment_files()
        self.set_all_partially_rendered_segments_not_rendered()

        if timeline_visible() == True:
            current_sequence().update_hidden_track_for_timeline_rendering()
        gui.tline_render_strip.widget.queue_draw()

        # On TLINE_RENDERING_AUTO see if user added new segment while rendering.
        if get_tline_rendering_mode() == appconsts.TLINE_RENDERING_AUTO:
            self.update_segments()
            if len(self.get_dirty_segments()) > 0:
                self.launch_update_thread()
Ejemplo n.º 4
0
def _strip_menu_item_callback(widget, data):
    global _update_thread, _status_polling_thread

    msg, segment = data
    if msg == "render_segment":
        segment.segment_state = SEGMENT_DIRTY
        get_renderer().clear_selection()
        get_renderer().launch_update_thread()
    elif msg == "delete_all":
        if _update_thread != None:
            tlinerenderserver.abort_current_renders()  # blocks
        if _status_polling_thread != None:
            _status_polling_thread.abort = True
        else:
            _update_thread = None

        old_segs = get_renderer().segments
        get_renderer().segments = []
        get_renderer().delete_segment_files(old_segs)

        if timeline_visible() == True:
            current_sequence().update_hidden_track_for_timeline_rendering()
        gui.tline_render_strip.widget.queue_draw()
    elif msg == "settings":
        settings_dialog_launch(None, None)
    else:  # single segment delete
        get_renderer().delete_segment(segment)